Schlagwort-Archiv: ENC28J60

DCF77 am Arduino

Beim C64 hatte ich ja schon mal mit einem DCF77 Modul experimentiert. Jetzt habe ich wieder ein DCF77 Modul im alten Funkwecker und habe mal erfolgreich getestet, ob dies nicht auch mit einem Arduino geht. Die DCF77-Funkuhren empfangen das Signal des DCF77 Langwellensenders. Dieser Langwellensender steht in Mainflingen bei Frankfurt am Main. Die Sendefrequenz beträgt 77,5 kHz. Obwohl die Sendeanlage schon seit 1959 in Betrieb ist, gibt es nicht wie bei LTE große Funklöcher und ist fast überall in Deutschland zu empfangen. DCF77 strahlt auf Langwelle eine codierte Zeitinformation aus, die am DCF77 Empfänger decodiert werden muss. In diesen Fall macht das nun unser Arduino.

Jedenfalls war das Modul DCF77 vom Wecker und hat sehr lange beim einpendeln gebraucht, bis ich mal eine Uhrzeit bekommen habe. Also habe ich bei Pollin mal ein DCF77 DCF1 (laut Beschreibung ist das die 3. Version) gekauft und dies ging deutlich besser. Deshalb hier jetzt die Beschreibung, wie man das mit Arduino aufbaut. Beim Pollin DCF77 muss am Anschluss PON (Power ON) mit GND verbunden werden.

Jetzt beschreib ich mal, was der Aufbau macht. Nachdem Arduino UNO mit Strom versorgt wurde, wird nach kurzer Zeit die MAC Adresse angezeigt. Danach wird versucht, eine IP über DHCP zu bekommen. Wer also eine feste IP haben will, sollte beim Router die MAC-Adresse hinterlegen. Welche IP man bekommen hat, wird in der 4. Zeile unten angezeigt. Zu Beginn steht jetzt Datum auf 01.01.1970 und die Uhrzeit auf 00:00:00, da der Arduino kein RTC. Real-time Clock (RTC) oder physikalische Uhr ist eine Uhr, welche die physikalische Zeit misst. Eine RTC verfügt über eine Batterie, so dass wenn der z.B. Arduino oder PC stromlos ist, immer noch weiß wie spät es ist.

Beim Pollin DCF1 Modul warten wir mal die im Datenblatt erwähnten 20 Minuten ab und die Uhrzeit/Datum sollte nun auf der LCD ausgegeben werden. Danach sollte alle paar Minuten mal die LED aufblitzen. Die LED zeigt an, wann die Zeit empfangen wurde und synchronisiert wird. Zusätzlich habe ich noch einen DHT22. Der DHT22 ist ein zuverlässiger Sensor zum Ermitteln von Temperatur und Luftfeuchtigkeit.
Die Vorgänger DHT11/DHT21 funktionieren auch, aber der DHT22 liefert schnellere und bessere Ergebnisse in meinem Test. Mit einem Arduino Ethernet ENC28J60 Modul werden aktuell Uhrzeit, Datum, Feuchtigkeit und Temperatur für Smartphone, Laptop, … darstellbar. Man kann noch über das Webinterface das Hintergrundlicht für die LCD-anzeige an-/abschalten. Mehr geht erstmal noch nicht.

Man könnte da noch viel mehr machen, über Funk z.B. Licht / Steckdosen schalten,…

So hier der Quellcode auf GitHub

Dazu noch die Steckverbindungen:

Tipps:

LCD zeigt weiße Kästen oder nichts:

1. Verbindung überprüfen
2. Poti auf Rückseite links/rechts drehen für Helligkeit
3. Folgende Zeile suchen:
LiquidCrystal_I2C lcd(0x3F,20,4);

Hier den HEX wert 0x3F durch 0x27 ersetzen.

DCF77 keine Zeit nach über 20 min:

1. Verbindung überprüfen
2. Arduino mit Netzteil versorgen, nicht über USB mit Laptop/PC (Kann Störungen verursachen)
3. DCF77 soweit wie möglich von elektronischen Geräten in der Nähe fern halten

Folgende Bibliotheken werden benötigt:

– DCF77
– TimeLib
– DHT
– EtherCard