INHOUDSOPGAWE:

Helder beheerbare sonsopkomslamp: 6 stappe
Helder beheerbare sonsopkomslamp: 6 stappe

Video: Helder beheerbare sonsopkomslamp: 6 stappe

Video: Helder beheerbare sonsopkomslamp: 6 stappe
Video: Иоша Бах: время, гипотеза моделирования, существование 2024, Julie
Anonim
Helder beheerbare sonsopkomslamp
Helder beheerbare sonsopkomslamp
Helder beheerbare sonsopkomslamp
Helder beheerbare sonsopkomslamp

Het u ooit 7 uur wakker geword, die gewone tyd wat u nodig het om wakker te word vir u werk, en bevind u uself in die duisternis? Die winter is 'n vreeslike tyd, nie waar nie? U moet in die middel van die nag wakker word (anders is dit so donker?), U moet van die bed af ruk en u halfbewuste liggaam na die stort stuur.

Hierdie projek het ten doel om een van die probleme op te los - oggenddonker.

Daar is baie goedkoop sonsopkomslampe, maar hulle is almal lae krag en bleek. Dit is meer soos 'n naglamp, wat veronderstel is om jou beter te laat slaap. Glad nie wat ek wil hê nie.

Terselfdertyd, as u net die helder lig aanskakel, word u onmiddellik wakker, maar nie sag genoeg nie. Wat ek wil hê, is 'n kombinasie van albei benaderings - lig op met 'n lae helderheid, kom stadig op volle spoed, dan gaan 'n ware alarm af en jy is nie meer so slaperig nie. Laat ons 'n bietjie voëllied daarby voeg, en u word elke oggend in die hemel wakker!

Stap 1: Lampreeks

Lampreeks
Lampreeks
Lampreeks
Lampreeks

In die eerste plek het ons die lamp self nodig. Ek het 'n redelike groot kamer met wit mure en plafon, en ek het 7 GU10 LED -lampe gekies, ongeveer 6W elk, meer as 40W suiwer krag! Dit is genoeg om u al te laat voel asof dit bedags is. Dit kan ook bedags as 'n gewone kamerbeligting gebruik word.

Dit maak nie regtig saak hoe jy dit monteer nie, watter lampe jy gebruik, met watter voetstukke. Alles wat saak maak - dit moet dimbare lampe wees!

In my geval het ek 'n houtplank met 7 GU10 -voetstukke wat almal aanmekaar gekoppel is. Ek sit dit later in 'n plastiekboks.

Stap 2: verduisteringsteorie

Verdofteorie
Verdofteorie

In teorie is daar geen verskil tussen teorie en praktyk nie. In die praktyk is daar.

Die beheer van 'n dimmer van ESP32/Arduino blyk nie so eenvoudig te wees as wat ek my voorgestel het nie. Ek het een van RobotDyn AC Light Dimmer -modules gekry. Die vervaardiger stel 'n biblioteek hiervoor voor. Dit werk nie op ESP32 nie (en dit is regtig moeilik om aan te pas, want dit gebruik baie lae vlak ATMega-spesifieke registertoegang), soort van werk op Arduino Nano, wat 'n vreeslike flikkering op lae-middel helderheid gee. Daarom het ek 'n geruime tyd ondersoek ingestel na hoe dit alles werk en my eie manier gemaak.

'N Bietjie teorie

Die gekose dimmermodule gebruik 'n baie gewilde TRIAC: BTA16. Daar is baie artikels daaroor. Ek sal probeer om dit hier op te som.

TRIAC is 'n module wat 'n positiewe of negatiewe ingangsspanning na die uitset kan oordra, of dit kan blokkeer. Dit blokkeer standaard alles. Om dit oop te maak, moet ons 'n hoë sein op die ingang van die hek vir 100 ons gee. Dan bly dit oop totdat die stroom tot nul daal, wat gebeur wanneer 'n insetspanning die teken verander en 'n nulspanning oorsteek. Dan moet ons in die volgende siklus nog 'n 100 puls doen, ens. Deur te kies wanneer ons 'n pols wil gee, beheer ons die helderheid: doen dit aan die begin, en dit sal naby aan 100% kragtoevoer wees. Doen dit later, en dit sal verdof. Kyk na die diagram hierbo en verduidelik dit.

Om pulse in dieselfde punt van die siklus te genereer, moet ons presies weet wanneer dit begin. Daarom het die dimmer-module 'n Zero-Cross-detektor ingebou. Dit gee net 'n sein (wat ons as 'n hardeware-onderbreking in Arduino sal opvang) elke keer as die spanning nul oorsteek.

Stap 3: verduisteringsoefening

Dimpraktyk
Dimpraktyk

Ja, so sou u wakker word as u lamp nie verdof nie en al die 40W krag in u slaperige oë sit.

Algemene kwessies

Daar is verskeie kwessies wat ons moet aanspreek.

Flikkerende.

Die tydsberekening van die mikrobeheerder moet presies wees om die hekuitset aan en af te skakel. Die biblioteek wat RobotDyn voorstel, het 'n timeronderbreking elke 100 us en verander slegs die hekvlak op die timer. Dit beteken dat dit +/- 50 mikrosekondes van die optimale waarde af kan wees. Dit gee 'n goeie resultaat met 'n hoë helderheid, maar flikker baie by lae helderheid. As die mikrobeheerder baie dinge doen, verminder dit die akkuraatheid van die tyd, dus verkieslik moet 'n toegewyde mikrobeheerder vir die dimmer gebruik word.

Minimale helderheid. LED's het 'n ingeboude kragomvormer, wat net sal weier om te werk sonder genoeg krag. Dit lyk asof my lampe goed werk met 10-11%.

Selfs met hierdie waarde, wou sommige van my lampe by die aanvang nie brand nie. Selfs as hulle later die helderheid verhoog, bly hulle donker. Daarom begin ons met 'n opwarmingsperiode van 5 siklusse, as ons van OFF -toestand na 'n positiewe helderheid gaan, as ons die lampe vol krag gee. Dan gaan ons voort met die gewenste helderheid. Dit is amper onmerkbaar, maar dit help regtig.

50/60 Hz netfrekwensie. U moet weet hoeveel om te wag voor die volgende nul. Dit is redelik eenvoudig - ons kyk net na die tydsverskil tussen twee laaste onderbrekings.

Geleidelik verander die helderheid. ESP32 is redelik stadig, dit neem 0,5 sekondes om 'n triviale HTTP- of selfs WebSocket -versoek te verwerk, dus moenie 'n gladde oorgang van helderheid verwag nie; dit moet op een of ander manier op die dowwer vlak geïmplementeer word. Daarom, as dit 'n nuwe helderheid van 'n seriële poort ontvang, stel dit net die doelwit en kom dit stadig met verloop van tyd.

Die oplossing

Hier is my eenvoudige Arduino -kode vir die dimmer. Dit wag op 'n opdrag (een byte met die nuwe helderheid) van die seriële invoer, hanteer nul-kruisonderbrekings, beheer die TRIAC en hanteer al die bogenoemde kwessies.

Stap 4: Lampbeheerder (ESP32)

Lampbeheerder (ESP32)
Lampbeheerder (ESP32)
Lampbeheerder (ESP32)
Lampbeheerder (ESP32)

Hier is die verbindingskema van al die komponente wat ek het. Die ESP32 -bord verskil baie van wat ek gebruik (Heltec), so die gekose penne lyk 'n bietjie vreemd, maar dit moet nog steeds goed werk. Gebruik gerus verskillende penne in u projek.

Hier is die kode wat dit alles beheer. Dit is redelik reguit.

Die belangrikste kenmerke

Beheerbaar. Die lamp maak verbinding met WiFi, begin 'n WebSocket -bediener op poort 81, wag vir opdragte. Opdragformaat is

Net twee opdragte word tans ondersteun: "set_brightness" en "update_settings", wat … redelik selfbeskrywend is.

Kry tyd van NTP. Ek wil dinge nie te ingewikkeld maak nie en 'n intydse klok by die skema voeg. Ons het internettoegang, wat beteken dat ons die regte tyd van die een of ander NTP -bediener kan kry en dan die huidige tyd kan dophou deur die stelseltimers te gebruik.

Sunrise Alarm. U kan een alarm instel. Wat dit eintlik doen: begin met die minimale helderheid en gaan geleidelik na die volle helderheid oor 10 minute. Dan bly dit 'n paar uur aan. Dan word dit geleidelik oor 60 sekondes afgeskakel.

Al die parameters hierbo is instelbaar.

Voëls sing. DFPlayer mini word gebruik om musiek te speel. Daar is baie gidse daarvoor, maar in wese hoef u slegs 'n MicroSD -kaart, geformateer in FAT32, aan te sluit met een lêer met die naam 0001.mp3. Hierdie lêer kan alles bevat wat u wil, in my geval is dit 15 minute se voëls wat sing (dit word in 'n lus gemaak), en dit maak my oggend ongelooflik. ESP32 en DFplayer - hulle is opsioneel, maar help om die geraas te verminder.

Stoor die instellings in EEPROM. Alle instellings word in EEPROM ingeskryf en by aanvang gelaai. Dit maak dit moontlik om die lamp te gebruik met ten minste 'n alarmfunksie sonder dat 'n kontroleerder gekoppel is.

Gee inligting aan die OLED-skerm. My Heltec ESP32 het 'n ingeboude SSD1306 128X64 I2C-skerm. Al die noodsaaklike inligting word daarop weergegee. Vinnig, vuil, maar dit werk!

Stap 5: Configuratiescherm

Beheer paneel
Beheer paneel
Beheer paneel
Beheer paneel

Dit is die kern van die projek. 'N Framboos Pi met 'n oorspronklike 7 -skerm met 'n paar Kivy-voorkant.

Hier is die volledige bronkode.

Die funksies

Ek is lief vir Kivy, dit is 'n Python -raamwerk vir gebruikerskoppelvlakke. Baie eenvoudig, maar tog buigsaam en doeltreffend (gebruik baie C -kode binne vir hoë werkverrigting en hardewareversnelling).

Weer. Toon die huidige temperatuur en druk buite. As u 'n afstandsensor aansluit - ook binnetemperatuur. Dit versoek en ontleed ook die weervoorspelling vir die volgende 12 uur en gee advies oor die waarskynlikheid van reën.

'N Ander paneel bevat basiese inligting oor die alarm en stel u in staat om die helderheid aan te pas. As u na die instellings gaan, kan u enige parameter van die lamp instel, insluitend die alarmskedule, maksimum klankvolume en so meer.

Screensaver. Gee Game of Life op die skerm na 'n tydperk van onaktiwiteit.

Daar was vroeër meer as dit, maar ander dinge blyk nutteloos te wees.

Installasie

Ek het alles met die hand op Raspbian geïnstalleer en kan nou sê: moenie my foute herhaal nie. Gebruik die KivyPie, alles is vooraf geïnstalleer.

Afgesien daarvan, volg net die installasiegids in die kodebewaarplek.

Stap 6: Geniet dit

Persoonlik is ek tevrede met die toestel. Ek gebruik dit gedurende die dag as hoofbeligting tuis, en dit laat my soggens wakker word, dit is ongelooflik.

Ek weet die instruksies is nie baie korrelig en beskrywend nie. As iemand dieselfde ding maak en probleme ondervind - ek help u graag!

Aanbeveel: