Kazalo:

Ura za nazaj v uro prihodnosti: 8 korakov (s slikami)
Ura za nazaj v uro prihodnosti: 8 korakov (s slikami)

Video: Ura za nazaj v uro prihodnosti: 8 korakov (s slikami)

Video: Ura za nazaj v uro prihodnosti: 8 korakov (s slikami)
Video: ЮЛЯ ФИНЕСС: Как я вышла с 8 этажа! Групповое изнасилование под мефедроном, психиатрическая больница 2024, November
Anonim
Nazaj na uro prihodnosti
Nazaj na uro prihodnosti

Ta projekt je začel življenje kot budilka za mojega sina. Naredil sem, da je videti kot časovni krog od Nazaj v prihodnost. Zaslon lahko prikazuje čas v različnih oblikah, vključno s tistim iz filmov. Nastavljiv je s pomočjo gumbov na vrhu ohišja, pa tudi prek spletne strani, ki jo v notranjosti ponuja Raspberry Pi Zero. V enem od načinov prikaza bo prikazal lokalno vreme (z moje vremenske postaje, ki ga poganja Arduino), pa tudi napoved in vse dnevne opomnike, konfigurirane prek spletnega vmesnika. Zahvaljujoč DAC -u ima tudi zvok in bo pretakal glasbo po protokolu AirPlay. Zvok alarma je lahko katera koli zvočna datoteka, ki jo izberete. Samodejno bo zatemnil in osvetlil zaslon ob danem času dneva (npr. Zore in mraka).

1. korak: Ozadje

Lansko leto sem iskal nov projekt Arduino, saj sem pravkar končal svojo prvo, domačo vremensko postajo. Moj 11-letni sin je pravkar prvič gledal filme Nazaj v prihodnost, zato se mi je zdelo zabavno, če bi mu za rojstni dan izdelali budilko, ki je bila videti kot časovni krog v Deloreanu. To ni nova ideja, obstaja kar nekaj podobnih projektov (na primer ta), zato sem mislil, da bi bil lep projekt učiti se od drugih in pridobiti nekaj novih znanj.

Prva različica je delovala zelo dobro (ni bila pripravljena za njegov rojstni dan: to sem naredil do božiča), vendar sem bil precej ambiciozen v tem, kar sem želel, in ugotovil, da moja skica nenehno prihaja do omejitve pomnilnika Arduina. Imel sem tudi nekaj manjših zunanjih modulov strojne opreme (WiFi, MP3 predvajalnik, zvočni ojačevalnik, RTC itd.), Tako da je postalo vse skupaj nekoliko okorno. Na koncu sem se odločil, da se premaknem na platformo Raspberry Pi, ki je poenostavila strojno opremo in mi omogočila, da vnesem veliko več funkcionalnosti in funkcij.

2. korak: glavne komponente strojne opreme

Znotraj škatle

Tu so elektronske komponente, ki sem jih uporabil. Večina jih je bila vir iz Core Electronics v Avstraliji, seveda pa so na voljo tudi drugod:

  • 4 x štirikotni alfanumerični zaslon -rumeno -zelen
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC za Raspberry Pi Zero
  • Zvočni ojačevalnik (PAM8403 IC)
  • Napajanje Raspberry Pi 3+
  • 4 x Mostična žica - 0,1 ", 5 -polna, 12"
  • 40 -polni (2 x 20) trakovni kabel
  • Moška glava Raspberry Pi GPIO
  • Raspberry Pi Model B - zavita glava GPIO (2X20)
  • Glava zlaganja GPIO za Pi A+/B+/PI 2/PI 3 - zelo dolga 2X20
  • 4 x 5 -polna moška glava
  • 2 majhna 3W zvočnika
  • 2 x koaksialni kabli za analogno avdio povezavo DAC z ojačevalnikom
  • Veraboard ali tiskana vezja po meri za upravljanje Rpi z ojačevalnikom, LED, gumbi
  • 5 x trenutna stikala na gumb
  • 4 x 2-smerne vijačne sponke, nameščene na PCB

Škatla

  • Kosi in koščki MDF, vijaki in vijaki za izdelavo "podvozja"
  • Zeleni toniran perspex, lokalni dobavitelj
  • Stiren, lepilo za modeliranje, brizgalna barva (barva aluminija) iz lokalne trgovine s hobiji
  • Nalepke (datoteka na voljo na zahtevo - natisnil Redbubble)

Korak: Združite vse skupaj

Vse skupaj
Vse skupaj

LED zaslon za uro je sestavljen iz alfanumeričnih prikazov 16x14 segmentov, na srečo enako število znakov kot časovno vezje Nazaj v prihodnost. Medtem ko morajo biti samo prvi trije znaki alfanumerični, preostali pa so lahko 7-segmentni številski prikazi za posnemanje filmskega rekvizita, sem se odločil, da jih naredim vse alfanumerične, da omogočim nekaj prilagodljivosti pri tem, kar bi bilo mogoče prikazati, in da bodo vsi videti enako. Štiriposteljni nahrbtniki Adafruit so tukaj odlična rešitev in jih lahko uporabljate na avtobusu I2C Raspberry Pi. Več informacij o teh enotah in o tem, kako jih povezati, najdete tukaj na spletnem mestu Adafruit. Edino nekoliko nestandardno, kar sem moral narediti, je bilo spremeniti naslove treh od njih, tako da je bil vsak nahrbtnik unikaten.

Za predvajanje zvoka (v stereo) sem vključil Pimoroni pHAT DAC in 2 x 3 W stereo avdio ojačevalnik na osnovi čipa PAM8403. PHAT DAC je zelo enostavno povezati s Pi. Na Pi sem dal 2 x 20 -polno moško glavo, na DAC pa zložljivo glavo GPIO, tako da ju lahko priključimo drug na drugega. Moški zatiči glave gredo skozi zgornji del DAC-a, kar mi omogoča, da speljem tračni kabel z ženskimi konektorji, sprva do izhoda Raspberry Pi za testiranje plošče, na koncu pa do zavite glave na tiskanem vezju po meri.

Za zvočni ojačevalnik obstaja veliko možnosti (vključno s samim pridobivanjem čipa in sestavljanjem svojega). Ta ima možnost utišanja izhoda tako, da samo spremeni stanje enega od zatičev (visoko je vklopljeno, nizko je izklopljeno) in povezal sem ga, tako da je to mogoče nadzorovati s Pi. V prvih poskusih, da bi to povezal, sem odkril precej hrupa v ozadju, ko je bil zvok vklopljen. Po dolgem igranju z ozemljitvami sem sčasoma poskusil premakniti vhodno napajalno napetost s Pi -jevih 5V na 3.3V in to se je popravilo. Mislim, da zaradi različnih digitalnih signalov, ki letijo naokoli, nastaja precej hrupa, vendar se zdi, da je napajanje 3.3V nekako izolirano.

Druge povezave vključujejo analogni zvok iz DAC -a na ojačevalnik (tukaj sem uporabil koaksialni kabel za pomoč pri obvladovanju hrupa) in izhod zvoka v par majhnih 3W zvočnikov, ki se prilegajo v ohišje. Obstajajo tudi povezave GPIO za štiri trenutna stikala na vrhu škatle in na trenutne tipke "RUN" za trdo ponastavitev sem priključil trenutni gumb (glejte razdelek Dodatne povezave na tej strani). Gumb za ponastavitev je nameščen zunaj pogleda na zadnji strani ohišja. Tukaj je diagram, ki prikazuje povezave:

4. korak: PCB po meri

PCB po meri
PCB po meri

Čeprav v vezju ni nič preveč zapletenega, je ožičenja kar nekaj in plošča lahko precej hitro izgleda kot špageti. Zato sem oblikoval tiskano vezje, da bi vse ostalo pod nadzorom. To je enostranska deska za domače kuhanje, pri izdelavi pa sem dobil prijatelja. Ko sem ga naredil in ožičil, sem spoznal, da sem pozabil vključiti priključke za priključne bloke za zvok, in pozneje sem spremenil, da sem napajalnik avdio ojačevalca prestavil s 5 V na 3,3 V, zato to ni idealno in sem se moral vključiti nekaj Veroboarda, ki omogoča avdio povezave. Tudi izhodi na avdio ojačevalniku so nestandardno ločeni (med celo nožicami se razlikujejo), zato je povezava z glavnim tiskanim vezjem nekoliko grozljiva z 11 kratkimi ~ 1 cm žicami za povezavo.

Če bi naredil drugo ploščo, bi vključil vse te spremembe in tudi spremenil priključek za štiri gumbe v nekaj nekoliko lepšega. DAC in Pi bi se zložili na vrhu, zato ni potreben tračni kabel. Zgornji diagram prikazuje, kako bi lahko izgledal.

5. korak: Ohišje

Ohišje
Ohišje
Ohišje
Ohišje
Ohišje
Ohišje

Hotel sem narediti ohišje, ki je izgledalo kot ena vrstica časovnega kroga filma. Tri vrstice LED zaslonov bi bile preveč za budilko in bi znatno povečale stroške. Razmišljal sem o izdelavi ohišja iz aluminija, vendar na tem področju nimam nobenih znanj. V svojem življenju sem naredil kar nekaj plastičnih modelov in imam nekaj izkušenj z obdelavo lesa, zato sem se odločil, da naredim okvir iz MDF-ja za vgradnjo LED in zvočnikov ter pritrdim steklo na sprednjo stran, nato pa to prekrijem s 5-stranskim stirenom škatla z okvirjem na sprednji strani, pobarvana s kovinsko barvo iz aluminija. Plastiko in barvo so kupili v lokalni trgovini z modeli. Natančno sem si ogledal nalepke na filmskem rekvizitu in se potrudil, da sem kopiral barve, vrsto pisave in velikost. Za izdelavo etiket sem uporabil Photoshop in jih natisnil kot nalepke iz Redbubble.

Na zgornjih slikah je prikazano:

  1. Sprednji del ohišja MDF. 4 LED nahrbtniki so nameščeni spredaj z zeleno obarvanim steklom
  2. Znotraj škatle. Vsi nahrbtniki nameščeni in postavljeni, Raspberry Pi in tiskana vezja po meri, zvočniki na obeh straneh.
  3. Ožičenje je nameščeno in zunanja lupina je pripravljena za nadaljevanje. Bilo je malo stiska!

6. korak: Nastavitev Raspberry Pi

Imel sem nekaj težav z združljivostjo z Raspbian Stretchom (kar bi bilo mogoče rešiti, če bi vztrajal), vendar se Jessie z njim odlično obnese, zato sem se odločil, da nadaljujem s tem.

Pi sem nastavil kot enoto brez glave z dostopom VNC in SSH. To bi lahko storili, ne da bi priklopili tipkovnico ali monitor, vendar sem si izposodil televizor in pobrskal tipkovnico ter mi je kar hitro uspelo brez glave. Od takrat naprej sem precej uporabljal VNC.

Moja koda ure uporablja Python 2.7.9 in se opira na kar nekaj spodaj navedenih knjižnic. Poleg tega uporabljam spletni strežnik Flask in MQTT za daljinsko upravljanje in Shairplay za pretakanje glasbe. Samo sledil sem navodilom za namestitev na spletu za vse to in sploh nisem imel težav. Tu so knjižnice python in drugi paketi itd., Ki sem jih moral namestiti s povezavami do opomb o namestitvi ali samo z ukazom, ki ga morate zagnati, da ga dobite:

Knjižnice Python

  • Adafruit_LED_Nahrbtnik
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • alsaaudio
  • paho.mqtt.client (pip install paho-mqtt)
  • flask (apt-get install python-flask)

Drugi paketi itd

  • komar (apt-get install komar)
  • shairport
  • Spletno mesto Pimoroni ima nekaj dobre dokumentacije o namestitvi DAC -a, zato sem s tem le nadaljeval.

7. korak: Programska oprema

Image
Image
Programska oprema
Programska oprema

Koda ure je bila napisana v Pythonu in uporablja nit za predvajanje alarma in občasno piskanje v ozadju, ne da bi blokirala posodobitve zaslona. Uporabil sem knjižnico ConfigParser in konfiguracijsko datoteko, ki jo vzdržuje, bere in zapisuje koda ure ter spletna aplikacija Flask, tako da se sinhronizira, kadar koli spremenimo konfiguracijo prek spletnega vmesnika ali ure. Programska oprema za ure vključuje tudi posrednika MQTT, ki omogoča daljinsko upravljanje načina prikaza in utišanja. Moj zadnji motiv je sčasoma napisati aplikacijo za iOS za daljinski upravljalnik, vendar spletni vmesnik zaenkrat deluje dovolj dobro.

Prva zgornja slika prikazuje, kako je ura videti v različnih načinih prikaza, in kratek videoposnetek, ki prikazuje to v načinu drsenja.

Čeprav koda ni lepa na pogled, je lepa in stabilna. Z veseljem ga pošljem vsakomur, ki to zahteva, in ga bo dal na splet, ko bo bolje organiziran in komentiran.

Spletna aplikacija

Naslednja slika prikazuje, kako izgleda spletni vmesnik za uro. Obstajajo tudi konfiguracijske in kontrolne strani, ki olajšajo igranje z uro brez veliko pritiskanja gumbov:-).

8. korak: Kaj sledi?

Kaj je naslednje?
Kaj je naslednje?

Na voljo je dekodirnik metapodatkov Python shareport, zato mislim, da bom med predvajanjem glasbe dodal kodo za prikaz informacij, kot sta naslov in izvajalec. Prav tako bi bilo zelo enostavno izračunati čas sončnega vzhoda in sončnega zahoda, da bi lahko zaslon samodejno osvetlili in zatemnili, namesto da bi ga ročno nastavili. Morda bi bilo dodajanje funkcije internetnega radia tudi zabavno. Drsni zaslon je lahko tudi bolj nastavljiv.

Priporočena: