Indholdsfortegnelse:

A Back to the Future Clock: 8 trin (med billeder)
A Back to the Future Clock: 8 trin (med billeder)

Video: A Back to the Future Clock: 8 trin (med billeder)

Video: A Back to the Future Clock: 8 trin (med billeder)
Video: TIMELAPSE OF THE FUTURE: A Journey to the End of Time (4K) 2024, November
Anonim
Et Tilbage til Fremtidens Ur
Et Tilbage til Fremtidens Ur

Dette projekt startede livet som et vækkeur til min søn. Jeg fik det til at ligne tidskredsløbet fra Tilbage til fremtiden. Displayet kan vise tiden i forskellige formater, inklusive den fra filmene selvfølgelig. Det kan konfigureres via knapperne oven på kabinettet, men også via en webside betjent af Raspberry Pi Zero indeni. I en af visningstilstandene viser det det lokale vejr (fra min Arduino-drevne vejrstation) samt vejrudsigten og eventuelle daglige påmindelser, konfigureret via webgrænsefladen. Det har også lyd takket være en DAC og vil streame musik ved hjælp af AirPlay -protokollen. Alarmlyden kan være enhver lydfil, du vælger. Det dæmper og lyser skærmen automatisk på bestemte tidspunkter af dagen (f.eks. Daggry og skumring).

Trin 1: Baggrund

Sidste år ledte jeg efter et nyt Arduino -projekt, der lige havde afsluttet mit første nogensinde, en vejrstation i hjemmet. Min 11-årige søn havde lige set Back to the Future-filmene for første gang, så jeg tænkte, at det ville være sjovt at bygge ham et vækkeur, der lignede tidskredsløbet i Delorean til hans fødselsdag. Dette er ikke en ny idé, der er en del lignende projekter derude (denne f.eks.), Så jeg tænkte, at det ville være et godt projekt at lære af andre og hente nogle nye færdigheder.

Den første version fungerede ganske godt (den var ikke klar til hans fødselsdag: Jeg fik den klaret til jul), men jeg blev ret ambitiøs i, hvad jeg ville have den skulle gøre, og fandt ud af, at min skitse blev ved med at løbe ind i hukommelsesgrænsen for Arduino. Jeg havde også flere små eksterne hardwaremoduler (WiFi, MP3 -afspiller, lydforstærker, RTC osv.), Så det hele blev lidt uhåndterligt. Til sidst besluttede jeg at flytte til en Raspberry Pi -platform, som forenklede hardwaren og tillod mig at pakke meget mere funktionalitet og funktioner ind.

Trin 2: Hovedhardwarekomponenter

Inde i æsken

Her er de elektroniske komponenter, jeg brugte. De fleste af dem var kilder fra Core Electronics i Australien, men de er selvfølgelig også tilgængelige andre steder:

  • 4 x Quad Alfanumerisk Display -Gul -Grøn
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC til Raspberry Pi Zero
  • Lydforstærker (PAM8403 IC)
  • Raspberry Pi 3+ strømforsyning
  • 4 x Jumper wire - 0,1 ", 5 -benet, 12"
  • 40 pin (2 x 20) båndkabel
  • Raspberry Pi GPIO Male Header
  • Raspberry Pi Model B - GPIO indhyllet overskrift (2X20)
  • GPIO Stacking Header til Pi A+/B+/PI 2/PI 3 - ekstra lang 2X20
  • 4 x 5 pin hanhoved
  • 2 små 3W højttalere
  • 2 x koaksialkabler til analog lydforbindelse DAC til Amp
  • Veraboard eller brugerdefineret printkort til at håndtere Rpi til en forstærker, LED, knapper
  • 5 x kortvarige trykknapper
  • 4 x 2-vejs PCB-monterbare skrueklemme

Kassen

  • Bider og stykker af MDF, skruer og bolte til at lave 'chassiset'
  • Grønfarvet perspex, lokal leverandør
  • Styren, modelleringslim, spraymaling (aluminiumsfarve) fra en lokal hobbybutik
  • Klistermærker (fil tilgængelig på forespørgsel - trykt af Redbubble)

Trin 3: Sæt det hele sammen

Samler det hele
Samler det hele

LED-displayet til uret består af 16x14-segment alfanumeriske displays, heldigvis det samme antal tegn som Back to the Future-tidskredsløbet. Selvom kun de første tre tegn skal være alfanumeriske, og resten kan være 7-segmenters numeriske skærme for at efterligne filmens rekvisitter, besluttede jeg at gøre dem alle alfanumeriske for at give mulighed for en vis fleksibilitet i, hvad der kunne vises, og for at få dem alle til at se samme. Adafruit quad-rygsække er en fantastisk løsning her og kan køres på Raspberry Pi's I2C bus. Flere oplysninger om disse enheder og hvordan de forbindes, kan findes her på Adafruit -webstedet. Det eneste lidt ikke-standard, jeg var nødt til at gøre, var at ændre adresserne på tre af dem, så hver rygsæk var unik.

For at afspille lyd (i stereo) inkluderede jeg Pimoroni pHAT DAC og en 2 x 3W stereo lydforstærker baseret på PAM8403 -chippen. PHAT DAC er virkelig let at oprette forbindelse til Pi. Jeg lagde en 2 x 20 pin han -header på Pi og en GPIO stacking header på DAC, så de kunne sættes sammen oven på den anden. De mandlige headerstifter går gennem toppen af DAC, så jeg kan køre et båndkabel med hunstik, i første omgang til en Raspberry Pi-breakout til test af brødbræt, men i sidste ende til et indhyllet header på et specialfremstillet PCB.

Til lydforstærkeren er der masser af muligheder (herunder bare at få chippen og samle din egen). Denne har mulighed for at dæmpe output ved blot at ændre tilstanden på en af benene (høj er tændt, lav er slukket), og jeg har koblet den op, så dette kunne styres fra Pi. I mine første forsøg på at tilslutte dette opdagede jeg ret meget baggrundsstøj, da lyden var tændt. Efter en masse leg med jordforbindelse, forsøgte jeg til sidst at flytte indgangsspændingen fra Pi's 5V til 3.3V, og det fikset det. Jeg gætter på, at der er ret meget støj genereret af de forskellige digitale signaler, der flyver rundt, men det ser ud til, at 3,3V -forsyningen på en eller anden måde er isoleret.

Andre tilslutninger inkluderer den analoge lyd fra DAC til forstærkeren (jeg brugte koaksialkabel her til at styre støjoptagelse) og output lyd til et par små 3W højttalere, der passer ind i kabinettet. Der er også GPIO -forbindelser til de fire kortvarige kontakter på toppen af boksen, og jeg koblet en øjeblikkelig knap til de hårde nulstillede "RUN" -stifter (se afsnittet Yderligere forbindelser på denne side). Nulstillingsknappen er monteret ude af syne på bagsiden af kabinettet. Her er et diagram, der viser forbindelserne:

Trin 4: Et brugerdefineret printkort

Et brugerdefineret printkort
Et brugerdefineret printkort

Selvom der ikke er noget for kompliceret ved kredsløbet, er der en del ledninger, og et brødbræt kan hurtigt ligne spaghetti. Så jeg designede et printkort for at holde det hele under kontrol. Det er et hjemmebrygget enkeltsidet bræt, og jeg har en ven til at hjælpe med at lave det. Efter at den var lavet og kablet op, indså jeg, at jeg glemte at inkludere forbindelser til klemmerne til lyden, og jeg lavede senere en ændring for at flytte lydforstærkerforsyningen fra 5V til 3,3V, så det er ikke ideelt, og jeg var nødt til at fortsætte nogle Veroboard for at tillade lydforbindelser. Også lydforstærkerkortets pinouts er ved en ikke-standard adskillelse (de varierer endda mellem benene), så forbindelsen til dette til hovedkortet er lidt forfærdelig med 11 korte ~ 1 cm forbindelsestråde.

Hvis jeg lavede et andet bord, ville jeg inkludere alle disse ændringer og også ændre stikket til de fire knapper til noget lidt pænere. DAC og Pi ville stable lige ovenpå, så der er ikke brug for et båndkabel. Diagrammet ovenfor viser, hvordan det kan se ud.

Trin 5: Vedlægget

Indhegningen
Indhegningen
Indhegningen
Indhegningen
Indhegningen
Indhegningen

Jeg ville lave et kabinet, der lignede en række af filmens tidskredsløb. Tre rækker LED -skærme ville have været for meget for et vækkeur og ville have øget omkostningerne betydeligt. Jeg tænkte på at lave kabinettet af aluminium, men jeg har ingen færdigheder på det område. Jeg har selv lavet en del plastmodeller i mit liv, og har en del træbearbejdningserfaring, så besluttede mig for at lave en ramme ved hjælp af MDF til at montere lysdioder og højttalere og fastgøre perspex på forsiden, og derefter dække det med en 5-sidet styren æske med en ramme på forsiden, malet i en metalmetallisk spraymaling. Plast og maling blev hentet fra en lokal modelbutik. Jeg kiggede nærmere på etiketterne på filmstøtten og gjorde mit bedste for at kopiere farver, skrifttype og størrelse. Jeg brugte Photoshop til at bygge etiketterne og fik dem udskrevet som klistermærker fra Redbubble.

Billederne ovenfor viser:

  1. Forsiden af MDF -chassiset. De 4 LED-rygsække er monteret foran med grønfarvet perspex
  2. Inde i æsken. Rygsække alle monteret og står i kø, Raspberry Pi og brugerdefineret printkort, højttalere på hver side.
  3. Ledninger installeret og ydre skal klar til at gå på. Det var lidt af en klemme!

Trin 6: Opsætning af Raspberry Pi

Jeg havde nogle kompatibilitetsproblemer med Raspbian Stretch (som muligvis kunne løses, hvis jeg havde vedvaret), men Jessie fungerer fint med det, så jeg besluttede at gå med det.

Jeg konfigurerede Pi som en hovedløs enhed med VNC og SSH adgang. Dette kunne have været gjort uden nogensinde at tilslutte et tastatur eller en skærm, men jeg lånte bare fjernsynet og scroungede et tastatur, og fik det til at køre hovedfrit temmelig hurtigt. Fra da af brugte jeg stort set VNC fra da af.

Min urkode bruger Python 2.7.9 og er afhængig af ganske få biblioteker, der er angivet nedenfor. Udover dette kører jeg en Flask -webserver og MQTT til fjernbetjening og Shairplay til musikstreaming. Jeg fulgte lige de online installationsanvisninger for alle disse og havde ingen problemer overhovedet. Her er python -bibliotekerne og andre pakker osv., Jeg skulle installere med links til installationsnotater eller bare den kommando, du skal køre for at få det:

Python -biblioteker

  • Adafruit_LED_Rygsæk
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • alsaaudio
  • paho.mqtt.client (pip installer paho-mqtt)
  • kolbe (apt-get install python-kolbe)

Andre pakker osv

  • myg (apt-get install myg)
  • shairport
  • Pimoroni -webstedet har god dokumentation om opsætning af DAC, så jeg løb bare med det.

Trin 7: Software

Image
Image
Software
Software

Urkoden blev skrevet i Python og bruger trådning til at afspille alarmen og lejlighedsvis bip i baggrunden uden at blokere skærmopdateringerne. Jeg brugte ConfigParser -biblioteket, og den konfigurationsfil, den vedligeholder, læses og skrives af urkoden samt Flask -webappen, så når konfigurationen ændres via webgrænsefladen eller uret, bliver den synkroniseret. Ursoftwaren indeholder også en MQTT -mægler, der gør det muligt at styre displaytilstanden og muting eksternt. Mit bagtanke er i sidste ende at skrive en iOS -app til fjernbetjeningen, men webgrænsefladen fungerer godt nok for nu.

Det første billede ovenfor viser, hvordan uret ser ud i dets forskellige visningstilstande, og der er en kort video, der viser det i rulletilstand.

Selvom koden ikke er pæn at se på, er den pæn og stabil. Jeg sender det gerne til alle, der anmoder om det, og vil lægge det online, når det er bedre organiseret og kommenteret.

Web -appen

Det næste billede viser, hvordan webgrænsefladen til uret ser ud. Der er også konfigurations- og kontrolsider, og disse gør det meget nemmere at lege med uret uden at en masse knap maser:-).

Trin 8: Hvad så?

Hvad er det næste?
Hvad er det næste?

Der er en Python shareport metadata dekoder tilgængelig, så jeg tror, jeg tilføjer noget kode for at vise oplysninger som titel og artist, når der afspilles musik. Det ville også være ganske let at beregne solopgangs- og solnedgangstider, så displayet automatisk kan lysere og dæmpes i stedet for at indstille det manuelt. Måske ville det også være sjovt at tilføje en internetradiofunktion. Rulleskærmen kan også være mere konfigurerbar.

Anbefalede: