Uhr Shield für Raspberry Pi Pico

  • Ich habe vor sehr langer Zeit die Ledstyles Live Uhr zusammengelötet und diese auch lange in Verwendung gehabt. Leider hat sie mittlerweile den Dienst quittiert und ich bekomme sie nicht mehr hin. Ein Ersatz muss her. Ich wollte mich schon längst darum gekümmert haben aber die Zeit war nie da. In diesem Jahr bin ich nun endlich dazu gekommen damit zu beginnen. Das Platinenlayout steht und diese sind auch seit 2 Wochen da. Eine ist schon bestückt und wird zur Softwareentwicklung genutzt.



    Der Aufbau

    Es gibt 74 S6812 mit je einem 100nF 0805 Kerko. Zwischen dem GPIO Pin 22 und dem Din Pin der 1. LED ist ein 1206er SMD Widerstand vorgesehen. Ich hab nach Pi mal Augenmaß 220 Ohm vorgesehen. Es könnte auch eine Brücke vorgesehen werden. Zudem sind die Standartbelungen des Picos für I²C, SPI und UART mit 3,3V und GND auf 90° gewinkelte XH-Stecker herausgeführt. Es kann allerdings auch Stiftleiste verwendet werden. Die steht weiter ab, weshalb das ganze mit den Ausschnitten im Board für die Durchführung nach hinten nur mittelprächtig passt. Die Ausschnitte sind groß genug um den Stecker durchführen zu können. Außerdem kann der Neopixelbus erweitert werden. Das Ende ist ebenfalls auf einen XH-Stecker gelegt. Zudem gibt es noch einen 5 poligen Stecker gedacht für ein KY-040 Endlospoti mit Taster, einen Stecker für die Spannungsversorgung mit 5V und einen Reset-Taster, der leider auf dem orginalen Pico fehlt.



    Was ich vor der nächsten Bestellung an Platinen definitiv noch ergänzen werde, ist die Möglichkeit Pull Up Widerstände für I²C zu Bestücken und ggf. schon eine Beschriftung im Silkscreen für die Uhrzeit zu platzieren, um die Uhr auch „nackig“ verwenden zu können.



    Genug geschrieben, hier schonmal gerenderte 3D-Ansichten aus KiCad und das ein oder andere Bild des Entwicklungsexemplars

  • MadMech

    Hat den Titel des Themas von „Uhr Shiel für Raspberry Pi Pico“ zu „Uhr Shield für Raspberry Pi Pico“ geändert.
  • Na final ist noch nichts aber ich habe heute gute Fortschritte gemacht. Meine lib für das Einstellungsmenü ist erstmal funktional. Da gibt es mit Sicherheit noch reichlich optimierungsmöglichkeiten aber ich kann erstmal geschachtelte Menüs mit wenig Aufwand bauen und erweitern. Die RTC (DS3231) ist zwar schon im I²C Bus konfiguriert aber im Code wird die sonst noch nicht verwendet. Ich hatte gehofft, mit dem 2. Prozessorkern Menü und Uhr in separaten Threads laufen lassen zu können. Leider ist die die Implemtierung von Multithreading in Micropython noch im Status experimental und führt regelmäßig zu abstürzen. Auch mit asynchroner Abarbeitung mittels uasyncio kommt es gelegentlich zu Problemen. Schade so bleibt bisher leider nur die Möglichkeit über Verzögerung mittels Zeitstempeldifferenz zu arbeiten.


    Die Konfig wird schon persistent im Flash als JSON-String in einer Datei hinterlegt, beim boot eingelesen (wenn vorhanden, sonst angelegt) und bei Änderung eines Parameters auch auf dem Flash gespeichert. Somit bleiben alle darin gesicherten Parameter auch nach einem Spannungsausfall erhalten.

    Persistent einstellbar ist derzeit die Animation tagsüber (bisher noch nur 2), Helligkeit und die Anzeige von Sekunden kann abgewählt werden. Das gibt es noch ein zweites mal als Nachtmodus. Zusätzlich lässt sich der Nachtmodus abwählen und das Zeitfenster des Nachtmodus einstellen. Für beide Modi können zentral die Farben für Stunde, Minute und Sekunde (nur im einfachen Modus) ausgewählt werden. Bei der Verwendung des dreifarbigen Gradienten ist die gewählte Farbe immer bei der aktuellen Stunde bzw. Minute. Dreht sich also mit. Falls die Sekunde angezeigt wird, wird entweder die Farbe des Gradienten an der Stelle verwendet oder wenn die LED schon leuchtet, dann wird sie für die Sekunde abgeschaltet


    Hier mal 2 Bilder der beiden Animationen:



    Zu guter letzt gibt es hier noch ein Video (leider ist die Größe hier doch sehr beschränkt)

  • Das ist ein gutes Stichwort mit der Batterie und der Ladefunktion bei den DS3231 RTC-Modulen. Ich habe eine CR2032 drin und der "Laderegler" ist lahmgelegt durch auslöten der Diode. Das ist generell ratsam bei denen, denn der "Laderegler" besteht aus einer 1N4148 und einen 200Ω Widerstand. Da ist ein überladen des Akkus vorprogrammiert. Gefunden hatte ich das ganz gut aufgeschlüsselt bei onetransistor.