Innehållsförteckning:

A Back to the Future Clock: 8 steg (med bilder)
A Back to the Future Clock: 8 steg (med bilder)

Video: A Back to the Future Clock: 8 steg (med bilder)

Video: A Back to the Future Clock: 8 steg (med bilder)
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, November
Anonim
En Tillbaka till Framtidsklockan
En Tillbaka till Framtidsklockan

Detta projekt startade livet som en väckarklocka för min son. Jag fick det att se ut som tidskretsen från Back to the Future. Displayen kan visa tiden i olika format, inklusive den från filmerna förstås. Den kan konfigureras via knapparna ovanpå höljet men också via en webbsida som serveras av Raspberry Pi Zero inuti. I ett av visningslägen kommer det att visa det lokala vädret (från min Arduino-drivna väderstation) samt prognosen och eventuella dagliga påminnelser, konfigurerade via webbgränssnittet. Den har också ljud tack vare en DAC och kommer att strömma musik med AirPlay -protokollet. Larmljudet kan vara vilken ljudfil du än väljer. Det kommer att dämpa och lysa upp skärmen automatiskt vid givna tider på dagen (t.ex. gryning och skymning).

Steg 1: Bakgrund

Förra året letade jag efter ett nytt Arduino -projekt efter att ha avslutat mitt första någonsin, en hemväderstation. Min 11-åriga son hade just tittat på Back to the Future-filmerna för första gången så jag tyckte att det skulle vara roligt att bygga en väckarklocka som såg ut som tidskretsen i Delorean för hans födelsedag. Det här är ingen ny idé, det finns ganska många liknande projekt där ute (det här till exempel), så jag tyckte att det skulle vara ett trevligt projekt att lära av andra och ta till sig nya färdigheter.

Den första versionen fungerade ganska bra (den var inte redo för hans födelsedag: jag fick det gjort till jul) men jag blev ganska ambitiös i vad jag ville att den skulle göra och fann att min skiss fortsatte att springa in i minnesgränsen för Arduino. Jag hade också flera små externa hårdvarumoduler (WiFi, MP3 -spelare, ljudförstärkare, RTC etc), så det blev lite otympligt. Till slut bestämde jag mig för att flytta till en Raspberry Pi -plattform som förenklade hårdvaran och gjorde att jag kunde packa in mycket mer funktionalitet och funktioner.

Steg 2: Huvudmaskinvarukomponenter

I lådan

Här är de elektroniska komponenterna jag använde. De flesta av dem var källor från Core Electronics i Australien, men de är naturligtvis också tillgängliga på andra ställen:

  • 4 x fyralfanumerisk display -gul -grön
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC för Raspberry Pi Zero
  • Ljudförstärkare (PAM8403 IC)
  • Raspberry Pi 3+ strömförsörjning
  • 4 x Jumper wire - 0,1 ", 5 -polig, 12"
  • 40 -polig (2 x 20) bandkabel
  • Raspberry Pi GPIO hanrubrik
  • Raspberry Pi Model B - GPIO Shrouded Header (2X20)
  • GPIO staplingsrubrik för Pi A+/B+/PI 2/PI 3 - extra lång 2X20
  • 4 x 5 -stifts hanrubrik
  • 2 små 3W högtalare
  • 2 x koaxialkablar för analog ljudanslutning DAC till Amp
  • Veraboard eller anpassat kretskort för att hantera Rpi till en förstärkare, LED, knappar
  • 5 x tillfälliga knappar
  • 4 x 2-vägs PCB-monterbara skruvplintar

Lådan

  • Bitar och bitar av MDF, skruvar och bultar för att göra 'chassit'
  • Grönfärgad perspex, lokal leverantör
  • Styren, modelleringslim, sprayfärg (aluminiumfärg) från en lokal hobbybutik
  • Klistermärken (fil tillgänglig på begäran - tryckt av Redbubble)

Steg 3: Sätta ihop allt

Få alltid att falla på plats
Få alltid att falla på plats

LED-displayen för klockan består av 16 x 14 segment alfanumeriska displayer, lyckligtvis samma antal tecken som Back to the Future-tidskretsen. Även om bara de tre första tecknen behöver vara alfanumeriska och resten kan vara 7-segment numeriska displayer för att efterlikna filmrekvisiten, bestämde jag mig för att göra dem alla alfanumeriska för att möjliggöra viss flexibilitet i vad som kan visas och för att få dem alla att se samma. Adafruit quad-ryggsäckar är en bra lösning här och kan köras på Raspberry Pi's I2C-buss. Mer information om dessa enheter och hur du kopplar dem finns här på Adafruit -webbplatsen. Det enda lite icke-standardiska jag var tvungen att göra var att ändra adresserna till tre av dem så att varje ryggsäck var unik.

För att spela ljud (i stereo) inkluderade jag Pimoroni pHAT DAC och en 2 x 3W stereoljudförstärkare baserad på PAM8403 -chipet. PHAT DAC är verkligen lätt att ansluta till Pi. Jag lägger en 2 x 20 -stifts hanrubrik på Pi och en GPIO -staplingsrubrik på DAC så att de kan kopplas ihop ovanpå den andra. De manliga huvudstiften går genom toppen av DAC, så att jag kan köra en bandkabel med honkontakter, inledningsvis till en Raspberry Pi-breakout för test av brödbrädor, men slutligen till en hölje på en skräddarsydd PCB.

För ljudförstärkaren finns det gott om alternativ (inklusive att bara få chippet och montera ditt eget). Den här har möjlighet att stänga av utgången genom att bara ändra tillståndet för en av stiften (högt är på, lågt är avstängt) och jag kopplade upp det så att detta kunde styras från Pi. I mina första försök att ansluta detta upptäckte jag ganska mycket bakgrundsljud när ljudet var på. Efter mycket lek med jordning försökte jag så småningom flytta ingångsspänningen från Pi: s 5V till 3.3V och det fixade det. Jag antar att det genereras ganska mycket brus av de olika digitala signalerna som flyger runt, men det verkar som att 3.3V -försörjningen på något sätt är isolerad.

Andra anslutningar inkluderar det analoga ljudet från DAC till förstärkaren (jag använde koaxialkabel här för att hantera brusupptagning) och utmatning av ljud till ett par små 3W -högtalare som passar i höljet. Det finns också GPIO -anslutningar för de fyra tillfälliga omkopplarna ovanpå lådan och jag kopplade upp en tillfällig knapp till de hårda återställnings "RUN" stiften (se avsnittet Ytterligare anslutningar på denna sida). Återställningsknappen är monterad utom synhåll på baksidan av höljet. Här är ett diagram som visar anslutningarna:

Steg 4: En anpassad kretskort

En anpassad PCB
En anpassad PCB

Även om det inte är något för komplicerat med kretsen, finns det ganska mycket ledningar och en brödbräda kan se ut som spaghetti ganska snabbt. Så jag konstruerade ett kretskort för att hålla det hela under kontroll. Det är en hembryggad enkelsidig bräda och jag fick en vän som hjälpte till att göra det. Efter att det gjordes och kopplades upp insåg jag att jag glömde att inkludera anslutningar för plintarna för ljudet och jag gjorde senare en ändring för att flytta ljudförstärkartillförseln från 5V till 3,3V, så det är inte idealiskt och jag var tvungen att fortsätta vissa Veroboard för att tillåta ljudanslutningar. Dessutom har ljudförstärkarkortets pinouts en icke-standardiserad separation (de varierar till och med mellan stiften) så anslutningen för detta till huvudkortet är lite hemsk med 11 korta ~ 1 cm anslutningskablar.

Om jag gjorde ett annat kort skulle jag inkludera alla dessa modifieringar och också ändra kontakten för de fyra knapparna till något lite trevligare. DAC och Pi staplas direkt ovanpå, så ingen bandkabel behövs. Diagrammet ovan visar hur det kan se ut.

Steg 5: Kapslingen

Kapslingen
Kapslingen
Kapslingen
Kapslingen
Kapslingen
Kapslingen

Jag ville göra ett hölje som såg ut som en rad i filmtidskretsen. Tre rader med LED -skärmar skulle ha varit för mycket för en väckarklocka och skulle ha ökat betydligt i kostnaden. Jag tänkte göra höljet av aluminium men jag har ingen kompetens inom det området. Jag har dock gjort en hel del plastmodeller i mitt liv och har lite träbearbetningserfarenhet, så bestämde mig för att göra en ram med MDF för att montera lysdioderna och högtalarna och fixa perspexen på framsidan, sedan täcka det med en 5-sidig styren låda med ram på framsidan, målad i en metallisk metallfärg. Plasten och färgen hämtades från en lokal modellbutik. Jag tittade noga på etiketterna på filmrekvisiten och gjorde mitt bästa för att kopiera färger, typsnitt och storlek. Jag använde Photoshop för att bygga etiketterna och fick dem att skriva ut som klistermärken från Redbubble.

Bilderna ovan visar:

  1. Framsidan av MDF -chassit. De 4 LED-ryggsäckarna är monterade på framsidan med grönfärgad perspex
  2. I lådan. Ryggsäckar alla monterade och uppställda, Raspberry Pi och anpassad PCB in, högtalare på vardera sidan.
  3. Kablar installerade och yttre skal redo att gå på. Det var lite kläm!

Steg 6: Konfigurera Raspberry Pi

Jag hade några kompatibilitetsproblem med Raspbian Stretch (som kan ha varit lösbara om jag hade kvarstått) men Jessie fungerar bra med det, så jag bestämde mig för att fortsätta med det.

Jag satte upp Pi som en huvudlös enhet med VNC och SSH -åtkomst. Detta kunde ha gjorts utan att någonsin ansluta ett tangentbord eller en bildskärm, men jag lånade bara TV: n och skrek ett tangentbord och fick det att gå utan huvud ganska snabbt. Från och med då använde jag i stort sett VNC sedan dess.

Min klockkod använder Python 2.7.9 och bygger på en hel del bibliotek, listade nedan. Förutom detta kör jag en Flask -webbserver och MQTT för fjärrkontroll och Shairplay för musikstreaming. Jag följde precis de on-line installationsanmärkningarna för alla dessa och hade inga problem alls. Här är pythonbiblioteken och andra paket etc jag behövde installera med länkar till installationsanteckningar eller bara kommandot du behöver köra för att få det:

Python -bibliotek

  • Adafruit_LED_Ryggsäck
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • alsaaudio
  • paho.mqtt.client (pip installera paho-mqtt)
  • kolv (apt-get install python-kolv)

Andra paket osv

  • mygg (apt-get install mygg)
  • shairport
  • Pimoronis webbplats har bra dokumentation om hur man konfigurerar DAC, så jag sprang bara med det.

Steg 7: Programvara

Image
Image
programvara
programvara

Klockkoden skrevs i Python och använder trådning för att spela larm och enstaka pip i bakgrunden utan att blockera visningsuppdateringarna. Jag använde ConfigParser -biblioteket och konfigurationsfilen som den behåller läses och skrivs av klockkoden samt Flask -webbappen så att när konfigurationen ändras via webbgränssnittet eller klockan blir den synkroniserad. Klockprogramvaran innehåller också en MQTT -mäklare som gör det möjligt att fjärrstyra visningsläget och muting. Mitt baktanke är så småningom att skriva en iOS -app för fjärrkontrollen men webbgränssnittet fungerar tillräckligt bra för nu.

Den första bilden ovan visar hur klockan ser ut i dess olika visningslägen, och det finns en kort video som visar den i rullningsläge.

Även om koden inte är vacker att titta på är den snygg och stabil. Jag skickar det gärna till alla som begär det och kommer att lägga det online när det är bättre organiserat och kommenterat.

Webbappen

Nästa bild visar hur webbgränssnittet till klockan ser ut. Det finns också konfigurations- och en kontrollsidor och dessa gör det mycket lättare att spela med klockan utan att en massa knappar mäskas:-).

Steg 8: Vad nästa?

Vad Nästa?
Vad Nästa?

Det finns en Python shareport -metadata -avkodare tillgänglig så jag tror att jag lägger till lite kod för att visa information som titel och artist när musik spelas. Det skulle också vara ganska enkelt att beräkna soluppgångs- och solnedgångstider så att displayen automatiskt kan ljusas upp och dämpas, snarare än att ställa in den manuellt. Kanske skulle det också vara roligt att lägga till en internetradiofunktion. Rullningsdisplayen kan också vara mer konfigurerbar.

Rekommenderad: