Meine DIY-Uhrenoption mit NTP-Client

Da es in früheren Veröffentlichungen nie zum fertigen Produkt kam, schlage ich meine eigene Version vor. Eisen ist nicht meine Spezialisierung, also urteilen Sie bitte nicht streng.

Also in Ordnung. Als meine Liebe zu Uhren und die genaue Zeit das Endstadium erreichten, wurde beschlossen, den Traum zu verwirklichen. Die Suche nach erschwinglichen Entwicklungsplatinen mit Ethernet an Bord begann. Rapsberry mit Linux schien eine "Waffe auf Spatzen" zu sein, deshalb habe ich im Netduino-Forum eine Frage gestellt, weil ich jetzt fest auf C # sitze und es interessant war, Bytecode auf dem Mikrocontroller auszuführen. Aber leider ist der einzige Moderator des Forums anscheinend in den Urlaub gefahren, und er hat mehrere Wochen gebraucht, um meine erste Nachricht zu genehmigen und zu veröffentlichen. Nicht gut, nicht gut ... Ein Arch Pro Board und andere fehlende Bodykits wurden bei aliexpress bestellt. Dann war es die günstigste Lösung. Der NXP LPC1768-Mikrocontroller ist auf der Karte selbst (Cortex-M3-Kern) sowie LPC11U35 (Cortex-M0) installiert, um die Kommunikation mit der Software zu erleichtern. Der Hersteller selbst stellt eine Online-IDE zur Verfügung.Die Kompilierung befindet sich auch auf ihrem Server. Die Firmware wird heruntergeladen und als Datei auf einem USB-Stick auf das Board heruntergeladen. Es gibt keinen Debugger. Deshalb habe ich mit der Entwicklung des Projekts in Keil uVision begonnen, einer Testversion natürlich. Für die Firmware und das Debuggen des Mikrocontrollers ist nur ein Micro-USB-Kabel erforderlich.

Der DS3231 IC wurde als Echtzeituhr ausgewählt, die mir in Form eines vorgefertigten Moduls zur Verfügung stand, das über I2C kommuniziert:

Rtc

Aus irgendeinem Grund funktionierte das mysteriöse Modul nur, wenn der Logikanalysator angeschlossen und eingeschaltet war (ich verwende Logic-U ISL von den Jungs aus Kharkov):

Erfahrungen

Zwischen den Signalleitungen und V + sollten 10K-Widerstände sein, das Modul wählte Megaoms. Welche Art von Dummy anstelle einer Widerstandsbaugruppe und einer LED, die niemals aufleuchtet, habe ich nicht verstanden. Die gelöteten Widerstände des Moduls wurden wiederbelebt, aber die kollektive Farmschwelle überschritt eine bestimmte Linie, sodass eine Platine wie das Arduino-Schild entwickelt wurde:

Schild

Schema:

planen

Eine Segmentanzeige wurde als Indikator genommen - diese Größe (0,8 Zoll in der Höhe) war nur mit weißen LEDs, aus allen Unterlagen darauf, die Chinesen stellten nur einen Jeep mit Pinbelegung zur Verfügung, einige unlesbare Zeichen mussten durch die Ausschlussmethode erraten werden. Die Steuerung dafür übernahm der bekannte MAX7219, der über SPI kommunizierte.

Fall ... In den Neujahrsferien gibt es natürlich keinen 3D-Drucker oder Laserschneiden. Ich selbst habe ein 8 mm Plexiglas gesägt, das herumlag.

Der Moment der Hoffnungslosigkeit in der Endphase:

Hoppla

Endgültige Produktansicht:

Ende

Die Uhr empfängt eine IP-Adresse über DHCP (ein Router verteilt sie an mich). Der NTP-Server wird zufällig ausgewählt. Die Zeit wird alle 25 Stunden angefordert (mein Provider trennt sich abends zur gleichen Zeit vom Internet, sodass ich nicht in diesen Zeitraum einsteigen möchte). Aufgrund der sich ständig ändernden Gesetzgebung mit Zeitzonen habe ich beschlossen, den Übergang zur Sommer- und Winterzeit nicht zu implementieren. Zwei Tasten verringern oder erhöhen einfach den Versatz von UTC um eine Stunde. Der Offset wird im EEPROM des Mikrocontrollers aufgezeichnet. Die Uhr wird zusätzlich durch eine 3-V-Lithiumbatterie gesichert, sodass Strom- und Internetausfälle kein Problem darstellen. Vier Farb-LEDs auf der Platine weisen auf Probleme mit dem Internet, Hardware oder Laufzeitfehler hin.

Der Quellcode für die Firmware auf dem Github:

https://github.com/sapozhnikov/eclock

Source: https://habr.com/ru/post/de384127/


All Articles