Inhoudsopgave:
- Stap 1: Blinkty Pi
- Stap 2: Sprekencode
- Stap 3: Meldingscentrale
- Stap 4: Audio-opties
- Stap 5: Retro-montage
- Stap 6: Case Work
- Stap 7: Radiotijden
Video: Pi Zero Talking Radio - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Dit is een DeWald tafelradio uit de late jaren 40 die ik een nieuw leven heb gegeven met een Raspberry Pi Zero, een Blinkt! LED-strip en een paar pc-luidsprekers. Het leest meldingen voor van een reeks met internet verbonden services met behulp van de Pyvona text-to-speech (TTS) -engine en IF This Then That (IFTTT) -integratie. De LED's zijn verbazingwekkend helder en verlichten de wijzerplaat van de radio in een andere kleur, afhankelijk van trefwoorden in de meldingstekst, bijvoorbeeld "youtube" = rood.
Ik kocht deze lieve kleine radio in de zomer bij een kofferbakverkoop voor £ 3 - ik was meteen onder de indruk van het compacte formaat en het klassieke ontwerp, en zag het potentieel ervan door de zonovergoten buitenkant en de vele scheuren! Ik wilde al een tijdje "iets fatsoenlijks voor in de woonkamer" creëren en dit was het ideale startpunt. Ik heb eerder geëxperimenteerd met tekst-naar-spraakmeldingen in het Rabbit Pi-project en hoopte voort te bouwen op wat ik had geleerd om iets te maken dat "gewoon zou werken" op een dagelijkse basis.
Als je de ingesloten video niet kunt zien, staat deze op:
Stap 1: Blinkty Pi
Ik heb onlangs mijn eerste Pi Zero's opgehaald en was meteen verbaasd over hun kleine formaat! Na het solderen van de GPIO-header en het aansluiten van de adapters was de eerste klaar voor gebruik. Oorspronkelijk was ik van plan om een verbeterde Rabbit Pi te maken, maar na een tijdje voelde dit meer als werk dan als plezier, dus heb ik het opgeborgen - hoewel niet voordat ik begon te experimenteren met een Unicorn pHAT, een 4x8-matrix van programmeerbare LED's, wat een absolute hoop was van plezier! Het enige nadeel was dat het gebruik van de pHAT de audio-installatie ingewikkeld maakte, en ik wilde mijn volgende project heel eenvoudig houden.
Alles viel op zijn plaats bij de Cambridge Raspberry Jam in september toen ik de Blinkt! te koop bij de Pimoroni-kraam - het is net als de Unicorn pHAT, maar met een enkele rij van 8 LED's, perfect formaat om op de GPIO-header van een pi zero te passen. Het wordt geleverd met heel veel documentatie en voorbeelden en was in een mum van tijd up & running - nu was het tijd om de rest van de code samen te stellen.
Stap 2: Sprekencode
Ik begon met een kopie van de hoofdcode van de Rabbit Pi, omdat hierin al mijn Ivona-tekst-naar-spraakgegevens waren opgeslagen. U moet een Ivona-ontwikkelaarsaccount instellen voordat u de service gebruikt, maar het proces is eenvoudig, zoals ik eerder heb gedocumenteerd.
De volgende stap was het installeren van Pyvona, de Python-wrapper om te integreren met de Ivona TTS-service, wat niet eenvoudiger had kunnen zijn (pip install pyvona).
Met dit op zijn plaats begon ik de Rabbit Pi-code aan te passen, waarbij ik de verwijzingen naar motorische controle en het nemen van selfies weghaalde om me alleen de stukjes over te laten die meldingen voorlezen uit de onderwerpregels van Gmail-berichten. De cruciale ontwikkeling bij deze code was het toevoegen van een reeks IF-statements om te zoeken naar specifieke trefwoorden in de berichten, zodat de Blinkt! zou verschillende kleuren gloeien, afhankelijk van het bericht.
Dit heeft even geduurd, omdat ik nog steeds mijn weg met Python moet vinden, maar ik heb mijn trefwoorden gedefinieerd ("Bewolkt", "Zonsondergang", "Douche", "Facebook", "Twitter", "Youtube" en "Zonnig") Ik kon de Blinkt! kleur afhankelijk van de voorgelezen tekst.
De eenvoudige, zij het onelegante code die ik heb gebruikt, staat op GitHub, hoewel ik al meer trefwoorden en kleuren heb toegevoegd! Ik heb het buiten de behuizing getest met een luidspreker op batterijen - later meer over de audio-instellingen. De laatste stap was om het python-script, radiot.py, in te stellen om bij het opstarten te worden uitgevoerd.
Stap 3: Meldingscentrale
Nu de Pi berichten betrouwbaar zou voorlezen en verschillende kleuren zou gloeien, moest ik de meldingen zo instellen dat ze spontaan zouden binnenkomen - ik herinner me dat in een oude Tom & Jerry-cartoon de radio af en toe af en toe zou afgaan (Jerry's Diary (1949) - dezelfde periode als de radio!) en dit is het effect waar ik naar op zoek was, dat het in de hoek zou zitten en er leuk uit zou zien, af en toe oplicht en meldingen voorleest die ik anders niet op mijn telefoon zou oppikken.
Eerst heb ik een apart Gmail-account ingesteld om de e-mailmeldingen te ontvangen - dit betekende dat ik niet zou worden gebombardeerd met nieuwe e-mailmeldingen of mijn bestaande inbox zou vervuilen met honderden automatisch gegenereerde berichten.
Vervolgens ben ik naar IFTTT (IF This Then That) gegaan om de automatisering in te stellen. Met IFTTT kunt u eenvoudig meerdere "kanalen" aan uw account koppelen en deze instellen om met elkaar te communiceren met behulp van "recepten", in dit geval door meerdere sociale media en acties uit de echte wereld in een stroom van e-mails te leiden. Ik heb het gedeelte "Toen dat" van de recepten aangepast, zodat ze allemaal een e-mail zouden sturen naar het Gmail-account dat ik heb ingesteld voor meldingen, en ik heb het gedeelte "Ingrediënten" gebruikt om ervoor te zorgen dat de belangrijkste informatie zou worden opgenomen in het e-mailonderwerp, het gedeelte dat wordt voorgelezen. Op dit moment heb ik de volgende IFTTT-recepten opgesteld, maar deze worden voortdurend toegevoegd!
- Stuur elke dag om 21.00 uur het weer van morgen per e-mail
- Stuur elke dag bij zonsondergang de datum en tijd per e-mail
- ALS ik ben getagd in een Facebook-foto, stuur dan een e-mail
- ALS mijn telefoon is aangesloten / losgekoppeld, stuur het batterijpercentage dan per e-mail
- ALS ik een geografisch gebied betreed, stuur dan een e-mail "MisterM is gearriveerd op het werk!"
- ALS ik een YouTube-video upload, stuur dan een e-mail
- ALS een bepaalde persoon tweet, stuur het dan per e-mail
- ALS een Google-agenda-afspraak begint, stuur deze dan per e-mail
- ALS het huidige weer verandert in regen, stuur dan een e-mail ("Pas op, het gaat regenen!"
- ALS de slimme socket is in- of uitgeschakeld, stuur dan een e-mail
- ALS een nieuw SMS-bericht is ontvangen, stuur het dan per e-mail
- ALS de batterij van de telefoon onder de 15% zakt, stuur dan een e-mail ("Laad je telefoon op, idioot")
- ALS ik een nieuwe Twitter-volger of vermelding heb, stuur dan een e-mail
Het is een geweldige mix van voorspelbare dagelijkse gebeurtenissen en onverwachte aankondigingen - mijn favoriet is de zonsondergangmelding, het is interessant in deze tijd van het jaar om te zien hoe de tijd dagelijks verandert. De Twitter-meldingen zijn het leukst, op dit moment leest het nieuwe tweets voor van "Beef & Dairy Network", "Very British Problems", "My Sweary Cat" en "Henry Thoreau" (hoewel sommige hiervan worden uitgeschakeld in de IFTTT-app in beleefd gezelschap). Het kunnen uitlezen van specifieke Twitter-accounts maakt het erg flexibel, en deze kunnen worden aangepast via IFTTT in plaats van de Pi elke keer opnieuw te moeten programmeren.
Stap 4: Audio-opties
Vervolgens moest ik de audio regelen, met twee uitdagingen! Ten eerste hoe je de audio uit de Pi kunt halen. In tegenstelling tot zijn grotere broer heeft de Pi Zero geen 3,5 mm audio-uitgang, dus ik moest een soort adapter gebruiken. Aanvankelijk dacht ik dat ik een HDMI-naar-VGA + audio-connector zou gebruiken, maar dit leek overdreven (en ik had het nodig voor een ander project!), dus gebruikte ik een goedkope USB-audio-adapter. Dit was vrij eenvoudig in te stellen, gewoon een geval van het instellen van de USB-geluidskaart als het standaard ALSA-apparaat op de Pi. Dit betekende wel dat ik een USB-hub nodig had om de wifi-adapter te huisvesten, maar ik slaagde erin een oude die ik had te demonteren en opnieuw te gebruiken.
Ten tweede moest ik een versterker/luidsprekercombinatie kiezen die geluid van goede kwaliteit zou geven en constant aan zou staan. Ik heb eerder luidsprekers op batterijen gebruikt, maar regelmatig opladen zou niet goed zijn voor "altijd aan" gebruik, ook hadden ze vaak een merkbaar sissend achtergrondgeluid. Ik heb in het verleden ook oude iPod-docks gekannibaliseerd, maar deze hadden meestal energiebesparende "functies" en werden uitgeschakeld na een paar minuten stilte.
Ik ging uiteindelijk met iets nieuws, een paar pc-luidsprekers voor de spotprijs van £ 6,99. Ik verwachtte niet te veel, maar de geluidskwaliteit was absoluut prima, zonder gesis of time-out. De toegevoegde bonus van de pc-luidsprekers was dat ze een aan / uit-schakelaar en volumeknop hadden, waarvan ik hoopte dat ze konden worden aangesloten op de originele bedieningselementen van de radio. Het werkte allemaal op de bank, dus nu was het tijd om het in de koffer te passen!
Stap 5: Retro-montage
Toen ik de radio voor het eerst mee naar huis nam, verwijderde ik de originele circuits die op sommige plaatsen letterlijk toast waren. Ik was echter onder de indruk van de originele constructie, het was duidelijk ontworpen om gemakkelijk te worden gedemonteerd en vastgezet, want na het losdraaien van een paar bouten gleed het hele samenstel naar buiten op een soort chassis. Ik besloot dezelfde aanpak te gebruiken en de nieuwe componenten samen te voegen op een basis die vervolgens in de behuizing kon schuiven en zoals het origineel kon worden vastgezet.
Ik begon met een dunne houten plank van een oud dvd-rek, sneed het op maat en boorde gaten voor de kastbouten. Vervolgens heb ik de luidsprekers gedemonteerd en de plastic behuizingen met een ijzerzaag en een roterend gereedschap omgehakt. De nu slanke luidsprekers werden aan de houten basis bevestigd met een 90 graden beugel gemaakt van Meccano. Het versterkercircuit was de volgende - vanwege ruimtegebrek moest dit helaas ondersteboven worden gemonteerd en ongeveer 2,5 cm boven de basis worden verhoogd. Ik moest een soort pilaarconstructie bouwen om het bord te ondersteunen en vast te zetten, maar kwam vast te zitten hoe ik dit netjes moest doen. De ideale oplossing lag recht onder mijn neus - een kleurpotlood! Ik sneed delen van het potlood op maat en plaatste deze vervolgens in gaten die in de basis waren geboord. Het perfecte aan het gebruik van een kleurpotlood is dat de "lood" in het midden heel gemakkelijk kan worden uitgeboord, waardoor er een handig gat overblijft voor de schroeven van de printplaat.
Ik heb een combinatie van Meccano- en Lego-stukken gebruikt om een beugel te maken om de Pi zelf te ondersteunen, en de losse kabels met kabelbinders opgeruimd. De volume- en aan/uit-schakelaars zaten verder uit elkaar op de printplaat van de luidspreker dan de gaten in de radiobehuizing (je kunt niet alles hebben), dus heb ik ze verlengd met behulp van delen van een holle plastic ballonstok.
Stap 6: Case Work
Zoals ik eerder al zei, verkeerde de radiobehuizing in een vreselijke staat, dus ik heb de ergste gaten en scheuren opgelapt met polyfilla en het helemaal geschuurd. Ik besloot om het bij een mooie crèmekleur voor de lak te houden, om te coördineren met het bruin van de afstemknop. De verf beweerde "primer & verf in één" te zijn, maar ik heb hem voor de zekerheid eerst een paar lagen primer gegeven. De knoppen moesten flink worden geschrobd (60+ jaar vuil!) Maar kwamen er goed uit - ik heb de originele crèmekleurige afstemknop gewoon met een bout aan de wijzerplaat zelf bevestigd, omdat deze niet met componenten was verbonden.
Nadat de verf was uitgehard, was het tijd om alles in elkaar te zetten - normaal gesproken het deel van een project dat mijn geduld het meest op de proef stelt! Deze keer ging het erg soepel, aangezien alle moeilijke constructies al op de basis waren gedaan, hoefde ik alleen het geheel in de behuizing te schuiven, het vast te zetten met de bouten en de knoppen te monteren.
De achterkant van de radio ontbrak, dus heb ik een nieuwe gemaakt van een oude fotolijst en deze in dezelfde crèmekleur geverfd.
Stap 7: Radiotijden
Dit was een heel leuk project om te bouwen, het was goed om de dingen redelijk eenvoudig te houden en je erop te concentreren om het zo netjes mogelijk te maken. Soms kwam ik in de verleiding om een microfoon toe te voegen voor Alexa-integratie en overwoog ik zelfs serieus om een Chromecast Audio in te bouwen (voor mijn favoriete nieuwe podcasts in de stijl van oude radio), maar ik ben blij dat ik het simpel heb gehouden en Ik ben enthousiast over het resultaat.
Het is nu geïnstalleerd op een luidspreker in de hoek van de woonkamer, licht op en spreekt af en toe zoals ik had gehoopt. Het enige kleine nadeel is dat de crème-bruine doorschijnende wijzerplaat het moeilijker maakt om te pronken met het schitterende kleurengamma van de Blinkt! Het is vrij duidelijk voor zonsondergangmeldingen (oranje) en sms-berichten (paars), maar de weerberichten zijn een beetje hetzelfde - ik moet gewoon experimenteren met verschillende RGB-kleurcodes denk ik!
Als je dit project leuk vindt en meer wilt zien, kun je mijn website bezoeken voor lopende projectupdates op bit.ly/OldTechNewSpec, meedoen op Twitter @OldTechNewSpec of je abonneren op het groeiende YouTube-kanaal op bit.ly/oldtechtube - geef een deel van je oude technologie een nieuwe specificatie!
Tweede prijs in de IoT Builders-wedstrijd
Aanbevolen:
Astrofotografie met de Raspberry Pi Zero. 11 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Astrofotografie Met de Raspberry Pi Zero.: Ik heb eerder twee andere op Raspberry Pi gebaseerde cameraprojecten gemaakt [1] [2]. Dit, mijn derde camera-idee, is mijn eerste Raspberry Pi Zero-project. Dit is ook mijn eerste poging tot astrofotografie! Aangespoord door de recente 'Supermoon' wilde ik mijn broer
Het MotionEye OS instellen op de Raspberry Pi Zero W: 5 stappen
Het MotionEye OS instellen op de Raspberry Pi Zero W: Na het ESP32-CAM-bord in de vorige video's te hebben getest, kunnen we gerust stellen dat de videokwaliteit niet bepaald briljant is. Het is een compact en uiterst kosteneffectief board dat ook gemakkelijk te gebruiken is en dit maakt het perfect voor beginners. Maar
Talking Clock tweetalig (EN+PT): 5 stappen (met afbeeldingen)
Talking Clock tweetalig (EN+PT): De Talking Clock 2 (tweetalig) is de nieuwe versie van Talking Clock die ik enige tijd geleden heb gepubliceerd. De code is bijgewerkt om twee talen (Engels/Portugees) te ondersteunen en er zijn nieuwe functies in de code: Mode 1: Stel de tijd in (uur &am
Talking Baymax-display voor een kinderartsenpraktijk: 10 stappen (met afbeeldingen)
Pratende Baymax-display voor een kinderarts: "Hallo. Ik ben Baymax, je persoonlijke gezondheidspartner.” - Baymax In het kantoor van mijn plaatselijke kinderarts hebben ze een interessante strategie aangenomen in een poging om de medische omgeving minder stressvol en leuker voor kinderen te maken. Ze hebben de e
Talking Wind Sensor (met een spraakopnamekit): 6 stappen
Talking Wind Sensor (met een Voice Recording Kit): Dit is een windsensor met geleidende draden, geleidende stoffen en een metalen bal