Atgal į ateities laikrodį: 8 žingsniai (su nuotraukomis)
Atgal į ateities laikrodį: 8 žingsniai (su nuotraukomis)
Anonim
Atgal į ateities laikrodį
Atgal į ateities laikrodį

Šis projektas pradėjo gyvenimą kaip mano sūnaus žadintuvas. Aš atrodžiau kaip laiko grandinė iš „Atgal į ateitį“. Ekrane gali būti rodomas laikas įvairiais formatais, įskaitant, žinoma, filmų formatą. Tai galima konfigūruoti naudojant mygtukus korpuso viršuje, bet taip pat per tinklalapį, kurį aptarnauja „Raspberry Pi Zero“viduje. Vienu iš rodymo režimų bus rodomas vietinis oras (iš mano „Arduino“varomos orų stoties), taip pat prognozė ir visi dienos priminimai, sukonfigūruoti naudojant žiniatinklio sąsają. Jis taip pat turi garsą DAC dėka ir transliuos muziką naudodamas „AirPlay“protokolą. Žadintuvo garsas gali būti bet koks jūsų pasirinktas garso failas. Jis automatiškai pritemdys ir paryškins ekraną tam tikru paros metu (pvz., Auštant ir sutemus).

1 žingsnis: fonas

Praėjusiais metais aš ieškojau naujo „Arduino“projekto, ką tik baigęs savo pirmąjį - namų orų stotį. Mano 11-metis sūnus ką tik pirmą kartą žiūrėjo filmus „Atgal į ateitį“, todėl pagalvojau, kad būtų smagu pasistatyti jam žadintuvą, kuris per gimtadienį atrodytų kaip laiko grandinė „Delorean“. Tai nėra nauja idėja, panašių projektų yra nemažai (pavyzdžiui, šis), todėl pagalvojau, kad tai būtų puikus projektas mokytis iš kitų ir įgyti naujų įgūdžių.

Pirmoji versija veikė gana gerai (ji nebuvo paruošta jo gimtadieniui: aš tai padariau iki Kalėdų), bet aš gana ambicingai siekiau to, ką norėjau padaryti, ir sužinojau, kad mano eskizas nuolat pasiekė „Arduino“atminties ribą. Aš taip pat turėjau keletą mažų išorinių aparatūros modulių („WiFi“, MP3 grotuvas, garso stiprintuvas, RTC ir tt), todėl viskas pasidarė šiek tiek sudėtinga. Galų gale nusprendžiau pereiti prie „Raspberry Pi“platformos, kuri supaprastino aparatinę įrangą ir leido man supakuoti daug daugiau funkcijų ir funkcijų.

2 žingsnis: Pagrindiniai aparatūros komponentai

Dėžutės viduje

Čia yra mano naudojami elektroniniai komponentai. Dauguma jų buvo Australijos „Core Electronics“šaltiniai, tačiau, žinoma, jie yra lengvai prieinami ir kitur:

  • 4 x keturių raidžių ir skaitmenų ekranas -geltonai žalias
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC skirtas Raspberry Pi Zero
  • Garso stiprintuvas (PAM8403 IC)
  • Raspberry Pi 3+ maitinimo šaltinis
  • 4 x jungiamasis laidas - 0,1 ", 5 kontaktų, 12"
  • 40 kontaktų (2 x 20) juostinis kabelis
  • Raspberry Pi GPIO vyrų antraštė
  • „Raspberry Pi Model B“- „GPIO Shrouded Header“(2X20)
  • GPIO krovimo antraštė, skirta Pi A+/B+/PI 2/PI 3 - ypač ilga 2X20
  • 4 x 5 kaiščių antraštė
  • 2 maži 3W garsiakalbiai
  • 2 x bendraašiai kabeliai analoginiam garso prijungimui DAC prie stiprintuvo
  • Veraboard arba pasirinktinė PCB, skirta valdyti stiprintuvo, LED, mygtukų Rpi
  • 5 x momentiniai mygtukiniai jungikliai
  • 4 x 2 krypčių PCB tvirtinami varžtų gnybtai

Dėžė

  • MDF gabaliukai ir gabalai, varžtai ir varžtai „važiuoklės“gamybai
  • Žaliai tonuotas perspex, vietinis tiekėjas
  • Stirenas, modeliniai klijai, purškiami dažai (aliuminio spalvos) iš vietinės pomėgių parduotuvės
  • Lipdukai (failas galimas paprašius - atspausdintas „Redbubble“)

3 žingsnis: sudėkite viską kartu

Viską sujungti
Viską sujungti

Laikrodžio LED ekraną sudaro 16 x 14 segmentų raidiniai ir skaitmeniniai ekranai, laimei, tiek pat simbolių, kiek laiko grandinėje „Atgal į ateitį“. Nors tik trys pirmieji simboliai turi būti sudaryti iš raidžių ir skaitmenų, o kiti gali būti 7 segmentų skaitmeniniai ekranai, kad būtų galima imituoti filmo rekvizitus, aš nusprendžiau juos visus sudaryti iš raidžių ir skaičių, kad būtų galima lanksčiau rodyti vaizdus ir kad jie visi atrodytų tas pats. Keturios kuprinės „Adafruit“yra puikus sprendimas ir jas galima naudoti „Raspberry Pi“I2C autobuse. Daugiau informacijos apie šiuos įrenginius ir kaip juos prijungti rasite čia, „Adafruit“svetainėje. Vienintelis šiek tiek nestandartinis dalykas, kurį turėjau padaryti, buvo pakeisti trijų jų adresus, kad kiekviena kuprinė būtų unikali.

Norėdami atkurti garsą (stereo), aš įtraukiau „Pimoroni pHAT DAC“ir 2 x 3 W stereo garso stiprintuvą, pagrįstą PAM8403 lustu. „PHAT DAC“tikrai lengva prijungti prie „Pi“. Aš įdėjau 2 x 20 kontaktų antraštę ant „Pi“ir „GPIO“kaupimo antraštę ant DAC, kad jie galėtų būti prijungti vienas prie kito. Vyriški antraštės kaiščiai eina per DAC viršuje, todėl galiu paleisti juostinį kabelį su moteriškomis jungtimis, iš pradžių iki Raspberry Pi pertraukos, skirtos bandymams su duona, bet galiausiai iki uždengtos antraštės pagal užsakymą pagamintą PCB.

Garso stiprintuvui yra daug galimybių (įskaitant tik mikroschemos įsigijimą ir savo surinkimą). Šis turi galimybę nutildyti išvestį, tiesiog pakeisdamas vieno iš kaiščių būseną (aukštas įjungtas, žemas išjungtas), ir aš jį prijungiau, kad tai būtų galima valdyti iš „Pi“. Pradžioje bandydamas tai prijungti, atradau gana daug foninio triukšmo, kai buvo įjungtas garsas. Po daugybės žaidimų su įžeminimu galiausiai bandžiau perkelti įvesties maitinimo įtampą iš „Pi“5 V į 3,3 V ir tai ištaisė. Manau, kad skraidantys įvairūs skaitmeniniai signalai sukelia gana daug triukšmo, tačiau atrodo, kad 3,3 V maitinimas yra kažkaip izoliuotas.

Kitos jungtys apima analoginį garsą iš DAC į stiprintuvą (čia aš naudoju bendraašį kabelį, kad padėtų valdyti triukšmą) ir išvesties garsą į porą mažų 3 W garsiakalbių, kurie tinka korpuse. Taip pat yra GPIO jungtys keturiems momentiniams jungikliams, esantiems dėžutės viršuje, ir aš prijungiau momentinį mygtuką prie „RUN“kaiščių, kuriuos reikia iš naujo nustatyti (žr. Šio puslapio skyrių „Papildomos jungtys“). Atstatymo mygtukas yra sumontuotas nematomas korpuso gale. Čia yra schema, rodanti ryšius:

4 žingsnis: pasirinktinė PCB

Individualizuota PCB
Individualizuota PCB

Nors grandinėje nėra nieko pernelyg sudėtingo, yra gana daug laidų ir duonos lenta gali atrodyti kaip spagečiai gana greitai. Taigi aš sukūriau PCB, kad visa tai būtų kontroliuojama. Tai naminė vienašalė lenta, ir aš turiu draugą, kuris padėtų tai padaryti. Po to, kai jis buvo sukurtas ir prijungtas, supratau, kad pamiršau įtraukti garso jungčių jungtis, o vėliau pakeičiau, kad garso stiprintuvo maitinimas būtų perkeltas iš 5 V į 3,3 V, todėl tai nėra idealu ir turėjau stengtis kai kuri „Veroboard“leidžia garso ryšius. Be to, garso stiprintuvo plokštės kištukai yra nestandartiškai atskirti (jie netgi skiriasi tarp kaiščių), todėl prijungimas prie pagrindinės PCB yra šiek tiek siaubingas su 11 trumpų ~ 1 cm jungties laidų.

Jei padaryčiau kitą plokštę, įtraukčiau visus šiuos pakeitimus ir taip pat pakeisčiau keturių mygtukų jungtį į kažką geresnio. DAC ir Pi būtų sukrauti tiesiai ant viršaus, todėl nereikia juostinio kabelio. Aukščiau pateikta schema rodo, kaip tai gali atrodyti.

5 žingsnis: gaubtas

Aptvaras
Aptvaras
Aptvaras
Aptvaras
Aptvaras
Aptvaras

Norėjau padaryti aptvarą, kuris atrodytų kaip viena filmo laiko grandinės eilutė. Trys LED ekranų eilės būtų per daug žadintuvui ir gerokai padidintų išlaidas. Aš galvojau padaryti korpusą iš aliuminio, bet neturiu jokių įgūdžių šioje srityje. Vis dėlto per savo gyvenimą sukūriau nemažai plastikinių modelių ir turiu šiek tiek medžio apdirbimo patirties, todėl nusprendžiau pagaminti rėmą naudojant MDF, kad būtų sumontuoti šviesos diodai ir garsiakalbiai, o priekinė dalis pritvirtinta priekyje, tada padengti 5 pusių stirenu dėžutė su rėmeliu priekyje, nudažyta metaliniais aliuminio dažais. Plastikas ir dažai buvo įsigyti vietinėje modelių parduotuvėje. Atidžiai peržiūrėjau filmo rekvizito etiketes ir padariau viską, kad nukopijuočiau spalvas, šrifto tipą ir dydį. Etiketes kūriau „Photoshop“ir atspausdinau kaip lipdukus iš „Redbubble“.

Aukščiau esantys vaizdai rodo:

  1. MDF važiuoklės priekis. 4 LED kuprinės yra sumontuotos priekyje su žalios spalvos perspex
  2. Dėžutės viduje. Visos kuprinės sumontuotos ir išdėstytos, „Raspberry Pi“ir pasirinktinė PCB, garsiakalbiai iš abiejų pusių.
  3. Laidai sumontuoti, o išorinis apvalkalas paruoštas tęsti. Tai buvo šiek tiek suspaudimas!

6 veiksmas: nustatykite „Raspberry Pi“

Turėjau tam tikrų suderinamumo problemų su „Raspbian Stretch“(tai galėjo būti išspręsta, jei būčiau užsispyręs), tačiau Jessie su juo puikiai dirba, todėl nusprendžiau tai padaryti.

Aš nustatiau „Pi“kaip įrenginį be galvos su VNC ir SSH prieiga. Tai buvo galima padaryti niekada neprijungus klaviatūros ar monitoriaus, bet aš ką tik pasiskolinau televizorių ir pabučiavau klaviatūrą ir gana greitai pradėjau veikti. Nuo tada aš beveik naudoju VNC.

Mano laikrodžio kodas naudoja „Python 2.7.9“ir remiasi daugybe bibliotekų, išvardytų žemiau. Be to, aš naudoju „Flask“žiniatinklio serverį ir MQTT nuotolinio valdymo pultui, o „Shairplay“- muzikos transliacijai. Aš tiesiog sekiau visų šių įrenginių diegimo pastabas ir neturėjau jokių problemų. Čia yra „python“bibliotekos ir kiti paketai ir tt, kuriuos man reikėjo įdiegti su nuorodomis į diegimo pastabas arba tiesiog komanda, kurią turite paleisti, kad ją gautumėte:

„Python“bibliotekos

  • „Adafruit_LED_Backpack“
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • alsaaudio
  • paho.mqtt.client (pip install paho-mqtt)
  • kolba (apt-get install python-flask)

Kiti paketai ir kt

  • uodas (apt-get install mosquito)
  • Shairport
  • „Pimoroni“svetainėje yra keletas gerų dokumentų apie DAC nustatymą, todėl aš tiesiog tai padariau.

7 žingsnis: programinė įranga

Image
Image
Programinė įranga
Programinė įranga

Laikrodžio kodas buvo parašytas „Python“ir jame naudojamas sriegis, kad būtų paleistas žadintuvas ir retkarčiais skamba fonas, neužblokuojant ekrano atnaujinimų. Aš naudoju „ConfigParser“biblioteką, o jos išlaikomas konfigūracijos failas yra skaitomas ir rašomas laikrodžio kodu bei „Flask“žiniatinklio programa, kad kaskart, kai konfigūracija būtų pakeista per žiniatinklio sąsają arba laikrodį, ji būtų sinchronizuojama. Laikrodžio programinėje įrangoje taip pat yra MQTT brokeris, leidžiantis valdyti ekrano režimą ir nutildymą nuotoliniu būdu. Galų gale mano pagrindinis tikslas yra parašyti „iOS“programą nuotolinio valdymo pultui, tačiau žiniatinklio sąsaja šiuo metu veikia pakankamai gerai.

Pirmame paveikslėlyje aukščiau parodyta, kaip laikrodis atrodo įvairiais ekrano režimais, o trumpame vaizdo įraše rodomas slinkimo režimas.

Nors atrodyti kodas nėra gražus, jis yra gražus ir stabilus. Džiaugiuosi galėdamas išsiųsti jį visiems, kurie to prašo, ir paskelbs internete, kai bus geriau organizuotas ir pakomentuotas.

Žiniatinklio programa

Kitame paveikslėlyje parodyta, kaip atrodo interneto sąsaja su laikrodžiu. Taip pat yra konfigūravimo ir valdymo puslapiai, todėl daug lengviau žaisti su laikrodžiu be daugybės mygtukų maišymo:-).

8 žingsnis: kas toliau?

Kas toliau?
Kas toliau?

Yra „Python shareport“metaduomenų dekoderis, todėl manau, kad grojant muzikai pridėsiu tam tikrą kodą, kad būtų rodoma informacija, pvz., Pavadinimas ir atlikėjas. Taip pat būtų gana paprasta apskaičiuoti saulėtekio ir saulėlydžio laiką, kad ekranas būtų automatiškai pašviesintas ir pritemdytas, o ne rankiniu būdu. Galbūt būtų smagu pridėti ir interneto radijo funkciją. Slinkimo ekranas taip pat gali būti labiau sukonfigūruotas.