Innholdsfortegnelse:

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

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

Video: A Back to the Future Clock: 8 trinn (med bilder)
Video: Такие секреты уже все забыли, но их стоит знать! Полезные советы на все случаи жизни! 2024, November
Anonim
A Back to the Future Clock
A Back to the Future Clock

Dette prosjektet startet livet som en vekkerklokke for sønnen min. Jeg fikk det til å ligne tidskretsen fra Tilbake til fremtiden. Displayet kan vise tiden i forskjellige formater, inkludert den fra filmene selvfølgelig. Den kan konfigureres via knappene på toppen av kabinettet, men også via en webside som serveres av Raspberry Pi Zero på innsiden. I en av visningsmodusene vil det vise det lokale været (fra min Arduino-drevne værstasjon) samt prognosen og eventuelle daglige påminnelser, konfigurert via webgrensesnittet. Den har også lyd takket være en DAC og vil streame musikk ved hjelp av AirPlay -protokollen. Alarmlyden kan være hvilken som helst lydfil du velger. Det vil dempe og gjøre displayet lysere automatisk på bestemte tider på dagen (f.eks. Daggry og skumring).

Trinn 1: Bakgrunn

I fjor var jeg på jakt etter et nytt Arduino -prosjekt som nettopp var ferdig med mitt første noensinne, en hjemmeværestasjon. Min 11 år gamle sønn hadde nettopp sett på Back to the Future-filmene for første gang, så jeg tenkte at det ville være morsomt å bygge ham en vekkerklokke som så ut som tidskretsen i Delorean for bursdagen hans. Dette er ikke en ny idé, det er ganske mange lignende prosjekter der ute (dette for eksempel), så jeg tenkte at det ville være et fint prosjekt å lære av andre og hente noen nye ferdigheter.

Den første versjonen fungerte ganske bra (den var ikke klar for bursdagen hans: Jeg fikk det gjort til jul), men jeg ble ganske ambisiøs i det jeg ville at den skulle gjøre og fant ut at skissen min fortsatte å løpe inn i minnegrensen til Arduino. Jeg hadde også flere små eksterne maskinvaremoduler (WiFi, MP3 -spiller, lydforsterker, RTC osv.), Så det hele ble litt uhåndterlig. Til slutt bestemte jeg meg for å flytte til en Raspberry Pi -plattform som forenklet maskinvaren og tillot meg å pakke inn mye mer funksjonalitet og funksjoner.

Trinn 2: Hovedmaskinvarekomponenter

Inne i esken

Her er de elektroniske komponentene jeg brukte. De fleste av dem var kilder fra Core Electronics i Australia, men de er selvfølgelig lett tilgjengelige andre steder også:

  • 4 x Quad Alfanumerisk Display -Gul -Grønn
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC for Raspberry Pi Zero
  • Lydforsterker (PAM8403 IC)
  • Raspberry Pi 3+ strømforsyning
  • 4 x Jumper wire - 0,1 ", 5 -pins, 12"
  • 40 -pins (2 x 20) båndkabel
  • Raspberry Pi GPIO hannhodet
  • Raspberry Pi Model B - GPIO Shrouded Header (2X20)
  • GPIO Stacking Header for Pi A+/B+/PI 2/PI 3 - ekstra lang 2X20
  • 4 x 5 -pins mannlig overskrift
  • 2 små 3W høyttalere
  • 2 x koaksialkabler for analog lydtilkobling DAC til Amp
  • Veraboard eller tilpasset PCB for å håndtere Rpi til en forsterker, LED, knapper
  • 5 x øyeblikkelige trykknappbrytere
  • 4 x 2-veis PCB-monterbare skrueklemmer

Boksen

  • Biter og stykker av MDF, skruer og bolter for å lage 'chassiset'
  • Grønnfarget perspex, lokal leverandør
  • Styren, modelleringslim, spraymaling (aluminiumsfarge) fra en lokal hobbybutikk
  • Klistremerker (fil tilgjengelig på forespørsel - trykt av Redbubble)

Trinn 3: Sett alt sammen

Sette alt sammen
Sette alt sammen

LED-displayet for klokken består av 16 x 14-segment alfanumeriske skjermer, heldigvis samme antall tegn som Back to the Future-tidskretsen. Selv om bare de tre første tegnene må være alfanumeriske, og resten kan være 7-segmenters numeriske skjermer for å etterligne filmstøtten, bestemte jeg meg for å gjøre dem alle alfanumeriske for å gi litt fleksibilitet i det som kan vises og for at alle skal se på samme. Adafruit quad-ryggsekker er en flott løsning her og kan kjøres på Raspberry Pi's I2C-buss. Mer informasjon om disse enhetene og hvordan du kobler dem til finner du her på Adafruit -nettstedet. Det eneste litt ikke-standard jeg måtte gjøre var å endre adressene til tre av dem, så hver ryggsekk var unik.

For å spille av lyd (i stereo) inkluderte jeg Pimoroni pHAT DAC og en 2 x 3W stereolydforsterker basert på PAM8403 -brikken. PHAT DAC er veldig lett å koble til Pi. Jeg la en 2 x 20 pinners mannlig overskrift på Pi og en GPIO stablingshode på DAC slik at de kunne kobles sammen på toppen av den andre. De mannlige toppnålene går gjennom toppen av DAC, slik at jeg kan kjøre en båndkabel med hunnkontakter, først til en Raspberry Pi-utbrudd for brødbrett-testing, men til slutt til en innhyllet overskrift på et skreddersydd PCB.

For lydforsterkeren er det mange alternativer (inkludert bare å få brikken og sette sammen din egen). Denne har muligheten til å dempe utgangen ved å bare endre tilstanden til en av pinnene (høy er på, lav er av), og jeg koblet den til så dette kan styres fra Pi. I mine første forsøk på å koble dette opp, oppdaget jeg ganske mye bakgrunnsstøy da lyden var på. Etter mye lek med jording, prøvde jeg til slutt å flytte inngangsspenningen fra Pi's 5V til 3.3V, og det løste det. Jeg antar at det er ganske mye støy som genereres av de forskjellige digitale signalene som flyr rundt, men det virker som om 3.3V -forsyningen på en eller annen måte er isolert.

Andre tilkoblinger inkluderer den analoge lyden fra DAC til forsterkeren (jeg brukte koaksialkabel her for å håndtere støyopptak) og utgangslyd til et par små 3W høyttalere som passer i kabinettet. Det er også GPIO -tilkoblinger for de fire øyeblikkelige bryterne på toppen av esken, og jeg koblet til en kort knapp til de harde tilbakestillingspinnene "RUN" (se avsnittet om tilleggstilkoblinger på denne siden). Tilbakestillingsknappen er montert ute av syne på baksiden av kabinettet. Her er et diagram som viser tilkoblingene:

Trinn 4: En tilpasset PCB

En tilpasset PCB
En tilpasset PCB

Selv om det ikke er noe for komplisert med kretsen, er det ganske mye ledninger og et brødbrett kan se ut som spaghetti ganske raskt. Så jeg designet en PCB for å holde alt under kontroll. Det er et hjemmebrygget ensidig brett, og jeg har en venn som kan hjelpe meg med å lage det. Etter at den ble laget og kablet opp, skjønte jeg at jeg glemte å inkludere tilkoblinger for rekkeklemmer for lyden, og jeg gjorde senere en endring for å flytte lydforsterkerforsyningen fra 5V til 3,3V, så det er ikke ideelt, og jeg måtte fortsette noen Veroboard for å tillate lydtilkoblinger. Pinout-lydkortet har også en ikke-standard separasjon (de varierer til og med mellom pinnene), så tilkoblingen for dette til hovedkortet er litt fryktelig med 11 korte ~ 1 cm tilkoblingskabler.

Hvis jeg laget et annet brett, ville jeg inkludere alle disse modifikasjonene og også bytte kontakten for de fire knappene til noe litt hyggeligere. DAC og Pi ville stable rett på toppen, så ingen båndkabel trengs. Diagrammet ovenfor viser hvordan det kan se ut.

Trinn 5: Vedlegget

Vedlegget
Vedlegget
Vedlegget
Vedlegget
Vedlegget
Vedlegget

Jeg ønsket å lage et kabinett som så ut som en rad i filmtidskretsen. Tre rader med LED -skjermer ville ha vært for mye for en vekkerklokke og ville ha økt kostnaden betydelig. Jeg tenkte på å lage kabinettet av aluminium, men jeg har ingen ferdigheter på det området. Jeg har imidlertid laget ganske mange plastmodeller i mitt liv, og har litt trearbeidserfaring, så jeg bestemte meg for å lage en ramme med MDF for å montere lysdioder og høyttalere og fikse perspexen foran, og deretter dekke den med en 5-sidig styren eske med ramme på forsiden, malt i en metallisk metallisk spraymaling. Plasten og malingen ble hentet fra en lokal modellbutikk. Jeg tok en nærmere titt på etikettene på filmrekvisitten og gjorde mitt beste for å kopiere fargene, skrifttypen og størrelsen. Jeg brukte Photoshop til å bygge etikettene og fikk dem skrevet ut som klistremerker fra Redbubble.

Bildene ovenfor viser:

  1. Fronten på MDF -chassiset. De 4 LED-ryggsekkene er montert foran med grønnfarget perspex
  2. Inne i esken. Ryggsekker alle montert og i rekkefølge, Raspberry Pi og tilpasset PCB i, høyttalere på hver side.
  3. Kabling installert og ytre skall klar til å gå på. Det var litt klem!

Trinn 6: Konfigurere Raspberry Pi

Jeg hadde noen kompatibilitetsproblemer med Raspbian Stretch (som kan ha vært løsbart hvis jeg hadde holdt på), men Jessie jobber fint med det, så jeg bestemte meg for å gå med det.

Jeg konfigurerte Pi som en hodeløs enhet med VNC og SSH -tilgang. Dette kunne ha blitt gjort uten at jeg noen gang hadde koblet til et tastatur eller en skjerm, men jeg lånte bare TV -en og skrudde et tastatur, og fikk det til å gå hodeløst ganske raskt. Fra da av brukte jeg ganske mye VNC fra da av.

Klokkekoden min bruker Python 2.7.9 og er avhengig av ganske mange biblioteker, som er oppført nedenfor. I tillegg til dette kjører jeg en Flask -webserver og MQTT for fjernkontroll og Shairplay for musikkstrømming. Jeg fulgte nettopp installasjonsnotatene for alle disse og hadde ingen problemer i det hele tatt. Her er python -bibliotekene og andre pakker osv. Jeg trengte å installere med lenker til installasjonsnotater eller bare kommandoen du trenger å kjøre for å få det:

Python -biblioteker

  • Adafruit_LED_Sekk
  • 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

  • mygg (apt-get install mygg)
  • shairport
  • Pimoroni -nettstedet har god dokumentasjon om konfigurering av DAC, så jeg løp bare med det.

Trinn 7: Programvare

Image
Image
Programvare
Programvare

Klokkekoden ble skrevet i Python og bruker tråding for å spille av alarmen og sporadiske pip i bakgrunnen uten å blokkere skjermoppdateringene. Jeg brukte ConfigParser -biblioteket, og konfigurasjonsfilen den opprettholder blir lest og skrevet av klokkekoden så vel som Flask -webappen, slik at når konfigurasjonen endres via webgrensesnittet eller klokken, blir den synkronisert. Klokkeprogramvaren inkluderer også en MQTT -megler for å tillate kontroll over skjermmodus og muting fjernstyres. Mitt baktanke er til slutt å skrive en iOS -app for fjernkontrollen, men nettgrensesnittet fungerer bra nok for nå.

Det første bildet ovenfor viser hvordan klokken ser ut i de forskjellige visningsmodusene, og det er en kort video som viser den i rullemodus.

Selv om koden ikke er pen å se på, er den fin og stabil. Jeg sender det gjerne til alle som ber om det og legger det ut på nettet når det er bedre organisert og kommentert.

Nettappen

Det neste bildet viser hvordan webgrensesnittet til klokken ser ut. Det er også konfigurasjons- og kontrollsider, og disse gjør det mye enklere å leke med klokken uten mye knappemose:-).

Trinn 8: Hva neste?

Hva nå?
Hva nå?

Det er en Python shareport metadata dekoder tilgjengelig, så jeg tror jeg vil legge til litt kode for å vise informasjon som tittel og artist når musikk spilles. Det ville også være ganske enkelt å beregne soloppgangs- og solnedgangstider, slik at skjermen automatisk kan lysner og dempes, i stedet for å sette den manuelt. Kanskje det ville være morsomt å legge til en internettradiofunksjon. Rulleskjermen kan også være mer konfigurerbar.

Anbefalt: