Sommario:

Un ritorno al futuro orologio: 8 passaggi (con immagini)
Un ritorno al futuro orologio: 8 passaggi (con immagini)

Video: Un ritorno al futuro orologio: 8 passaggi (con immagini)

Video: Un ritorno al futuro orologio: 8 passaggi (con immagini)
Video: RITORNO AL FUTURO - TUTORIAL - CLOCK TIME MACHINE - TuttaScena 2024, Dicembre
Anonim
Un ritorno al futuro orologio
Un ritorno al futuro orologio

Questo progetto è nato come sveglia per mio figlio. L'ho fatto sembrare il circuito temporale di Ritorno al futuro. Il display può mostrare l'ora in vari formati, compreso quello dei film ovviamente. È configurabile tramite i pulsanti sulla parte superiore dell'enclosure ma anche tramite una pagina web servita dal Raspberry Pi Zero all'interno. In una delle modalità di visualizzazione mostrerà il meteo locale (dalla mia stazione meteo alimentata da Arduino) così come le previsioni e gli eventuali promemoria giornalieri, configurati tramite l'interfaccia web. Ha anche l'audio grazie a un DAC e trasmetterà musica in streaming utilizzando il protocollo AirPlay. Il suono dell'allarme può essere qualsiasi file audio scelto. Oscurerà e illuminerà automaticamente il display in determinate ore del giorno (ad es. alba e tramonto).

Passaggio 1: sfondo

L'anno scorso stavo cercando un nuovo progetto Arduino avendo appena finito il mio primo in assoluto, una stazione meteorologica domestica. Mio figlio di 11 anni aveva appena visto i film di Ritorno al futuro per la prima volta, quindi ho pensato che sarebbe stato divertente costruirgli una sveglia che assomigliasse al circuito orario della Delorean per il suo compleanno. Questa non è un'idea nuova, ci sono molti progetti simili là fuori (questo per esempio), quindi ho pensato che sarebbe stato un bel progetto imparare dagli altri e acquisire nuove abilità.

La prima versione ha funzionato abbastanza bene (non era pronta per il suo compleanno: l'ho fatta per Natale) ma sono diventato piuttosto ambizioso in quello che volevo che facesse e ho scoperto che il mio sketch continuava a raggiungere il limite di memoria dell'Arduino. Avevo anche diversi piccoli moduli hardware esterni (WiFi, lettore MP3, amplificatore audio, RTC, ecc.), quindi tutto diventava un po' ingombrante. Alla fine, ho deciso di passare a una piattaforma Raspberry Pi che ha semplificato l'hardware e mi ha permesso di includere molte più funzionalità e caratteristiche.

Passaggio 2: componenti hardware principali

Dentro la scatola

Ecco i componenti elettronici che ho usato. La maggior parte di essi proveniva da Core Electronics in Australia, ma ovviamente sono facilmente disponibili anche altrove:

  • 4 display alfanumerici quadrupli -giallo-verde
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC per Raspberry Pi Zero
  • Amplificatore audio (PAM8403 IC)
  • Alimentatore Raspberry Pi 3+
  • 4 x cavo jumper - 0,1", 5 pin, 12"
  • Cavo a nastro a 40 pin (2 x 20)
  • Intestazione maschio GPIO Raspberry Pi
  • Raspberry Pi Modello B - Intestazione protetta GPIO (2X20)
  • GPIO Stacking Header per Pi A+/B+/PI 2/PI 3 - extra lungo 2X20
  • Intestazione maschio 4 x 5 pin
  • 2 piccoli altoparlanti da 3W
  • 2 x cavi coassiali per il collegamento audio analogico DAC ad Amp
  • Veraboard o PCB personalizzato per gestire Rpi su un amplificatore, LED, pulsanti
  • 5 x interruttori a pulsante momentanei
  • Morsettiere a vite montabili su circuito stampato 4 x 2 vie

La scatola

  • Pezzi e pezzi di MDF, viti e bulloni per realizzare il 'telaio'
  • Perspex colorato di verde, fornitore locale
  • Stirene, colla per modellare, vernice spray (colore alluminio) da un negozio di hobby locale
  • Adesivi (file disponibile su richiesta - stampato da Redbubble)

Passaggio 3: mettere tutto insieme

Mettere tutto insieme
Mettere tutto insieme

Il display a LED dell'orologio è composto da display alfanumerici 16x14 segmenti, fortunatamente lo stesso numero di caratteri del circuito orario di Ritorno al Futuro. Sebbene solo i primi tre caratteri debbano essere alfanumerici e il resto potrebbe essere display numerici a 7 segmenti per emulare il supporto del film, ho deciso di renderli tutti alfanumerici per consentire una certa flessibilità in ciò che potrebbe essere visualizzato e per mantenerli tutti alla ricerca del stesso. Gli zaini quadrupli Adafruit sono un'ottima soluzione qui e possono essere eseguiti sul bus I2C del Raspberry Pi. Ulteriori informazioni su queste unità e su come collegarle sono disponibili qui sul sito Web di Adafruit. L'unica cosa leggermente non standard che ho dovuto fare è stata cambiare gli indirizzi di tre di loro in modo che ogni zaino fosse unico.

Per riprodurre l'audio (in stereo), ho incluso il Pimoroni pHAT DAC e un amplificatore audio stereo 2 x 3W basato sul chip PAM8403. Il pHAT DAC è davvero facile da collegare al Pi. Ho inserito un'intestazione maschio a 2 x 20 pin sul Pi e un'intestazione di impilamento GPIO sul DAC in modo che possano essere collegati insieme uno sopra l'altro. I pin dell'intestazione maschio passano attraverso la parte superiore del DAC, permettendomi di far passare un cavo a nastro con connettori femmina, inizialmente a un breakout Raspberry Pi per il test della breadboard, ma alla fine a un'intestazione protetta su un PCB personalizzato.

Per l'amplificatore audio, ci sono molte opzioni (incluso solo ottenere il chip e assemblare il proprio). Questo ha la possibilità di disattivare l'uscita semplicemente cambiando lo stato di uno dei pin (alto è acceso, basso è spento) e l'ho collegato in modo che possa essere controllato dal Pi. Nei miei tentativi iniziali di collegarlo, ho scoperto un bel po' di rumore di fondo quando l'audio era attivo. Dopo aver giocato molto con la messa a terra, alla fine ho provato a spostare la tensione di alimentazione in ingresso dai 5 V del Pi a 3,3 V e questo l'ha risolto. Immagino che ci sia molto rumore generato dai vari segnali digitali che volano in giro, ma sembra che l'alimentazione a 3,3 V sia in qualche modo isolata.

Altre connessioni includono l'audio analogico dal DAC all'amplificatore (qui ho usato il cavo coassiale per aiutare a gestire la ripresa del rumore) e l'audio in uscita a una coppia di piccoli altoparlanti da 3 W che si inseriscono nella custodia. Ci sono anche connessioni GPIO per i quattro interruttori momentanei sulla parte superiore della scatola e ho collegato un pulsante momentaneo ai pin "RUN" di hard reset (vedi la sezione Collegamenti aggiuntivi in questa pagina). Il pulsante di ripristino è montato in modo invisibile sul retro della custodia. Ecco uno schema che mostra i collegamenti:

Passaggio 4: un PCB personalizzato

Un PCB personalizzato
Un PCB personalizzato

Sebbene non ci sia nulla di troppo complicato nel circuito, c'è un bel po' di cablaggio e una breadboard può sembrare degli spaghetti abbastanza rapidamente. Così ho progettato un PCB per tenere tutto sotto controllo. È una tavola monofacciale fatta in casa e ho un amico che mi ha aiutato a realizzarla. Dopo che è stato realizzato e cablato, mi sono reso conto di aver dimenticato di includere i collegamenti per le morsettiere per l'audio e in seguito ho apportato una modifica per spostare l'alimentazione dell'amplificatore audio da 5V a 3,3V, quindi non è l'ideale e ho dovuto virare alcuni Veroboard per consentire le connessioni audio. Inoltre, i pinout della scheda dell'amplificatore audio sono a una separazione non standard (variano anche tra i pin) quindi la connessione per questo al PCB principale è un po' orribile con 11 fili di connessione corti di ~ 1 cm.

Se facessi un'altra scheda, includerei tutte queste modifiche e cambierei anche il connettore per i quattro pulsanti con qualcosa di un po' più carino. Il DAC e il Pi si impilerebbero proprio sopra, quindi non è necessario alcun cavo a nastro. Il diagramma sopra mostra come potrebbe apparire.

Passaggio 5: il recinto

Il recinto
Il recinto
Il recinto
Il recinto
Il recinto
Il recinto

Volevo creare un recinto che assomigliasse a una riga del circuito temporale del film. Tre file di display a LED sarebbero state troppe per una sveglia e avrebbero aumentato notevolmente il costo. Ho pensato di realizzare l'involucro in alluminio, ma non ho alcuna competenza in quel settore. Ho realizzato diversi modelli in plastica nella mia vita e ho una certa esperienza nella lavorazione del legno, quindi ho deciso di creare una cornice utilizzando MDF per montare i LED e gli altoparlanti e fissare il perspex sul davanti, quindi coprirlo con uno stirene a 5 lati scatola con cornice frontale, verniciata con vernice spray metallizzata in alluminio. La plastica e la vernice sono state ottenute da un negozio di modellini locale. Ho dato un'occhiata da vicino alle etichette sul supporto del film e ho fatto del mio meglio per copiare i colori, il tipo di carattere e le dimensioni. Ho usato Photoshop per creare le etichette e le ho stampate come adesivi da Redbubble.

Le immagini sopra mostrano:

  1. La parte anteriore del telaio in MDF. I 4 zaini LED sono montati nella parte anteriore con perspex tinto di verde
  2. Dentro la scatola. Zaini tutti montati e allineati, Raspberry Pi e PCB personalizzati, altoparlanti su entrambi i lati.
  3. Cablaggio installato e guscio esterno pronto per l'uso. È stata un po' una stretta!

Passaggio 6: configurazione del Raspberry Pi

Ho avuto alcuni problemi di compatibilità con Raspbian Stretch (che potrebbero essere stati risolvibili se avessi insistito) ma Jessie funziona bene, quindi ho deciso di andare con quello.

Ho impostato il Pi come unità headless con accesso VNC e SSH. Questo avrebbe potuto essere fatto senza mai collegare una tastiera o un monitor, ma ho appena preso in prestito la TV e ho scroccato una tastiera, e l'ho fatto andare senza testa abbastanza rapidamente. Da quel momento in poi, ho praticamente usato VNC da quel momento in poi.

Il mio codice orologio utilizza Python 2.7.9 e si basa su alcune librerie, elencate di seguito. Oltre a questo, sto eseguendo un server web Flask e MQTT per il controllo remoto e Shairplay per lo streaming musicale. Ho appena seguito le note di installazione in linea per tutti questi e non ho avuto problemi. Ecco le librerie Python e altri pacchetti ecc. che dovevo installare con i collegamenti alle note di installazione o solo il comando che devi eseguire per ottenerlo:

Librerie Python

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

Altri pacchetti ecc

  • zanzara (apt-get install zanzara)
  • porta della porta
  • Il sito web di Pimoroni ha una buona documentazione sulla configurazione del DAC, quindi ho appena eseguito con quella.

Passaggio 7: software

Image
Image
Software
Software

Il codice dell'orologio è stato scritto in Python e utilizza il threading per riprodurre l'allarme e i bip occasionali in background senza bloccare gli aggiornamenti del display. Ho usato la libreria ConfigParser e il file di configurazione che mantiene viene letto e scritto dal codice dell'orologio e dall'app Web Flask in modo che ogni volta che la configurazione viene modificata tramite l'interfaccia Web o l'orologio, viene sincronizzata. Il software dell'orologio include anche un broker MQTT per consentire il controllo remoto della modalità di visualizzazione e del muting. Il mio secondo fine è quello di scrivere un'app iOS per il telecomando, ma per ora l'interfaccia web funziona abbastanza bene.

La prima immagine sopra mostra come appare l'orologio nelle sue varie modalità di visualizzazione e c'è un breve video che lo mostra in modalità di scorrimento.

Anche se il codice non è bello da vedere, è bello e stabile. Sono felice di inviarlo a chiunque lo richieda e lo metterò online quando sarà meglio organizzato e commentato.

L'app Web

L'immagine successiva mostra come appare l'interfaccia web dell'orologio. Ci sono anche pagine di configurazione e di controllo e queste rendono molto più facile giocare con l'orologio senza dover schiacciare troppo i pulsanti:-).

Passaggio 8: cosa succederà?

Che cosa dopo?
Che cosa dopo?

È disponibile un decodificatore di metadati shareport Python, quindi penso che aggiungerò del codice per visualizzare informazioni come titolo e artista quando viene riprodotta la musica. Sarebbe anche abbastanza facile calcolare gli orari di alba e tramonto in modo che il display possa essere automaticamente illuminato e oscurato, piuttosto che impostarlo manualmente. Forse anche l'aggiunta di una funzione di radio Internet sarebbe divertente. Il display a scorrimento potrebbe anche essere più configurabile.

Consigliato: