Sisällysluettelo:

A Takaisin tulevaisuuden kelloon: 8 vaihetta (kuvilla)
A Takaisin tulevaisuuden kelloon: 8 vaihetta (kuvilla)

Video: A Takaisin tulevaisuuden kelloon: 8 vaihetta (kuvilla)

Video: A Takaisin tulevaisuuden kelloon: 8 vaihetta (kuvilla)
Video: Lonely (short version) 2024, Heinäkuu
Anonim
A Takaisin tulevaisuuden kelloon
A Takaisin tulevaisuuden kelloon

Tämä projekti aloitti elämän poikani herätyskellona. Sain sen näyttämään aikapiiriltä Takaisin tulevaisuuteen. Näyttö voi näyttää ajan eri muodoissa, tietysti myös elokuvista. Se on konfiguroitavissa kotelon yläosassa olevilla painikkeilla, mutta myös Raspberry Pi Zeron tarjoaman verkkosivun kautta. Yhdessä näyttötilasta se näyttää paikallisen sään (Arduinolla toimivasta sääasemastani) sekä ennusteen ja mahdolliset päivittäiset muistutukset, jotka on määritetty verkkokäyttöliittymän kautta. Siinä on myös ääni DAC: n ansiosta ja se suoratoistaa musiikkia AirPlay -protokollan avulla. Hälytysääni voi olla mikä tahansa valitsemasi äänitiedosto. Se himmentää ja kirkastaa näytön automaattisesti tiettyinä kellonaikoina (esim. Aamunkoitteessa ja hämärässä).

Vaihe 1: Taustaa

Viime vuonna etsin uutta Arduino -projektia, kun olin juuri saanut päätökseen ensimmäisen projektini, kotisääaseman. 11-vuotias poikani oli juuri katsonut Takaisin tulevaisuuteen -elokuvia ensimmäistä kertaa, joten ajattelin, että olisi hauskaa rakentaa hänelle herätyskello, joka näytti Deloreanin aikapiiriltä hänen syntymäpäivänään. Tämä ei ole uusi idea, vastaavia projekteja on olemassa melko paljon (esimerkiksi tämä), joten ajattelin, että se olisi mukava projekti oppia muilta ja hankkia uusia taitoja.

Ensimmäinen versio toimi varsin hyvin (se ei ollut valmis hänen syntymäpäivänään: sain sen valmiiksi jouluun mennessä), mutta sain melko kunnianhimoisen sen, mitä halusin tehdä, ja huomasin, että luonnokseni juoksi jatkuvasti Arduinon muistin rajaan. Minulla oli myös useita pieniä ulkoisia laitteistomoduuleja (WiFi, MP3 -soitin, äänivahvistin, RTC jne.), Joten kaikki muuttui hieman hankalaksi. Lopulta päätin siirtyä Raspberry Pi -alustalle, joka yksinkertaisti laitteistoa ja antoi minulle mahdollisuuden pakata paljon enemmän toimintoja ja ominaisuuksia.

Vaihe 2: Laitteiston pääkomponentit

Laatikon sisällä

Tässä ovat käyttämäni elektroniset komponentit. Suurin osa niistä oli peräisin Australian Core Electronicsilta, mutta tietysti ne ovat helposti saatavilla myös muualla:

  • 4 x nelinumeroinen aakkosnumeerinen näyttö -keltainen -vihreä
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC Raspberry Pi Zerolle
  • Äänivahvistin (PAM8403 IC)
  • Raspberry Pi 3+ virtalähde
  • 4 x hyppyjohto - 0,1 ", 5 -napainen, 12"
  • 40 -nastainen (2 x 20) nauhakaapeli
  • Raspberry Pi GPIO urosotsikko
  • Raspberry Pi Malli B - GPIO -koteloitu otsikko (2X20)
  • GPIO -pinoamispiiri piille A+/B+/PI 2/PI 3 - erittäin pitkä 2X20
  • 4 x 5 -nastainen urosliitin
  • 2 pientä 3 W kaiutinta
  • 2 x koaksiaalikaapelia analogiseen ääniliitäntään DAC vahvistimeen
  • Veraboard tai mukautettu piirilevy Rpi: n käsittelemiseksi vahvistimelle, LEDille, painikkeille
  • 5 x hetkellinen painikekytkin
  • 4 x 2-tie PCB-kiinnitettävät ruuviliittimet

Laatikko

  • Palaset MDF -levyä, ruuvit ja pultit '' kotelon '' valmistamiseksi
  • Vihreä sävytetty perspex, paikallinen toimittaja
  • Styreeni, malliliima, ruiskumaali (alumiiniväri) paikallisesta harrastekaupasta
  • Tarrat (tiedosto saatavilla pyynnöstä - Redbubble -tulostus)

Vaihe 3: Yhdistä kaikki

Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen

Kellon LED-näyttö koostuu 16x14-segmenttisistä aakkosnumeerisista näytöistä, onneksi sama määrä merkkejä kuin Back to the Future -aikapiiri. Vaikka vain kolme ensimmäistä merkkiä on oltava aakkosnumeerisia ja loput voivat olla 7-segmenttisiä numeerisia näyttöjä elokuvaesityksen jäljittelemiseksi, päätin tehdä ne kaikki aakkosnumeerisiksi, jotta näytettävyys olisi joustavaa ja jotta ne kaikki näyttäisivät sama. Adafruit-nelireput ovat loistava ratkaisu, ja niitä voidaan käyttää Raspberry Pi: n I2C-bussilla. Lisätietoja näistä yksiköistä ja niiden kytkemisestä löydät täältä Adafruit -verkkosivustolta. Ainoa hieman epätyypillinen asia, joka minun piti tehdä, oli muuttaa kolmen osoitteen osoitteita, jotta jokainen reppu oli ainutlaatuinen.

Äänen toistamiseksi (stereona) otin mukaan Pimoroni pHAT DAC: n ja 2 x 3 W: n stereoäänivahvistimen, joka perustuu PAM8403 -siruun. PHAT DAC on todella helppo liittää Pi: hen. Laitoin 2 x 20 -nastaisen uros -otsikon Pi: hen ja GPIO -pinoamisotsikon DAC: iin, jotta ne voidaan kytkeä yhteen toistensa päälle. Urosliittimen nastat kulkevat DAC: n yläosan läpi, jolloin voin ajaa nauhakaapelin naarasliittimillä, aluksi Raspberry Pi -katkaisuun leipälevyn testausta varten, mutta lopulta räätälöidyn piirilevyn koteloituun otsikkoon.

Äänivahvistimelle on paljon vaihtoehtoja (mukaan lukien pelkkä sirun hankkiminen ja oman kokoaminen). Tällä on mahdollisuus mykistää ulostulo muuttamalla vain yhden nastojen tilaa (korkea on päällä, matala on pois päältä) ja kytkin sen siihen, jotta tätä voitaisiin ohjata Pi: stä. Aluksi yrittäessäni liittää tämän, huomasin melko paljon taustamelua, kun ääni oli päällä. Paljon leikkimistä maadoituksen jälkeen yritin lopulta siirtää syöttöjännitteen Pi: n 5 V: sta 3,3 V: iin ja se korjasi sen. Luulen, että erilaiset lentävät digitaaliset signaalit tuottavat melko paljon melua, mutta näyttää siltä, että 3,3 V: n syöttö on jotenkin eristetty.

Muita liitäntöjä ovat analoginen ääni DAC: sta vahvistimeen (käytin tässä koaksiaalikaapelia kohinanpoiston hallintaan) ja äänen lähettäminen pariin pieniä 3 W: n kaiuttimia, jotka sopivat koteloon. Laatikon yläosassa on myös GPIO -liitännät neljälle hetkelliselle kytkimelle, ja kytkin hetken painikkeen RUN -nollausnastat (katso tämän sivun Lisäliitännät -osio). Palautuspainike on asennettu pois näkyvistä kotelon takaosaan. Tässä on kaavio, joka näyttää liitännät:

Vaihe 4: Mukautettu piirilevy

Mukautettu piirilevy
Mukautettu piirilevy

Vaikka piirissä ei ole mitään liian monimutkaista, johdotusta on melko vähän ja leipälauta voi näyttää spagetilta melko nopeasti. Joten suunnittelin piirilevyn pitämään kaiken hallinnassa. Se on kotitekoinen yksipuolinen lauta ja sain ystävän auttamaan sen tekemisessä. Kun se oli tehty ja kytketty, tajusin unohtaneeni liittää liitännät ääniliitäntöihin ja tein myöhemmin muutoksen siirtääksesi äänivahvistimen virran 5 V: sta 3,3 V: iin, joten se ei ole ihanteellinen ja minun piti jatkaa jotkin veroboardit sallivat ääniliitännät. Myös äänivahvistinkortin liittimet ovat epätavallisella etäisyydellä (ne vaihtelevat jopa nastojen välillä), joten liitäntä pääpiirilevyyn on hieman kamala 11 lyhyellä ~ 1 cm: n liitäntäjohdolla.

Jos tekisin toisen levyn, sisällyttäisin kaikki nämä muutokset ja vaihdaisin myös neljän painikkeen liittimen johonkin hieman mukavampaan. DAC ja Pi pinotaan suoraan päälle, joten nauhakaapelia ei tarvita. Yllä oleva kaavio näyttää, miltä se saattaa näyttää.

Vaihe 5: Kotelo

Kotelo
Kotelo
Kotelo
Kotelo
Kotelo
Kotelo

Halusin tehdä kotelon, joka näytti elokuvan aikapiirin yhdeltä riviltä. Kolme riviä LED -näyttöjä olisi ollut liikaa herätyskellolle ja lisäisi merkittävästi kustannuksia. Ajattelin tehdä kotelon alumiinista, mutta minulla ei ole mitään taitoja tällä alalla. Olen kuitenkin tehnyt melko paljon muovimalleja elämässäni ja minulla on jonkin verran kokemusta puuntyöstöstä, joten päätin tehdä MDF-kehyksen LED-valojen ja kaiuttimien kiinnittämiseksi ja kiinnittää perspexin eteen ja peittää sen sitten 5-puolisella styreenillä laatikko, jonka etupuolella on kehys, maalattu alumiinisella metalliruiskumaalilla. Muovi ja maali hankittiin paikallisesta mallikaupasta. Katsoin tarkasti elokuvan tarran tarroja ja yritin parhaani mukaan kopioida värit, kirjasintyypin ja koon. Rakensin tarrat Photoshopilla ja tulostin ne tarroina Redbubblelta.

Yllä olevat kuvat osoittavat:

  1. MDF -alustan etuosa. 4 LED-reppua on asennettu eteen vihreän sävyisellä perspexillä
  2. Laatikon sisällä. Reput kaikki asennettuina ja rivissä, Raspberry Pi ja mukautettu piirilevy sisään, kaiuttimet kummallakin puolella.
  3. Johdot asennettu ja ulkokuori valmiina jatkoon. Se oli vähän puristusta!

Vaihe 6: Määritä Raspberry Pi

Minulla oli joitain yhteensopivuusongelmia Raspbian Stretchin kanssa (mikä olisi voinut olla ratkaistavissa, jos olisin jatkanut), mutta Jessie toimii sen kanssa hienosti, joten päätin mennä sen kanssa.

Asensin Pi: n päättömäksi yksiköksi, jossa on VNC- ja SSH -yhteys. Tämä olisi voitu tehdä kytkemättä koskaan näppäimistöä tai näyttöä, mutta lainasin juuri television ja huusin näppäimistöä ja sain sen toimimaan melko nopeasti. Siitä lähtien olen melko paljon käyttänyt VNC: tä siitä lähtien.

Kellokoodini käyttää Python 2.7.9 -versiota ja perustuu useisiin alla lueteltuihin kirjastoihin. Tämän lisäksi minulla on käytössä pulloverkkopalvelin ja MQTT kaukosäätimelle ja Shairplay musiikin suoratoistolle. Seurasin vain online-asennusohjeita kaikkien näiden suhteen, eikä minulla ollut mitään ongelmia. Tässä ovat python -kirjastot ja muut paketit jne., Jotka minun oli asennettava linkkeillä asennusmuistiinpanoihin tai vain komennolla, joka sinun on suoritettava sen saamiseksi:

Python -kirjastot

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

Muut paketit yms

  • hyttynen (apt-get install mosquito)
  • shairport
  • Pimoronin verkkosivustolla on hyviä asiakirjoja DAC: n määrittämisestä, joten suoritin sen.

Vaihe 7: Ohjelmisto

Image
Image
Ohjelmisto
Ohjelmisto

Kellokoodi on kirjoitettu Python -kielellä, ja se käyttää langatusta hälytyksen toistamiseen ja satunnaisia äänimerkkejä taustalla estämättä näytön päivityksiä. Käytin ConfigParser -kirjastoa ja sen ylläpitämä määritystiedosto lukee ja kirjoittaa kellokoodilla sekä Flask -verkkosovelluksella, jotta se synkronoidaan aina, kun kokoonpanoa muutetaan verkkokäyttöliittymän tai kellon kautta. Kello -ohjelmistoon kuuluu myös MQTT -välittäjä, joka mahdollistaa näyttötilan ohjauksen ja mykistyksen etäohjauksen. Viimeinen motiivini on lopulta kirjoittaa iOS -sovellus kaukosäätimelle, mutta verkkokäyttöliittymä toimii toistaiseksi riittävän hyvin.

Yllä oleva ensimmäinen kuva näyttää miltä kello näyttää eri näyttötiloissaan, ja siellä on lyhyt video, joka näyttää sen vieritystilassa.

Vaikka koodi ei ole kaunis katsomaan, se on mukava ja vakaa. Lähetän sen mielelläni kenelle tahansa, joka sitä pyytää, ja laitan sen verkkoon, kun se on paremmin järjestetty ja kommentoitu.

Web -sovellus

Seuraava kuva näyttää, miltä kellon web -käyttöliittymä näyttää. On myös konfigurointi- ja ohjaussivuja, jotka helpottavat kellon pelaamista ilman paljon painikkeiden murskaamista:-).

Vaihe 8: Mitä seuraavaksi?

Mitä seuraavaksi?
Mitä seuraavaksi?

Saatavilla on Python shareport -metatietojen dekooderi, joten luulen, että lisään koodin näyttämään tietoja, kuten nimikkeen ja esittäjän musiikkia toistettaessa. Olisi myös melko helppoa laskea auringonnousun ja -laskun ajat niin, että näyttöä voidaan kirkastaa ja himmentää automaattisesti sen sijaan, että asetettaisiin se manuaalisesti. Ehkä Internet -radio -ominaisuuden lisääminen olisi myös hauskaa. Vieritysnäyttö voi olla myös konfiguroitavampi.

Suositeltava: