Schlagwort-Archiv: Smartphone

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

 

Sharp MZ 700 – MZ-SD2CMT

Bisher habe ich immer ein altes Android Smartphone genutzt, dazu musste ich aber immer die Dateien in WAV umwandeln und dann mit einem Player die Daten abspielen. Klappt leider nur bei mehreren Versuchen, weil mal die Lautstärke zu laut oder zu leise ist , Player stürzt bei manchen wav dateien ab, …

Jetzt habe ich auf github das Projekt MZ-SD2CMT gefunden und habe dies gleich mal nachgebaut und bin begeistert.
MZ-SD2CMT kann MZF/MZT/M12/LEP oder WAV von SD-Karte am Sharp MZ-700 wiedergeben. Auch die anderen Probleme sind damit weg, wie Lautstärke, Player, ….

Hier die Bauanleitung + Code:
https://github.com/SHARPENTIERS/MZ-SD2CMT

Die Tasten waren mir aber nichts, darum habe ich einen Infrarot-Empfänger hinzugefügt (man kann z.B. VS1838B nehmen). Nun lässt sich das Ganze mit Fernbedienung steuern. Die Tasten funktionieren ganz normal.

Angeschlossen wurde der Infrarot-Empfänger so:

Infrarot-Empfänger VS1838B | Arduino
5V -> 5V
GND -> GND
Signal/Data -> PIN 49

Ich habe bereits Kontakt mit dem Entwickler aufgenommen, sodass dies vielleicht ein Teil vom Projekt wird.
Auf jeden Fall muss das erweiterte Sketch von mir auf das Arduino geladen werden.
Dazu muss aber noch zusätzlich die Library „IRremote“ in der Bibliotheksverwaltung hinzugefügt werden.
Diese kann mit dem Suchbegriff „IRremote“ gefunden und installiert werden.

Sobald das neue Sketch auf dem Arduino läuft, kann man im Serial Monitor von (Arduino IDE) sich die IR-Codes anschauen.
Man nimmt dazu einfach seine gewünschte IR Fernbedienung und drückt die Tasten, die man verwenden möchte.
Es ist egal welche Fernbedienung man nimmt, es kann eine alte Radio/Fernsehr,Videorecorder/DVD -,… Fernbedienung sein.

Bei mir ist das z.B.
Links – CH-
Rechts – CH+
Select – >|| (play)
up – > Forward
down – < replay

Beim Drücken der Fernbedienung wird eine Zahl angezeigt (Fernbedienungscodes), die man sich notieren muss und im Sketch angeben muss.
z.B.:

#define IR_right_code -7651 //CH+ key
#define IR_left_code -23971 //CH-
#define IR_up_code 8925 //preview key (<<) #define IR_down_code 765 //forwards key (>>)
#define IR_select_code -15811 //play key (>||)

Hier noch der Anschluss vom Arduino zum Sharp 700:


MZ-SD2CMT-master