Cuprins:
- Pasul 1: Lamp Array
- Pasul 2: Teoria estompării
- Pasul 3: Practica de estompare
- Pasul 4: Controler de lampă (ESP32)
- Pasul 5: Panou de control
- Pasul 6: Bucurați-vă
Video: Lampă luminoasă controlabilă a răsăritului: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
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
Î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
Î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
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)
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
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:
Cum se instalează o lampă frontală AGS-001 controlabilă într-un Game Boy Advance original (fără LOCA!): 5 pași (cu imagini)
Cum se instalează un far AGS-001 controlabil într-un Game Boy Advance original (fără LOCA!): Căutați să luminați vechiul ecran Game Boy Advance. Nu poți găsi acele kituri IPS cu iluminare din spate, noi, nicăieri, iar vechile kituri AGS-101 sunt epuizate sau sunt supraevaluate. În plus, vrei să poți vedea ecranul în timp ce ești afară
Lampă de intensitate luminoasă Arduino: 3 pași
Lampă de intensitate luminoasă Arduino: acest circuit poate fi folosit ca lampă reală, proiect școlar și o provocare distractivă. Acest circuit este ușor de utilizat și ușor de realizat, dar dacă nu ați folosit tinker cad înainte de a vă putea dori să îl încercați mai întâi
Lampă de intensitate luminoasă Arduino: 6 pași
Lampă Arduino Light Intensity: Bine ați venit la tutorialul meu despre cum să construiți și să codificați o lampă Light Intensity cu un Arduino. Veți avea nevoie de aceste componente pentru a construi acest lucru. * LDR * Microcontroler Arduino * Bec * Releu * O sursă de alimentare * Panou de rezistență * rezistor de 1 k-ohm Sperăm că
Lampă cu intensitate luminoasă W / Arduino: 3 pași
Lampă cu intensitate luminoasă W / Arduino: În acest proiect, explorez cum să folosesc arduino pentru a crea o lampă care se schimbă în funcție de momentul zilei. La cererea utilizatorului, lampa își va schimba luminozitatea atunci când cuantifică sau reduce rezistența rezistenței luminii de detectare a luminii LDR
Lampă de intensitate luminoasă Arduino: 5 pași
Lampă de intensitate luminoasă Arduino: în acest proiect veți învăța cum să porniți automat o lampă când este întunecată