Innehållsförteckning:

Ljus kontrollerbar soluppgångslampa: 6 steg
Ljus kontrollerbar soluppgångslampa: 6 steg

Video: Ljus kontrollerbar soluppgångslampa: 6 steg

Video: Ljus kontrollerbar soluppgångslampa: 6 steg
Video: FOLKTRO – En besjälad värld 2024, November
Anonim
Ljus kontrollerbar soluppgångslampa
Ljus kontrollerbar soluppgångslampa
Ljus kontrollerbar soluppgångslampa
Ljus kontrollerbar soluppgångslampa

Vaknade du någonsin vid 7 -tiden, den vanliga tiden du behöver för att vakna på jobbet och befann dig i mörkret? Vintern är en hemsk tid, eller hur? Du måste vakna mitt i natten (annars varför är det så mörkt?), Slita dig ur sängen och skicka din halvmedvetna kropp till duschen.

Detta projekt syftar till att lösa en av frågorna - morgonmörkret.

Det finns massor av billiga soluppgångslampor runt, men de är alla låga och bleka. De är mer som en nattlampa, vilket ska få dig att sova bättre. Inte alls vad jag vill.

Samtidigt väcker du dig omedelbart, men inte försiktigt nog genom att bara slå på det starka ljuset. Det jag vill ha är en kombination av båda tillvägagångssätten - tänd med låg ljusstyrka, långsamt komma till full fart, sedan går ett riktigt larm och du är inte så sömnig längre. Låt oss lägga till lite av en fågelsång till det, och du vaknar i en himmel varje morgon!

Steg 1: Lamparray

Lamparray
Lamparray
Lamparray
Lamparray

Först och främst behöver vi själva lampan. Jag har ett ganska stort rum med vita väggar och tak, så jag gick för 7 GU10 LED -lampor, ungefär 6W vardera, mer än 40W ren kraft! Det räcker för att du ska känna att det redan är dagtid. Det kan också användas som en vanlig rumsbelysning under dagen.

Det spelar egentligen ingen roll hur du monterar den, vilka lampor du använder med vilka uttag. Allt som betyder något - det måste vara dimbara lampor!

I mitt fall har jag en träplanka med 7 GU10 -uttag anslutna, alla sammankopplade. Jag lägger den i en plastlåda senare.

Steg 2: Dimningsteori

Dämpningsteori
Dämpningsteori

I teorin är det ingen skillnad mellan teori och praktik. I praktiken finns det.

Att styra en dimmer från ESP32/Arduino verkade inte vara så enkelt som jag tänkt mig. Jag fick en av RobotDyn AC Light Dimmer -moduler. Tillverkaren föreslår ett bibliotek för det. Det fungerar inte på ESP32 (och det är verkligen svårt att anpassa, eftersom det använder mycket låg ATMega-specifik registeråtkomst), fungerar på Arduino Nano, vilket ger en fruktansvärd flimmer på låg-mitten ljusstyrka. Det är därför jag ägnade lite tid åt att undersöka hur det hela fungerar och göra mitt eget sätt.

Lite teori

Den valda dimmermodulen använder en mycket populär TRIAC: BTA16. Det finns massor av artiklar om det. Jag ska försöka sammanfatta det här.

TRIAC är en modul som kan överföra en ingående positiv eller negativ spänning till utgången, eller kan blockera den. Som standard blockerar det allt. För att öppna den bör vi ge den en hög signal på gate -ingång för 100 oss. Sedan kommer den att vara öppen tills strömmen sjunker till noll, vilket händer när en ingångsspänning ändrar tecknet och korsar en nollspänning. Sedan på följande cykel bör vi göra ytterligare 100 us puls och så vidare. Genom att välja när vi ska ge en puls styr vi ljusstyrkan: gör det i början och det kommer att vara nära 100% kraftöverföring. Gör det senare så blir det nedtonat. Kolla in diagrammet ovan och förklara det.

För att generera pulser i samma punkt i cykeln måste vi veta exakt när den börjar. Det är därför dimmermodulen har en Zero-Cross-detektor inbyggd. Den ger bara en signal (som vi fångar som ett hårdvaruavbrott i Arduino) varje gång spänningen passerar noll.

Steg 3: Dämpningspraxis

Dämpningsträning
Dämpningsträning

Ja, det är så du skulle vakna, om din lampa inte har någon dimning och lägger all 40W effekt i dina sömniga ögon.

Vanliga problem

Det finns flera frågor vi måste ta itu med.

Flimrande.

Mikrocontrollerns timing måste vara riktigt exakt för att slå på och stänga av grindutgången. Biblioteket RobotDyn föreslår, har ett timeravbrott varje 100us och ändrar endast gate -nivån på timern. Det betyder att det kan vara +/- 50 mikrosekunder av det optimala värdet. Det ger ett bra resultat på hög ljusstyrka, men flimrar mycket vid låg ljusstyrka. Om mikrokontrollern gör många saker minskar det tidsnoggrannheten, så helst bör en dedikerad mikrokontroller användas för dimmern.

Minimal ljusstyrka. LED-lampor har en inbyggd strömomvandlare, som bara vägrar att arbeta med för lite ström. Mina lampor verkade fungera bra från 10-11%.

Även med detta värde vägrade några av mina lampor att tändas vid start. Även när ljusstyrkan ökar senare förblir de mörka. Därför börjar vi med en uppvärmningsperiod på 5 cykler när vi går från OFF -läge till en viss positiv ljusstyrka, när vi ger lamporna full effekt. Sedan fortsätter vi med önskad ljusstyrka. Det är nästan omärkligt, men hjälper verkligen.

50/60 Hz nätfrekvens. Du måste veta hur mycket du ska vänta innan nästa nolla. Det är ganska enkelt - vi tittar bara på tidsskillnaden mellan två sista avbrott.

Gradvis förändring av ljusstyrkan. ESP32 är ganska långsam, det tar 0,5 sekunder att bearbeta en trivial HTTP- eller till och med WebSocket -begäran, så förvänta dig inte en smidig ljusstyrkaövergång, den måste implementeras på något sätt på dimmernivån. Det är därför, när den får en ny ljusstyrka från en seriell port, ställer den bara in målet och närmar sig den långsamt över tiden.

Lösningen

Här är min enkla Arduino -kod för dimmern. Den väntar på ett kommando (en byte med den nya ljusstyrkan) från den seriella ingången, hanterar nollkorsningsavbrott, styr TRIAC, hanterar alla problem ovan.

Steg 4: Lampkontroller (ESP32)

Lampkontroller (ESP32)
Lampkontroller (ESP32)
Lampkontroller (ESP32)
Lampkontroller (ESP32)

Här är anslutningsschemat för alla komponenter jag har. ESP32 -kortet skiljer sig mycket från vad jag använder (Heltec), så de valda stiften ser lite konstiga ut, men det borde fortfarande fungera bra. Använd gärna olika stift i ditt projekt.

Här är koden som styr allt. Det är ganska rakt fram.

Huvuddragen

Kontrollerbar. Lampan ansluter till WiFi, startar en WebSocket -server på port 81, väntar på kommandon. Kommandoformat är

Bara två kommandon stöds för närvarande: "set_brightness" och "update_settings", som är … ganska självbeskrivande.

Skaffa tid från NTP. Jag vill inte överkomplicera saker och lägga till en realtidsklocka till schemat. Vi har tillgång till Internet, vilket innebär att vi kan få realtid från någon NTP -server och sedan hålla reda på den aktuella tiden med hjälp av systemtimern.

Sunrise Alarm. Du kan ställa in ett alarm. Vad det faktiskt gör: börjar med minimal ljusstyrka och går gradvis till full ljusstyrka över 10 minuter. Sedan stannar det i ett par timmar. Sedan stängs den gradvis av över 60 sekunder.

Alla parametrar ovan är konfigurerbara.

Fåglar sjunger. DFPlayer mini används för att spela musik. Det finns många guider för det, men i huvudsak behöver du bara ansluta ett MicroSD -kort, formaterat till FAT32, med en fil som heter 0001.mp3. Den här filen kan ha vad du vill, i mitt fall är det 15 minuters fågelsång (den kommer att slingas) och det gör min morgon fantastisk. Observera att det finns en enorm kondensator på strömmen och 1 kOhm motstånd på serielinjen mellan ESP32 och DFplayer - de är valfria, men hjälper till att minska bullret.

Lagra inställningarna i EEPROM. Alla inställningar skrivs in i EEPROM och laddas vid start. Det gör det möjligt att använda lampan med minst en larmfunktion utan att en styrenhet är ansluten.

Ger lite information till OLED-skärmen. Min Heltec ESP32 har en inbyggd SSD1306 128X64 I2C-skärm. All viktig information återges på den. Jag vet, lådan ser ful ut, jag har precis 3D-skrivit ut några saker och klippt hålen och fönstren med en borrmaskin. Snabbt, smutsigt, men det fungerar!

Steg 5: Kontrollpanelen

Kontrollpanel
Kontrollpanel
Kontrollpanel
Kontrollpanel

Det är hjärtat i projektet. En Raspberry Pi med en original 7-tumsskärm med en del Kivy-front-end.

Här är hela källkoden.

Funktionerna

Skrivet i Python. Jag älskar Kivy, det är ett Python -ramverk för användargränssnitt. Mycket enkelt, men ändå flexibelt och effektivt (använder mycket C -kod inuti för hög prestanda och hårdvaruacceleration).

Väder. Visa aktuell temperatur och tryck utanför. Om du ansluter en fjärrsensor - även inre temperatur. Den begär och analyserar också väderprognosen för de följande 12 timmarna och ger ett råd om sannolikheten för regn.

SunriseLamp -styrenhet. En annan panel visar grundläggande information om larmet och låter dig justera ljusstyrkan. Om du går till inställningarna kan du konfigurera valfri parameter för lampan, inklusive larmschema, maximal ljudvolym och så vidare.

Skärmsläckare. Gör Game of Life på skärmen efter en period av inaktivitet.

Det brukade finnas mer än så, men andra saker verkade vara värdelösa.

Installation

Jag installerade allt manuellt på Raspbian och kan nu säga: upprepa inte mina misstag. Använd KivyPie, den har allt förinstallerat.

Bortsett från det följer du bara installationsguiden i kodförvaret.

Steg 6: Njut

Personligen är jag nöjd med enheten. Jag använder det som huvudbelysning hemma under en dag, och det låter mig vakna på morgonen, det är fantastiskt.

Jag vet att instruktionerna inte är särskilt detaljerade och beskrivande. Om någon gör samma sak och har problem - jag hjälper dig gärna!

Rekommenderad: