Cuprins:

Lampă luminoasă controlabilă a răsăritului: 6 pași
Lampă luminoasă controlabilă a răsăritului: 6 pași

Video: Lampă luminoasă controlabilă a răsăritului: 6 pași

Video: Lampă luminoasă controlabilă a răsăritului: 6 pași
Video: 59. Vlog. Обзор лампы Daylight Luminos E35600. Новые старты? 2024, Iulie
Anonim
Lampă luminoasă de răsărit controlabilă
Lampă luminoasă de răsărit controlabilă
Lampă luminoasă de răsărit controlabilă
Lampă luminoasă de răsărit controlabilă

Te-ai trezit vreodată la 7ish, ora obișnuită de care ai nevoie pentru a te trezi la serviciu și te-ai găsit în întuneric? Iarna este o perioadă groaznică, nu? Trebuie să te trezești în mijlocul nopții (altfel de ce este atât de întuneric?), Te rupi de pe pat și trimite corpul tău semiconștient la duș.

Acest proiect își propune să rezolve una dintre probleme - întunericul dimineții.

Există o mulțime de lămpi de răsărit ieftine în jur, dar toate sunt de putere redusă și palide. Sunt mai mult ca o lampă de noapte, care ar trebui să te facă să dormi mai bine. Nu ceea ce vreau deloc.

În același timp, doar aprinderea luminii puternice vă va trezi imediat, dar nu suficient. Ceea ce vreau este o combinație a ambelor abordări - aprindeți cu o luminozitate redusă, ajungeți încet la viteză maximă, apoi se declanșează o alarmă reală și nu mai aveți atât de somn. Să-i adăugăm un cântec de pasăre și te trezești într-un cer în fiecare dimineață!

Pasul 1: Lamp Array

Lamp Array
Lamp Array
Lamp Array
Lamp Array

În primul rând, avem nevoie de lampa însăși. Am o cameră destul de mare, cu pereți și tavan albi, așa că am optat pentru 7 lămpi cu LED GU10, ceva de genul 6W fiecare, mai mult de 40W de putere pură! Acest lucru este suficient pentru a vă face să vă simțiți deja ca ziua. De asemenea, poate fi folosit ca iluminat obișnuit al camerei în timpul zilei.

Nu contează cu adevărat cum îl asamblați, ce lămpi folosiți cu ce prize. Tot ce contează - acestea trebuie să fie lămpi reglabile!

În cazul meu, am o scândură de lemn cu 7 prize GU10 atașate, toate conectate împreună. O voi pune într-o cutie de plastic mai târziu.

Pasul 2: Teoria estompării

Teoria estompării
Teoria estompării

În teorie nu există nicio diferență între teorie și practică. În practică există.

Controlul unui dimmer din ESP32 / Arduino nu părea a fi atât de simplu pe cât mi-am imaginat. Am unul dintre modulele RobotDyn AC Light Dimmer. Producătorul sugerează o bibliotecă pentru asta. Nu funcționează pe ESP32 (și este foarte greu de adaptat, deoarece folosește o mulțime de acces de registru specific ATMega de nivel scăzut), un fel de lucrări pe Arduino Nano, oferind un pâlpâit îngrozitor la luminozitatea medie. De aceea am petrecut ceva timp investigând cum funcționează totul și îmi fac propriul drum.

Un pic de teorie

Modulul de variație aleasă folosește un TRIAC foarte popular: BTA16. Există o mulțime de articole despre asta. Voi încerca să o rezum aici.

TRIAC este un modul care poate transmite o tensiune de intrare pozitivă sau negativă la ieșire sau o poate bloca. În mod implicit, blochează totul. Pentru a-l deschide, ar trebui să-i dăm un semnal ridicat la intrarea porții pentru 100 de noi. Apoi va rămâne deschis până când curentul scade la zero, ceea ce se întâmplă atunci când o tensiune de intrare schimbă semnul, trecând o tensiune zero. Apoi, în următorul ciclu ar trebui să facem încă 100 de pulsuri și așa mai departe. Alegând când să dea un impuls, controlăm luminozitatea: faceți-o chiar de la început și va fi aproape de 100% transmisie de putere. Faceți-o mai târziu și va fi estompată. Consultați diagrama de mai sus, explicând-o.

Pentru a genera impulsuri în același punct al ciclului, trebuie să știm exact când începe. De aceea, modulul de reglare are un detector Zero-Cross încorporat. Acesta ridică doar un semnal (pe care îl vom prinde ca întrerupere hardware în Arduino) de fiecare dată când tensiunea trece de zero.

Pasul 3: Practica de estompare

Practică de estompare
Practică de estompare

Da, așa te-ai trezi, dacă lampa ta nu are nici o diminuare și îți pune toți cei 40W de putere în ochii tăi somnoroși.

Probleme comune

Există mai multe probleme pe care trebuie să le abordăm.

Pâlpâind.

Momentul microcontrolerului trebuie să fie cu adevărat precis în activarea și dezactivarea ieșirii porții. Biblioteca RobotDyn sugerează, are o întrerupere a temporizatorului la fiecare 100us și modifică nivelul porții numai pe temporizator. Înseamnă că poate fi cu +/- 50 microsecunde în afara valorii optime. Oferă un rezultat bun la o luminozitate ridicată, dar pâlpâie mult la luminozitate scăzută. De asemenea, dacă microcontrolerul face multe lucruri, scade precizia timpului, așa că în mod ideal ar trebui să se utilizeze un microcontroler dedicat pentru dimmer.

Luminozitate minimă. LED-urile au un convertor de putere încorporat, care va refuza doar să funcționeze fără o putere suficientă. Lămpile mele par să funcționeze bine începând cu 10-11%.

Chiar și cu această valoare, unele dintre lămpile mele au refuzat să se aprindă la început. Chiar și atunci când crește luminozitatea mai târziu, ele rămân întunecate. De aceea, când trecem de la starea OFF la o anumită luminozitate pozitivă, începem cu o perioadă de încălzire de 5 cicluri, când acordăm putere maximă lămpilor. Apoi continuăm cu luminozitatea dorită. Este aproape neobservabil, dar chiar ajută.

Frecvența rețelei 50/60 Hz. Trebuie să știi cât să aștepți înainte de următorul zero. Este destul de simplu - ne uităm doar la diferența de timp dintre ultimele două întreruperi.

Schimbare treptată a luminozității. ESP32 este destul de lent, durează 0,5 sec. Pentru a procesa o cerere trivială HTTP sau chiar WebSocket, așa că nu vă așteptați la o tranziție lină a luminozității, trebuie să fie implementat cumva la nivelul mai scăzut. De aceea, atunci când primește o nouă luminozitate de la un port serial, doar stabilește ținta și apoi se apropie încet de ea în timp.

Soluția

Iată codul meu simplu Arduino pentru dimmer. Așteptă o comandă (un octet cu noua luminozitate) de la intrarea serială, gestionează întreruperile Zero-Cross, controlează TRIAC, gestionând toate problemele de mai sus.

Pasul 4: Controler de lampă (ESP32)

Controler lampă (ESP32)
Controler lampă (ESP32)
Controler lampă (ESP32)
Controler lampă (ESP32)

Iată schema de conexiune a tuturor componentelor pe care le am. Placa ESP32 este foarte diferită de ceea ce folosesc eu (Heltec), așa că pinii aleși arată puțin ciudat, dar ar trebui să funcționeze în continuare bine. Simțiți-vă liber să utilizați diferite pini în proiectul dvs.

Iată codul care controlează totul. Este destul de simplu.

Principalele caracteristici

Controlabil. Lampa se conectează la WiFi, pornește un server WebSocket pe portul 81, așteaptă comenzile. Formatul comenzii este

Doar două comenzi sunt acceptate pentru moment: „set_brightness” și „update_settings”, care sunt … destul de autodescriptive.

Obținerea timpului de la NTP. Nu vreau să complic prea mult lucrurile și să adaug un ceas în timp real la schemă. Avem acces la Internet, ceea ce înseamnă că putem obține timpul real de la un server NTP și apoi să urmărim ora curentă folosind cronometrele sistemului.

Sunrise Alarm. Puteți seta o singură alarmă. Ceea ce face de fapt: începe cu luminozitatea minimă și trece treptat la luminozitatea maximă timp de 10 minute. Apoi, rămâne aprins câteva ore. Apoi se oprește treptat peste 60 de secunde.

Toți parametrii de mai sus sunt configurabili.

Păsările cântând. DFPlayer mini este folosit pentru a reda muzică. Există o mulțime de ghiduri pentru aceasta, dar în esență trebuie doar să conectați un card MicroSD, formatat în FAT32, cu un fișier numit 0001.mp3. Acest fișier poate avea orice îți place, în cazul meu, sunt 15 minute de cântări de păsări (va fi în buclă) și îmi face dimineața uimitoare. ESP32 și DFplayer - sunt opționale, dar ajută la reducerea zgomotului.

Stocarea setărilor în EEPROM. Toate setările sunt scrise în EEPROM și încărcate la pornire. Face posibilă utilizarea lămpii cu cel puțin o caracteristică de alarmă fără un controler conectat.

Redarea unor informații pe ecranul OLED. Heltec ESP32 are un ecran SSD1306 128X64 I2C încorporat. Toate informațiile esențiale sunt redate pe ea. Știu, cutia pare urâtă, tocmai am imprimat 3D câteva lucruri și am tăiat găurile și ferestrele cu un burghiu. Rapid, murdar, dar funcționează!

Pasul 5: Panou de control

Panou de control
Panou de control
Panou de control
Panou de control

Aceasta este inima proiectului. Un Raspberry Pi cu un afișaj original de 7 , care rulează unele front-end Kivy.

Iată codul sursă complet.

Caracteristicile

Scris în Python. Îmi place Kivy, este un cadru Python pentru interfețele utilizatorului. Foarte simplu, dar flexibil și eficient (folosește o mulțime de cod C în interior pentru performanțe ridicate și accelerare hardware).

Vreme Afișați temperatura și presiunea curentă în exterior. Dacă conectați un senzor de la distanță - de asemenea, temperatura interioară. De asemenea, solicită și analizează prognoza meteo pentru următoarele 12 ore și oferă un sfat cu privire la probabilitatea de ploaie.

Controler SunriseLamp. Un alt panou afișează câteva informații de bază despre alarmă și vă permite să reglați luminozitatea. Dacă accesați setările, puteți configura orice parametru al lămpii, inclusiv programul de alarmă, volumul audio maxim și așa mai departe.

Screensaver. Renders Game of Life pe ecran după o perioadă de inactivitate.

Existau mai mult de atât, dar alte lucruri păreau a fi inutile.

Instalare

Am instalat totul manual pe Raspbian și acum pot spune: nu-mi repeta greșelile. Folosiți KivyPie, are totul preinstalat.

În afară de asta, trebuie doar să urmați ghidul de instalare din depozitul de coduri.

Pasul 6: Bucurați-vă

Personal sunt mulțumit de dispozitiv. Îl folosesc ca iluminat principal acasă în timpul unei zile și mă lasă să mă trezesc dimineața, este uimitor.

Știu că instrucțiunile nu sunt foarte granulare și descriptive. Dacă cineva face același lucru și are probleme - voi fi bucuros să vă ajut!

Recomandat: