Sommario:

Lampada Sunrise controllabile luminosa: 6 passaggi
Lampada Sunrise controllabile luminosa: 6 passaggi

Video: Lampada Sunrise controllabile luminosa: 6 passaggi

Video: Lampada Sunrise controllabile luminosa: 6 passaggi
Video: SwitchBot Color Bulb - La lampadina Smart RBG che ti aspetti! 2024, Luglio
Anonim
Lampada Sunrise controllabile luminosa
Lampada Sunrise controllabile luminosa
Lampada Sunrise controllabile luminosa
Lampada Sunrise controllabile luminosa

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

Serie di lampade
Serie di lampade
Serie di lampade
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

Teoria dell'oscuramento
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

Pratica dell'oscuramento
Pratica dell'oscuramento

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)

Controller lampada (ESP32)
Controller lampada (ESP32)
Controller lampada (ESP32)
Controller 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

Pannello di controllo
Pannello di controllo
Pannello di controllo
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: