Taula de continguts:

Un rellotge de tornada al futur: 8 passos (amb imatges)
Un rellotge de tornada al futur: 8 passos (amb imatges)

Vídeo: Un rellotge de tornada al futur: 8 passos (amb imatges)

Vídeo: Un rellotge de tornada al futur: 8 passos (amb imatges)
Vídeo: ТАЙМЛАПС БУДУЩЕГО: Путешествие к концу времени (4K) 2024, Desembre
Anonim
Un rellotge de tornada al futur
Un rellotge de tornada al futur

Aquest projecte va començar la vida com un despertador per al meu fill. Vaig arribar a semblar el circuit temporal de Retorn al futur. La pantalla pot mostrar l'hora en diversos formats, inclòs el de les pel·lícules, per descomptat. Es pot configurar a través dels botons situats a la part superior del recinte, però també a través d’una pàgina web servida per Raspberry Pi Zero a l’interior. En un dels modes de visualització mostrarà el temps local (des de la meva estació meteorològica alimentada per Arduino), així com la previsió i qualsevol recordatori diari, configurat a través de la interfície web. També té àudio gràcies a un DAC i emetrà música mitjançant el protocol AirPlay. El so de l'alarma pot ser qualsevol fitxer d'àudio que trieu. Atenuarà i il·luminarà la pantalla automàticament en determinades hores del dia (per exemple, a l'alba i al vespre).

Pas 1: antecedents

L’any passat estava buscant un nou projecte Arduino que acabava d’acabar el primer, una estació meteorològica domèstica. El meu fill, d’onze anys, acabava de veure per primera vegada les pel·lícules Tornar al futur, així que vaig pensar que seria divertit construir-li un despertador que s’assemblés al circuit horari del Delorean per al seu aniversari. Aquesta no és una idea nova, hi ha bastants projectes similars (aquest per exemple), així que vaig pensar que seria un bon projecte aprendre dels altres i agafar noves habilitats.

La primera versió va funcionar bastant bé (no estava preparada per al seu aniversari: ho vaig fer per Nadal), però em vaig tornar bastant ambiciós en el que volia que fes i vaig trobar que el meu esbós seguia corrent fins al límit de memòria de l'Arduino. També tenia diversos mòduls de maquinari extern petits (WiFi, reproductor de MP3, amplificador d'àudio, RTC, etc.), de manera que tot resultava una mica difícil de manejar. Al final, vaig decidir passar a una plataforma Raspberry Pi que simplificava el maquinari i em permetia empaquetar moltes més funcions i funcions.

Pas 2: components principals del maquinari

Dins de la caixa

Aquests són els components electrònics que he utilitzat. La majoria eren fonts de Core Electronics a Austràlia, però, per descomptat, també estan disponibles a qualsevol altre lloc:

  • 4 x Quad Display alfanumèric -groc-verd
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC per a Raspberry Pi Zero
  • Amplificador d'àudio (IC PAM8403)
  • Font d'alimentació Raspberry Pi 3+
  • 4 cables de pont: 0,1 ", 5 pins, 12"
  • Cable de cinta de 40 pins (2 x 20)
  • Capçalera masculina Raspberry Pi GPIO
  • Raspberry Pi Model B: capçalera recoberta GPIO (2X20)
  • Capçalera apilable GPIO per a Pi A + / B + / PI 2 / PI 3: 2X20 extrallarg
  • Capçalera masculina de 4 x 5 pins
  • 2 altaveus petits de 3W
  • 2 x cables coaxials per a connexió d'àudio analògica DAC a Amp
  • Veraboard o PCB personalitzat per gestionar Rpi a un amplificador, LED, botons
  • 5 interruptors de botó momentanis
  • 4 x borns de cargol muntables en PCB de 2 vies

La Caixa

  • Peces i peces de MDF, cargols i cargols per fer el "xassís"
  • Pèrpex tintat de verd, proveïdor local
  • Estirè, cola per modelar, pintura en aerosol (color alumini) d’una botiga d’aficionats local
  • Adhesius (fitxer disponible a petició - imprès per Redbubble)

Pas 3: ajuntar-ho tot

Posant-ho tot junt
Posant-ho tot junt

La pantalla LED del rellotge consta de pantalles alfanumèriques de 16 x 14 segments, per sort, el mateix nombre de caràcters que el circuit de temps Tornar al futur. Tot i que només els tres primers caràcters han de ser alfanumèrics i la resta podrien ser pantalles numèriques de 7 segments per emular l’atrezzo de la pel·lícula, vaig decidir fer-los tots alfanumèrics per permetre una mica de flexibilitat en allò que es podria mostrar i per mantenir-los tots mateix. Les motxilles quad Adafruit són una gran solució aquí i es poden executar al bus I2C del Raspberry Pi. Podeu trobar més informació sobre aquestes unitats i com connectar-les aquí al lloc web d’Adafruit. L'única cosa poc normalitzada que he de fer és canviar les adreces de tres d'elles perquè cada motxilla sigui única.

Per reproduir àudio (en estèreo), he inclòs el PIMORONI pHAT DAC i un amplificador d’àudio estèreo de 2 x 3W basat en el xip PAM8403. El pHAT DAC és molt fàcil de connectar al Pi. Vaig posar una capçalera masculina de 2 x 20 pins al Pi i una capçalera d’apilament GPIO al DAC perquè es poguessin connectar una sobre l’altra. Els passadors de capçalera masculins passen per la part superior del DAC, cosa que em permet executar un cable de cinta amb connectors femella, inicialment a un brot de Raspberry Pi per a la prova de taulers de pa, però finalment a una capçalera embolicada en un PCB fet a mida.

Per a l’amplificador d’àudio, hi ha un munt d’opcions (incloent només obtenir el xip i muntar el vostre). Aquest té l’opció de silenciar la sortida només canviant l’estat d’un dels pins (l’alt està activat, el baix està apagat) i el vaig connectar perquè es pogués controlar des del Pi. En els meus primers intents de connectar-ho, vaig descobrir força soroll de fons quan l’àudio estava encès. Després de jugar molt a la terra, finalment vaig provar de moure la tensió d’alimentació d’entrada del 5V del Pi a 3,3V i això va solucionar-ho. Suposo que hi ha força soroll generat pels diversos senyals digitals que volen, però sembla que el subministrament de 3,3 V està d'alguna manera aïllat.

Altres connexions inclouen l'àudio analògic del DAC a l'amplificador (he utilitzat un cable coaxial aquí per ajudar a gestionar la captació de soroll) i la sortida d'àudio a un parell de petits altaveus de 3W que caben al recinte. També hi ha connexions GPIO per als quatre commutadors momentanis a la part superior de la caixa i he connectat un botó momentani als pins "RUN" de restabliment complet (vegeu la secció de connexions addicionals en aquesta pàgina). El botó de reinici es munta fora de la vista a la part posterior del recinte. Aquí teniu un diagrama que mostra les connexions:

Pas 4: un PCB personalitzat

Un PCB personalitzat
Un PCB personalitzat

Tot i que no hi ha res massa complicat en el circuit, hi ha força cablejat i una placa de paret pot semblar espaguetis amb força rapidesa. Així que vaig dissenyar un PCB per controlar-ho tot. És un tauler d’una sola fàbrica casolà i tinc un amic que m’ajudarà a fer-lo. Després de fer-ho i connectar-me, em vaig adonar que havia oblidat d’incloure connexions per als blocs de terminals per a l’àudio i que després vaig fer un canvi per canviar el subministrament de l’ampli d’àudio de 5V a 3,3V, de manera que no és l’ideal i vaig haver d’afegir alguns Veroboard per permetre les connexions d'àudio. A més, els pinouts de la placa d’amplificadors d’àudio es troben a una separació no estàndard (fins i tot varien entre els pins), de manera que la connexió amb la placa principal és una mica horrible amb 11 cables de connexió curts de ~ 1cm.

Si fes una altra placa, inclouria totes aquestes modificacions i també canviaria el connector dels quatre botons per una mica més agradable. El DAC i el Pi s’apilarien a la part superior, de manera que no es necessita cap cable de cinta. El diagrama anterior mostra com podria quedar.

Pas 5: el recinte

El recinte
El recinte
El recinte
El recinte
El recinte
El recinte

Volia fer un recinte que semblés una fila del circuit horari de la pel·lícula. Tres files de pantalles LED haurien estat massa per a un despertador i s'haurien afegit significativament al cost. Vaig pensar a fer el recinte amb alumini, però no tinc cap habilitat en aquesta zona. Tanmateix, he fet bastants models de plàstic a la meva vida i he tingut una mica d’experiència en treballar la fusta, així que vaig decidir fer un marc amb MDF per muntar els LEDs i els altaveus i fixar el pèl en la part frontal, i després cobrir-lo amb un estirè de 5 cares caixa amb un bisell a la part frontal, pintada amb una pintura en aerosol metàl·lica d'alumini. El plàstic i la pintura es van obtenir en una botiga de maquetes local. Vaig mirar de prop les etiquetes de l’atrezzo de la pel·lícula i vaig fer tot el possible per copiar els colors, el tipus de lletra i la mida. Vaig utilitzar Photoshop per crear les etiquetes i les vaig imprimir com a adhesius de Redbubble.

Les imatges anteriors mostren:

  1. La part frontal del xassís MDF. Les 4 motxilles LED es munten a la part frontal amb pèl de teixit verd
  2. Dins de la caixa. Motxilles muntades i alineades, Raspberry Pi i PCB personalitzats, altaveus a banda i banda.
  3. Instal·lat el cablejat i la carcassa externa a punt per continuar. Va ser una mica estreta!

Pas 6: Configuració del Raspberry Pi

Vaig tenir alguns problemes de compatibilitat amb Raspbian Stretch (que podrien haver estat solucionables si persistís), però Jessie hi funciona bé, així que vaig decidir seguir-ho.

Vaig configurar el Pi com una unitat sense cap amb accés VNC i SSH. Això es podria haver fet sense endollar mai cap teclat o monitor, però només vaig agafar prestat el televisor, vaig escorcollar un teclat i el vaig aconseguir sense cap força ràpidament. A partir de llavors, vaig utilitzar pràcticament VNC a partir de llavors.

El meu codi de rellotge utilitza Python 2.7.9 i depèn de moltes biblioteques, que es detallen a continuació. A més d'això, estic executant un servidor web Flask i MQTT per al control remot i Shairplay per a la transmissió de música. Acabo de seguir les notes d’instal·lació en línia de tot això i no he tingut cap problema. Aquí teniu les biblioteques de Python i altres paquets, que necessitava instal·lar amb enllaços a notes d’instal·lació o només l’ordre que heu d’executar per obtenir-lo:

Biblioteques Python

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

Altres paquets, etc

  • mosquit (apt-get install mosquito)
  • shairport
  • El lloc web de Pimoroni té una bona documentació sobre la configuració del DAC, de manera que acabo de publicar-ho.

Pas 7: programari

Image
Image
Programari
Programari

El codi del rellotge es va escriure en Python i utilitza el fil per reproduir l'alarma i fer sonar ocasionalment al fons sense bloquejar les actualitzacions de la pantalla. He utilitzat la biblioteca ConfigParser i el fitxer de configuració que manté es llegeix i escriu amb el codi de rellotge, així com amb l’aplicació web Flask, de manera que cada vegada que es modifica la configuració mitjançant la interfície web o el rellotge, es sincronitza. El programari de rellotge també inclou un broker MQTT que permet controlar el control del mode de visualització i el silenciat a distància. El meu darrer motiu és, finalment, escriure una aplicació iOS per al control remot, però la interfície web funciona prou bé per ara.

La primera imatge superior mostra l’aspecte del rellotge en els seus diferents modes de visualització i hi ha un petit vídeo que el mostra en mode de desplaçament.

Tot i que el codi no és bonic de mirar, és agradable i estable. Estic encantat d’enviar-lo a qualsevol persona que ho sol·liciti i el posaré en línia quan estigui millor organitzat i comentat.

L’aplicació web

La següent imatge mostra l'aspecte de la interfície web del rellotge. També hi ha pàgines de configuració i control, que faciliten el joc amb el rellotge sense fer massa botons:-).

Pas 8: Què passa després?

Què segueix?
Què segueix?

Hi ha un descodificador de metadades de shareport de Python disponible, així que crec que afegiré algun codi per mostrar informació com el títol i l'artista quan es reprodueixi música. També seria bastant fàcil calcular els temps de sortida i posta de sol de manera que la pantalla es pugui il·luminar i enfosquir automàticament en lloc de configurar-la manualment. Potser també seria divertit afegir una funció de ràdio per Internet. La pantalla de desplaçament també pot ser més configurable.

Recomanat: