Sadržaj:

Svijetla lampa za izlazak sunca koja se može kontrolirati: 6 koraka
Svijetla lampa za izlazak sunca koja se može kontrolirati: 6 koraka

Video: Svijetla lampa za izlazak sunca koja se može kontrolirati: 6 koraka

Video: Svijetla lampa za izlazak sunca koja se može kontrolirati: 6 koraka
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Novembar
Anonim
Svijetla lampa za izlazak sunca koja se može kontrolirati
Svijetla lampa za izlazak sunca koja se može kontrolirati
Svijetla lampa za izlazak sunca koja se može kontrolirati
Svijetla lampa za izlazak sunca koja se može kontrolirati

Jeste li se ikada probudili u 7 sati, uobičajeno vrijeme koje vam je potrebno da se probudite za posao, i zatekli ste se u mraku? Zima je užasno vrijeme, zar ne? Morate se probuditi usred noći (inače zašto je tako mračno?), Istrgnuti se s kreveta i poslati svoje polusvjesno tijelo pod tuš.

Ovaj projekt ima za cilj riješiti jedno od pitanja - jutarnji mrak.

U okolini ima mnogo jeftinih svjetiljki za izlazak sunca, ali sve su slabe snage i blijede. Više su poput noćne lampe, koja bi trebala učiniti da bolje spavate. Uopšte nije ono što želim.

U isto vrijeme, samo uključivanje jakog svjetla odmah će vas probuditi, ali ne dovoljno nježno. Ono što želim je kombinacija oba pristupa - upalite s niskom svjetlinom, polako dođite do pune brzine, zatim se oglasi pravi alarm i više niste tako pospani. Dodajmo tome malo ptičje pjesme i svako jutro se budiš na nebu!

Korak 1: Niz lampi

Lamp Array
Lamp Array
Lamp Array
Lamp Array

Prije svega, potrebna nam je sama lampa. Imam prilično veliku sobu s bijelim zidovima i stropom, pa sam se odlučio za 7 LED žarulja GU10, nešto poput 6 W svaka, više od 40 W čiste snage! To je dovoljno da se osjećate kao da je već dan. Takođe se može koristiti kao uobičajeno osvjetljenje prostorije tokom dana.

Nije važno kako ga sastavljate, koje svjetiljke koristite s kojim utičnicama. Sve što je važno - ovo moraju biti prigušive svjetiljke!

U mom slučaju imam drvenu dasku sa 7 utičnica GU10, sve spojene zajedno. Kasnije ću ga staviti u plastičnu kutiju.

Korak 2: Teorija zatamnjenja

Teorija zatamnjivanja
Teorija zatamnjivanja

U teoriji nema razlike između teorije i prakse. U praksi postoji.

Upravljanje prigušivačem s ESP32/Arduina nije izgledalo tako jednostavno kao što sam zamišljao. Dobio sam jedan od RobotDyn AC Light Dimmer modula. Proizvođač za to predlaže biblioteku. Ne radi na ESP32 (i stvarno ga je teško prilagoditi jer koristi mnogo pristupa registru specifičnom za ATMega), na neki način radi na Arduino Nano, dajući užasno treperenje pri niskoj i srednjoj svjetlini. Zato sam proveo neko vrijeme istražujući kako to sve funkcionira i snašao se.

Malo teorije

Odabrani modul zatamnjivanja koristi vrlo popularan TRIAC: BTA16. Postoji mnogo članaka o tome. Pokušat ću to ovdje sažeti.

TRIAC je modul koji može prenijeti ulazni pozitivni ili negativni napon na izlaz ili ga može blokirati. Standardno blokira sve. Da bismo ga otvorili, trebali bismo mu dati visok signal na ulazu vrata za 100 us. Tada će ostati otvoren sve dok struja ne padne na nulu, što se događa kada ulazni napon promijeni znak, prelazeći nulti napon. Zatim bismo u sljedećem ciklusu trebali raditi još 100 us pulsa i tako dalje. Odabirom vremena davanja pulsa kontroliramo svjetlinu: učinite to na samom početku i bit će blizu 100% prijenosa energije. Učinite to kasnije i bit će prigušeno. Pogledajte gornji dijagram, objašnjavajući ga.

Da bismo generirali impulse u istoj točki ciklusa, moramo znati točno kada počinje. Zato modul za prigušivanje ima ugrađen detektor nultog križa. On samo podiže signal (koji ćemo uhvatiti kao hardverski prekid u Arduinu) svaki put kada napon pređe nulu.

Korak 3: Vježba zatamnjivanja

Praksa zatamnjivanja
Praksa zatamnjivanja

Da, tako biste se probudili ako vaša lampa nema zatamnjenje i uloži svih 40 W snage u vaše pospane oči.

Uobičajena pitanja

Postoji više pitanja koja moramo riješiti.

Treperenje.

Vremenski raspored mikrokontrolera mora biti zaista precizan pri uključivanju i isključivanju izlaza kapije. Biblioteka koju RobotDyn predlaže ima prekid timera svakih 100us i mijenja nivo kapije samo na tajmeru. To znači da može biti +/- 50 mikrosekundi izvan optimalne vrijednosti. Daje dobre rezultate pri visokoj svjetlini, ali jako treperi pri niskoj svjetlini. Također, ako mikrokontroler radi mnogo stvari, smanjuje se točnost vremena, pa bi idealno bilo da se za prigušivač koristi namjenski mikrokontroler.

Minimalna svjetlina. LED diode imaju ugrađen pretvarač napajanja, koji jednostavno neće raditi ako nema dovoljno energije. Činilo se da su moje lampe radile dobro počevši od 10-11%.

Čak i sa ovom vrijednošću, neke moje lampe su odbile da se upale pri startu. Čak i kad kasnije povećaju svjetlinu, ostaju tamni. Zato, kada pređemo iz stanja OFF na neku pozitivnu svjetlinu, počinjemo s periodom zagrijavanja od 5 ciklusa, kada lampama dajemo punu snagu. Zatim nastavljamo sa željenom svjetlinom. To je gotovo neprimjetno, ali zaista pomaže.

50/60 Hz mrežna frekvencija. Morate znati koliko čekati prije sljedeće nule. Prilično je jednostavno - samo gledamo vremensku razliku između dva posljednja prekida.

Postepena promjena svjetline. ESP32 je prilično spor, potrebno je 0,5 sekundi za obradu trivijalnog HTTP ili čak WebSocket zahtjeva, pa ne očekujte gladak prijelaz svjetline, potrebno ga je nekako implementirati na razini prigušivača. Zato, kada dobije novu svjetlinu sa serijskog porta, samo postavlja cilj, a zatim mu se polako približava s vremenom.

Rjesenje

Evo mog jednostavnog Arduino koda za prigušivač. Čeka naredbu (jedan bajt s novom svjetlinom) sa serijskog ulaza, obrađuje Zero-Cross prekide, kontrolira TRIAC, rješavajući sve gore navedene probleme.

Korak 4: Kontroler lampe (ESP32)

Kontroler lampe (ESP32)
Kontroler lampe (ESP32)
Kontroler lampe (ESP32)
Kontroler lampe (ESP32)

Evo sheme povezivanja svih komponenti koje imam. Ploča ESP32 se uvelike razlikuje od one koju ja koristim (Heltec), pa odabrane iglice izgledaju pomalo čudno, ali bi i dalje trebale raditi. U svom projektu slobodno koristite različite pinove.

Evo koda koji sve kontrolira. Prilično je jednostavno.

Glavne karakteristike

Lampica se povezuje na WiFi, pokreće WebSocket server na portu 81, čeka naredbe. Format naredbe je

Za sada su podržane samo dvije naredbe: "set_brightness" i "update_settings", koje su… prilično samoodržive.

Dobivanje vremena od NTP-a. Ne želim previše komplicirati stvari i dodavati sat u stvarnom vremenu u shemu. Imamo pristup internetu, što znači da možemo dobiti realno vrijeme sa nekog NTP servera, a zatim pratiti sistemsko vrijeme pomoću trenutnih mjerača vremena.

Alarm za izlazak sunca. Možete postaviti jedan alarm. Ono što zapravo radi: počinje s minimalnom svjetlinom i postupno prelazi u punu svjetlinu tijekom 10 minuta. Zatim ostaje na par sati. Zatim se postupno isključuje tijekom 60 sekundi.

Svi gornji parametri se mogu konfigurirati.

Ptice pjevaju. DFPlayer mini se koristi za reprodukciju muzike. Postoji mnogo vodiča za to, ali u suštini samo trebate priključiti MicroSD karticu, formatiranu u FAT32, s jednom datotekom koja se zove 0001.mp3. Ovaj fajl može imati sve što vam se sviđa, u mom slučaju to je 15 minuta ptičjeg pjevanja (bit će petljasto), a moje jutro čini nevjerojatnim. Imajte na umu da je na snazi veliki kondenzator, a otpornici od 1 kOhm na serijskoj liniji između ESP32 i DFplayer - opcionalni su, ali pomažu u smanjenju buke.

Pohranjivanje postavki u EEPROM. Sve postavke se zapisuju u EEPROM i učitavaju pri pokretanju. Omogućava upotrebu lampe sa barem alarmnom funkcijom bez priključenog kontrolera.

Prikazivanje nekih informacija na OLED ekranu. Moj Heltec ESP32 ima ugrađeni SSD1306 128X64 I2C ekran. Na njemu su prikazane sve bitne informacije. Znam, kutija izgleda ružno, upravo sam 3D ispisao neke stvari i bušilicom izrezao rupe i prozore. Brzo, prljavo, ali radi!

Korak 5: Kontrolna tabla

Kontrolna tabla
Kontrolna tabla
Kontrolna tabla
Kontrolna tabla

To je srce projekta. Raspberry Pi sa originalnim ekranom od 7 inča, sa nekim Kivy prednjim delom.

Evo cijelog izvornog koda.

Karakteristike

Napisano na Pythonu. Volim Kivy, to je Python okvir za korisnička sučelja. Vrlo jednostavno, ali fleksibilno i efikasno (koristi puno C koda za visoke performanse i hardversko ubrzanje).

Vrijeme. Prikažite trenutnu temperaturu i pritisak vani. Ako povežete daljinski senzor - i unutarnju temperaturu. On također traži i analizira vremensku prognozu za narednih 12 sati i daje savjet o vjerovatnoći kiše.

Kontroler SunriseLamp. Drugi panel prikazuje neke osnovne informacije o alarmu i omogućava vam podešavanje svjetline. Ako odete na postavke, možete konfigurirati bilo koji parametar lampe, uključujući raspored alarma, maksimalnu jačinu zvuka itd.

Screensaver. Renderira Game of Life na ekranu nakon nekog perioda neaktivnosti.

Nekada je bilo više od toga, ali činilo se da su druge stvari beskorisne.

Instalacija

Sve sam ručno instalirao na Raspbian i sada mogu reći: ne ponavljaj moje greške. Koristite KivyPie, sve ima unaprijed instalirano.

Osim toga, samo slijedite vodič za instalaciju u spremištu koda.

Korak 6: Uživajte

Osobno sam zadovoljan uređajem. Koristim ga kao glavno osvjetljenje kod kuće tokom dana i omogućava mi da se probudim ujutro, nevjerovatno je.

Znam da upute nisu baš detaljne i opisne. Ako neko napravi istu stvar i ima problema - rado ću vam pomoći!

Preporučuje se: