Cuprins:

Fără lampă albastră: 4 pași
Fără lampă albastră: 4 pași
Anonim
Fără lampă albastră
Fără lampă albastră
Fără lampă albastră
Fără lampă albastră
Fără lampă albastră
Fără lampă albastră
Fără lampă albastră
Fără lampă albastră

Deci, acest Lazy Old Geek (L. O. G.) a lucrat la un proiect de lumină albastră:

www.instructables.com/id/Blue-Light-Projec…

www.instructables.com/id/Blue-Light-Projec…

Ei bine, pentru următorul pas am vrut o lampă care să fie luminoasă în timpul zilei și să nu aibă lumină albastră seara / noaptea.

Hardware de proiectare:

Am decis să folosesc un RTC (Real Time Clock) pentru a controla orele pentru schimbările de lumină.

Am ales DS3231 deoarece are o precizie mai bună de păstrare a timpului decât DS1307. DS3231 poate fi de 5v sau 3,3v.

Pentru lumină, voi folosi un șir LED WS2812B. Acestea au o interfață simplă cu trei fire și LED-uri controlabile roșu, verde și albastru. WS2812B sunt dispozitive de 5V.

Pentru microcontroler voi folosi un Pro Micro, 5v 16MHz.

În timp ce WS2812B va funcționa probabil cu 3.3V, este mai bine să folosiți un Arduino de 5V.

Pro Micro este un Arduino ieftin care folosește un microcontroler Atmega32U4.

Lampa va avea un comutator de pornire / oprire pentru a porni sau opri lampa.

Va exista un potențiometru pentru a controla luminozitatea.

Software de proiectare:

DS3231 RTC ar controla sincronizarea, are baterie de rezervă, așa că ar trebui să păstreze timpul chiar dacă se pierde curentul.

În timpul zilei, toate LED-urile RGB ar fi aprinse, controlabile de pot până la intensitate maximă.

Seara devreme, LED-urile albastre vor fi stinse, roșu și verde aprins max.

Pe măsură ce progresează seara, LED-urile roșii și verzi se vor estompa, cu preferința roșu față de verde (testele mele din partea 2 sugerează că LED-urile verzi au un anumit albastru).

După aproximativ 10p.m. toate LED-urile vor fi stinse.

PROBLEMĂ:

Înapoi la modulul DS3231 RTC, am cumpărat-o pe a mea de la Aliexpress, așa cum am făcut pentru celelalte componente.

Acestea ar trebui să funcționeze și să încarce o baterie reîncărcabilă LIR2032. Am încercat-o. După aproximativ o zi, bateria era descărcată.

Ei bine, după câteva căutări pe Internet, am găsit acest articol.

www.onetransistor.eu/2019/07/zs042-ds3231-…

Sunt de acord cu această analiză, dar am crezut că LIR2032 se va încărca în mod adecvat, dar nu excesiv. Se pare că m-am înșelat. DS3231 al meu, deși marcat și ca ZS-042, ca în articol, a fost ușor diferit de al său, dar aproape la fel. Așa că am desoldat dioda văzută în imagine și am instalat o baterie CR2032. Fără diodă, modulul nu va încerca să încarce bateria. Acum, DS3231 ține timpul corect chiar și cu puterea deconectată, iar bateria ar trebui să fie bună timp de mulți ani.

Cerinte de putere:

WS2812B este un șir de LED-uri RGB numite uneori numite NeoPixels. Fiecare NeoPixel necesită maximum 60mA. Folosesc 12 Neo Pixeli, așa că am nevoie de 0.72A. Folosesc un adaptor USB 2A, astfel încât să aveți mult curent.

Pasul 1: PCB BlueLamp

PCB BlueLamp
PCB BlueLamp
PCB BlueLamp
PCB BlueLamp

Deci, așa cum fac de obicei, am folosit software-ul gratuit Eagle Cadsoft (acum Autodesk) pentru a aranja și a crea PCB-ul meu.

www.autodesk.com/products/eagle/free-downl…

Schema Eagle și fișierele de bord sunt atașate împreună cu schema într-o imagine.

Un comentariu despre schemă, rezistorul de 330 ohm și condensatorul de 10 000 uFd sunt recomandări ale ghidului Adafruit pentru neopixeli:

learn.adafruit.com/adafruit-neopixel-uberg…

Butonul de comutare pe care l-am folosit „Comutator cu buton cu lanternă” a fost de aici:

www.aliexpress.com/item/32904942704.html?s…

Potențiometrul 10K (B103) de aici:

www.aliexpress.com/item/32672253655.html?s…

Pasul 2: Asamblarea lămpii

Asamblarea lămpii
Asamblarea lămpii
Asamblarea lămpii
Asamblarea lămpii

Am întâmplat să am o bază grea de la o lampă pe care am cumpărat-o. Avea un știft rotund mare. Am luat o bucată de țeavă din PVC care se potrivea peste ea. Era puțin slăbit, așa că am luat un șurub și câteva piulițe pentru a-l putea strânge. (Vezi poza)

WS2812B poate fi tăiat în numărul de NeoPixeli dorit. Banda pe care am cumpărat-o are spații largi între NeoPixels. Am vrut să fie puțin mai strălucitor, așa că am tăiat două 6 benzi NeoPixel și le-am rulat în paralel ușor decalate. Fâșiile WS2812B pot fi tăiate între NeoPixels. În acest caz, aveam nevoie de o schimbare de 180 de grade, așa că am tăiat banda și am trecut cabluri jumper între ele. Dacă faceți acest lucru, asigurați-vă că semnalele și săgețile de direcție sunt corecte. (Vezi imaginea)

Acest WS2812B are și fire și un conector (acest conector este un conector 3 pini JST-SM dacă doriți să-l utilizați în altă parte). Deoarece acest conector era deja acolo, tocmai am lipit firele la PCB-ul meu. Pentru acest WS2812B firul roșu este de 5v, verde este semnal și albul este împământat.

Odată ce am făcut PCB-ul, am pus niște bandă pe fund și am lipit-o de bază. Apoi am conectat Pro Micro și DS3231.

Pasul 3: Arduino Sketch

Schiță Arduino
Schiță Arduino

Deși mi-am achiziționat Pro Micro de pe Aliexpress.com, am folosit următoarele informații pentru ca Arduino să funcționeze:

learn.sparkfun.com/tutorials/pro-micro--fi…

Pentru a instala biblioteca pentru DS3231, o folosesc pe aceasta:

github.com/PaulStoffregen/DS1307RTC

Descărcați fișierul Zip

Deschideți Arduino, selectați „Sketch” „Include Library” „Add.zip library”

Instalați următoarele utilizați aceeași metodă

Biblioteca de timp PaulStoffregen

github.com/PaulStoffregen/Time

Biblioteca Timezone

github.com/JChristensen/Timezone

După finalizare, porniți Arduino.

Sub Instrumente, selectați „Sparkfun Pro Micro”

Faceți clic din nou pe Instrumente, va exista o selecție pentru procesor

Poate fi necesar să îl schimbați „Atmega32U4 (5V 16Mhz)”

AVERTISMENT: Dacă ești neglijent ca mine, am selectat „Atmega32U4 (3.3V 8Mhz)” din greșeală. Acest lucru l-a „zidit”, astfel încât Arduino nu a putut să-l vadă. Ei bine, de obicei încerc să citesc lucruri noi înainte de a le obține și să-mi amintesc ceva despre acest lucru:

learn.sparkfun.com/tutorials/pro-micro--fi…

În acest ghid, există o secțiune numită „Cum să reînvie un Pro Micro„ Bricked”Pro. După cum se menționează, este o procedură dificilă, dar am reușit să o recuperez pe a mea.

FYI: Dacă vă întrebați de ce există două versiuni cu tensiuni și viteze diferite, Atmega32U4 (la fel ca Atmega328) va funcționa bine la 5V cu un ceas de 16 MHz. Dar la 3,3 V, specificațiile de proiectare spun că ceasul de 16 MHz nu va funcționa, de aceea au ceasul la 8 MHz. În general, vorbirea despre software-ul Arduino se va ocupa de orice problemă de sincronizare.

SFAT RTC: Majoritatea software-urilor scrise pentru DS1307 vor funcționa cu DS3231 deoarece au un software foarte similar.

Ora de vară

Ei bine, am vrut să implementez DST, așa că nu a trebuit să-mi reprogramez lampa de două ori pe an. Am lucrat la asta câteva zile. Nu am putut găsi explicații simple și bune despre modul în care au funcționat Time, TimeLib și RTClib.

De fapt, am scris un cod DST pentru IPClock:

www.instructables.com/id/NO-MORE-SPRING-FO…

care a funcționat pentru timpul de internet, dar nu am reușit să funcționeze pentru timpul RTC.

În cele din urmă, am dat peste JChristensen:

forum.arduino.cc/index.php?topic=96891.0

github.com/JChristensen/Timezone

Pentru a utiliza acest lucru, trebuie mai întâi să setați RTC la UTC (Timpul universal coordonat), aceasta este ora în Greenwich, Anglia. Ei bine, nu știam cum să fac asta, dar am găsit acest articol:

www.justavapor.com/archives/2482

Rescrieți-l pentru ora Mountain (atașat) UTCtoRTC.ino

Apoi am încorporat fusul orar în schița mea. Sincer să fiu, nu l-am testat așa doar presupunând că funcționează.

Schița mea este atașată MTS_BlueLamp.ino.

Pasul 4: Concluzie

Concluzie
Concluzie

Am făcut un mic cârlig în partea de sus pentru masca mea de față CPAP. Obișnuiam să-l agăț de vechea mea lampă de pat.

Practic foarte mulțumit de această lampă. Complet luminos în timpul zilei și fără albastru seara și noaptea.

Un lucru care nu-mi place este că nu îl pot folosi după ora 10 p.m. și înainte de 5a.m.

Am constatat, de asemenea, că nu folosesc comutatorul pornit / oprit, deoarece de obicei folosesc doar comutatorul dimmer.

În viitor, pot rescrie schița și pot schimba butonul la comutatorul programat sau neprogramat (pornit complet). Dar, cu abilitățile mele slabe de codare, aș putea aștepta un timp.

Recomandat: