Sommario:

Sveglia Oled: 8 Passi (con Immagini)
Sveglia Oled: 8 Passi (con Immagini)

Video: Sveglia Oled: 8 Passi (con Immagini)

Video: Sveglia Oled: 8 Passi (con Immagini)
Video: Un mese con Apple Watch 8 - Quello che non vi dicono 2024, Novembre
Anonim
Vecchia sveglia
Vecchia sveglia

Ci sono molti orologi arduino/ESP32 in giro, ma usano quegli OLED belli e nitidi?

Sto sperimentando arduino ed ESP32 da un po' di tempo, ma non sono mai arrivato a un prodotto finito. Ho realizzato una sveglia con 4 OLED monocromatici da 1,3 pollici. L'orologio dispone anche di una lampada da comodino dimmerabile e di una porta di ricarica USB (nessuno ha prese di riserva accanto al suo letto). Anche gli OLED sono dimmerabili, questo è stato aggiunto all'ultimo minuto dopo che il mio progetto è stato minacciato dalla mia ragazza. Se l'oscuramento non è sufficientemente attenuato, nella voce delle ragazze, posso anche fornire una versione del codice in cui 3 display sono accesi tra determinate ore. L'obiettivo era quello di realizzare un orologio di facile manutenzione, con uno sguardo oltre il "prototipo". Durante la realizzazione del mio orologio ho riscontrato alcune difficoltà che dovevo risolvere, motivo per cui penso che valga la pena condividere questo tutorial. L'orologio può essere realizzato con piccoli attrezzi, non mi piacciono i tutorial "e per il passaggio successivo ho usato la mia fresa CNC da 10.000€/$".

Alcune cose che verranno spiegate in questo istruibile (in-structable-ception):

- Come utilizzare/cablare un display OLED I2C con arduino/ESP32

- Come utilizzare più oggetti I2C con un arduino/ESP32

- Come creare un menu "scorribile" utilizzando un encoder rotativo (+ come utilizzare un encoder con un ESP32/arduino)

- Come progettare e ordinare un PCB personalizzato utilizzando fritzing.

- L'orologio utilizza anche un RTC (orologio in tempo reale), driver led, modulo step-down di tensione… Non entrerò proprio in questi perché ci sono davvero molte informazioni prontamente disponibili per questi moduli.

Vorrei sottolineare che non sono un programmatore professionista. L'obiettivo del mio istruibile è spiegare i punti che ho menzionato sopra. Il modo in cui ho messo tutto insieme per il mio prodotto finale potrebbe non essere il modo più pulito. È il modo che mi ha permesso di tenere traccia di tutto.

Forniture

Quando acquisto materiali di consumo cerco sempre di valutare l'importanza della qualità/documentazione rispetto al prezzo. Le mie forniture sono un mix di marche A e parti cinesi più economiche. Mouser è un ottimo fornitore se la qualità è importante, ordino da Banggood/Aliexpress per le parti più economiche.

- Una scheda ESP32, ho usato Huzzah32 di adafruit, ma ci sono molte altre opzioni (più economiche). Ho scelto Huzzah32 perché è molto ben documentato.

- 4 display OLED I2C da 1,3 pollici (128x64, con il driver SH1106), quelli da 0,96 pollici sono più comuni ma per questo progetto preferisco quelli da 1,3 pollici

- Driver femtobuck Sparkfun per pilotare il LED

- Orologio RTC, ne ho usato uno con una cella al litio

- Arduino nano

- Porta USB 2.0 femmina (ho usato: SS-52200-002 di Stewart Connector)

- Jack DC femmina (ho usato: L722A di Switchcraft)

- Adattatore DC 12V 3A (GST36E12-P1J di Mean Well)

- PCB personalizzato, opzionale ma questo rende il progetto molto più compatto e facilmente riparabile se una parte muore + più affidabilità perché meno fili (jlcpcb.com)

- Viti e bulloni M3

- Inserti in ottone M3

- Modulo step down da 12V a 5V di Pololu (DF24V22F5)

- 3 watt alimentati con dissipatore di calore

- Ponticelli

- Cicalino

- Multiplexer I2C (TCA9548A di adafruit)

- 2 encoder rotativi (ne ho provati alcuni, non tutti funzionano con il mio codice. Quello di "DFrobot" funziona e anche quello con il PCB rotondo di "DIYmore". Il mio codice non sembra funzionare per il pulsante del tipo KY-040. La mia sveglia utilizza quella di DIYmore perché sono molto facili da montare a pannello (non sono necessarie viti/fori aggiuntivi).

- Assortimento di testate femminili (opzionale)

- Legno per il telaio: 18mmx18mmx2400mm

- Carta da lucido

Ho usato anche alcuni strumenti (saldatore, terza mano, sega…), ma niente di veramente esotico.

Passaggio 1: utilizzo di un Oled

Usare un Oled
Usare un Oled
Usare un Oled
Usare un Oled
Usare un Oled
Usare un Oled

Per utilizzare gli OLED devi installare una libreria. Uso l'U8G2lib di Oli Kraus, è molto comprensibile e ha una guida di riferimento con esempi chiari.

Per collegare la tua scheda (ESP o arduino) devi trovare i pin SDA e SCL. Questi pin sono i pin di comunicazione I2C. Google per il "pinout" della tua scheda specifica se non riesci a trovarli.

Ho aggiunto del codice di esempio. Il codice funziona sia per arduino che per ESP32, ma è meno probabile che ESP32 esaurisca la memoria. Tutti gli oled che ho provato finora funzionano sia con 3.3v (ESP32) che con 5V.

Passaggio 2: più OLED

OLED multipli
OLED multipli

È qui che il mio progetto inizia a differire da molte altre sveglie. La maggior parte degli arduino/ESP ha solo uno o due pin I2C. Questo tipo di limita l'uso di parti I2C. Cosa succede se ho 4 sensori I2C e voglio visualizzare le loro letture su un display I2C? Entra nel multiplexer. Il muliplexer consente di indirizzare 7 diverse parti I2C. Ciò consente al mio ESP32 di utilizzare un orologio in tempo reale I2C e di visualizzare l'ora utilizzando nuovamente I2C sui 4 display (o più, non lasciarti fermare).

Ho aggiunto un codice di esempio per ESP32, da qui in poi non sono sicuro che l'arduino possa tenere il passo. L'esempio utilizza solo display, possono essere anche altre cose come i sensori I2C ecc. Il principio è sempre lo stesso, chiami il canale giusto con "tcaselect(#);" funzione, quindi esegui qualsiasi codice necessario per il tuo oggetto I2C.

Passaggio 3: creazione di un menu scorrevole con un codificatore rotante

Creazione di un menu scorrevole con un codificatore rotante
Creazione di un menu scorrevole con un codificatore rotante
Creazione di un menu scorrevole con un codificatore rotante
Creazione di un menu scorrevole con un codificatore rotante
Creazione di un menu scorrevole con un codificatore rotante
Creazione di un menu scorrevole con un codificatore rotante

Per prima cosa, prova i tuoi codificatori. Ho aggiunto del codice per testare i tuoi moduli encoder. Come indicato nelle forniture: ho testato con successo il mio codice solo con i moduli encoder rotativo di DF robot e il modulo con il PCB rotondo di DIYmore. Guarda le immagini sopra per gli encoder giusti.

La libreria che ho usato è questa:

Si spera che il PDF che ho aggiunto aiuti con la struttura del menu che ho usato per il mio orologio.

Far funzionare l'encoder è stata la parte più difficile per me in questo progetto. Esistono molti codificatori diversi e molte librerie diverse che non sono sempre compatibili con ESP32. Ma penso che un encoder rotativo (funzionante) sia una soluzione elegante se vuoi inserire qualcosa. Se avessi usato solo i pulsanti, ne avrei avuto bisogno di più di 1 e l'impostazione del tempo avrebbe richiesto molte pressioni.

Passaggio 4: mettere insieme il codice precedente

Mettere insieme il codice precedente
Mettere insieme il codice precedente

Il titolo riassume in qualche modo quello che ho fatto. Ho provato parte per parte e poi ho messo tutto insieme. Ma poiché niente è mai facile, ho dovuto cambiare alcune cose. La comunicazione seriale è un processo lento. Ciò ostacola la lettura corretta dell'encoder. Per ovviare a questo ho aggiunto degli interrupt ai pin dell'encoder. Il codice per leggere l'encoder viene quindi chiamato immediatamente se si preme o si ruota l'encoder.

Una volta compreso come sono costruiti i menu, scoprirai che è molto facile aggiungere o rimuovere funzionalità a tuo piacimento. Forse desideri recuperare il tempo o l'ora corrente da Internet e visualizzarli?

Ho tralasciato molte di queste idee perché volevo soprattutto una pace temporale affidabile. Uno che non fa nulla automaticamente. Lavoro ore molto dispari in una zona di ora legale. Ogni volta che l'ora viene cambiata sono nervoso per dormire troppo. Il mio telefono cambierà automaticamente l'ora? Sarà il mio orologio? Beh, il mio orologio non lo farà, a meno che non lo cambi io stesso. Ma forse vuoi mettere il tuo orologio in cucina? Scenario diverso, aggiungi funzionalità fino a quando la memoria è esaurita!

Passaggio 5: PCB personalizzato con Fritzing + Schematic

PCB personalizzato con Fritzing + Schematic
PCB personalizzato con Fritzing + Schematic
PCB personalizzato con Fritzing + Schematic
PCB personalizzato con Fritzing + Schematic
PCB personalizzato con Fritzing + Schematic
PCB personalizzato con Fritzing + Schematic

Punto di attenzione: Adafruit sottolinea che mentre è possibile alimentare huzzah32 tramite il pin USB, è necessario fare attenzione a non utilizzare contemporaneamente la presa di alimentazione micro USB. Il mio PCB è alimentato tramite il buck step down, che quindi alimenta l'huzzah tramite il pin USB. Quindi scollega sempre l'alimentazione esterna / rimuovi l'huzzah dalla scheda durante il caricamento.

Ho deciso di saldare le intestazioni femmina sul PCB perché rende più facile sostituire una parte o aggiungere, ad esempio, un sensore I2C aggiuntivo. Questo mi permette anche di rimuovere facilmente il nano o l'ESP32 per caricare i programmi.

Ho aggiunto il file Frizting, posso digitare un romanzo qui, ma penso che l'esempio parli meglio. Ho iniziato con lo schema dell'intero impianto. Mentre Fritzing ha molte parti nei suoi bidoni, non è tutto lì. A volte puoi trovare la parte di Fritzing su Internet, a volte no. Le parti che non sono riuscito a trovare, le ho semplicemente sostituite con una parte di testata femminile. Se fai clic con il pulsante destro del mouse, puoi modificare l'intestazione con la quantità di pin che desideri e assegnargli una piedinatura. L'ho fatto con ogni parte che non riuscivo a trovare. Poiché quasi tutti i moduli utilizzano lo stesso passo di 0,1 pollici (2,54 mm), questo ti darà la spaziatura corretta per la parte.

Successivamente si passa alla visualizzazione PCB dell'app fritzing. Verrà posizionato un PCB, se fai clic su di esso, puoi impostarne le dimensioni e scegliere un PCB a strato singolo o doppio. Il mio usa 2 strati. Fritzing suggerirà le connessioni che hai fatto nella vista schematica. Il programma ha un'opzione di autoroute, ma non la uso mai. Mi piace organizzare manualmente le mie connessioni. Nella vista PCB le connessioni gialle sono nello strato superiore, quelle arancioni nello strato inferiore. Anche in questo caso se fai clic sulla connessione puoi sceglierne le proprietà.

Per creare il PCB effettivo, devi esportarlo come file gerber. Prima di fare ciò, nella scheda "routing" puoi controllare le regole di progettazione. Se tutto è andato a buon fine puoi fare clic su "esporta per PCB". La maggior parte dei produttori chiederà il file gerber, quindi seleziona l'esportazione in gerber.

Ho ordinato il mio PCB da JLCPCB, mi piace che ti citino immediatamente un prezzo. Ci sono ovviamente molte altre opzioni.

Circa lo schema: ci sono 2 tensioni che vengono utilizzate. Il LED e il femtobuck sono alimentati direttamente dall'alimentazione a 12V. Il resto è alimentato tramite il buck step-down con 5 volt.

Passaggio 6: progettazione + taglio laser

Design + Taglio laser
Design + Taglio laser
Design + Taglio laser
Design + Taglio laser

Per il mio primo progetto ho provato a utilizzare il rovere massiccio (sto seguendo corsi di falegnameria), ma è diventato subito chiaro che non era l'ideale. Il legno è troppo spesso, rendendo difficile il montaggio delle parti. Il multiplex in betulla da 3 mm consente modi più semplici per fissare codificatori e display.

Ho trovato un servizio di taglio laser online, snijlab.nl, disponibile per gli hobbisti con sede a Rotterdam (spediscono in Belgio, Paesi Bassi e Germania). Sul loro sito puoi caricare i tuoi disegni e loro citano immediatamente il tuo prezzo. Ho usato Autocad, che ho al lavoro, ma il software non ha molta importanza. Deve essere solo un disegno vettoriale (Vectr, Illustrator, Inkscape…). La maggior parte dei negozi usa i colori per determinare se vuoi tagliare o incidere.

Alcune cose da tenere a mente:

- Massimo dimensioni del lasercutter (ho disegnato una cornice attorno alle mie parti)

- Min. distanza tra i tagli

- Assicurati di non tracciare doppie linee, il laser farà un passaggio extra, costandoti di più.

- Quando si stampa in PDF, assicurarsi di stampare 1:1. Non vuoi ridimensionare o adattare alla carta.

Passaggio 7: assemblaggio

Assemblea
Assemblea
Assemblea
Assemblea
Assemblea
Assemblea

Ho costruito l'orologio attorno a un telaio in legno, i pannelli sono tenuti in posizione con viti M3 e inserti nel telaio. Se dovessi mai costruire una versione 2, userei profili a "L" in alluminio per fissare i pannelli. Era molto difficile praticare con precisione i fori per gli inserti in ottone. Mi ci è voluto molto tempo, solo per un risultato accettabile. Ciò significherebbe ovviamente che il disegno tagliato al laser deve essere rivisto. Penso che con profili in alluminio e solo dadi e bulloni avresti ottenuto un risultato migliore.

Per diffondere meglio la luce, ho incollato della carta da lucido all'interno delle perforazioni. Questo dà alla luce un bel bagliore.

Passaggio 8: non fermarti qui

Non fermarti qui
Non fermarti qui
Non fermarti qui
Non fermarti qui
Non fermarti qui
Non fermarti qui

Il progetto è incentrato su un ESP32, l'ho usato a malapena. Le luci della mia camera da letto possono attualmente essere controllate a distanza utilizzando blynk. Controllarli con l'orologio è solo un piccolo passo in più. Forse vuoi dei display extra che ti mostrino la temperatura intorno a casa tua? O alcuni sensori locali (ci sono ancora connessioni I2C di riserva su quel multiplexer!). Magari impostare l'ora/sveglia tramite app e bluetooth?

Fammi sapere cosa hai cambiato, cosa cambieresti tu, cosa dovrei cambiare io…

Consigliato: