Inhoudsopgave:

1984 WeatherMan Pi: 7 stappen (met afbeeldingen)
1984 WeatherMan Pi: 7 stappen (met afbeeldingen)

Video: 1984 WeatherMan Pi: 7 stappen (met afbeeldingen)

Video: 1984 WeatherMan Pi: 7 stappen (met afbeeldingen)
Video: The Giant Wave - The Perfect Storm (3/5) Movie CLIP (2000) HD 2024, November
Anonim
Image
Image
1984 WeatherMan Pi
1984 WeatherMan Pi
1984 WeatherMan Pi
1984 WeatherMan Pi

Deze draagbare cassettespeler is nu een ambient IoT-weerdisplay in de stijl van de vroege jaren 80, met een animatie van "huidige omstandigheden", scrollende temperatuur- en regenwaarschijnlijkheidsgrafiek door het tapevenster. Wanneer de weersomstandigheden veranderen, wiebelt de servogestuurde hoofdtelefoon bovenop heen en weer als een subtiele waarschuwing.

Als we de functionele tapedeur openen, zien we dat de stoffige originele componenten zijn vervangen door een Raspberry Pi Zero W, een Pimoroni Unicorn Hat HD (LED Matrix) en een kleine servo. De weergegevens zijn afkomstig van een Python-script dat de ultranauwkeurige Dark Sky Weather API opvraagt, afgestemd op mijn specifieke locatie.

Het is een eenvoudige maar mooi ogende en functionele IoT-build die op de bureauluidspreker tegenover mijn YouTube-teller zit en me stil op de hoogte houdt van het weer.

Benodigdheden

Raspberry Pi Zero

Pimoroni Eenhoorn HOED HD

kleine servo

1984 Hitachi SP-1 persoonlijke stereo en hoofdtelefoon

USB wifi-adapter

2 mm draadstang

Sugru (zwart en grijs)

GeoMag-magneet

Stap 1: Afbreken van tape

Afbreken van tape
Afbreken van tape
Afbreken van tape
Afbreken van tape
Tape demontage
Tape demontage

Ik kreeg deze mooie oude cassettespeler in september van mijn schoonmoeder en werd meteen verliefd op zijn iconische uiterlijk en dikke knoppen. De echte aantrekkingskracht was echter dat grote tapevenster - nadat ik het ongeveer 15 seconden had gehad, had ik een liniaal en was verbaasd te ontdekken dat het, tot op de millimeter nauwkeurig, even groot was als een standaard Raspberry Pi HAT (Hardware Attached on Top).

Die ontdekking alleen al was genoeg om mijn koekoeksklokproject verder op de "to do"-lijst te stoten en ik ging meteen aan de slag, door de speler te demonteren.

Het afbreken ging redelijk goed en ik kreeg uiteindelijk drie verschillende stukken om mee te werken - ik slaagde erin om een paar plastic onderdelen te breken, maar niets dat niet aan elkaar kon worden gelijmd.

Stap 2: Dark Sky Pi

Dark Sky Pi
Dark Sky Pi
Dark Sky Pi
Dark Sky Pi
Dark Sky Pi
Dark Sky Pi

Ik gebruik Dark Sky al een tijdje op mijn telefoon en was erg onder de indruk van de nauwkeurigheid van de voorspellingen, dus ik was verheugd om te zien dat ze een uitgebreide API bieden die ik in dit project kon gebruiken. Het is leuk en eenvoudig in te stellen ook op!

Ga eerst naar https://darksky.net/dev en meld u aan voor een gratis account - met een "proef"-account kunt u 1000 API-verzoeken per dag doen, wat genoeg is om elke 1,5 minuut te vernieuwen - vaak genoeg voor zelfs mijn Britse niveau van weerobsessie.

Eenmaal aangemeld krijg je een "geheime sleutel" - dit is wat je nodig hebt om toegang te krijgen tot de gegevens en het wordt gebruikt in het Python-script, dus houd het bij de hand (en, je weet wel, geheim).

Ik begon met het aanpassen van een script dat ik gebruikte in de YouTube Subscriber Counter-build, die de Requests-module in Python gebruikt om API-gegevens op te halen. Het script dat ik heb gebruikt staat op GitHub, je hoeft alleen maar je Dark Sky API-sleutel toe te voegen en natuurlijk je eigen Latitude & Longitude-waarden te vervangen.

Het was vrij eenvoudig om gegevens over de huidige weersomstandigheden op te halen en ik besloot gebruik te maken van de elementen "Icoon", "Neerslagwaarschijnlijkheid" en "Temperatuur".

Stap 3: De code

De code
De code

Als je de code die ik heb gebruikt opnieuw wilt gebruiken of gebruiken, staat deze in de WeatherMan-repository op GitHub - kloon of download de map "weather" naar de map "pi" op je Raspberry Pi.

De belangrijkste scriptfuncties zijn als volgt:

weerman.py

Dit is het hoofdscript dat de weergegevens uit Dark Sky haalt. U moet een Dark Sky-account instellen op https://darksky.net/dev en uw geheime sleutel in het script plaatsen waar aangegeven. U moet ook de breedte- en lengtegraad invoeren van de weerlocatie waarin u geïnteresseerd bent - dit is te vinden op Google Maps, klik met de rechtermuisknop en selecteer "Wat is hier?" en je krijgt een pop-up met de lat/long van de locatie.

Na het ophalen van de API-gegevens geeft weatherman.py parameters door aan verschillende kleinere scripts om de animaties en het schudden van de koptelefoon te starten.

Het script is ingesteld om te worden uitgevoerd bij het opstarten door het opstartbestand te bewerken …

sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

…en toevoegen:

@python3 /home/pi/weather/weatherman.py &

aan het einde van het bestand.

icon.py

Dit script haalt een parameter "huidige omstandigheden" uit het weatherman.py-script en gebruikt deze om een weeranimatie van 16x16 weer te geven - deze worden allemaal opgeslagen in de map "icons" en maken deel uit van de standaard Unicorn HAT HD-documentatie. U kunt de PNG-animatiebestanden eenvoudig bewerken in GIMP of een vergelijkbare afbeeldingseditor om ze meer karakter te geven. Je zou de 'regen'-animatie zo kunnen bewerken dat deze onder bepaalde omstandigheden zou worden weergegeven als 'regenende mannen' - een eigentijdse klassieker uit 1983.

telefoons.py

Als de weersomstandigheden zijn veranderd sinds het laatste API-verzoek (of het is een nieuwe start en het sneeuwt niet), dan wordt dit script aangeroepen vanuit weatherman.py en instrueert de servo om heen en weer te "wiebelen" om u te waarschuwen dat de omstandigheden veranderd.

afgrond.py

Dit script accepteert een "neerslagkans"-parameter van weatherman.py en geeft blauwe lijnen weer op de Unicorn HAT die betrekking hebben op de % waarschijnlijkheid. Als 100% alle 16 rijen blauw oplichten, als 50% slechts 8 rijen enz.

temp.py

Een ander standaard Pimoroni-script, dit neemt een "temp" -parameter van weatherman.py en geeft het weer met scrollende tekst. Het is ingesteld om het Truetype-lettertype van Herkules te gebruiken (in de map "fonts"), maar u kunt desgewenst een standaardlettertype gebruiken. U kunt het zelfs verbeteren zodat de weergegeven tekst van kleur verandert afhankelijk van de temperatuurwaarde!

Stap 4: Eenhoorn HOED & Servo

Eenhoorn HOED & Servo
Eenhoorn HOED & Servo
Eenhoorn HOED & Servo
Eenhoorn HOED & Servo
Eenhoorn HOED & Servo
Eenhoorn HOED & Servo

Het was geweldig om de weergegevens te bemachtigen, maar nu moest ik ze op de Unicorn HAT weergeven. Ik keek naar verschillende sets weerpictogrammen op internet en was halverwege deze aan te passen toen ik me realiseerde dat er een weervoorbeeld was bijgevoegd bij de Pimoroni-documentatie - en dit omvatte weeranimaties!

Dit bespaarde enorm veel werk, en ik was in een mum van tijd up & running, met een geanimeerd icoon voor de huidige omstandigheden, wat scrollende tekst voor de temperatuur en een grafiek voor het % neerslag (waarbij wat lichte wiskunde nodig was). Ik hield de scripts gescheiden en gebruikte de Subprocess-module van Python om parameters heen en weer door te geven.

Het toevoegen van de servo was het ideale voertuig voor deze waarschuwingen, omdat het een klein beetje lawaai zou maken en in het oog zou springen zonder al te vervelend te zijn. Omdat de HAT al veel van de pinnen van de Pi in beslag nam, heb ik de servokabels aan de onderkant van het bord gesoldeerd, met behulp van pin 17 om de beweging van de servo te regelen met behulp van pulsbreedtemodulatie.

Het aandrijven van de servo van de Pi was niet ideaal, maar het zou alleen worden gebruikt voor een kortstondige beweging, dus precisie was hier geen probleem. Het is aangesloten zoals weergegeven in het diagram, met bruine kabel naar GND, rood naar 5v en oranje (de stuurkabel) naar GPIO17.

Ten slotte heb ik enkele weeranimatiebestanden in GIMP bewerkt om mijn eigen persoonlijke accenten toe te voegen, zoals vleermuizen op de maan en een smileygezicht op de zon. Ik heb ook een aangepaste "Old Tech New Spec" cassettewielanimatie toegevoegd die bij het opstarten moet worden afgespeeld, gewoon voor de lol.

Stap 5: Hoofdtelefoon schudden

Hoofdtelefoon schudden
Hoofdtelefoon schudden
Hoofdtelefoon schudden
Hoofdtelefoon schudden
Hoofdtelefoon schudden
Hoofdtelefoon schudden
Hoofdtelefoon schudden
Hoofdtelefoon schudden

Het idee van de WeatherMan was dat hij passief op mijn bureauluidspreker zou zitten en af en toe het weer zou weergeven, maar ik wilde dat hij net iets meer deed! De oordopjes die erbij hoorden waren toast maar klassieke jaren 80, dus ik besloot er iets mee te doen. Nadat ik alle kabels had verwijderd en de kapotte warm had gelijmd, bleven er drie delen over: de 3,5 mm-stekker, de ruitvormige knop en de telefoons zelf op hun flexibele metalen band.

Het idee viel me op dat als ik een manier zou vinden om de telefoons op het apparaat te monteren, ik ze heen en weer kon laten draaien met een servo, en dit als een extra melding zou gebruiken.

Eerst heb ik de 3,5 mm plug uitgeboord en de diamantschakelaar gedemonteerd en deze vervolgens op een stuk draadstang geschoven. Vervolgens heb ik een moer op een plastic connector gelijmd, zodat de staaf stevig (en recht) bovenop de servo zou kunnen zitten. Aan het andere uiteinde van de staaf voegde ik nog een moer toe. Ten slotte heb ik grijze Sugru gebruikt om de bovenkant van de staaf aan de oortelefoonband te hechten en ook om de moer aan de onderkant van het geheel te bedekken. Als je nog nooit van Sugru hebt gehoord, het is een kneedbare lijm die wordt geleverd in kleine gekleurde zakjes - het vormt zich als Play-Doh, maar plakt als secondelijm en hardt uit als plastic!

Met het recente koude weer had de Sugru een paar dagen nodig om volledig uit te harden, maar de koptelefoon en hun standaard waren al snel klaar voor de eindmontage.

Stap 6: Montage

samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst

De Pi, HAT en Servo werkten allemaal prima op de bank, dus de volgende klus was om ze in de koffer te krijgen. Voordat ik aan de grote componenten begon, gebruikte ik wat overgebleven grijze Sugru om de volumeknop, hoofdtelefoonaansluiting en "metal tape" -schakelaar te repareren, om de cosmetica te sorteren. Ik heb ook de originele Play-, Stop-, FF- & Rew-knoppen op een stuk plastic buis gelijmd, zodat ze precies op de juiste plaats zouden blijven zitten. Het was jammer om deze keer geen van de knoppen opnieuw te gebruiken, maar er was niet echt iets dat ze konden bedienen!

Ik gebruikte de laatste van de grijze Sugru om de servo op zijn plaats te houden, met de as die door de vergrote koptelefoonaansluiting stak. Toen ik naar de andere helft van de behuizing ging, gebruikte ik wat zwarte Sugru om de HAT- en Pi-assemblage aan de tapedeur te bevestigen, zodat ze ermee zouden openen. Ik heb echt genoten van de laatste kleine aanraking - bevestiging in een GeoMag-magneet zodat de deur stevig gesloten zou blijven.

Het in elkaar zetten van de twee helften was een nerveuze aangelegenheid, omdat ik vreesde dat de Pi & Servo tegen elkaar zouden botsen, maar uiteindelijk was er ongeveer een millimeter over, genoeg in mijn boek. Omdat de funky openende deur volledige toegang tot het interieur zou geven voor toekomstig onderhoud, heb ik de twee helften gewoon aan elkaar gelijmd en nadat ik mijn vettige vingerafdrukken had afgeveegd, plaatste ik de koptelefoonmontage bovenop - klaar!

Stap 7: stille obsessie

Stille obsessie
Stille obsessie
Stille obsessie
Stille obsessie

Tweede prijs in de hergebruikwedstrijd

Aanbevolen: