FritzBox CallMonitor - Teil 1: Elektronik

Posted by Tobias on 2015-10-24 at 11:58 pm

Mein Projekt "FritzBox CallMonitor" hat im "Pimp your Fritz!" Wettbewerb den ersten Platz gemacht. Aufgrund der vielen Anfragen möchte ich hiermit die Baudokumentation und auch Video zum Projekt veröffentlichen. Der CallMonitor kann somit von Jedermann einfach nachgebaut werden. Im diesem Teil 1 der Baudokumentation für meinen FritzBox CallMonitor ist zunächst einmal der Elektronik-Teil beschrieben. Zusätzlich zum Video oben gibt es auf dieser Seite jeden einzelnen Schritt nochmals detailliert erklärt. Im folgenden zweiten Teil geht es dann um die Anpassung und Einbau des Gehäuses und im letzten Teil um den Quellcode. Viel Spaß beim Nachbau!

Benötigte Bauteile

FritzBox CallMonitor

Für den CallMonitor habe ich die folgenden Bauteile verwendet:

  • Plastik-Projektgehäuse (Amazon)
  • Arduino Pro-Mini kompatibler Mikrocontroller (ATMega328P) (Amazon)
  • ENC28J60 Ethernet Modul (ähnlich Amazon)
  • HD44780 kompatibles 16x2 Zeichen LC-Display mit blauer Hintergrundbeleuchtung (Amazon)
  • Druckschalter (SPST) (Amazon via China)
  • Rote 5mm LED + Fassung (Amazon)
  • 100nF Keramik-Kondensator (Amazon)
  • 10kΩ Trimmer (nicht auf dem Bild) (Amazon)
  • 220Ω Widerstand (nicht auf dem Bild) (Amazon)
  • Zusätzlich waren natürlich jede Menge Kabelverbindungen nötig, um die Module miteinander zu verbinden.

Aufbau Mikrocontroller

FritzBox CallMonitor

Als zentrales Bauelement und gleichzeitig „Gehirn“ des Gerätes verwendete ich einen Arduino-kompatiblen Mikrocontroller. Das Board erinnert stark an den Arduino Pro Mini. Bestückt ist er mit dem bekannten Atmel ATMega328P Chip. Der Chip ist bereits mit dem Arduino Bootloader vorbereitet, sodass „Sketches“ direkt hochgeladen werden können. Zuvor musste ich allerdings noch die Stiftleisten für die zur Programmierung relevanten Pins auflöten. Dank des Arduino Bootloader kann der Mikrocontroller einfach via UART neuen Quellcode entgegen nehmen, der dann im internen Flash abgelegt wird. Nachdem die Stiftleiste zur Programmierung angebracht wurde, habe ich auch gleich die Software auf den Chip überspielt, da ich diese bereits fertig hatte.

Vorbereitung HD44780 LC-Display

FritzBox CallMonitor FritzBox CallMonitor

Ein weiteres Herzstück des Gerätes ist natürlich das Display. Auf ihm werden später die relevanten Daten wie Telefonnummer, Gesprächsdauer usw. angezeigt. Dieses Display wird über sieben Leitungen mit dem Mikrocontroller verbunden. Das Display wird dimmbar sein, und somit bei „Nichtnutzung“ energiesparend heruntergeregelt. Über einen kleinen Trimmer kann später jederzeit der Kontrast des Displays modifiziert werden. Zwei Zeilen bietet das Display und kann je Zeile bis zu 20 Zeichen darstellen. Zur besseren Lesbarkeit hat das Display eine blaue Hintergrundbeleuchtung.

Ethernet Schnittstelle

Mit Hilfe des ENC28J60 Ethernet-Moduls stellt das Gerät die Verbindung FritzBox CallMonitorzur FritzBox her. Bei dem ENC28J60 Modul kann es bei der Initialisierung durchaus einmal zu Stromspitzen von 200mA kommen. Deswegen habe ich an die Power-Pins des Moduls noch einen zusätzlichen 100nF „Abblockkondensator“ angebracht. Dieser soll beim Anschalten des Moduls verhindern, dass das Modul durch einen plötzlichen Spannungseinbruch den Dienst einstellt. Letztendlich wurde dann das Modul via SPI-Schnittstelle an den Mikrocontroller gelötet. Aufgrund der relativ hohen Ströme und 3.3V Spannung erfolgt die Spannungsversorgung des Moduls nicht über den ATMega328P, sondern über eine getrennte Stromleitung, die über einen AMS1117-3.3 (linearer Spannungsregulator) direkt an der USB-Buchse hängt. Dieser Spannungsregulator bekommt die USB-Eingangsspannung von ca. 5V und gibt eine Spannuing von 3.3V aus. Das ENC28J60 Modul ist nicht 5V spannungskompatibel, lediglich die SPI-Pins sind 5V-tolerant.

FritzBox CallMonitor FritzBox CallMonitor 

Druckschalter und Status-LED

Der CallMonitor hat zudem noch die Möglichkeit „verpasste Anrufe“ zu dokumentieren. Wurden Anrufe verpasst, so wird dies auf dem LC-Display angezeigt und die Status-LED oben leuchtet. Mit Hilfe des Drucktasters oben kann dies „zur Kenntnis genommen“ werden. Die LED erlischt und auf dem LC-Display erscheint wieder der normale Stand-By Text. An den Taster wurden zwei Kabel gelötet und mit Schrumpfschläuchen gegen Kurzschlüsse abgesichert. Diese Kabel führen zum Mikrocontroller, der dann den Schalter überwacht. Der Drucktaster lässt sich später ein- fach durch eine Mutter am Gehäuse befestigen.

FritzBox CallMonitor FritzBox CallMonitor 

Neben dem LC-Display zeigt sie an, dass es Anrufe in Abwesenheit
gegeben hat. Auch an der LED sind zwei Leitungen nötig, die zum Mikrocontroller führen. Die 5mm LED ist ummantelt von einer LED-Fassung aus Plastik. Mit dieser Fassung lässt sich die LED später leichter und vor allem hübscher in das Gehäuse integrieren. Im Schrumpfschlauch der LED versteckt sich noch der benötigte 220Ω LED-Vorwiderstand.

USB-Buchse und Stromverteilung

Natürlich kommt mein Gerät nicht ohne Strom aus. Es werden 5V Eingangsspannung benötigt. Zum einfacheren Anschluss ist eine USB-Buchse integriert. Der CallMonitor kann also über eine beliebige USB-Buchse mit Strom versorgt werden – sei es am PC, ein Netzadapter oder natürlich: Direkt an der FritzBox USB-Buchse! Die Stromaufnahme bleibt unterhalb von 500mA bleiben.

Sämtliche Stromleitungen zur Versorgung der einzelnen Bauteile werden nicht vom Mikrocontroller aus gespeist, sondern über eine „Verteilerplatine“. Das ist lediglich eine Lochrasterplatine, auf der alle VCC und GND Leitungen miteinander verbunden sind. Diese hängen dann direkt an der USB Buchse. Ein Schrumpfschlauch verhindert mögliche Kurzschlüsse und gibt später den Kabeln noch zusätzlichen Halt auf der Platine.

FritzBox CallMonitor FritzBox CallMonitor 

Zusammenfassen der Module

Im letzten Schritt des Elektronik-Teils geht es um das Zusammenfügen aller Komponenten und Bauteile.

FritzBox CallMonitor

  1. Das HD44780 LC-Display wurde mit dem Mikrocontroller und der Spannungsverteilerplatine verbunden.
  2. Ethernet-Modul ENC28J60 wurde via SPI mit dem Mikrocontroller und dem 3.3V Spannungsregulator verbunden.
  3. Die Status-LED wurde mit dem Mikrocontroller verbunden und zeigt verpasste Anrufe an.
  4. Ein 10kΩ Trimmer (Potentiometer) zur Einstellung des Displaykontrastes wurde mit dem Display verbunden.
  5. AMS1117-3.3 3.3V Spannungsregular für das ENC28J60 Ethernet-Modul.
  6. Die Stromverteiler-Platine ist direkt mit der USB-Eingangsspannung versorgt und verteilt sie an alle Module.
  7. USB-Buchse für den Stromanchluss des CallMonitor versorgt die Verteilerplatine mit 5V Eingangsspannung.
  8. Das Herzstück: Der Arduino-kompatible ATMega328P Mikrocontroller.
  9. Ein SPST Drucktaster, um die Anrufe in Abwesenheit zurückzusetzen, wurde mit dem Mikrocontroller verbunden.

Details zu den einzelnen Pin-Belegungen

Hier eine kompakte Übersicht über alle Verbindungen zwischen den einzelnen Bauteilen.

Quell-Pin Ziel-Pin Quell-Pin Ziel-Pin
Druckschalter SPST   LED mit Vorwiderstand  
Pin 1 Arduino D8 Anode (+) Arduino A0
Pin 2 Ground GND Kathode (-) Ground GND
ENC28J60 Ethernet Modul   HD44780 LC-Display  
CLK (Clock) nicht verbunden 1 VSS (-) Ground GND
INT (Interrupt) nicht verbunden 2 VDD (+) Stromverteiler+
WOL (Wake-on-LAN) nicht verbunden 3 VO Poti Output
SO (Serial Out) Arduino D12 4 RS Arduino D7
SI (Serial In) Arduino D11 5 RW Ground GND
SCK (Serial Clock) Arduino D13 6 Enable Arduino D6
CS (Cable Select) Arduino D10 7 D0 nicht verbunden
RST (Reset) Arduino RST 8 D1 nicht verbunden
VCC AMS1117-3.3 Output 9 D2 nicht verbunden
GND Ground GND 10 D3 nicht verbunden
AMS1117-3.3 Stromverteiler   11 D4 Arduino D5
IN Stromverteiler + 12 D5 Arduino D4
OUT ENC28J60VCC 13 D6 Arduino D3
Ground Ground GND 14 D7 Arduino D2
10k Potentiometer   15 Backlight Anode (+) Arduino D9
Links Ground GND 16 Backlight Kathode (-) Ground GND
Rechts Stromverteiler +    
Mitte (Ausgang) HD44780 Pin 3 VO    

Im folgenden Teil 2 der Bauanleitung geht es um den Einbau aller Komponenten in ein Gehäuse. Im letzten Teil 3 geht es um den Quellcode bzw. die Software für den CallMonitor.

Electronics
3 comments
Posted by Herbert Kahl on 2016-02-24 at 7:57 pm
Tolle Idee und Umsetzung! In meinem Fall wäre leider nur ein Anschluss ohne Kabel über WLAN an die Fritz!box möglich. Ist solch eine Erweiterung geplant oder zumindest grundsätzlich möglich? Ich bin technisch nicht ganz unbedarft, habe aber mit der Arduino Plattform keinerlei Erfahrung.
Posted by Tobias on 2016-02-24 at 9:02 pm

Hallo Herbert,

aktuell habe ich das nicht geplant, da mein CallMonitor direkt neben der FritzBox steht. Generell besteht aber schon die Möglichkeit den CallMonitor auch via WLAN anzubinden. Zur Not auch mit einer WLAN Bridge.

Grüße Tobi

Posted by Andre on 2017-06-21 at 8:44 pm

Ein sehr schönes Projekt.

Zwei Punkte sind mir aufgefallen:

1. Da nur eine Taste vorhanden ist, wird nur die Nummer des letzten verpassten Anrufs dargestellt. Praktisch wären zwei Tasten, mit denen man die verpassen Anrufe durchblättern kann.

2. Ich bin selber ein Fan der alten W48er Wählscheibentelephone. Um bei einem verpassten Anruf zurückzurufen, ist das Wählen per Wählscheibe aber nicht unbedingt komfortabel. Wäre es möglich, dass man auf Knopfdruck die Wählhilfe der Fritzbox für den Rückruf nutzt?

Will man WLAN nutzen, wie von Herbert gewünscht, müsste eigentlich der NanoESP aus dem letzten Conrad Adventskalender eine geeignete Hardware sein - man kann den aber letztlich auch aus China-Clone Arduino Nano oder pro und WLAN-Modul selbst zusammen basteln.

Comment on This Post