Taula de continguts:

Llum de control de sol brillant i controlable: 6 passos
Llum de control de sol brillant i controlable: 6 passos

Vídeo: Llum de control de sol brillant i controlable: 6 passos

Vídeo: Llum de control de sol brillant i controlable: 6 passos
Vídeo: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, Juliol
Anonim
Llum de sortida de sol brillant i controlable
Llum de sortida de sol brillant i controlable
Llum de sortida de sol brillant i controlable
Llum de sortida de sol brillant i controlable

Alguna vegada us heu despertat a les 7 anys, el temps habitual que necessiteu per despertar-vos per treballar i us heu trobat a les fosques? L’hivern és un moment terrible, oi? Cal despertar-se a mitja nit (en cas contrari, per què és tan fosc?), Arrencar-se del llit i enviar el cos semiconscient a la dutxa.

Aquest projecte pretén resoldre un dels problemes: la foscor del matí.

Hi ha moltes làmpades de sortida del sol barates, però totes són de poca potència i pàl·lides. Són més com un llum de nit, que se suposa que us farà dormir millor. No és el que vull en absolut.

Al mateix temps, només encendre la llum brillant us despertarà immediatament, però no amb prou suavitat. El que vull és una combinació d'ambdós enfocaments: il·luminar amb poca brillantor, arribar lentament a la màxima velocitat, després s'activa una alarma real i ja no tens tanta son. Afegim-hi una cançó d’ocells i cada matí et lleves al cel!

Pas 1: matriu de làmpades

Lamp Array
Lamp Array
Lamp Array
Lamp Array

En primer lloc, necessitem la làmpada mateixa. Tinc una habitació bastant gran amb parets i sostres blancs, així que vaig optar per 7 làmpades LED GU10, de 6W cadascuna, amb més de 40W de potència pura. N’hi ha prou per fer-vos sentir que ja és de dia. També es pot utilitzar com a il·luminació habitual de l'habitació durant el dia.

Realment no importa com el munteu, quines làmpades utilitzeu i quins endolls. Tot el que importa: han de ser làmpades regulables.

En el meu cas, tinc un tauló de fusta amb 7 endolls GU10 connectats, connectats tots junts. Més endavant el posaré en una caixa de plàstic.

Pas 2: Teoria de l’enfosquiment

Teoria de l’enfosquiment
Teoria de l’enfosquiment

En teoria no hi ha diferència entre teoria i pràctica. A la pràctica n’hi ha.

Controlar un regulador d’intensitat d’ESP32 / Arduino no semblava tan senzill com imaginava. Tinc un dels mòduls de regulador de llum AC de RobotDyn. El fabricant suggereix una biblioteca per a això. No funciona a ESP32 (i és molt difícil d’adaptar, ja que utilitza un munt d’accés de registre específic ATMega de baix nivell), funciona a Arduino Nano, donant un parpelleig terrible a la brillantor mitjana baixa. És per això que vaig dedicar un temps a investigar com funciona tot i a fer el meu camí.

Una mica de teoria

El mòdul dimmer escollit utilitza un TRIAC molt popular: BTA16. Hi ha molts articles al respecte. Intentaré resumir-ho aquí.

TRIAC és un mòdul que pot transmetre una tensió positiva o negativa d’entrada a la sortida o pot bloquejar-la. Per defecte, ho bloqueja tot. Per obrir-lo, hauríem de donar-li un senyal elevat a l'entrada de la porta per 100 us. Després, romandrà obert fins que el corrent caigui a zero, cosa que passa quan una tensió d’entrada canvia el signe, creuant una tensió zero. Aleshores, al següent cicle hauríem de fer un altre pols de 100 us, etc. En triar quan donar un pols, controlem la brillantor: feu-ho al principi, i s’acostarà al 100% de la transmissió de potència. Feu-ho més tard i quedarà atenuat. Mireu el diagrama anterior explicant-lo.

Per generar impulsos en el mateix punt del cicle, hem de saber exactament quan comença. És per això que el mòdul de regulador té un detector de creu zero integrat. Simplement genera un senyal (que capturarem com a interrupció de maquinari a Arduino) cada vegada que la tensió creua zero.

Pas 3: pràctica d’enfosquiment

Pràctica d’enfosquiment
Pràctica d’enfosquiment

Sí, és així com et despertaries si el llum no té atenuació i posa els 40W de potència als teus ulls adormits.

Problemes comuns

Hi ha diversos problemes que hem d’abordar.

Parpelleig.

El temps del microcontrolador ha de ser realment precís per activar i desactivar la sortida de la porta. La biblioteca RobotDyn suggereix, té una interrupció del temporitzador cada 100us i canvia el nivell de la porta només en el temporitzador. Vol dir que pot estar a +/- 50 microsegons del valor òptim. Dóna un bon resultat amb una brillantor elevada, però parpelleja molt amb una brillantor baixa. A més, si el microcontrolador fa moltes coses, disminueix la precisió del temps, de manera que idealment s’hauria d’utilitzar un microcontrolador dedicat per al regulador.

Brillantor mínima: els LED tenen un convertidor de potència incorporat, que només es negarà a treballar sense tenir prou energia. Les meves làmpades semblaven funcionar bé a partir del 10-11%.

Fins i tot amb aquest valor, algunes de les meves làmpades es van negar a encendre-se a l’arrencada. Fins i tot quan augmenten la brillantor més tard, es mantenen fosques. Per això, quan passem de l’estat OFF a una brillantor positiva, comencem amb un període d’escalfament de 5 cicles, quan donem plena potència a les làmpades. Després continuem amb la brillantor desitjada. És gairebé inapreciable, però realment ajuda.

Freqüència de xarxa de 50/60 Hz. Cal saber quant cal esperar abans del zero següent. És bastant senzill: només observem la diferència horària entre les dues darreres interrupcions.

Canvi de brillantor gradual: l’ESP32 és bastant lent, triga 0,5 segons a processar una petita trivial HTTP o fins i tot una sol·licitud WebSocket, així que no espereu una transició de brillantor suau, s’ha d’implementar d’alguna manera al nivell més feble. És per això que, quan rep una nova brillantor des d’un port sèrie, només defineix l’objectiu i després s’acosta lentament amb el pas del temps.

La solució

Aquí teniu el meu senzill codi Arduino per al regulador. S'espera una ordre (un byte amb la nova brillantor) de l'entrada serial, gestiona les interrupcions Zero-Cross, controla el TRIAC, gestionant tots els problemes anteriors.

Pas 4: controlador de làmpada (ESP32)

Controlador de làmpada (ESP32)
Controlador de làmpada (ESP32)
Controlador de làmpada (ESP32)
Controlador de làmpada (ESP32)

Aquí teniu l’esquema de connexió de tots els components que tinc. La placa ESP32 és molt diferent a la que faig servir jo (Heltec), de manera que els pins triats semblen una mica estranys, però encara hauria de funcionar bé. No dubteu a utilitzar diferents pins al vostre projecte.

Aquí teniu el codi que ho controla tot. És força senzill.

Les principals característiques

Controlable: el llum es connecta a WiFi, inicia un servidor WebSocket al port 81, espera les ordres. El format de l’ordre és

De moment només s’admeten dues ordres: "set_brightness" i "update_settings", que són … bastant autodescriptives.

Obtenir temps des de NTP. No vull complicar massa les coses i afegir un rellotge en temps real a l’esquema. Tenim accés a Internet, cosa que significa que podem obtenir el temps real d'algun servidor NTP i després fer un seguiment de l'hora actual mitjançant els temporitzadors del sistema.

Alarma de sortida del sol: podeu configurar una alarma. El que realment fa: comença amb la brillantor mínima i va gradualment a la brillantor màxima durant 10 minuts. Després es queda un parell d’hores encès. Després s’apaga gradualment durant 60 segons.

Tots els paràmetres anteriors són configurables.

Birds singing. DFPlayer mini s’utilitza per reproduir música. Hi ha moltes guies per fer-ho, però bàsicament només cal connectar una targeta MicroSD, formatada a FAT32, amb un fitxer anomenat 0001.mp3. Aquest fitxer pot tenir qualsevol cosa que vulgueu, en el meu cas són 15 minuts cantant d’ocells (es farà un bucle) i fa que el meu matí sigui increïble. Tingueu en compte que hi ha un condensador enorme a la potència i resistències d’1 kOhm a la línia serial ESP32 i DFplayer: són opcionals, però ajuden a reduir el soroll.

Emmagatzematge dels paràmetres a EEPROM. Tots els paràmetres s’escriuen a EEPROM i es carreguen a l’inici. Permet utilitzar la làmpada amb almenys una funció d'alarma sense un controlador connectat.

Representant informació a la pantalla OLED. El meu Heltec ESP32 té una pantalla SSD1306 128X64 I2C integrada. Hi apareix tota la informació essencial. Ja ho sé, la caixa sembla lletja, acabo d’imprimir en 3D algunes coses i he tallat els forats i les finestres amb un trepant. Ràpid, brut, però funciona!

Pas 5: Tauler de control

Panell de control
Panell de control
Panell de control
Panell de control

Aquest és el cor del projecte. Un Raspberry Pi amb una pantalla original de 7 polzades, amb un frontal Kivy.

Aquí teniu el codi font complet.

Les característiques

Escrit a Python. M’encanta Kivy, és un marc de Python per a interfícies d’usuari. Molt senzill, però flexible i eficaç (utilitza molts codis C a l'interior per a un alt rendiment i acceleració del maquinari).

Temps: mostra la temperatura i la pressió actuals a l’exterior. Si connecteu un sensor remot, també a la temperatura interior, també sol·liciteu i analitzeu la previsió meteorològica durant les següents 12 hores i us aviseu sobre la probabilitat de pluja.

Controlador SunriseLamp. Un altre panell mostra informació bàsica sobre l'alarma i us permet ajustar la brillantor. Si aneu a la configuració, podeu configurar qualsevol paràmetre de la làmpada, inclosa la programació de l'alarma, el volum màxim d'àudio, etc.

Screensaver. Renders Game of Life a la pantalla després d'un període d'inactivitat.

Abans n’hi havia més, però semblaven inútils altres coses.

Instal·lació

Ho he instal·lat tot manualment a Raspbian i ara puc dir: no repetiu els meus errors. Utilitzeu el KivyPie, ja ho té tot preinstal·lat.

A part d’això, només cal que seguiu la guia d’instal·lació del dipòsit de codis.

Pas 6: gaudiu

Personalment estic satisfet amb el dispositiu. L’utilitzo com a il·luminació principal a casa durant un dia i em deixa despertar al matí, és increïble.

Sé que les instruccions no són molt detallades i descriptives. Si algú fa el mateix i té problemes, estaré encantat d'ajudar-lo.

Recomanat: