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.

  • Ich habe euch ein erstes Exemplar komplett vorenthalten. Leider habe ich am Ende vergessen ein Bild mit dem Knopf am Encoder zu machen. Ich war da aber ein bisschen im Termindruck, da das ganze ein Geburtstagsgeschenk geworden ist.


    Alle gedruckten Teile sind in PETG gedruckt. Das Filament mit dem Farbverlauf ist das mieseste PETG-Filament, das mir bisher untergekommen ist. Lufteinschlüsse im Filament, miserable Überhänge, sehr ausgeprägte Neigung zu Warping und selbst nach 15 Stunden bei 70°C im Dörrautomaten war noch reichlich Feuchtigkeit drin. Definitiv kein Vergleich zu Extrudr, Das Filament, Sunlu oder 3D-Jake. Selbst das Amazon Basics Filament ist da noch besser. Dazu kam, dass die Laufrollen des Druckers an der X-Achse hart an der Verschleißgrenze waren. Die Oberfläche ist deshalb leider nicht so gut wie üblich geworden. Unter normalen Umständen hätte ich das mit anderem Filament nach Austausch der Rollen nochmal gedruckt.


    Stromversorgung ist über ein USB-Netzteil mit USB-C Kabel und Keystone realisiert. Alle Komponenten sind verschraubt und im Notfall oder zum Wechsel der Batterie des RTC-Moduls einfach zugänglich



    Das Gehäuse im Druck. Druckzeit waren ca. 23Std. Abmessungen sind ca. 180x146x250mm. Materialverbrauch etwa 550g PETG



    Kabelbaum eingezogen und Stecker gecrimpt



    Das RTC-Modul ist im Fuß der Uhr untergebracht. Es ist sehr viel Platz für einen Batteriewechsel. Der USB-C Keystone mit Fassung ist ebenfalls auf der Rückseite und kann, wenn die Buchse mal ausgeleiert sein sollte, einfach ersetzt werden.



    Die Uhr von vorne mit folierten Ziffern (selbst geplottet). Leider fehlt auf dem Bild noch das Rad des Encoders.


    Der akutelle Funktionsumfang über das OLED-Display:

    1. Datumsanzeige
    2. Einstellung von Zeit und Datum mit aktualisierung des RTC-Moduls
    3. Einstellung der Helligkeit
      Anzeige der Sekunden abschaltbar
    4. Optionale Hilfsanzeigen alle 15 oder alle 5 Minuten
    5. optional aktivierbarer Nachtmodus mit eigenem Parametersatz (Helligkeit, Animation, Sekundenanzeige, Hilfsanzeigen, Zeitraum, etc)
    6. Anpassung des Farbschemas
    7. Automatische oder manuelle Umschaltung zwischen Sommer- und Winterzeit (auch wenn die Uhr zum Zeitpunkt der Umstellung aus ist)
    8. Persistent gespeicherte Konfiguration im Flash. Wird beim Start vom Flash ausgelesen und bei Veränderung auch im Flash aktualisiert