Indholdsfortegnelse:

Lys kontrollerbar solopgangslampe: 6 trin
Lys kontrollerbar solopgangslampe: 6 trin

Video: Lys kontrollerbar solopgangslampe: 6 trin

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

Vågnede du nogensinde klokken 7, den sædvanlige tid du har brug for at vågne op til arbejde, og befandt dig i mørke? Vinteren er en frygtelig tid, ikke? Du skal vågne op midt om natten (hvorfor er det så mørkt?), Rive dig ned af sengen og sende din halvbevidste krop i bad.

Dette projekt har til formål at løse et af problemerne - morgenmørke.

Der er masser af billige solopgangslamper omkring, men de er alle laveffekt og blege. De ligner mere en natlampe, som skal få dig til at sove bedre. Slet ikke hvad jeg vil.

På samme tid vil bare du tænde det skarpe lys vække dig med det samme, men ikke forsigtigt nok. Det, jeg ønsker, er en kombination af begge tilgange - lys op med en lav lysstyrke, langsomt komme til fuld hastighed, så går en rigtig alarm, og du er ikke så søvnig længere. Lad os tilføje lidt af en fuglesang til den, og du vågner op i en himmel hver morgen!

Trin 1: Lampearray

Lampearray
Lampearray
Lampearray
Lampearray

Først og fremmest har vi brug for selve lampen. Jeg har et temmelig stort værelse med hvide vægge og loft, så jeg gik efter 7 GU10 LED -lamper, noget som 6W hver, mere end 40W ren kraft! Det er nok til at få dig til at føle, at det allerede er dagtid. Det kan også bruges som en almindelig rumbelysning i løbet af dagen.

Det er ikke ligegyldigt, hvordan du samler det, hvilke lamper du bruger med hvilke fatninger. Alt, hvad der betyder noget - det skal være dæmpbare lamper!

I mit tilfælde har jeg en træplanke med 7 GU10 stikkontakter vedhæftet, alle forbundet sammen. Jeg lægger det senere i en plastikæske.

Trin 2: Dæmpningsteori

Dæmpningsteori
Dæmpningsteori

I teorien er der ingen forskel mellem teori og praksis. I praksis er der.

Styring af en dæmper fra ESP32/Arduino syntes ikke at være så enkel som jeg havde forestillet mig. Jeg har et af RobotDyn AC Light Dimmer moduler. Producenten foreslår et bibliotek til det. Det fungerer ikke på ESP32 (og det er virkelig svært at tilpasse, fordi det bruger en masse lavt niveau ATMega-specifik registreringsadgang), fungerer på en slags Arduino Nano, hvilket giver en frygtelig flimring på lav-mid lysstyrke. Derfor brugte jeg lidt tid på at undersøge, hvordan det hele fungerer og lave min egen vej.

Lidt af en teori

Det valgte dæmpermodul bruger et meget populært TRIAC: BTA16. Der er masser af artikler om det. Jeg vil prøve at opsummere det her.

TRIAC er et modul, der kan transmittere en input positiv eller negativ spænding til udgangen eller kan blokere den. Som standard blokerer det alt. For at åbne den skal vi give den et højt signal på gate -input til 100 os. Derefter forbliver den åben, indtil strømmen falder til nul, hvilket sker, når en indgangsspænding ændrer tegnet og krydser en nulspænding. Så på den følgende cyklus skal vi lave en anden 100 us puls og så videre. Ved at vælge hvornår vi skal give en puls, styrer vi lysstyrken: gør det i begyndelsen, og det vil være tæt på 100% kraftoverførsel. Gør det senere, og det dæmpes. Tjek diagrammet ovenfor og forklar det.

For at kunne generere pulser i det samme punkt i cyklussen, skal vi vide nøjagtigt, hvornår det begynder. Derfor har dimmermodulet en Zero-Cross-detektor indbygget. Det giver bare et signal (som vi fanger som en hardware-afbrydelse i Arduino), hver gang spændingen krydser nul.

Trin 3: Dæmpningspraksis

Dæmpningspraksis
Dæmpningspraksis

Ja, sådan ville du vågne op, hvis din lampe ikke er dæmpet og sætter al 40W strøm i dine søvnige øjne.

Fælles problemer

Der er flere problemer, vi skal løse.

Blinkende.

Mikrokontrollerens timing skal være virkelig præcis, når gate -output skal tændes og slukkes. Biblioteket RobotDyn foreslår, har et timerafbrydelse for hver 100us og ændrer kun gate -niveauet på timeren. Det betyder, at det kan være +/- 50 mikrosekunder fra den optimale værdi. Det giver et godt resultat på en høj lysstyrke, men flimrer meget ved lav lysstyrke. Også hvis mikrokontrolleren gør mange ting, reducerer det tidsnøjagtigheden, så ideelt set bør der bruges en dedikeret mikrokontroller til dæmperen.

Minimal lysstyrke. LED'er har en indbygget strømomformer, som bare vil nægte at arbejde uden at have nok strøm. Mine lamper syntes at fungere fint fra 10-11%.

Selv med denne værdi nægtede nogle af mine lamper at tænde ved start. Selv når lysstyrken senere øges, forbliver de mørke. Derfor starter vi med en opvarmningsperiode på 5 cykler, når vi går fra OFF -tilstand til en positiv lysstyrke, når vi giver lamperne fuld effekt. Derefter fortsætter vi med den ønskede lysstyrke. Det er næsten umærkeligt, men hjælper virkelig.

50/60 Hz netfrekvens. Du skal vide, hvor meget du skal vente inden det næste nul. Det er ret simpelt - vi ser bare på tidsforskellen mellem to sidste afbrydelser.

Gradvis ændring af lysstyrken. ESP32 er temmelig langsom, det tager 0,5 sek. At behandle en triviel HTTP- eller endda WebSocket -anmodning, så forvent ikke en jævn overgang til lysstyrke, den skal implementeres på en eller anden måde på lysniveauet. Det er derfor, når den modtager en ny lysstyrke fra en seriel port, sætter den bare målet og derefter langsomt nærmer sig det over tid.

Løsningen

Her er min enkle Arduino -kode til dæmperen. Den venter på en kommando (en byte med den nye lysstyrke) fra det serielle input, håndterer Zero-Cross-afbrydelser, styrer TRIAC'en og håndterer alle ovenstående problemer.

Trin 4: Lampekontroller (ESP32)

Lampestyring (ESP32)
Lampestyring (ESP32)
Lampestyring (ESP32)
Lampestyring (ESP32)

Her er forbindelsesskemaet for alle de komponenter, jeg har. ESP32 -kortet er meget forskelligt fra det, jeg bruger (Heltec), så de valgte stifter ser lidt underlige ud, men det skal stadig fungere fint. Brug gerne forskellige stifter i dit projekt.

Her er koden, der styrer det hele. Det er ret ligetil.

De vigtigste træk

Kontrollerbar. Lampen opretter forbindelse til WiFi, starter en WebSocket -server på port 81, venter på kommandoer. Kommandoformat er

Kun to kommandoer understøttes foreløbig: "set_brightness" og "update_settings", som er … temmelig selvbeskrivende.

At få tid fra NTP. Jeg vil ikke komplicere tingene og tilføje et ur i realtid til skemaet. Vi har internetadgang, hvilket betyder, at vi kan få realtid fra en eller anden NTP -server og derefter holde styr på den aktuelle tid ved hjælp af systemtimerne.

Solopgangsalarm. Du kan indstille én alarm. Hvad det egentlig gør: starter med den minimale lysstyrke og går gradvist til fuld lysstyrke over 10 minutter. Så bliver den ved i et par timer. Derefter slukker den gradvist over 60 sekunder.

Alle ovenstående parametre kan konfigureres.

Fugle synger. DFPlayer mini bruges til at afspille musik. Der er masser af guider til det, men i det væsentlige skal du bare tilslutte et MicroSD -kort, formateret til FAT32, med en fil kaldet 0001.mp3. Denne fil kan have alt, hvad du kan lide, i mit tilfælde er det 15 minutter med fugle, der synger (det vil blive loopet), og det gør min morgen fantastisk. Bemærk, at der er en enorm kondensator på strømmen og 1 kOhm modstande på serielinjen mellem ESP32 og DFplayer - de er valgfri, men hjælper med at reducere støj.

Lagring af indstillingerne i EEPROM. Alle indstillinger skrives ind i EEPROM og indlæses ved start. Det gør det muligt at bruge lampen med mindst en alarmfunktion uden en controller tilsluttet.

Giver nogle oplysninger til OLED-skærmen. Min Heltec ESP32 har en indbygget SSD1306 128X64 I2C-skærm. Alle de vigtige oplysninger er gengivet på den. Jeg ved, kassen ser grim ud, jeg har lige 3D-printet nogle ting og skåret huller og vinduer med en boremaskine. Hurtig, beskidt, men det virker!

Trin 5: Kontrolpanel

Kontrolpanel
Kontrolpanel
Kontrolpanel
Kontrolpanel

Det er hjertet i projektet. En Raspberry Pi med et originalt 7 display, der kører noget Kivy front-end.

Her er den fulde kildekode.

Funktionerne

Skrevet i Python. Jeg elsker Kivy, det er en Python -ramme til brugergrænseflader. Meget enkel, men alligevel fleksibel og effektiv (bruger masser af C -kode indeni til høj ydeevne og hardware acceleration).

Vejr. Vis den aktuelle temperatur og tryk udenfor. Hvis du tilslutter en ekstern sensor - også indetemperatur. Den anmoder og analyserer også vejrudsigten for de følgende 12 timer og giver et råd om sandsynligheden for regn.

SunriseLamp controller. Et andet panel viser nogle grundlæggende oplysninger om alarmen og giver dig mulighed for at justere lysstyrken. Hvis du går til indstillingerne, kan du konfigurere enhver parameter på lampen, herunder alarmplan, maksimal lydstyrke og så videre.

Screensaver. Giver Game of Life på skærmen efter en periode med inaktivitet.

Der plejede at være mere end det, men andre ting syntes at være ubrugelige.

Installation

Jeg installerede alt manuelt på Raspbian, og kan nu sige: gentag ikke mine fejl. Brug KivyPie, den har alt forudinstalleret.

Bortset fra det, skal du bare følge installationsguiden i kodelagret.

Trin 6: God fornøjelse

Personligt er jeg glad for enheden. Jeg bruger det som hovedbelysning derhjemme i løbet af en dag, og det lader mig vågne om morgenen, det er fantastisk.

Jeg ved, at instruktionerne ikke er særlig detaljerede og beskrivende. Hvis nogen laver det samme og har problemer - hjælper jeg gerne!

Anbefalede: