Babüfon - Das Babyfon mit ATmega-Kern

Beschreibung

Sobald der Nachwuchs in sein eigenes Zimmer ausgelagert wird oder bereits tagsüber allein im Zimmer schläft, ist nicht immer garantiert, dass man alle Missfallensäußerungen auch rechtzeitig bemerkt. Dies führt in aller Regel zu noch mehr Frust beim Windelträger. Verstärkter Frust durch fehlende oder verspätete Elternreaktion lässt sich mit einem Babyfon aber verhindern.
Auf Basis einiger bereits entwickelter und aufgebauter Komponenten erfolgte daher der Aufbau eines Babüfon-Senders und zweier Empfänger, die in den folgenden Abschnitten genauer beschrieben werden.

babyfon01.JPG babyfon02.JPG babyfon_ueberblick.png

Die Merkmale des Babüfons im Überblick:

Sender

Der Sender besteht neben dem Gehäuse aus drei Komponenten - der Basisplatine, einem Mikrofon inklusive Mikrofonverstärker und einem Funkmodul. Diese Komponenten sind auf kleinen Zusatzplatinen aufgebaut, die wiederum per uC Connector-Stiftleiste und Flachbandkabel mit der Basisplatine verbunden sind.

Basisplatine

Die Basisplatine ist der Kern des Geräts und beherbergt die Spannungsstabilisierung, den Mikrocontroller inklusive Beschaltung und Stiftleisten für die Verbindung der Zusatzplatinen (Mikrofonverstärker, Funkmodul) mit den Controller-Ports, einen ISP-Anschluss für die Programmierung des Controllers und eine RS232-Schnittstelle. Die Basisplatine ist auf dieser Seite detaillierter beschrieben.

Mikrofonverstärker

Die folgende Abbildung zeigt den Mikrofonverstärker.

mikrofonverstaerker2.png

Dieser Verstärker ist recht einfach aufgebaut - ein nicht-invertierender Verstärker mit dem Verstärkungsfaktor 100. Am Ausgang befindet sich ein Bandpass, der unerwünschte Signale (Luftdruckschwankungen und ähnliche Störungen) unterdrücken soll. Der Ausgang des Verstärkers ist der Eingang des A/D-Wandlers am ATmega. Die Schaltung wurde für ein Elektret-Mikrofon (Typ MCE-101 von Reichelt) entworfen.

C-Bibliotheken für die Nutzung des A/D-Wandlers inklusive deren Beschreibung sind hier zu finden.

Funkmodul

Der Sender ist mit dem Empfänger über eine Funkstrecke verbunden. Als Funkmodul kommt ein RFM12-Modul von Pollin zum Einsatz, das per SPI an den ATmega angebunden ist.

rfm12_platine.png

Die Schaltung beinhaltet neben der SPI-Verbindung zum RFM12-Modul die Signalisierung von Empfang und Senden von Daten mit Hilfe der LEDs D1 (Empfang) und D2 (Senden). Der Timer-IC NE556 gewährleistet eine Mindestleuchtdauer. Der 74LS04 invertiert die Signale vom Controller, weil der NE556 mit einer fallenden Flanke getriggert wird. Es wäre natürlich einfacher, wenn der Controller die Signale direkt invertiert, das ist aber hier aufgrund von Kompatibilitätsgründen (alte Platinen ohne Timer-IC) nicht der Fall.
Die Jumper K1 und K2 bieten die Möglichkeit, die LEDs abzukoppeln, um Controller-Pins zu "sparen". In diesem Fall müssen an beiden Jumpern jeweils die Pins 2 und 3 miteinander verbunden sein. Bei Nutzung der LEDs sind jeweils die Pins 1 und 2 miteinander zu verbinden.

Eine detailliertere Beschreibung des Funkmoduls und insbesondere der zugehörigen Software-Bibliotheken ist hier zu finden.

Empfänger

Der Empfänger besteht neben dem Gehäuse aus vier Komponenten: Zusätzlich zur Basisplatine findet sich auch hier wieder ein Funkmodul. Zur Bedienung und Anzeige sind weiterhin ein LCD inklusive Adapter-Platine und eine Buzzer-Platine eingebaut.

Basisplatine

Die Basisplatine ist wie beim Sender der Kern des Geräts und beherbergt die Spannungsstabilisierung, den Mikrocontroller inklusive Beschaltung und Stiftleisten für die Verbindung der Zusatzplatinen (Mikrofonverstärker, Funkmodul) mit den Controller-Ports, einen ISP-Anschluss für die Programmierung des Controllers und eine RS232-Schnittstelle. Die Basisplatine ist auf dieser Seite detaillierter beschrieben.

Funkmodul

Das Funkmodul und die zugehörige Schaltung sind exakt dieselben wie beim Sender.

LCD-Adapterplatine

Die Anzeige per LCD beim Babüfon-Empfänger hat verschiedene Aufgaben: Die Schaltung der Adapterplatine für das Display ist in der folgenden Abbildung dargestellt.

displaytech_162.png

Die Beschaltung entspricht der Beschaltung für ein handelsübliches DOT-Matrix-Display auf Basis des HD44780-Controllers und kompatibler Verwandter wie dem ST7066U. Zu beachten ist dabei immer die korrekte Auswahl eines Vorwiderstandes für die LED-Hintergrundbeleuchtung. Hierfür ist immer das Datenblatt zu konsultieren! Das hier in der Schaltung verbaute Trimmpotentiometer dient der Helligkeitsanpassung für die Hintergrundbeleuchtung.
Sind am Jumper K1 die Pins 2 und 3 miteinander verbunden, steuert der Mikrocontroller die Hintergrundbeleuchtung, sind die Pins 1 und 2 miteinander verbunden, ist die Hintergrundbeleuchtung dauerhaft an.

C-Bibliotheken für die Anbindung eines solchen Displays inklusive deren Beschreibung sind hier zu finden.

Buzzer-Platine

Die Buzzer-Platine hat verschiedene Aufgaben. Zum Einen beherbergt sie den Buzzer und die Warn-LED, die der Controller des Empfängers bei gemeldeter Baby-Aktivität ansteuert. Zum Anderen ist hier auch der Taster angeschlossen, mit dem der Nutzer die Hintergrungbeleuchtung des Displays für etwa 5 Sekunden anschalten kann. Auf dieser Platine befindet sich auch die Beschaltung für die Betriebsanzeige-LED, die per Trimmpotentiometer in ihrer Helligkeit vom Nutzer nach Bedarf angepasst werden kann.

buzzer_platine.png

Mittels der Jumper P2, P3 und P4 kann der Nutzer die Warn-LED, den Buzzer bzw. die Betriebsanzeige-LED abkoppeln.
Als Buzzer kommt hier ein Piezo-Schallwandler von Reichelt zum Einsatz.

Software

Für die Ansteuerung von Funkmodul, LCD und A/D-Wandler kommen die hier auf den Projektseiten beschriebenen C-Funktionsbibliotheken zum Einsatz. Die Ablaufsteuerungen für Sender und Empfänger unterscheiden sich natürlich und sind in den folgenden beiden Abschnitten beschrieben.

Software für den Sender

Im folgenden Archiv sind alle Quellen für den Sender enthalten:

babyfon_sender0.3.tgz

Die Quellen sind als AVR-Projekt für die Entwicklungsumgebung Code::Blocks organisiert. In den Projekteinstellungen ist als Zielplattform ein ATmega16 mit 16 MHz Taktfrequenz eingestellt. Die Quellen können selbstverständlich auch in eine andere Entwicklungsumgebung (zum Beispiel AVR-Studio) eingebunden werden.

Für die Konfiguration des Systems wichtige Dateien sind: Jeder Sender hat eine ID, die in der Datei babyfone_sender.h mit Hilfe der Definition BABYFONE_SENDER_ID vom Nutzer festzulegen ist.

In der Sender-Software ist folgender Ablauf implementiert:
Aller 50 ms liest der Controller 128 Werte vom Ausgang des Mikrofonverstärkers über den A/D-Wandler ein. Die Software berechnet fortlaufend die Spitze-Spitze-Werte der Amplitude und bestimmt unter Verwendung eines kurzen Zeitfensters (5 Werte), ob ein durchschnittlicher Schwellwert überschritten wurde oder nicht. Bei Überschreitung füllt die Software Datenpakete mit der aktuellen Mikrofonspannung und einem Warn-Indikator und versendet diese Datenpakete mit Hilfe des Funkmoduls.
Im Normalbetrieb, wenn das System keine Warnmeldung sendet, schickt der Sender zyklisch ungefähr aller 27-29 Sekunden (in Abhängigkeit von der Sender-ID) eine Nachricht als Lebenszeichen. Diese Nachricht signalisiert dem Empfänger ein aktives Sendersystem und eine funktionierende Funkstrecke.
Der Sender schickt alle Nachrichten zur Kontrolle parallel auch über den USART (und damit RS232). Ist ein GLCD angeschlossen, erfolgt auf diesem die Darstellung der aktuellen Mikrofonspannung als Diagramm.

Software für den Empfänger

Im folgenden Archiv sind alle Quellen für den Empfänger enthalten:

babyfon_receiver0.5.tgz

Die Quellen sind als AVR-Projekt für die Entwicklungsumgebung Code::Blocks organisiert. In den Projekteinstellungen ist als Zielplattform ein ATmega16 mit 16 MHz Taktfrequenz eingestellt.Die Quellen können selbstverständlich auch in eine andere Entwicklungsumgebung (zum Beispiel AVR-Studio) eingebunden werden.

Für die Konfiguration des Systems wichtige Dateien sind: In der Empfänger-Software ist folgender Ablauf implementiert:
Während des Starts initialisiert das System das Display und wartet danach auf den Empfang von Nachrichten eines Senders. Empfängt das System innerhalb von ca. 60 Sekunden ein Lebenszeichen eines Senders, gilt die Verbindung als aufgebaut und die empfangene Mikrofonspannung wird im Display zusammen mit der Sender-ID ("MikroX") angezeigt. Kommt innerhalb dieses Zeitfensters keine Nachricht an, gibt der Empfänger die Nachricht "keine Verbindung" auf dem Display aus und schaltet die Hintergrundbeleuchtung im Intervall von ca. 1 Sekunde an und aus.
Beim Empfang von Warnmeldungen, aktualisiert der Empfänger die Anzeige der Mikrofonspannung mit jeder eingehenden Nachricht, schaltet die Hintergrundbeleuchtung des Displays ein und steuert eine LED synchron mit dem Eingang der Warnmeldungen an. Bei √úberschreiten einer weiteren, im Empfänger festgelegten Schwelle steuert der Empfänger auch einen einen Piepser synchron zur LED an. Die Schwelle für diese zweite Warnstufe ist so gewählt, dass Äußerungen in normaler Lautstärke zwar detektiert und angezeigt, aber nicht akustisch gemeldet werden. Erst "echtes Geschrei" führt dann zu akustischen Ausgaben. Nach Eingang der letzten Warnmeldung bleibt das Display für etwa 30 Sekunden beleuchtet und im Display wird die Zeit seit dieser letzten Meldung angezeigt.
Betätigt der Nutzer kurz den Taster, schaltet das System die Hintergrundbeleuchtung des Displays für etwa 5 Sekunden an. Bei längerer Betätigung (etwa 5 Sekunden) wird der Piepser für etwa 10 Minuten stummgeschaltet. Warnungen erfolgen dann nur noch optisch. Das Babyphon gibt während dieser Zeitspanne zyklisch "**STUMM**" auf dem Display aus. Jede weitere Betätigung des Tasters für mehr als 3 Sekunden während der Stummphase setzt die verbliebene Zeit der Stummschaltung wieder auf 10 Minuten zurück.

Hier ist ein kurzer Film verlinkt, der die Funktion des Empfängers zeigt (noch ohne Anzeige der Sender-ID).

Fehlerquellen

Falls eines der beiden Systeme nicht funktioniert, sollten folgende mögliche Fehlerquellen ausgeschlossen werden: Wenn diese Fehlerquellen ausgeschlossen sind, kann es natürlich sein, dass zum Beispiel die Funktionen für das spezielle Display nicht funktionieren, weil der Zugriff auf das Display anders erfolgen muss. In diesem Fall ist das Datenblatt zu konsultieren, um evtl. die Quellen anzupassen.

Lizenz

Alle hier veröffentlichten Quellen stehen unter der LGPLv3.

Alle hier veröffentlichten Schaltungen können natürlich nach Belieben nachgebaut oder verändert und veröffentlicht werden.
Zu beachten ist dabei allerdings, dass dies ein Hobby-Projekt ist und keinerlei Gewährleistung für Fehlerfreiheit oder gar eine Haftung für eventuelle Schäden übernommen werden kann.
Die Schaltungen sollen eine Anregung darstellen und sie nachbauen und in Betrieb nehmen sollte nur der, der weiß, was er tut..

Versionsinfo

Anregungen oder weitere Informationen

Für Anregungen oder die Beantwortung von Fragen zum Projekt steht ein Forum zur Verfügung.