Sommario:

NeoClock: 7 passaggi (con immagini)
NeoClock: 7 passaggi (con immagini)

Video: NeoClock: 7 passaggi (con immagini)

Video: NeoClock: 7 passaggi (con immagini)
Video: Josh Makes Gordon Ramsay's Beef Wellington With 7-Eleven Ingredients 2024, Giugno
Anonim
Image
Image

Si tratta di costruire un orologio utilizzando i fantastici anelli neopixel di Adafruit. La cosa divertente di questo orologio è che in realtà ha due anelli di neopixel, uno per le ore e uno per i minuti, i secondi ei millisecondi. L'orologio mantiene l'ora perfetta utilizzando il chip DS3234 DeadOn Real Time Clock di Sparkfun. Facile da costruire e divertente da modificare. La mia speranza è che possa ispirare gli altri a costruire orologi o altre opere d'arte usando gli anelli in neopixel.

Per quelli di voi che vogliono ottenere tutti i miei file in un formato semplice da gestire, sentitevi liberi di scaricarli dal mio repository github per questo progetto su

Passaggio 1: progettazione dell'orologio

Progettare l'orologio
Progettare l'orologio
Progettare l'orologio
Progettare l'orologio
Progettare l'orologio
Progettare l'orologio
Progettare l'orologio
Progettare l'orologio

Sapevo fin dall'inizio che volevo usare almeno due anelli di neopixel. Dopo un po' di lavoro ho deciso che il miglior design sarebbe stato avere un anello dentro l'altro, che mantiene la forma originale di un orologio. L'anello più piccolo sarebbero le ore e il tempo rimanente sarebbe mantenuto sull'anello più grande. Alcune considerazioni di design includevano il costo dei neopixel, i requisiti di alimentazione, le dimensioni dei pezzi tagliati al laser e il tipo di arte che volevo metterci sopra.

Con questo passaggio completato, ho deciso che dovevo capire l'elettronica prima di creare i piani per il taglio laser del corpo dell'orologio.

Passaggio 2: progettazione dell'elettronica

Progettare l'elettronica
Progettare l'elettronica
Progettare l'elettronica
Progettare l'elettronica
Progettare l'elettronica
Progettare l'elettronica
Progettare l'elettronica
Progettare l'elettronica

La progettazione dell'elettronica si è ridotta a conoscere in anticipo gli elementi che volevo nell'orologio:

  • Anelli Neopixel (60 conteggi e 24 conteggi)
  • Arduino (il cervello)
  • Regolazione dell'orologio (gli arduino non tengono bene l'ora)
  • Gestione energetica

Le dimensioni e i requisiti di alimentazione dei neopixel sono ben documentati. Dato che funzionano a 5 V CC, ho deciso di utilizzare un Arduino 5 V e rendere le cose più semplici per me stesso. Considerando lo spazio, ho deciso di prototipare su un normale Arduino Uno, ma per l'elettronica finale ho scelto un Arduino Mini.

La prima iterazione di questo progetto è arrivata direttamente dalla pagina NeoPixel Basic Connections di Adafruit. Ho incluso il diagramma dal sito Web per semplificare le cose. Due cose sono importanti da questo:

  1. È necessario un condensatore da 1000uF per evitare che la scossa di corrente iniziale danneggi i pixel.
  2. È necessario un resistore da 470 ohm sul primo pixel dell'anello a 60 conteggi (questo resistore è integrato nell'anello a 24 conteggi)

Adafruit ha anche una serie di best practice NeoPixel che dovresti leggere prima di continuare con il design.

Tenere il tempo sull'orologio è un altro problema. L'orologio integrato nell'arduino non è sufficiente per tenere il tempo bene per lunghi periodi di tempo. Un problema peggiore è che potrebbe essere necessario reimpostare l'ora sull'arduino ogni volta. I computer risolvono questo problema utilizzando una piccola batteria sul chip dell'orologio per mantenere il tempo tra le interruzioni di corrente. In passato avrei usato qualcosa come il ChronoDot di Adafruit. Ma in questo caso volevo una scusa per usare il DS3234 (DeadOn RTC) di SparkFun. Puoi anche conservare le informazioni sulla data su DeadOn RTC se desideri integrarle nell'orologio.

Infine, la gestione dell'alimentazione necessitava di qualche considerazione. Sapevo già che tutto doveva essere 5V, ma la quantità di corrente necessaria sembrava essere un mistero. Un regolatore di tensione comune nella maggior parte dei progetti è l'L7805. Ciò richiederà tensioni fino a 24V e una corrente massima fino a 1,5A. Sapevo di avere un mosto da parete da 12 V 1,5 A in giro, quindi ho deciso che questo sarebbe stato il regolatore di tensione perfetto (ed economico!) Per il progetto.

I pezzi rimanenti sarebbero venuti dalla mia scatola di pezzi o da Radio Shack. Includevano i cavi, gli interruttori e il jack di alimentazione CC.

Passaggio 3: costruire l'elettronica

Costruire l'elettronica
Costruire l'elettronica
Costruire l'elettronica
Costruire l'elettronica
Costruire l'elettronica
Costruire l'elettronica

Un elenco completo dell'elettronica che ho acquistato per costruire questo progetto può essere trovato nel mio repository github qui: Elenco componenti elettronici. Ha collegamenti alla pagina del prodotto per ogni pezzo e include alcune informazioni aggiuntive tra cui lo SKU del prodotto. L'ho prototipato rapidamente su una breadboard e sono passato al taglio laser e alla costruzione prima di scattare qualsiasi foto. Tuttavia, l'ho costruito per essere facile da smontare, quindi ho suddiviso i pezzi nelle foto sopra per te.

Osserva attentamente le immagini poiché i fili sono stati piegati intenzionalmente in modo da essere facili da seguire e per mantenere sottile l'intero profilo dell'elettronica. Fare questa prototipazione iniziale prima della progettazione del taglio laser mi ha permesso di controllare lo spessore delle parti in modo da poter calcolare le dimensioni finali per il corpo dell'orologio.

Noterai che ho realizzato un paio di breadboard personalizzate. Ho provato a fotografare il retro di quelle tavole in modo da poterle ripetere. Puoi acquistare un assortimento di breadboard come queste per un paio di dollari e adattarle al tuo progetto.

Il cablaggio è semplice ma le cose importanti da ricordare dalle immagini sono queste:

  • Gli interruttori Mode e Set avranno bisogno di resistori pull down. Ho usato resistori da 2,21 Ohm che avevo in giro, ma qualsiasi piccolo resistore funzionerà (preferibilmente non meno di 1 kOhm). Questo stabilizza i pin di ingresso Arduino collegati in modo che quando vanno in alto è distinguibile dal rumore.
  • L'onda quadra (SQW) sul DS3234 è stata messa a terra poiché non è in uso.
  • L'alimentazione dell'L7805 viene inserita nell'Arduino Mini nel pin RAW. Metti sempre la potenza che arriva in Arduino in RAW.
  • Il primo pixel dell'anello da 60 neopixel ha una resistenza da 470 Ohm per ridurre eventuali danni al primo pixel da picchi di dati. Questo non dovrebbe essere un problema poiché il neopixel a 24 conteggi ha già un resistore integrato per questo, ma è meglio prevenire che curare.
  • Gli interruttori Mode e Set sono interruttori a pulsante momentanei SPST

I colori dei fili sono:

  • Rosso: +5VDC
  • Nero: terra
  • Verde: dati
  • Giallo, Blu, Bianco: Cavi speciali per DS3234

Se è la prima volta che usi i neopixel, dovresti ricordare che possono essere pensati come una lunga catena. Quindi potrebbe sembrare strano parlare di un "primo pixel" in un anello, ma in realtà c'è un inizio e una fine per ogni catena negli anelli. In questo progetto vengono prima i 24 pixel dell'anello piccolo e dopo i 60 pixel dell'anello più grande. Questo significa davvero che ho una catena di 84 neopixel.

Per il cablaggio su Arduino Mini:

  • DS3234 si collega sui pin 10 - 13
  • Gli interruttori Mode e Set sono sui pin 2 e 3
  • I dati del neopixel provengono dal pin 6.

Consiglio anche di mettere le 6 intestazioni nella parte inferiore di Arduino Mini in modo da poterlo programmare tramite un cavo FTDI.

Una nota importante sulla corrente: questo orologio richiede molto. Sono sicuro che potrei risolverlo, ma la mia esperienza pratica è che qualsiasi cosa uguale o inferiore a 500 mA alla fine causerà il brown out. Questo si manifesta come l'orologio che lampeggia colori pazzi e non tiene il tempo. Il mio mosto da parete finale è 12V e 1,5A e non ho mai avuto un marrone fuori con esso. Tuttavia, 1,5 A è il limite che il regolatore di tensione (e altre parti) avrà. Quindi non superare questo importo.

Passaggio 4: codifica dell'orologio

Codificare l'orologio
Codificare l'orologio

Il codice completo per l'orologio può essere trovato nel codice NeoClock su GitHub. Ho incluso il file qui, ma qualsiasi modifica avverrà nel repository.

Trovo che scrivere codice possa essere scoraggiante se provi a fare tutto in una volta. Invece di farlo, provo a partire da un esempio funzionante e a creare funzionalità quando ne ho bisogno. Prima di approfondire, voglio sottolineare che il mio codice deriva dalla combinazione di molti esempi dai seguenti repository e dal forum Arduino CC. Dai sempre credito dove è dovuto!

  • https://github.com/adafruit/Adafruit_NeoPixel
  • https://github.com/zeroeth/time_loop
  • https://github.com/sparkfun/DeadOn_RTC

Alcuni esempi di codice da questi repository possono essere trovati nella mia directory degli esempi di codice

L'ordine delle operazioni che ho usato per creare il codice è stato simile a questo:

  • Conferma che i neopixel funzionano con l'esempio del test del filo
  • Tentativo di eseguire un orologio con il Time Loop Code
  • Modifica l'orologio per lavorare su due squilli invece di uno solo
  • Aggiungi il DS3234 per tenere il tempo tramite l'esempio di DeadOn RTC
  • Aggiungi la modalità e imposta gli interruttori
  • Aggiungi il codice antirimbalzo con l'aiuto del tutorial antirimbalzo di Arduion
  • Aggiungi alcuni temi di colore per i LED dell'orologio
  • Aggiungi alcune animazioni per i segni 0, 15, 30 e 45 minuti
  • Aggiungi i punti della bussola all'orologio per orientare i segni 0, 15, 30 e 45 minuti

Se vuoi vedere come ho creato questo codice, puoi effettivamente usare GitHub per guardare ogni commit del codice. La cronologia dell'orologio è nella cronologia dei commit.

Le combinazioni di colori sono state divertenti da aggiungere, ma alla fine ne ho incluse solo quattro nel menu. Ogni tema imposta un colore specifico sulle "lancette" di ore, minuti, secondi e millisecondi. Le opzioni sono davvero infinite qui, ma ho incluso i temi (i nomi dei metodi elencati):

  • setColorBlue
  • impostaColoreRosso
  • setColorCyan
  • setColorOrange

Tuttavia, puoi trovare questi metodi aggiuntivi nel codice:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Le animazioni sono state aggiunte perché mi piaceva l'idea dei vecchi orologi che suonavano ai quattro punti e quindici minuti dell'orologio. Per questo orologio ho realizzato le seguenti animazioni:

  • 15 minuti: Colora gli anelli di rosso
  • 30 minuti: Colora gli anelli di verde
  • 45 minuti: Colora gli anelli di Blu
  • Top of the Hour: fai un arcobaleno sui due anelli

L'usabilità si è rivelata un problema con l'orologio perché nessuno poteva orientare l'orologio. Dopotutto sono solo due anelli di LED. Quindi per risolvere il problema ho aggiunto i punti cardinali all'orologio. Questo ha migliorato molto la capacità di leggere l'ora. Se l'avessi saputo prima di inviare i pezzi tagliati al laser, avrei potuto aggiungere qualcosa all'arte. Ma si scopre che non puoi vedere l'arte così bene al buio, quindi avere i punti cardinali aiuta davvero. Una considerazione a riguardo è che quando decidi di colorare un pixel devi prima catturare il colore corrente e creare un nuovo colore miscelato. Questo gli dà una sensazione più naturale.

Un ultimo bocconcino riguarda i millisecondi. I millisecondi su Arduino escono dal cristallo Arduino interno e non dal DS3234. Sta a te decidere se vuoi visualizzare i millisecondi o meno, ma io l'ho fatto, l'orologio sembrava sempre fare qualcosa. Potrebbe infastidirti che i millisecondi e i secondi non si allineano sempre, ma in pratica nessuno me l'ha mai detto quando guardo l'orologio e penso che sia carino.

Passaggio 5: progettazione dei file tagliati al laser

Progettare i file tagliati al laser
Progettare i file tagliati al laser
Progettare i file tagliati al laser
Progettare i file tagliati al laser
Progettare i file tagliati al laser
Progettare i file tagliati al laser
Progettare i file tagliati al laser
Progettare i file tagliati al laser

Ci sono due considerazioni che ho dovuto fare durante la progettazione dei file tagliati al laser. Il primo era il materiale con cui volevo costruirlo e il secondo era come sarebbe stato costruito. Sapevo di volere una finitura in legno con acrilico per diffondere i neopixel. Per capire il materiale ho prima ordinato alcuni campioni da Ponoko:

  • 1x MDF impiallacciato - Noce
  • 1x MDF impiallacciato - Ciliegia
  • 1x acrilico - grigio chiaro
  • 1x Acrilico - Opale

Le selezioni del legno mi hanno fatto vedere come sarebbe la rasterizzazione e come sarebbe la bruciatura sul lato dell'orologio. L'acrilico mi permetterebbe di testare la diffusione dei neopixel e di confrontare l'aspetto che avrebbe sul legno. Alla fine ho deciso per il legno di ciliegio con l'acrilico opale.

Le dimensioni dell'orologio erano determinate principalmente dalle dimensioni degli anelli di neopixel. Quello che non sapevo era quanto spesso dovesse essere per adattarsi all'elettronica. Dopo aver costruito l'elettronica e sapendo che il legno aveva uno spessore di circa 5,5 mm, ho deciso che avevo bisogno di circa 15 mm di spazio all'interno dell'orologio. Ciò significava tre strati di legno. Ma con la parte anteriore e quella posteriore che già occupavano la maggior parte dello spazio nel mio progetto, avevo bisogno di spezzare quegli anelli in "costole" che avrei potuto incollare insieme in seguito.

Ho usato InkScape per disegnare sul modello fornito da Ponoko. Dopo aver disegnato il corpo dell'orologio, ho iniziato a disegnare l'albero a mano. Non ho potuto importare l'immagine originale che mi ha ispirato, ma non è stato terribile capire come fare qualcosa di simile da solo.

Il costo dei materiali era solo di circa $ 20, ma il costo del taglio è risultato essere di circa $ 100 in più. Due cose hanno contribuito a questo:

  • Curve e cerchi costano di più perché la macchina si muove su due assi e questo design ha molte curve
  • La rasterizzazione richiede molti passaggi avanti e indietro attraverso il pezzo. Eliminarlo avrebbe risparmiato di più, ma mi è piaciuto.

Dopo aver finalizzato il design, ho inviato i file EPS a Ponoko e i miei pezzi sono stati completati circa una settimana dopo.

Nota che non ho incluso gli interruttori Mode e Set o il DC Power Jack nel design. Quando l'ho spedito non avevo ancora deciso su quelle parti. Per darmi più flessibilità li ho lasciati fuori e ho deciso che li avrei perforati più tardi a mano.

Passaggio 6: costruzione dell'orologio

Costruire l'orologio
Costruire l'orologio
Costruire l'orologio
Costruire l'orologio
Costruire l'orologio
Costruire l'orologio
Costruire l'orologio
Costruire l'orologio

Quando sono arrivati tutti i pezzi ho costruito l'orologio. Il primo passo è stato il corpo dell'orologio che mi ha richiesto di perforare le nervature e incollarle sul retro e sul davanti. Ho messo due strati di costine sul retro e uno strato sul davanti e li ho fissati con la colla per legno. Per la parte anteriore ho usato la colla per legno per mettere insieme gli anelli di acrilico e i cerchi di legno. Avevo un pezzo centrale di scorta che avrei tagliato come un pezzo grezzo che è tornato utile durante la costruzione. L'ho incollato sul retro del pezzo di albero e questo mi ha dato un posto dove avrei potuto incollare i neopixel in seguito.

Con il corpo costruito ho deciso di praticare dei fori per gli interruttori e il jack di alimentazione. Un po' di geometria (come si vede nella foto) mi ha aiutato ad allineare il tutto. Usando un pezzo di legno separato all'esterno mentre ho forato (con molta attenzione!) Ho fatto i fori e incollato gli interruttori e il jack.

L'elettronica è passata dopo. Ho incollato prima i neopixel e poi il condensatore. Questi li ho collegati alla scheda breakout di alimentazione neopixel. Poi per il retro ho messo i fili sugli interruttori e il jack di alimentazione. Ho incluso anche il regolatore di tensione L7805.

Una breve nota sull'orientamento degli anelli. Per il grande anello di 60 pixel è necessario orientare l'orologio in modo che uno dei pixel sia esattamente in alto per segnare gli zero minuti. Quale pixel non ha importanza e arriverò al perché in un minuto. Per il piccolo anello di 24 pixel devi orientare l'orologio in modo che la parte superiore sia effettivamente tra due pixel. Il motivo è che se vuoi segnare 12 ore, finisci per illuminare due pixel invece di uno. Avendo l'offset, e con la diffusione della plastica, sembrerà di avere davvero 12 pixel larghi.

Per quanto riguarda il pixel che il codice designa come "in alto" per ogni anello, è necessario modificare un po' il codice. Ho due valori nel mio codice denominati "inner_top_led" e "outer_top_led". Nei miei orologi "inner_top_led" era di 11 pixel dall'inizio dell'anello piccolo e "outer_top_led" era di 36 pixel dall'inizio dell'anello grande. Se ti capita di orientare gli anelli in modo diverso, cambieresti questi valori in modo che siano quelli del tuo orientamento. Un po' di sperimentazione e troverai il valore giusto abbastanza rapidamente.

A questo punto ho verificato che tutto funzionasse come previsto.

Ma come con tutti i progetti mi sono imbattuto in un problema quando mi sono reso conto che non avevo capito come avrebbe tenuto insieme. Ho notato che avevo circa 3/8 di pollice di spazio tra i neopixel e le nervature, quindi sono andato a Home Depot e ho preso un tassello da 3/8 di pollice e un certo numero di magneti al neodimio. Ho costruito dei piccoli supporti di legno in tre punti e li ho levigati in modo da poter mettere due magneti su ogni supporto (usando la colla super). Ho finito con 3 paia di 2 supporti ciascuno. Poi li ho incollati nel telaio e ho tenuto il tutto in posizione con un morsetto. L'ho fatto mentre la colla sui supporti era bagnata in modo che tutto si allineasse e poi si asciugasse nel punto corretto. Ha funzionato perfettamente e mi piace che il rilascio sia tutto nascosto.

Alla fine ho capito che dovevo appenderlo al muro, quindi ho forato un piccolo hangar sul retro in modo da poterlo appendere al muro.

Passaggio 7: considerazioni finali

Questo progetto è stato molto divertente da realizzare e mi è piaciuto conoscere i neopixel e il DS3234. Mi sono particolarmente divertito a realizzare finalmente un progetto che fosse bello dall'inizio alla fine. Ci sono un paio di cose che aggiornerei se lo facessi di nuovo, ma sono minori:

  • Ho scelto due pulsanti invece di tre per semplicità. Ma avere un pulsante che mi permettesse di salire e scendere sarebbe stato bello per impostare l'orologio
  • Il pulsante di modalità e il pulsante di impostazione sono indistinguibili. Li mescolo spesso. Forse li metterei su lati opposti in futuro.
  • Non ho mai finito il frontale in legno. All'inizio mi piaceva l'aspetto grezzo e poi mi sono preoccupato che se avessi incasinato la finitura sarebbe costato molto aggiustarlo.
  • Rasterizzare l'albero era un aspetto ok, ma avrei potuto disegnare più dettagli per l'albero in futuro.
  • Anche l'oscuramento dell'orologio sarebbe una bella caratteristica poiché è abbastanza luminoso al buio. Tuttavia, l'oscuramento è legato al colore e capire che quel bit stava impiegando troppo tempo, quindi l'ho lasciato cadere. Probabilmente reinvestirei in quella funzione in futuro.

Grazie per aver letto questo istruibile. Spero che realizzerai il tuo progetto di orologio o neopixel e lo condividerai con me. Costruzione felice!

Consigliato: