Sommario:

Multi-timer con controllo esterno: 13 passaggi
Multi-timer con controllo esterno: 13 passaggi

Video: Multi-timer con controllo esterno: 13 passaggi

Video: Multi-timer con controllo esterno: 13 passaggi
Video: UNA GIOSTRA SI STACCA A ROMA! 2024, Novembre
Anonim
Multi-timer con controllo esterno
Multi-timer con controllo esterno

Questo progetto Instructable è una build di un timer multifunzione

Questo timer è in grado di funzionare come:

  1. Un allarme generico con tempi selezionabili tra 1 secondo e +90 ore. Avere un conto alla rovescia con allarme acustico e/o controllo del dispositivo esterno fino al termine, quindi un'indicazione del tempo trascorso dall'allarme.
  2. Un pisolino con 7 tempi selezionabili, conto alla rovescia e allarme al completamento.
  3. Un timer di meditazione con 4 tempi selezionabili, con conto alla rovescia e un breve cinguettio al termine, conteggio con un altro cinguettio a 5 minuti dopo.

Questo progetto può essere costruito come descritto qui o modificato per adattarsi. In precedenza ho costruito un timer con questa funzionalità e l'ho usato nel mio primo Instructable per controllare la scatola dell'esposizione UV.

Pensavo di poter pubblicare semplicemente il programma originale e i progetti della scheda. Tuttavia, per qualche motivo non sono riuscito a trovare il codice. Volevo anche apportare miglioramenti all'hardware per rendere i circuiti di controllo più flessibili e ridurre il consumo della batteria. La riprogettazione risultante della scheda del circuito principale e la riscrittura del codice offrono l'opportunità di discutere l'approccio alla programmazione e alla progettazione dell'hardware.

Ogni volta che creo un circuito, spesso scopro che ci sono difetti nel design o nel posizionamento dei componenti, anche le schede che costruisco sono una delle due cose. Inoltre, mi piace essere coinvolto in tutti gli aspetti di un progetto dall'inizio alla fine. Questi sono alcuni dei motivi per cui creo i miei circuiti stampati invece di inviare i file Gerber all'estero per la produzione. Forse sono solo vecchio e bloccato nei miei modi. Questo progetto riflette questo pregiudizio. Poiché realizzo i miei circuiti stampati, i miei progetti e i miei file Gerber non soddisfano gli standard di produzione, non ho incluso questi file. Coloro che non desiderano incidere e rifinire le tavole sono invitati a preparare i propri progetti e postare i file Gerber nella sezione commenti. Per favore, fai produrre e testare le tue schede prima di pubblicarle.

Passaggio 1: panoramica degli elementi hardware

Il dispositivo è alimentato da 4 batterie AAA ed è controllato da un Arduino Pro Mini 5V.

Un piccolo cicalino/altoparlante fornisce un allarme acustico.

Un relè in miniatura da 5 V fornisce tensioni di controllo a dispositivi esterni. La flessibilità è fornita nella sorgente di questa uscita di tensione di controllo.

Un encoder rotativo con pulsante fornisce la selezione del menu.

Un display OLED e un interruttore di avvio/arresto momentaneo completano l'interfaccia utente.

L'hardware elettronico aggiuntivo è costituito da un interruttore di alimentazione SPDT e da un jack telefonico in miniatura per il collegamento a dispositivi esterni.

Inoltre, vengono forniti file per assisterti in questo progetto:

File STL per un caso di progetto stampato in 3D.

Immagini in rame e solder mask per l'incisione e la finitura della scheda di controllo e dell'encoder rotativo.

Schemi e immagini di bordo come riferimento per coloro che desiderano modificare il mio progetto.

Potresti voler rivedere il mio Instructable sulla creazione di circuiti stampati a doppia faccia come esempio di come fare per la produzione di circuiti stampati.

Passaggio 2: panoramica del software

Insieme ai file sorgente di Arduino, alcune informazioni aggiuntive che potrebbero essere utili..

Le librerie di controllo hardware vengono utilizzate quando disponibili (pulsante antirimbalzo, controllo OLED, lettura encoder rotativo).

Il programma implementa una semplice macchina a stati finiti (FSM) per controllare l'esecuzione del codice come un'istruzione switch nella funzione loop.

Viene definita una classe Menu per consentire la selezione delle opzioni visualizzate sull'OLED e la selezione mediante l'encoder rotativo.

L'input è implementato dal polling diretto (non guidato da interruzioni) poiché non è critico in termini di tempo e rende il codice più chiaro.

Le istruzioni di stampa su seriale vengono utilizzate per aiutare a tracciare l'esecuzione del codice e il debug

Vari tipi di elementi della struttura del programma, tra cui:

  • Schede di codice multiple per isolare alcune delle funzioni e delle variabili di controllo hardware.
  • Istruzioni di commutazione per impostare il valore di stato (FSM) e le variabili di controllo.
  • Definizione della struttura
  • Enumerazioni per consentire l'assegnazione di valori di stato come testo.
  • #define definizioni pre-processore per pin hardware e valori standard.

Passaggio 3: elenco delle parti

Crea l'allegato
Crea l'allegato

Non ero sicuro di dove mettere questo passaggio poiché può essere fatto in quasi tutti i punti. Ho usato una scatola di recinzione stampata in 3D. Potresti non avere accesso a una stampante 3D o preferire un altro tipo di custodia come scatola di alluminio, plastica tagliata al laser, legno intagliato a mano o altro tipo che usi per i tuoi progetti elettronici. Ho incluso i file STL per la parte superiore, inferiore, la manopola dell'encoder rotante e la cornice OLED. Usa questi file e l'affettatrice di tua scelta per creare file gcode per la tua stampante.

Stampo tutte le parti utilizzando il filamento PLA, un colore per la parte superiore e inferiore dell'involucro, un altro a contrasto per la manopola e la cornice (che è incollata alla parte superiore). Non ho intenzione di specificare tutte le impostazioni dell'affettatrice ma, utilizzare un Tri - Riempimento esagonale di almeno il 35% per consentire la maschiatura delle viti angolari e un'impostazione "senza supporto" per la lettura delle lettere incise. Ho stampato la scatola usando l'altezza del livello "normale" della mia stampante.

Passaggio 9: progettazione e scrittura del codice

Questo passaggio è facoltativo ma suggerito per una migliore comprensione.

Il grosso dello sforzo in termini di ore è la scrittura del codice. È possibile saltare questo passaggio se si utilizza il programma allegato così com'è. Si consiglia, tuttavia, di dedicare del tempo alla revisione del codice per una migliore comprensione o modifica per soddisfare le proprie esigenze.

I seguenti commenti possono essere utili per comprendere questo processo.

  • Commenti - Commenta ampiamente mentre procedi - Scrivo spesso i commenti prima di scrivere il codice.
  • Divide et impera - usa funzioni, classi e moduli (schede). Usa compilazioni frequenti (Verifica) per controllare la sintassi. Debug: utilizza le istruzioni di stampa per verificare il flusso e testare i valori e le interfacce hardware. Non aver paura di risolvere i problemi man mano che procedi, nessuno scrive codice privo di bug!
  • Costanti: le istruzioni di pre-compilazione #define assegnano nomi ai numeri di pin. Le definizioni delle variabili Const con commenti riducono o eliminano i numeri "Magici". L'uso di costanti situate all'inizio di un programma o di una funzione consente di modificare i parametri senza riscrivere il codice
  • Librerie predefinite: l'utilizzo di librerie predefinite riduce il carico di programmazione e i tempi di debug.
  • Blocchi di progettazione: creati utilizzando funzioni, codice isolante in schede separate (programmi associati e file.h), enumerazioni, classi e strutture. Focalizza la tua attenzione su ciascuno di essi per capire come funzionano in relazione al resto del codice.
  • State Machine (s) - Questo è un modello di programmazione che funziona alla grande con Arduino o qualsiasi programma utilizzato per controllare gli output o reagire agli input. Esistono diversi tipi di macchine a stati. Questo codice utilizza una macchina a stati basata sull'istruzione switch nella funzione loop. Questo modulo è facile da capire e da eseguire il debug.
  • Display e menu - L'uscita OLED è concisa ma fornisce un feedback sufficiente per gli utenti occasionali e supporta la selezione delle opzioni. Si integra bene con la macchina a stati (quasi tutti gli stati hanno uno schermo OLED associato). La classe Menu è stata utile per isolare il codice per visualizzare e selezionare le opzioni del menu

Si prega di leggere il programma più volte. Aiuta a prendere una funzione o una sezione alla volta. Spesso non capisco il codice che ho scritto a meno che non l'abbia letto almeno due volte!

Passaggio 10: installare il programma

Copia il file allegato sul tuo computer, quindi decomprimilo nella directory di Sketches

Collega Arduino al tuo computer e scarica il codice del programma normalmente. Aprire il monitor seriale Arduino IDE per verificare che il programma sia in esecuzione e aiutare nel debug.

Passaggio 11: assemblare il timer

Assemblare il timer
Assemblare il timer
Assemblare il timer
Assemblare il timer
Assemblare il timer
Assemblare il timer
Assemblare il timer
Assemblare il timer

Una volta stampate e ripulite le parti superiore e inferiore della custodia, i componenti possono essere fissati utilizzando piccole viti di plastica autofilettanti. Per prima cosa il supporto della batteria viene inserito nella parte posteriore. Le altre parti sono fissate alla parte superiore dell'armadio nel seguente ordine:

  1. OLED e cavo
  2. Interruttore di avvio/arresto e cablaggio
  3. Encoder rotativo e cavo
  4. Altoparlante/cicalino e cablaggio
  5. Jack di controllo esterno e cablaggio
  6. Interruttore a scorrimento On/Off e cablaggio (controllare due volte l'orientamento in modo che l'accensione sia nella direzione desiderata

Se stai saldando i cavi direttamente alla scheda del circuito, fallo dopo che tutte le parti sono state fissate alla custodia per ridurre la rottura dei cavi. Devi aspettare che i cavi siano collegati alla scheda principale prima di avvitare quella scheda sul retro.

Se si utilizzano pin header e connettori Dupont, collegare prima la scheda principale al retro utilizzando le viti, quindi collegare i componenti. Prestare attenzione quando si collega la batteria alla scheda principale e osservare la corretta polarità. Dovresti anche impostare i ponticelli di controllo del relè o il cablaggio in questo momento.

La parte inferiore della custodia si collega alla parte superiore tramite l'utilizzo di 4-40 viti a testa tonda, una in ogni angolo. I quattro fori nella parte superiore devono essere maschiati con un maschio da 4/40 o se si utilizzano inserti filettati da 4-40, sarà necessario praticare i fori per accettarli. Devono essere praticati anche i 4 fori per il montaggio della scheda principale sul fondo. Avvita questa scheda al supporto della batteria a scatto e segna le posizioni dei fori. Forare in modo appropriato per le viti di montaggio.

Passaggio 12: test di integrazione

Test d'integrazione
Test d'integrazione
Test d'integrazione
Test d'integrazione
Test d'integrazione
Test d'integrazione

Il test finale (di integrazione) viene eseguito provando tutte le opzioni di menu e verificando che funzionino con l'hardware come progettato. Per il codice che ho fornito, dovrebbe essere sufficiente. Se hai scritto il tuo codice o modificato il mio, i tuoi test dovranno essere più estesi. Non credo che tutte le selezioni dei tempi debbano essere esercitate, ma è necessario provare tutte le opzioni di allarme standard e convalidare che gli allarmi Nap e Meditation funzionino come previsto.

Passaggio 13: Considerazioni finali

Congratulazioni per il tuo progetto di successo, spero. Sono sicuro che hai incontrato problemi lungo la strada che dovevi risolvere. Sono anche sicuro che alcune delle mie istruzioni avrebbero potuto essere più complete o più chiare. Per favore fatemi sapere attraverso la sezione commenti quali sono stati i vostri risultati e fornite suggerimenti su come queste istruzioni possono essere migliorate.

Grazie per il tempo dedicato alla visualizzazione e/o alla creazione di questo progetto.

Consigliato: