Cuprins:
- Provizii
- Pasul 1: Teardown de bandă
- Pasul 2: Dark Sky Pi
- Pasul 3: Codul
- Pasul 4: Unicorn HAT & Servo
- Pasul 5: Jiggle pentru căști
- Pasul 6: Asamblare
- Pasul 7: obsesie liniștită
Video: 1984 WeatherMan Pi: 7 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Acest casetofon portabil este acum un afișaj meteorologic ambiental IoT cu stilul de la începutul anilor 80, afișând o animație „condiții actuale”, temperatura de derulare și graficul probabilității de ploaie prin fereastra de bandă. Când starea vremii se schimbă, căștile servo-controlate din partea de sus se mișcă înainte și înapoi ca o alertă subtilă.
Deschizând ușa funcțională cu bandă, putem vedea că componentele originale prăfuite au fost înlocuite cu un Raspberry Pi Zero W, un Pimoroni Unicorn Hat HD (LED Matrix) și un servo mic. Datele meteo sunt obținute folosind un script Python care interogă API-ul ultra-precis Dark Sky Weather, adaptat locației mele specifice.
Este o construcție IoT simplă, dar minunată și funcțională, care se află pe difuzorul opus de birou de la ghișeul meu YouTube, ținându-mă liniștit la curent cu vremea.
Provizii
Raspberry Pi Zero
Pimoroni Unicorn HAT HD
Servo mic
1984 Stereo și căști personale Hitachi SP-1
Adaptor USB USB
Tijă filetată de 2 mm
Sugru (negru și gri)
Magnet GeoMag
Pasul 1: Teardown de bandă
În septembrie mi-a fost dat acest minunat casetofon de către soacra mea și m-am îndrăgostit instantaneu de aspectul său iconic și de butoanele groase. Totuși, adevărata atracție a fost acea fereastră mare de bandă - după ce am deținut-o aproximativ 15 secunde, am avut o riglă afară și am fost uimit să constat că are, la mm, aceeași dimensiune ca un Raspberry Pi HAT (Hardware atașat pe partea de sus).
Numai acea descoperire a fost suficientă pentru a mișca proiectul de ceas cu cuc mai jos pe lista „de făcut” și am început să lucrez imediat, prin demontarea playerului.
Despărțirea a decurs destul de bine și am ajuns cu trei piese distincte cu care să lucrez - am reușit să rup câteva părți din plastic, dar nimic care să nu poată fi lipit la loc.
Pasul 2: Dark Sky Pi
Folosesc Dark Sky pe telefonul meu de ceva timp și am fost foarte impresionat de acuratețea previziunilor, așa că am fost încântat să văd că oferă un API cuprinzător pe care aș putea să-l folosesc în acest proiect. sus și!
În primul rând accesați https://darksky.net/dev și înscrieți-vă pentru un cont gratuit - un cont „de încercare” vă permite să faceți 1000 de cereri API pe zi, ceea ce este suficient pentru o reîmprospătare la fiecare 1,5 minute - suficient de frecvent chiar și pentru Nivelul britanic de obsesie a vremii.
Odată înscris, veți obține o „Cheie secretă” - de asta aveți nevoie pentru a accesa datele și sunt utilizate în scriptul Python, așa că păstrați-l la îndemână (și, știți, secret).
Am început prin adaptarea unui script pe care l-am folosit în compilarea contorului abonatului YouTube, care folosește modulul Cereri din Python pentru a prelua datele API. Scriptul pe care l-am folosit este pe GitHub, va trebui doar să adăugați cheia API Dark Sky și, bineînțeles, să înlocuiți propriile valori de latitudine și longitudine.
A fost destul de simplu să trag date despre condițiile meteorologice actuale și am decis să folosesc elementele „Pictogramă”, „Probabilitate de precipitație” și „Temperatură”.
Pasul 3: Codul
Dacă doriți să reutilizați sau să dezactivați codul pe care l-am folosit, se află în depozitul WeatherMan de pe GitHub - clonați sau descărcați folderul „weather” în folderul „pi” de pe Raspberry Pi.
Funcțiile principale ale scriptului sunt următoarele:
weatherman.py
Acesta este scriptul principal care extrage datele meteo din Dark Sky. Va trebui să configurați un cont Dark Sky la https://darksky.net/dev și să introduceți cheia secretă în script unde este indicat. De asemenea, va trebui să introduceți latitudinea și longitudinea locației meteo care vă interesează - aceasta poate fi găsită pe Google Maps, faceți clic dreapta și selectați „Ce este aici?” și veți primi o fereastră pop-up care afișează latul / lungimea locației.
După preluarea datelor API weatherman.py trece parametrii la mai multe scripturi mai mici pentru a da startul animațiilor și zguduirilor căștilor.
Scriptul este setat să ruleze la pornire editând fișierul de pornire …
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
… și adăugând:
@ python3 /home/pi/weather/weatherman.py &
la sfârșitul fișierului.
icon.py
Acest script preia un parametru „condiții actuale” din scriptul weatherman.py și îl folosește pentru a afișa o animație meteo 16x16 - toate acestea sunt stocate în folderul „pictograme” și fac parte din documentația standard Unicorn HAT HD. Puteți edita cu ușurință fișierele de animație-p.webp
telefoane.py
Dacă condițiile meteorologice s-au schimbat față de ultima solicitare API (sau este o încărcare nouă și nu ninge), atunci acest script este apelat de la weatherman.py și instruiește servo-ul să „jiggle” înainte și înapoi pentru a vă avertiza că condițiile au schimbat.
precip.py
Acest script acceptă un parametru „probabilitate de precipitație” din weatherman.py și afișează linii în albastru pe Unicorn HAT referitoare la% probabilty. Dacă 100% toate cele 16 rânduri vor aprinde albastru, dacă 50% doar 8 rânduri etc.
temp.py
Un alt script standard Pimoroni, acesta ia un parametru „temp” de la weatherman.py și îl afișează cu text derulant. Este setat să utilizeze fontul tip Herkules (în folderul „fonturi”), dar puteți utiliza un font standard dacă preferați. Puteți chiar să îl îmbunătățiți, astfel încât textul afișat să schimbe culoarea în funcție de valoarea temperaturii!
Pasul 4: Unicorn HAT & Servo
Posibilitatea de a obține datele meteo a fost grozavă, dar acum trebuia să le afișez pe Unicorn HAT. M-am uitat la diferite seturi de icoane meteo pe internet și am fost la jumătatea procesului de adaptare atunci când mi-am dat seama că există un exemplu de vreme inclus în documentația Pimoroni - și aceasta a inclus animații meteo!
Acest lucru a economisit o cantitate uriașă de muncă și am pornit și am alergat în cel mai scurt timp, cu o pictogramă animată pentru condițiile actuale, un text de defilare pentru temperatură și un grafic pentru% de precipitații (care a implicat câteva matematici ușoare). Am păstrat scripturile separate și am folosit modulul Subproces al Python pentru a trece parametrii înainte și înapoi.
Adăugarea în servo a fost vehiculul ideal pentru aceste alerte, deoarece ar face un pic de zgomot și ar fi atrăgător, fără a fi prea enervant. Cu HAT-ul deja ocupând mulți dintre pinii lui Pi, am lipit cablurile servo pe partea inferioară a plăcii, folosind pinul 17 pentru a controla mișcarea servo-ului folosind modularea lățimii impulsurilor.
Alimentarea servo-ului de la Pi nu a fost ideală, dar ar fi folosită doar pentru o mișcare momentană, astfel încât precizia nu a fost mare lucru aici. S-a conectat așa cum se arată în diagramă, cu cablu maro la GND, roșu la 5v și portocaliu (cablul de control) la GPIO17.
În cele din urmă, am editat câteva dintre fișierele de animație meteo din GIMP pentru a adăuga în propriile mele atingeri personale, cum ar fi liliecii pe lună și o față zâmbitoare pe soare. Am adăugat, de asemenea, într-o animație personalizată a roții de casetă „Old Tech New Spec”, care va fi redată la pornire, doar pentru distracție.
Pasul 5: Jiggle pentru căști
Ideea WeatherMan a fost că ar sta pasiv pe difuzorul biroului meu, afișând ocazional vremea, dar am vrut să facă ceva mai mult! Căștile care au venit cu el au fost pâine prăjită, dar clasice din anii 80, așa că am decis să fac ceva cu ele. După ce am dezbrăcat toate cablurile și am lipit-o pe cea spartă, mi-au rămas trei părți, mufa de 3,5 mm, butonul în formă de diamant și telefoanele în sine pe banda lor metalică flexibilă.
Ideea m-a frapat că, dacă aș găsi un mod de a monta telefoanele deasupra unității, aș putea să le fac să se rotească înainte și înapoi cu un servo și să le folosesc ca o notificare suplimentară.
În primul rând am forat dopul de 3,5 mm și am demontat comutatorul cu diamant, apoi le-am strecurat pe o bucată de tijă filetată. Apoi am lipit o piuliță de un conector de plastic, astfel încât tija să poată sta în siguranță (și drept) deasupra servo-ului. La celălalt capăt al tijei am adăugat într-o altă piuliță. În cele din urmă, am folosit Sugru gri pentru a lega partea superioară a tijei de banda pentru căști și, de asemenea, pentru a acoperi piulița din partea de jos a ansamblului. Dacă nu ați auzit de Sugru, este un adeziv modelabil care vine în pliculețe colorate mici - se mulează ca Play-Doh, dar se lipeste ca superglue și se fixează tare ca plasticul!
Odată cu vremea rece recentă, Sugru a durat câteva zile să se întărească complet, dar căștile și suportul lor au fost în curând gata pentru asamblarea finală.
Pasul 6: Asamblare
Pi, HAT și Servo lucrau bine pe bancă, așa că următoarea sarcină a fost să-i aducă în caz. Înainte de a începe cu componentele mari, am folosit niște Sugru gri rămase pentru a fixa cadranul de volum, mufa pentru căști și comutatorul „bandă metalică”, sortând produsele cosmetice. De asemenea, am lipit butoanele originale Play, Stop, FF și Rew de o bucată de conductă de plastic, astfel încât să rămână în locul potrivit. A fost păcat să nu reutilizezi niciunul dintre butoane de această dată, dar nu a existat cu adevărat nimic pe care să-l controleze!
Am folosit ultimul Sugru gri pentru a menține servo-ul în poziție, cu arborele care se scufundă prin priza mărită pentru căști. Trecând la cealaltă jumătate a carcasei, am folosit apoi niște Sugru negru pentru a fixa ansamblul HAT și Pi de ușa cu bandă, astfel încât să se deschidă cu ea. Mi-a plăcut foarte mult ultima atingere finală - fixarea într-un magnet GeoMag, astfel încât ușa să fie ținută ferm închisă.
Punerea laolaltă a celor două jumătăți a fost o afacere nervoasă, deoarece mă temeam că Pi & Servo se vor ciocni unul de celălalt, dar în cele din urmă mai aveau aproximativ un milimetru de rezervă, o mulțime în cartea mea. Deoarece ușa de deschidere funky ar oferi acces complet la interior pentru întreținerea viitoare, tocmai am lipit la cald cele două jumătăți și, după ce am șters amprentele mele grase, am montat căștile deasupra - gata!
Pasul 7: obsesie liniștită
Premiul II la Concursul de Reutilizare
Recomandat:
Cum: Instalarea Raspberry PI 4 Headless (VNC) cu Rpi-imager și imagini: 7 pași (cu imagini)
Cum: Instalarea Raspberry PI 4 Headless (VNC) cu Rpi-imager și Pictures: Plănuiesc să folosesc acest Rapsberry PI într-o grămadă de proiecte distractive din blogul meu. Simțiți-vă liber să o verificați. Am vrut să mă întorc să folosesc Raspberry PI, dar nu aveam tastatură sau mouse în noua mea locație. A trecut ceva timp de când am configurat un Raspberry
Cameră cu infrarosu cu imagini termice DIY: 3 pași (cu imagini)
Cameră cu infrarosu cu imagini termice DIY: Bună ziua! Caut mereu proiecte noi pentru lecțiile mele de fizică. Acum doi ani am dat peste un raport despre senzorul termic MLX90614 de la Melexis. Cel mai bun cu doar 5 ° FOV (câmp vizual) ar fi potrivit pentru o cameră termică făcută de sine. Pentru a citi
Lansați prezentarea de imagini de vacanță cu o atingere de magie!: 9 pași (cu imagini)
Lansează-ți prezentarea cu imagini de vacanță cu un strop de magie! pentru a se potrivi cu steagul și tema țării pe care o vizitez (în acest caz, Sicilia). T
Cum să dezasamblați un computer cu pași și imagini ușoare: 13 pași (cu imagini)
Cum să dezasamblați un computer cu pași și imagini ușoare: Aceasta este o instrucțiune despre cum să dezasamblați un computer. Majoritatea componentelor de bază sunt modulare și ușor de îndepărtat. Cu toate acestea, este important să fiți organizat în acest sens. Acest lucru vă va ajuta să nu vă pierdeți piese și, de asemenea, să faceți reasamblarea
Vizualizator digital de imagini 3D - „The DigiStereopticon”: 6 pași (cu imagini)
Vizualizator digital de imagini 3D - „The DigiStereopticon”: fotografia stereoscopică a căzut în lipsă. Acest lucru se datorează probabil faptului că oamenilor nu le place să poarte ochelari speciali pentru a vedea instantanee de familie. Iată un mic proiect distractiv pe care îl poți face în mai puțin de o zi pentru a-ți face imaginea 3D