Dopo aver ricevuto un paio di schede Arduinoe vari componenti radio per conoscere i microcontrollori, l'autore ha deciso di fare qualcosa di interessante e allo stesso tempo utile. Avendo in stock un gran numero di LED, è nata l'idea di creare un orologio binario.
Sul lato elettronico, un orologio binario non è particolarmente complicato, ma l'autore ha complicato il compito e ha deciso di non salvare pulsanti e LED. Inizialmente, il progetto doveva utilizzare 22 LED, 6 pulsanti e un tweeter. C'è stata anche l'idea di assemblare un orologio sull'Arduino Mega a causa di un maggior numero di pin, ma i registri del cambio 74HC595 si sono rivelati una salvezza.
materiali:
- Arduino Uno
- 2 breadboard di dimensioni standard
- LED rossi 7 pezzi
- LED verdi 7 pezzi
- LED blu 6 pezzi
- 2 LED gialli e bianchi
- Resistori 220 ohm 25 pezzi
- Cicalino piezoelettrico 1 pz
- 6 pulsanti pulsanti tattili
- Registri di uscita Shift 74HC595 in confezione DIP-16 3 pezzi
- Cavi di collegamento 90 pezzi
- Modulo orologio in tempo reale basato sul chip RTC DS1307
Come funzionerà tutto.
Esistono circa 10 tipi di orologi binari. Alcuni mostrano il tempo in formato binario decimale (BCD), altri come numeri binari. Dato che all'autore non piace particolarmente l'orologio BCD, ha deciso di creare il suo binario puro. Alcune persone trovano più difficile leggere, ma la differenza non è grande, perché tradurre i numeri da binario a decimale è facile. Anche un prerequisito per il creatore dell'orologio era un'indicazione dei secondi sull'orologio.
Inoltre, l'orologio ha 6 pulsanti:
Set: è responsabile della modalità di impostazione dell'orologio / sveglia e del salvataggio del parametro nella modalità di impostazione.
Modalità: responsabile del passaggio tra le modalità orologio, sveglia e timer.
Su - nell'impostazione orologio / sveglia / timer, aumenta il parametro di uno. Nella sveglia e nel timer, è responsabile dell'attivazione e della disattivazione della modalità selezionata. Quando viene attivato un segnale, questo disattiverà il segnale di allarme / timer.
Giù: nell'impostazione orologio / sveglia / timer, il parametro diminuirà di uno. Il timer lo metterà in pausa senza ripristinare il conto alla rovescia. Quando la sveglia suona, trasferirà il segnale per 5 minuti.
24/12 - cambia il formato dell'ora.
Dim - responsabile dell'accensione e dello spegnimento dei LED (quando i LED sono spenti, i pulsanti rimanenti smettono di funzionare).
Diagramma di posizionamento LED:
Connessione componente
L'autore collegherà tutti i LED in serie e con una resistenza. Il resistore è saldato a uno dei terminali dei LED, non importa quale. I LED saranno collegati tramite i registri a scorrimento, questo chip ha 16 contatti.Questo numero di pin consente di utilizzare un gran numero di pin, prendendo solo 3 pin su Arduino.
Registro dei turni Pinout 74HC595:
Q0-Q7 sono i risultati del registro a cui saranno collegati i LED.
Vcc: verrà applicato un pin di alimentazione 5V.
GND - terra collegata a GND su Arduino.
OE: il pin è responsabile dell'attivazione invertita dei pin, ma non verrà utilizzato, verrà semplicemente messo in corto circuito a terra.
MR è una cancellazione del registro invertita, non ha bisogno di essere controllata, quindi sarà collegata a un alimentatore a 5V.
ST_CP - il pin è responsabile dell'aggiornamento dello stato del registro. Quando si registra lo stato, è necessario applicare LOW ad esso, dopo la registrazione - HIGH, per aggiornare lo stato delle uscite. Deve essere collegato a un pin su Arduino. È possibile collegare questo pin in tre registri in parallelo.
SH_CP - pin, responsabile dello spostamento di 1 bit del registro. Deve essere collegato a un pin su Arduino. Sono collegati su microcircuiti anche in parallelo.
DS: i dati vengono inviati a questo pin, è collegato al pin su Arduino.
Q7 ': questo pin viene utilizzato per il collegamento in cascata con altri registri 74HC595.
Schema elettrico:
Il cicalino piezoelettrico verrà collegato al terzo pin Arduino in serie con il resistore. Prima di includere il tweeter nel circuito, l'autore ha esaminato quali pin supportano PWM, poiché questo è obbligatorio per lei. Su Arduino Uno, PWM supporta 3, 5, 6, 9, 10 e 11 pin.
I pulsanti sono collegati tramite resistori integrati in Arduino, con un lato dei pulsanti collegato a terra e l'altro ai pin di Arduino.
Quindi, il design finale sembra:
Costruire su breadboard
Dopo aver acquisito ulteriori dettagli, l'autore ha iniziato a montare il progetto su una breadboard secondo gli schemi. L'aspetto era prevedibile, perché Breadboard limita la libertà nel posizionamento dei componenti e attaccare i fili non ha creato piacere estetico. Ma dopotutto la breadboard è destinata ai modelli breadboard, ma non ai dispositivi finiti.
Codice del programma.
Avendo una buona esperienza nella programmazione, l'autore ha deciso di scrivere codice da solo, senza utilizzare gli sviluppi di altre persone. Il primo passo è stato scrivere una subroutine, è responsabile del lampeggiamento di tutti i diodi e della trasmissione del segnale piezoelettrico all'accensione. Questa funzione aiuta a verificare l'integrità del circuito, simile a quella implementata su molti dispositivi.
Lo schizzo è uscito abbastanza grande, quindi puoi considerare le sue caratteristiche principali.
Lavoro a LED.
Poiché i LED sono accessibili tramite il registro a scorrimento, innanzitutto, è stato necessario implementare più routine per i LED. Per un funzionamento più semplice con i diodi, sono state implementate una serie di funzioni aggiuntive. Sono stati implementati vari effetti di animazione dei diodi. Quando l'orologio non è impostato, i diodi responsabili delle ore e dei minuti inizieranno a lampeggiare (poiché un normale orologio lampeggia quando non è impostato). I LED responsabili dei secondi hanno anche una propria animazione, il diodo può funzionare a destra e sinistra in modalità sveglia o in modalità impostazione dell'orologio.
Anello principale.
Il programma è configurato per funzionare come segue: l'orologio visualizza le informazioni in base allo stato corrente e cambia il suo stato in base all'uso di pulsanti ed eventi. Sembra tutto un numero considerevole di condizioni nidificate. Lo stato dei diodi viene aggiornato ogni volta dopo aver verificato lo stato di timer e pulsanti con una chiamata al loro gestore.
Inoltre, l'autore ha fatto un ottimo lavoro per il corretto funzionamento dei pulsanti di input e dei timer. Il codice sorgente dello schizzo può essere scaricato sotto l'articolo.
Avvia layout
Dopo aver avviato il progetto, a prima vista, il dispositivo ha funzionato correttamente e in modo stabile. Ma l'autore ha trovato un difetto, l'orologio era indietro di un secondo all'ora, per lungo tempo sarebbe stato un grosso errore.
Dopo aver studiato questo problema, è stato scoperto che l'originale Arduino Uno utilizza un risuonatore ceramico e manca di precisione per misurare il tempo in lunghi periodi. La soluzione più razionale è stata quella di acquistare un orologio in tempo reale, inoltre grazie a questo modulo, l'ora dell'orologio non andrà fuori strada quando viene spenta. L'autore ha acquistato il modulo RTC Grove da Seeed Studio. È una tavola finita con un chip orologio. L'autore ha collegato i pin del modulo SDA e SCL all'Arduino sui pin di A4 e A5, GND a terra. Poiché l'alimentazione a 5 V è occupata dalla scheda dell'orologio, non è stato possibile collegare il modulo. L'autore ha deciso di alimentare il modulo da uno dei pin digitali, che sarà costantemente sotto tensione.Inoltre, l'autore doveva modificare il codice sorgente e aggiungere una libreria di orologi in tempo reale.
Guarda il montaggio
Dopo aver completato un lungo lavoro sul codice, è tempo di dare al dispositivo un aspetto completo e trasferirlo dalla breadboard alla scheda del circuito stampato. Prima di tutto, è stato necessario effettuare il cablaggio per la scheda. Fritzing è stato utilizzato per questo, poiché l'autore aveva già un'idea dell'aspetto dell'orologio e ha costruito un diagramma del dispositivo. L'autore ha anche tracciato manualmente la scheda, ci è voluto molto tempo.
Progetto per la produzione di circuiti stampati:
La produzione di PCB è stata ordinata in Cina. Seeed Studio ha un servizio di schede PCB Fusion. Attraverso Fritzing, il file è stato esportato nel formato Extended Gerber, molti produttori di schede lavorano con esso. Due settimane dopo, l'autore ha ricevuto la tanto attesa tariffa per posta.
Rimase solo per saldare già un po 'di parti polverose sul tabellone. Il risultato finale dopo la saldatura sembrava molto meglio del layout sulla breadboard.
L'autore del progetto ha lavorato duramente per molto tempo e ha ottenuto ciò che voleva: un orologio binario unico con un timer e una sveglia. Utilizzando il vano batteria, l'orologio può essere posizionato ovunque. Arduino ha soddisfatto le aspettative e ha affrontato completamente l'attività.