Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Tape Teardown
- Schritt 2: Dark Sky Pi
- Schritt 3: Der Code
- Schritt 4: Einhorn HAT & Servo
- Schritt 5: Kopfhörer wackeln
- Schritt 6: Montage
- Schritt 7: Ruhige Besessenheit
Video: 1984 WeatherMan Pi - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Dieser tragbare Kassettenspieler ist jetzt eine Umgebungs-IoT-Wetteranzeige im Stil der frühen 80er Jahre, die eine "aktuelle Bedingungen"-Animation anzeigt, die Temperatur- und Regenwahrscheinlichkeitsgraph durch das Bandfenster scrollt. Wenn sich die Wetterbedingungen ändern, wackeln die servogesteuerten Kopfhörer auf der Oberseite als subtile Warnung hin und her.
Beim Öffnen der funktionalen Klebebandtür sehen wir, dass die verstaubten Originalkomponenten durch einen Raspberry Pi Zero W, einen Pimoroni Unicorn Hat HD (LED Matrix) und ein kleines Servo ersetzt wurden. Die Wetterdaten werden mit einem Python-Skript bezogen, das die ultragenaue Dark Sky Weather API abfragt, die auf meinen spezifischen Standort zugeschnitten ist.
Es ist ein einfacher, aber schön aussehender und funktionaler IoT-Build, der auf dem gegenüberliegenden Schreibtischlautsprecher meines YouTube-Counters sitzt und mich leise über das Wetter auf dem Laufenden hält.
Lieferungen
Raspberry Pi Null
Pimoroni Einhorn HUT HD
Kleiner Servo
1984 Hitachi SP-1 Personal Stereo & Kopfhörer
USB-WLAN-Adapter
2mm Gewindestange
Sugru (Schwarz & Grau)
GeoMag-Magnet
Schritt 1: Tape Teardown
Ich habe diesen schönen alten Kassettenspieler im September von meiner Schwiegermutter geschenkt bekommen und mich sofort in seinen ikonischen Look und die klobigen Knöpfe verliebt. Der eigentliche Reiz war jedoch das große Bandfenster - nachdem ich es etwa 15 Sekunden lang besaß, hatte ich ein Lineal heraus und war erstaunt, dass es auf Millimeter genau die gleiche Größe wie ein Standard-Raspberry Pi HAT (Hardware Attached on Top) hat.
Allein diese Entdeckung reichte aus, um mein Kuckucksuhr-Projekt weiter unten auf der To-Do-Liste zu platzieren, und ich begann sofort mit der Arbeit, indem ich den Player zerlegte.
Der Teardown verlief ziemlich gut und ich hatte am Ende drei verschiedene Teile, mit denen ich arbeiten konnte - ich schaffte es, ein paar Plastikteile zu zerbrechen, aber nichts, was nicht wieder zusammengeklebt werden konnte.
Schritt 2: Dark Sky Pi
Ich benutze Dark Sky schon seit einiger Zeit auf meinem Handy und war wirklich beeindruckt von der Genauigkeit der Vorhersagen, daher war ich erfreut zu sehen, dass sie eine umfassende API anbieten, die ich in diesem Projekt verwenden kann bis zu!
Gehen Sie zuerst zu https://darksky.net/dev und melden Sie sich für ein kostenloses Konto an - mit einem "Testkonto" können Sie täglich 1000 API-Anfragen stellen, was für eine Aktualisierung alle 1,5 Minuten ausreicht - häufig genug sogar für meine Britisches Maß an Wetterbesessenheit.
Sobald Sie sich angemeldet haben, erhalten Sie einen "geheimen Schlüssel" - den benötigen Sie, um auf die Daten zuzugreifen und er wird im Python-Skript verwendet, also halten Sie ihn griffbereit (und wissen Sie, geheim).
Ich begann mit der Anpassung eines Skripts, das ich im YouTube-Abonnentenzähler-Build verwendet habe, der das Requests-Modul in Python verwendet, um API-Daten abzurufen. Das Skript, das ich verwendet habe, befindet sich auf GitHub, Sie müssen nur Ihren Dark Sky-API-Schlüssel hinzufügen und natürlich Ihre eigenen Werte für Breitengrad und Längengrad ersetzen.
Es war ziemlich einfach, Daten über die aktuellen Wetterbedingungen abzurufen, und ich entschied mich, die Elemente "Symbol", "Niederschlagswahrscheinlichkeit" und "Temperatur" zu verwenden.
Schritt 3: Der Code
Wenn Sie den von mir verwendeten Code wiederverwenden oder abspringen möchten, befindet er sich im WeatherMan-Repository auf GitHub - klonen Sie den Ordner "weather" oder laden Sie ihn in den Ordner "pi" auf Ihrem Raspberry Pi herunter.
Die wichtigsten Skriptfunktionen sind wie folgt:
wettermann.py
Dies ist das Hauptskript, das die Wetterdaten von Dark Sky extrahiert. Sie müssen ein Dark Sky-Konto unter https://darksky.net/dev einrichten und Ihren Geheimschlüssel an der angegebenen Stelle in das Skript einfügen. Sie müssen auch den Breiten- und Längengrad des gewünschten Wetterortes eingeben - diesen finden Sie auf Google Maps, klicken Sie einfach mit der rechten Maustaste und wählen Sie "Was ist hier?" und Sie erhalten ein Pop-up, das die Breite/Länge des Standorts anzeigt.
Nach dem Abrufen der API-Daten übergibt Weatherman.py Parameter an mehrere kleinere Skripte, um die Animationen und Kopfhörerwackeln zu starten.
Das Skript wird so eingestellt, dass es beim Start ausgeführt wird, indem die Startdatei bearbeitet wird…
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
…und ergänzt:
@python3 /home/pi/weather/weatherman.py &
am Ende der Datei.
icon.py
Dieses Skript nimmt einen Parameter "aktuelle Bedingungen" aus dem Skript Weatherman.py und verwendet ihn, um eine 16x16-Wetteranimation anzuzeigen - diese werden alle im Ordner "icons" gespeichert und sind Teil der Standard-Unicorn HAT HD-Dokumentation. Sie können die PNG-Animationsdateien einfach in GIMP oder einem ähnlichen Bildeditor bearbeiten, um ihnen mehr Charakter zu verleihen. Sie können die "Regen"-Animation so bearbeiten, dass sie unter bestimmten Bedingungen als "Regenmänner" angezeigt wird - ein zeitgenössischer Klassiker aus dem Jahr 1983.
handys.py
Wenn sich die Wetterbedingungen seit der letzten API-Anfrage geändert haben (oder es ein frischer Boot ist und es nicht schneit), wird dieses Skript von weatherman.py aufgerufen und weist das Servo an, hin und her zu "wackeln", um Sie darauf aufmerksam zu machen, dass die Bedingungen geändert.
precip.py
Dieses Skript akzeptiert einen "Niederschlagswahrscheinlichkeits"-Parameter von weatherman.py und zeigt blaue Linien auf dem Unicorn HAT an, die sich auf die %-Wahrscheinlichkeit beziehen. Bei 100% leuchten alle 16 Reihen blau, bei 50% nur 8 Reihen usw.
temp.py
Ein weiteres Standard-Pimoroni-Skript, dieses nimmt einen "temp" -Parameter von weatherman.py und zeigt ihn mit Lauftext an. Es ist so eingestellt, dass es die Herkules TrueType-Schriftart (im Ordner "fonts") verwendet, kann aber auch eine Standardschriftart verwenden, wenn Sie es vorziehen. Sie können sie sogar so verbessern, dass der angezeigte Text die Farbe je nach Temperaturwert ändert!
Schritt 4: Einhorn HAT & Servo
Die Wetterdaten zu bekommen war großartig, aber jetzt musste ich sie auf dem Unicorn HAT anzeigen. Ich habe mir verschiedene Sätze von Wettersymbolen im Internet angesehen und war auf halbem Weg mit der Anpassung, als ich feststellte, dass der Pimoroni-Dokumentation ein Wetterbeispiel beigefügt war - und dieses beinhaltete Wetteranimationen!
Das hat mir eine Menge Arbeit gespart, und ich war im Handumdrehen startklar, mit einem animierten Symbol für die aktuellen Bedingungen, einem Lauftext für die Temperatur und einer Grafik für den prozentualen Niederschlag (wobei etwas leichte Mathematik erforderlich war). Ich habe die Skripte getrennt gehalten und das Subprocess-Modul von Python verwendet, um Parameter hin und her zu übergeben.
Das Hinzufügen des Servos war das ideale Fahrzeug für diese Warnungen, da es ein wenig Lärm machte und auffällig war, ohne zu störend zu sein. Da der HAT bereits viele der Pins des Pi aufnimmt, lötete ich die Servokabel an die Unterseite der Platine, wobei Pin 17 verwendet wurde, um die Bewegung des Servos mit Pulsweitenmodulation zu steuern.
Die Stromversorgung des Servos vom Pi war nicht ideal, aber es würde immer nur für ein kurzes Wackeln verwendet, so dass Präzision hier keine große Sache war. Es wurde wie im Diagramm gezeigt angeschlossen, mit braunem Kabel an GND, Rot an 5V und Orange (das Steuerkabel) an GPIO17.
Zuletzt habe ich einige der Wetteranimationsdateien in GIMP bearbeitet, um meine eigenen persönlichen Akzente zu setzen, wie Fledermäuse auf dem Mond und ein Smiley-Gesicht auf der Sonne. Ich habe auch eine benutzerdefinierte "Old Tech New Spec"-Kassettenradanimation hinzugefügt, die beim Start abgespielt wird, nur zum Spaß.
Schritt 5: Kopfhörer wackeln
Die Idee des WeatherMan war, dass er passiv auf meinem Schreibtischlautsprecher sitzt und gelegentlich das Wetter anzeigt, aber ich wollte, dass er nur ein bisschen mehr kann! Die mitgelieferten Kopfhörer waren Toast, aber klassische 80er Jahre, also beschloss ich, etwas damit zu machen. Nachdem ich alle Kabel abgezogen und das kaputte mit Heißkleber verklebt hatte, blieben drei Teile übrig, der 3,5-mm-Stecker, der rautenförmige Knopf und die Telefone selbst an ihrem flexiblen Metallband.
Die Idee kam mir, dass ich, wenn ich eine Möglichkeit finde, die Telefone oben auf dem Gerät zu montieren, sie mit einem Servo hin und her drehen und dies als zusätzliche Benachrichtigung verwenden könnte.
Zuerst habe ich den 3,5-mm-Stecker aufgebohrt und den Diamantschalter demontiert, dann diese auf ein Stück Gewindestange geschoben. Als nächstes klebte ich eine Mutter an einen Kunststoffverbinder, damit die Stange sicher (und gerade) auf dem Servo sitzen konnte. Am anderen Ende der Stange habe ich eine weitere Nuss hinzugefügt. Schließlich habe ich grauen Sugru verwendet, um die Oberseite der Stange mit dem Kopfhörerband zu verbinden und auch die Mutter an der Unterseite der Baugruppe abzudecken. Wenn Sie noch nicht von Sugru gehört haben, es ist ein formbarer Kleber, der in kleinen farbigen Beuteln geliefert wird - er lässt sich wie Play-Doh formen, haftet aber wie Sekundenkleber und härtet wie Plastik aus!
Bei der jüngsten Kälte dauerte es einige Tage, bis der Sugru vollständig ausgehärtet war, aber die Kopfhörer und ihr Ständer waren bald fertig für die Endmontage.
Schritt 6: Montage
Pi, HAT und Servo funktionierten alle gut auf der Werkbank, also bestand die nächste Aufgabe darin, sie in das Gehäuse zu bringen. Bevor ich mit den großen Komponenten begann, habe ich etwas übrig gebliebenes graues Sugru verwendet, um den Lautstärkeregler, die Kopfhörerbuchse und den "Metallband" -Schalter zu reparieren und die Kosmetika auszusortieren. Ich habe auch die originalen Play-, Stop-, FF- und Rew-Knöpfe auf ein Stück Plastikrohr geklebt, damit sie genau an der richtigen Stelle bleiben. Es war eine Schande, diesmal keine der Tasten wiederzubenutzen, aber es gab nicht wirklich etwas, das sie kontrollieren konnten!
Ich habe den letzten grauen Sugru verwendet, um das Servo in Position zu halten, wobei seine Welle durch die vergrößerte Kopfhörerbuchse stößt. Ich ging zur anderen Hälfte des Gehäuses und benutzte dann etwas schwarzes Sugru, um die HAT- und Pi-Baugruppe an der Bandtür zu befestigen, damit sie sich damit öffnen würden. Der letzte kleine Schliff hat mir sehr gut gefallen - die Befestigung eines GeoMag-Magneten, damit die Tür fest geschlossen bleibt.
Das Zusammenfügen der beiden Hälften war eine nervöse Angelegenheit, da ich befürchtete, dass Pi & Servo gegeneinander prallen würden, aber am Ende war noch etwa ein Millimeter übrig, viel in meinem Buch. Da die funky Tür zum Öffnen vollen Zugang zum Innenraum für zukünftige Wartungsarbeiten geben würde, habe ich die beiden Hälften nur heiß zusammengeklebt und nach dem Abwischen meiner fettigen Fingerabdrücke die Kopfhörerbaugruppe darauf montiert - fertig!
Schritt 7: Ruhige Besessenheit
Zweiter Preis im Wiederverwendungswettbewerb