Innholdsfortegnelse:

Lys kontrollerbar soloppgangslampe: 6 trinn
Lys kontrollerbar soloppgangslampe: 6 trinn

Video: Lys kontrollerbar soloppgangslampe: 6 trinn

Video: Lys kontrollerbar soloppgangslampe: 6 trinn
Video: How To Choose The Perfect Aquarium Lighting For Your Planted Aquarium? 2024, Juli
Anonim
Lys kontrollerbar soloppgangslampe
Lys kontrollerbar soloppgangslampe
Lys, kontrollerbar soloppgangslampe
Lys, kontrollerbar soloppgangslampe

Våknet du noen gang klokken 7, den vanlige tiden du trenger for å våkne på jobb, og fant deg selv i mørket? Vinteren er en forferdelig tid, ikke sant? Du må våkne midt på natten (ellers hvorfor er det så mørkt?), Rive deg av sengen og sende din halvbevisste kropp til dusjen.

Dette prosjektet tar sikte på å løse et av problemene - morgenmørke.

Det er mange billige soloppgangslamper rundt omkring, men de har alle lav effekt og bleke. De er mer som en nattlampe, som skal få deg til å sove bedre. Ikke det jeg vil i det hele tatt.

Samtidig vil det å vekke deg umiddelbart bare ved å slå på det sterke lyset, men ikke forsiktig nok. Det jeg vil ha er en kombinasjon av begge tilnærmingene - lys opp med lav lysstyrke, sakte komme til full fart, så går en ekte alarm og du er ikke så trøtt lenger. La oss legge til litt av en fuglesang til den, og du våkner opp i en himmel hver morgen!

Trinn 1: Lampearray

Lampearray
Lampearray
Lampearray
Lampearray

Først og fremst trenger vi selve lampen. Jeg har et ganske stort rom med hvite vegger og tak, så jeg gikk for 7 GU10 LED -lamper, omtrent 6W hver, mer enn 40W ren kraft! Det er nok til å få deg til å føle at det allerede er på dagtid. Den kan også brukes som vanlig rombelysning i løpet av dagen.

Det spiller egentlig ingen rolle hvordan du monterer den, hvilke lamper du bruker med hvilke stikkontakter. Alt som betyr noe - disse må være dimbare lamper!

I mitt tilfelle har jeg en treplanke med 7 GU10 -kontakter festet, alle sammenkoblet. Jeg legger den i en plastboks senere.

Trinn 2: Dimningsteori

Dempingsteori
Dempingsteori

I teorien er det ingen forskjell mellom teori og praksis. I praksis er det.

Det var ikke så enkelt å kontrollere en dimmer fra ESP32/Arduino som jeg hadde forestilt meg. Jeg har en av RobotDyn AC Light Dimmer -modulene. Produsenten foreslår et bibliotek for det. Det fungerer ikke på ESP32 (og det er veldig vanskelig å tilpasse, fordi det bruker mye lavt ATMega-spesifikt registertilgang), fungerer på Arduino Nano, noe som gir en fryktelig flimring på lav-middels lysstyrke. Derfor brukte jeg litt tid på å undersøke hvordan det hele fungerer og lage min egen måte.

Litt av en teori

Den valgte dimmermodulen bruker en veldig populær TRIAC: BTA16. Det er mange artikler om det. Jeg skal prøve å oppsummere det her.

TRIAC er en modul som kan overføre en inngangspositiv eller negativ spenning til utgangen, eller kan blokkere den. Som standard blokkerer det alt. For å åpne den, bør vi gi den et høyt signal på gateinngang for 100 oss. Deretter vil den forbli åpen til strømmen synker til null, noe som skjer når en inngangsspenning endrer tegnet og krysser en nullspenning. Så i den påfølgende syklusen bør vi gjøre ytterligere 100 us puls og så videre. Ved å velge når vi skal gi en puls, styrer vi lysstyrken: gjør det helt i begynnelsen, og det vil være nær 100% kraftoverføring. Gjør det senere, så blir det nedtonet. Sjekk diagrammet ovenfor og forklar det.

For å generere pulser i det samme punktet i syklusen, må vi vite nøyaktig når den begynner. Det er derfor dimmermodulen har en Zero-Cross-detektor innebygd. Den gir bare et signal (som vi vil fange som en maskinvareavbrudd i Arduino) hver gang spenningen krysser null.

Trinn 3: Dimming Practice

Dimming praksis
Dimming praksis

Ja, slik ville du våknet hvis lampen din ikke er dimmet og legger all 40W strøm i dine søvnige øyne.

Vanlige problemer

Det er flere problemer vi må ta opp.

Flimring.

Mikrokontrollerens timing må være veldig presis for å slå portutgangen på og av. Biblioteket RobotDyn foreslår, har et tidsavbrudd for hver 100us og endrer bare portnivået på timeren. Det betyr at det kan være +/- 50 mikrosekunder av den optimale verdien. Det gir et godt resultat på høy lysstyrke, men flimrer mye på lav lysstyrke. Også hvis mikrokontrolleren gjør mange ting, reduserer det tidsnøyaktigheten, så ideelt sett bør en dedikert mikrokontroller brukes til dimmeren.

Minimal lysstyrke. Lysdioder har en innebygd strømomformer, som bare vil nekte å jobbe uten å ha nok strøm. Lampene mine så ut til å fungere fint fra 10-11%.

Selv med denne verdien nektet noen av lampene mine å lyse ved start. Selv når de øker lysstyrken senere, forblir de mørke. Derfor starter vi med en oppvarmingsperiode på 5 sykluser når vi går fra OFF -tilstand til positiv lysstyrke når vi gir lampene full effekt. Deretter fortsetter vi med ønsket lysstyrke. Det er nesten umerkelig, men hjelper virkelig.

50/60 Hz nettfrekvens. Du må vite hvor mye du skal vente før neste null. Det er ganske enkelt - vi ser bare på tidsforskjellen mellom to siste avbrudd.

Gradvis lysstyrkeendring. ESP32 er ganske treg, det tar 0,5 sekunder å behandle en triviell HTTP- eller WebSocket -forespørsel, så ikke forvent en jevn lysstyrkeovergang, den må implementeres på en eller annen måte på dimmere nivå. Det er derfor, når den mottar en ny lysstyrke fra en seriell port, setter den bare målet, og nærmer seg det sakte over tid.

Løsningen

Her er min enkle Arduino -kode for dimmeren. Den venter på en kommando (en byte med den nye lysstyrken) fra den serielle inngangen, håndterer Zero-Cross-avbrudd, styrer TRIAC og håndterer alle problemene ovenfor.

Trinn 4: Lampekontroller (ESP32)

Lampekontroller (ESP32)
Lampekontroller (ESP32)
Lampekontroller (ESP32)
Lampekontroller (ESP32)

Her er tilkoblingsskjemaet for alle komponentene jeg har. ESP32 -kortet er veldig forskjellig fra det jeg bruker (Heltec), så pinnene som er valgt ser litt rare ut, men det skal fortsatt fungere fint. Bruk gjerne forskjellige pins i prosjektet ditt.

Her er koden som styrer alt. Det er ganske rett frem.

Hovedtrekkene

Kontrollerbar. Lampen kobles til WiFi, starter en WebSocket -server på port 81, venter på kommandoer. Kommandoformatet er

Bare to kommandoer støttes foreløpig: "set_brightness" og "update_settings", som er … ganske selvbeskrivende.

Få tid fra NTP. Jeg vil ikke komplisere ting og legge til en sanntidsklokke i skjemaet. Vi har internettilgang, noe som betyr at vi kan hente sanntid fra en NTP -server og deretter holde styr på gjeldende tid ved å bruke systemtimerne.

Soloppgangsalarm. Du kan stille inn én alarm. Hva det faktisk gjør: starter med minimal lysstyrke og går gradvis til full lysstyrke over 10 minutter. Så holder den på i et par timer. Deretter slår den seg gradvis av over 60 sekunder.

Alle parameterne ovenfor er konfigurerbare.

Fugler synger. DFPlayer mini brukes til å spille musikk. Det er mange guider for det, men egentlig trenger du bare å koble til et MicroSD -kort, formatert til FAT32, med en fil som heter 0001.mp3. Denne filen kan ha alt du liker, i mitt tilfelle er det 15 minutter med fuglesang (den blir sløyfet), og det gjør morgenen min fantastisk. Vær oppmerksom på at det er en enorm kondensator på strømmen, og 1 kOhm motstander på serielinjen mellom ESP32 og DFplayer - de er valgfrie, men bidrar til å redusere støyen.

Lagre innstillingene i EEPROM. Alle innstillinger skrives inn i EEPROM og lastes inn ved start. Det gjør det mulig å bruke lampen med minst en alarmfunksjon uten at en kontroller er tilkoblet.

Gjengi litt informasjon til OLED-skjermen. Min Heltec ESP32 har en innebygd SSD1306 128X64 I2C-skjerm. All den viktige informasjonen er gjengitt på den. Jeg vet, esken ser stygg ut, jeg har nettopp 3D-skrevet ut noen ting og kuttet hull og vinduer med en drill. Rask, skitten, men det fungerer!

Trinn 5: Kontrollpanel

Kontrollpanel
Kontrollpanel
Kontrollpanel
Kontrollpanel

Det er hjertet i prosjektet. En Raspberry Pi med en original 7 skjerm, som kjører noen Kivy front-end.

Her er hele kildekoden.

Funksjonene

Skrevet i Python. Jeg elsker Kivy, det er et Python -rammeverk for brukergrensesnitt. Veldig enkelt, men likevel fleksibelt og effektivt (bruker mye C -kode inne for høy ytelse og maskinvareakselerasjon).

Vær. Vis gjeldende temperatur og trykk utenfor. Hvis du kobler til en ekstern sensor - innetemperatur også. Den ber også om og analyserer værmeldingen for de følgende 12 timene og gir et råd om sannsynligheten for regn.

SunriseLamp -kontroller. Et annet panel viser grunnleggende informasjon om alarmen og lar deg justere lysstyrken. Hvis du går til innstillingene, kan du konfigurere en hvilken som helst parameter for lampen, inkludert alarmplan, maks lydvolum og så videre.

Skjermsparer. Gjengir Game of Life på skjermen etter en periode med inaktivitet.

Det pleide å være mer enn det, men andre ting syntes å være ubrukelige.

Installasjon

Jeg installerte alt manuelt på Raspbian, og kan nå si: ikke gjenta feilene mine. Bruk KivyPie, den har alt forhåndsinstallert.

Bortsett fra det, følg bare installasjonsveiledningen i kodelageret.

Trinn 6: Kos deg

Personlig er jeg fornøyd med enheten. Jeg bruker den som hovedbelysning hjemme i løpet av en dag, og den lar meg våkne om morgenen, det er fantastisk.

Jeg vet at instruksjonene ikke er veldig detaljerte og beskrivende. Hvis noen gjør det samme og har problemer - hjelper jeg deg gjerne!

Anbefalt: