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.

Die Merkmale des Babüfons im Überblick:
- Überwachung mittels Mikrofon und Detektion von Baby-Unzufriedenheit bei Überschreitung einer bestimmten Amplitude innerhalb eines kurzen Zeitfensters
- Kommunikation zwischen Sender und Empfänger per Funkstrecke
- Identifikation mehrerer Sender mittels eindeutiger ID
- Regelmäßiges Melden des Senders beim Empfänger zur Überwachung der Funkstrecke
- Anzeige der vergangenen Zeit seit der letzten Meldung
- Meldung von Baby-Aktivität per Piepser, heller LED und Hintergrundbeleuchtung des LCD im Empfänger
- zwei Warnschwellen: rein optische Ausgabe bei Überschreiten der Detektionsschwelle im Sender, zusätzlich akustische Ausgabe bei Überschreiten einer weiteren Schwelle im Empfänger
- Taster zur Aktivierung der Hintergrundbeleuchtung des LCD für 5 Sekunden und zur Stummschaltung des Piepsers für etwa 10 Minuten
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.

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.

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:
- Warnung bei nicht vorhandener Verbindung durch Blinken der Hintergrundbeleuchtung und Anzeige von "keine Verbindung"
- Anzeige der Zeit seit der letzten "Baby-Meldung"
- Anzeige der verstärkten Mikrofonspannung bei bestehender Verbindung (Aktualisierung ungefähr aller 30 Sekunden)
Die Schaltung der Adapterplatine für das Display ist in der folgenden Abbildung dargestellt.

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.

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:
- babyfon_sender.h - grundlegende Einstellungen (zum Beispiel Detektionsschwelle, ID, Zykluszeiten, Fensterbreiten, Ausgabe über GLCD)
- port_definitions.h - Konfiguration der Pinbelegung
- rfm12_io.h - Festlegung von Registerwerten für das Funkmodul (z. B. Datenrate, Bandbreite, Sendeleistung, Synchronisationsmuster usw.)
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:
- babyfon_receiver.h - grundlegende Einstellungen (zum Beispiel maximale Synchronisationsdauer, Leuchtdauer der LCD-Hintergrundbeleuchtung)
- port_definitions.h - Konfiguration der Pinbelegung
- rfm12_io.h - Festlegung von Registerwerten für das Funkmodul (z. B. Datenrate, Bandbreite, Sendeleistung, Synchronisationsmuster usw.)
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 ("Mikro
X") 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:
- Anschlussbelegungen selbst (Verdrahtung) oder in der Dateien port_definitions.h fehlerhaft
- Timing (d. h. Wartezeiten) während der Initialisierung und der Funktionen zur Datenübertragung und Displayanzeige fehlerhaft (siehe lcd.h und rfm12_io.h)
- fehlende oder falsche Angaben zur Taktfrequenz des Controllers (F_CPU-Definition), die zu einer falschen Berechnung der Delays und aller Zykluszeiten führen, ebenso wie eine nicht eingeschaltete Optimierungsstufe beim Kompilieren (führt ebenso zu Problemen bei der Berechnung der Delays); alle Timer-Interrupts sind für 16 MHz konfiguriert und sind für abweichende Taktfrequenzen entsprechend anzupassen
- Probleme durch Mehrfachbelegung der ATmega-Controller-Ports (Beispiele: JTAG-Interface an PortC, USART an PortD)
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
- Sender: Version 0.11, 02.05.2010: erste Version auf Webseite
- Receiver: Version 0.2, 02.05.2010: erste Version auf Webseite
- Receiver: Version 0.3, 22.05.2011: Funktion zur zeitlich begrenzten Stummschaltung des Piepsers hinzugefügt
- Sender: Version 0.3, 17.03.2013: Sender-ID und davon abhängige Meldezykluszeit implementiert,
Receiver: Version 0.5, 04.03.2013: Empfang und Darstellung von Sender-ID, zweite Detektionsschwelle für akustische Ausgaben
Anregungen oder weitere Informationen
Hier kann ein Kommentar hinterlassen werden: