Sommario:
- Passaggio 1: serie di lampade
- Passaggio 2: teoria dell'oscuramento
- Passaggio 3: pratica di attenuazione
- Passaggio 4: controller della lampada (ESP32)
- Passaggio 5: pannello di controllo
- Passaggio 6: divertiti
Video: Lampada Sunrise controllabile luminosa: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Ti sei mai svegliato alle 7:00, il solito orario in cui devi svegliarti per lavoro, e ti sei ritrovato al buio? L'inverno è un periodo terribile, vero? Devi svegliarti nel cuore della notte (altrimenti perché è così buio?), strapparti dal letto e mandare il tuo corpo semicosciente sotto la doccia.
Questo progetto mira a risolvere uno dei problemi: l'oscurità del mattino.
Ci sono un sacco di lampade per l'alba economiche in giro, ma sono tutte a bassa potenza e pallide. Sono più simili a una lampada da notte, che dovrebbe farti dormire meglio. Non è affatto quello che voglio.
Allo stesso tempo, solo accendere la luce intensa ti sveglierà immediatamente, ma non abbastanza dolcemente. Quello che voglio è una combinazione di entrambi gli approcci: accendi con una bassa luminosità, raggiungi lentamente la massima velocità, poi scatta una vera sveglia e non sei più così assonnato. Aggiungiamoci un po' di canto degli uccelli e ti svegli in paradiso ogni mattina!
Passaggio 1: serie di lampade
Prima di tutto, abbiamo bisogno della lampada stessa. Ho una stanza abbastanza grande con pareti e soffitto bianchi, quindi ho optato per 7 lampade LED GU10, qualcosa come 6W ciascuna, più di 40W di pura potenza! È abbastanza per farti sentire come se fosse già giorno. Inoltre può essere utilizzato come una normale illuminazione della stanza durante il giorno.
Non importa come lo monti, quali lampade usi con quali prese. Tutto ciò che conta: devono essere lampade dimmerabili!
Nel mio caso, ho una tavola di legno con 7 prese GU10 attaccate, tutte collegate insieme. Lo metterò in una scatola di plastica più tardi.
Passaggio 2: teoria dell'oscuramento
In teoria non c'è differenza tra teoria e pratica. In pratica c'è.
Il controllo di un dimmer da ESP32/Arduino sembrava non essere così semplice come immaginavo. Ho uno dei moduli RobotDyn AC Light Dimmer. Il produttore suggerisce una libreria per questo. Non funziona su ESP32 (ed è davvero difficile adattarsi, perché utilizza molti accessi al registro specifici di ATMega di basso livello), funziona in qualche modo su Arduino Nano, dando un terribile sfarfallio alla luminosità medio-bassa. Ecco perché ho passato un po' di tempo a indagare su come funziona il tutto ea fare a modo mio.
Un po' di teoria
Il modulo dimmer scelto utilizza un TRIAC molto diffuso: BTA16. Ci sono molti articoli a riguardo. Cercherò di riassumerlo qui.
TRIAC è un modulo che può trasmettere una tensione di ingresso positiva o negativa all'uscita, oppure può bloccarla. Di default blocca tutto. Per aprirlo, dovremmo dargli un segnale alto sull'ingresso del gate per 100 us. Quindi rimarrà aperto fino a quando la corrente non scenderà a zero, cosa che accade quando una tensione di ingresso cambia segno, attraversando una tensione zero. Quindi nel ciclo successivo dovremmo fare altri 100 impulsi e così via. Scegliendo quando dare un impulso, controlliamo la luminosità: fallo all'inizio e sarà vicino al 100% di trasmissione della potenza. Fallo più tardi e sarà oscurato. Controlla lo schema sopra, spiegandolo.
Per generare impulsi nello stesso punto del ciclo, dobbiamo sapere esattamente quando inizia. Ecco perché il modulo dimmer ha un rilevatore Zero-Cross integrato. Genera semplicemente un segnale (che cattureremo come interrupt hardware in Arduino) ogni volta che la tensione attraversa lo zero.
Passaggio 3: pratica di attenuazione
Sì, è così che ti sveglieresti, se la tua lampada non si attenua e mette tutti i 40 W di potenza nei tuoi occhi assonnati.
Problemi comuni
Ci sono più problemi che dobbiamo affrontare.
Sfarfallio.
La temporizzazione del microcontrollore deve essere molto precisa nell'attivazione e disattivazione dell'uscita del gate. La libreria suggerita da RobotDyn ha un'interruzione del timer ogni 100us e modifica il livello del gate solo in base al timer. Significa che può essere +/- 50 microsecondi fuori dal valore ottimale. Dà un buon risultato con una luminosità elevata, ma sfarfalla molto con una luminosità bassa. Inoltre, se il microcontrollore fa molte cose, diminuisce la precisione del tempo, quindi idealmente dovrebbe essere usato un microcontrollore dedicato per il dimmer.
Luminosità minima. I LED hanno un convertitore di alimentazione integrato, che si rifiuterà semplicemente di funzionare non avendo abbastanza energia. Le mie lampade sembravano funzionare bene a partire dal 10-11%.
Anche con questo valore, alcune delle mie lampade si sono rifiutate di accendersi all'avvio. Anche quando si aumenta la luminosità in un secondo momento, rimangono scuri. Ecco perché, quando passiamo dallo stato OFF a una luminosità positiva, iniziamo con un periodo di riscaldamento di 5 cicli, quando diamo piena potenza alle lampade. Quindi continuiamo con la luminosità desiderata. È quasi impercettibile, ma aiuta davvero.
Frequenza di rete 50/60 Hz. Devi sapere quanto aspettare prima del prossimo zero. È piuttosto semplice: guardiamo solo la differenza di tempo tra le ultime due interruzioni.
Cambiamento graduale della luminosità. ESP32 è piuttosto lento, ci vogliono 0,5 secondi per elaborare una banale richiesta HTTP o anche WebSocket, quindi non aspettarti una transizione graduale della luminosità, deve essere implementata in qualche modo a livello di dimmer. Ecco perché, quando riceve una nuova luminosità da una porta seriale, si limita a impostare l'obiettivo, per poi avvicinarsi lentamente nel tempo.
La soluzione
Ecco il mio semplice codice Arduino per il dimmer. Attende un comando (un byte con la nuova luminosità) dall'ingresso seriale, gestisce gli interrupt Zero-Cross, controlla il TRIAC, gestendo tutti i problemi di cui sopra.
Passaggio 4: controller della lampada (ESP32)
Ecco lo schema di connessione di tutti i componenti che ho. La scheda ESP32 è molto diversa da quella che uso io (Heltec), quindi i pin scelti sembrano un po' strani, ma dovrebbero comunque funzionare bene. Sentiti libero di usare diversi pin nel tuo progetto.
Ecco il codice che controlla tutto. È abbastanza semplice.
Le caratteristiche principali
Controllabile. La lampada si connette al WiFi, avvia un server WebSocket sulla porta 81, attende i comandi. Il formato del comando è
Per ora sono supportati solo due comandi: "set_brightness" e "update_settings", che sono… piuttosto autodescrittivi.
Ottenere tempo da NTP. Non voglio complicare eccessivamente le cose e aggiungere un orologio in tempo reale allo schema. Abbiamo accesso a Internet, il che significa che possiamo ottenere l'ora reale da un server NTP e quindi tenere traccia dell'ora corrente utilizzando i timer di sistema.
Sveglia alba. È possibile impostare una sveglia. Cosa fa in realtà: inizia con la luminosità minima e passa gradualmente alla massima luminosità nell'arco di 10 minuti. Poi rimane acceso per un paio d'ore. Quindi si spegne gradualmente in 60 secondi.
Tutti i parametri sopra sono configurabili.
Il canto degli uccelli. DFPlayer mini viene utilizzato per riprodurre musica. Ci sono molte guide per questo, ma essenzialmente devi solo collegare una scheda MicroSD, formattata in FAT32, con un file chiamato 0001.mp3. Questo file può avere qualsiasi cosa tu voglia, nel mio caso sono 15 minuti di canto degli uccelli (sarà in loop) e rende la mia mattinata fantastica. Nota che c'è un enorme condensatore sull'alimentazione e resistori da 1 kOhm sulla linea seriale tra ESP32 e DFplayer: sono opzionali, ma aiutano a ridurre il rumore.
Memorizzazione delle impostazioni in EEPROM. Tutte le impostazioni vengono scritte in EEPROM e caricate all'avvio. Consente di utilizzare la lampada con almeno una funzione di allarme senza un controller collegato.
Rendering di alcune informazioni sullo schermo OLED. Il mio Heltec ESP32 ha uno schermo I2C SSD1306 128X64 integrato. Tutte le informazioni essenziali sono rese su di esso. Lo so, la scatola sembra brutta, ho appena stampato in 3D alcune cose e ho tagliato i fori e le finestre con un trapano. Veloce, sporco, ma funziona!
Passaggio 5: pannello di controllo
Questo è il cuore del progetto. Un Raspberry Pi con un display originale da 7 , che esegue un front-end Kivy.
Ecco il codice sorgente completo.
Le caratteristiche
Scritto in Python. Amo Kivy, è un framework Python per interfacce utente. Molto semplice, ma flessibile ed efficiente (utilizza molto codice C all'interno per prestazioni elevate e accelerazione hardware).
Meteo. Mostra la temperatura e la pressione attuali all'esterno. Se si collega un sensore remoto, anche la temperatura interna. Richiede e analizza anche le previsioni del tempo per le 12 ore successive e fornisce un avviso sulla probabilità di pioggia.
Controller SunriseLamp. Un altro pannello visualizza alcune informazioni di base sull'allarme e consente di regolare la luminosità. Se vai nelle impostazioni, puoi configurare qualsiasi parametro della lampada, incluso il programma di allarme, il volume audio massimo e così via.
Screensaver. Rende Game of Life sullo schermo dopo un certo periodo di inattività.
C'era di più, ma altre cose sembravano inutili.
Installazione
Ho installato tutto manualmente su Raspbian e ora posso dire: non ripetere i miei errori. Usa KivyPie, ha tutto preinstallato.
A parte questo, segui la guida all'installazione nel repository del codice.
Passaggio 6: divertiti
Personalmente sono soddisfatto del dispositivo. Lo uso come illuminazione principale a casa durante il giorno e mi fa svegliare la mattina, è fantastico.
So che le istruzioni non sono molto dettagliate e descrittive. Se qualcuno fa la stessa cosa e ha problemi, sarò felice di aiutarti!
Consigliato:
Lampada da tavolo Radio Shack Super-luminosa da $ 14: 8 passaggi (con immagini)
Luce Lego super luminosa da $ 14 Lampada da tavolo Radio Shack: con un piccolo aiuto dal tuo gatto, converti facilmente una lampada da tavolo da $ 14 da Radio Shack in una potente luce Lego con molti usi. Inoltre, puoi alimentarlo tramite CA o USB. Stavo acquistando parti per aggiungere illuminazione a un modello Lego quando l'ho trovato per caso
Lampada ad intensità luminosa Arduino: 3 passaggi
Arduino Light Intensity Lamp: questo circuito può essere utilizzato come una lampada reale, un progetto scolastico e una sfida divertente. Questo circuito è facile da usare e facile da realizzare, ma se non hai mai usato Tinker Cad prima potresti volerlo provare prima
Lampada a intensità luminosa Arduino: 6 passaggi
Lampada a intensità luminosa Arduino: benvenuto nel mio tutorial su come costruire e codificare una lampada a intensità luminosa con un Arduino. Avrai bisogno di questi componenti per costruirlo.* LDR * Microcontrollore Arduino* Lampadina* Relè * Una fonte di alimentazione* Tagliere * Resistenza da 1 k-ohm Speriamo
Lampada a intensità luminosa con Arduino: 3 passaggi
Lampada a intensità luminosa con Arduino: in questo progetto, esploro come utilizzare l'arduino per creare una lampada che cambia a seconda dell'ora del giorno. Su richiesta dell'utente, la lampada cambierà la sua luminosità quando quantificherà o ridurrà la resistenza della LDR-light detection res
Lampada a intensità luminosa Arduino: 5 passaggi
Arduino Light Intensity Lamp: in questo progetto imparerai come accendere automaticamente una lampada quando è buio