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
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
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
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 zur 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.
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.
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.
Zusammenfassen der Module
Im letzten Schritt des Elektronik-Teils geht es um das Zusammenfügen aller Komponenten und Bauteile.
- Das HD44780 LC-Display wurde mit dem Mikrocontroller und der Spannungsverteilerplatine verbunden.
- Ethernet-Modul ENC28J60 wurde via SPI mit dem Mikrocontroller und dem 3.3V Spannungsregulator verbunden.
- Die Status-LED wurde mit dem Mikrocontroller verbunden und zeigt verpasste Anrufe an.
- Ein 10kΩ Trimmer (Potentiometer) zur Einstellung des Displaykontrastes wurde mit dem Display verbunden.
- AMS1117-3.3 3.3V Spannungsregular für das ENC28J60 Ethernet-Modul.
- Die Stromverteiler-Platine ist direkt mit der USB-Eingangsspannung versorgt und verteilt sie an alle Module.
- USB-Buchse für den Stromanchluss des CallMonitor versorgt die Verteilerplatine mit 5V Eingangsspannung.
- Das Herzstück: Der Arduino-kompatible ATMega328P Mikrocontroller.
- 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.