Väckning taklampa (5 / 6 steg)

Steg 5: Programvaran



Om du vill använda programvaran som-är utan några ändringar och bryr mig inte hur den är gjord, förfarandet är enkel: Hämta och packa upp den bifogade "wakeuplight_esp01.zip", öppna i Arduino IDE. Ändra inställningarna i "configuration.h". Den behöver Wifi SSID och lösenord, IP-adressinformation, namnet på en NTP-server (du kan förmodligen lämna detta oförändrade) och timezone information - din standard offset från UTC i minuter samt sommartid regler.

Efter att lämpliga ändringar, helt enkelt ladda upp skissen till den ESP-01.

Om du vill göra några ändringar av programvaran, eller bara är intresserade av hur det fungerar, finns lite mer detaljerad information med nedan.

Övergripande arkitektur

Min första version av denna programvara var i vanligt C och växte organiskt från experimentera. Någon gång, det fungerade (kinda), men det var en total röra. Jag beslutade då att refactor och växla till C++, att skapa en enda klass för varje separat funktion (bestående av en .h fil definiera klassen och en .cpp fil som innehåller genomförandet). Klasserna få instansieras i modulen viktigaste. De flesta klasser är naturligtvis beroende av andra. Den viktigaste modulen injicerar dessa beroenden genom konstruktörer av klasserna beroende.

Följande klasser finns:

  • Konfiguration: tillhandahåller ett gränssnitt för alla konfigurationsdata, både hårdkodad (se ovan) samt data som lagras i EEPROM (som larminställningarna). Alla andra moduler (ej Dimmer) beror på konfigurationen.
  • Dimmer: Justerar ljusstyrkan med PWM.
  • Wificlient: upprättar anslutningen till en Wifi-åtkomstpunkt.
  • NTPClient: blir universell tid från en tidsserver.
  • LocalClock: konverterar universell tid till lokal tid, ta in i konto sommartidsreglerna om någon.
  • Larm: använder Dimmer, LocalClock och konfiguration för att utföra grundläggande funktion slår på ljuset gradvis under en angiven tidsperiod.
  • Webbserver: serverar en mobil-friendly webbsida om du vill aktivera larmet konfiguration och manuell kontroll.
  • Serialhost: tillåter seriell kommunikation för felsökning.

Mer detaljerad information finns i källfilerna. Dimmer och webbserver modulerna är speciella i den meningen att de delvis använder genererade koden. Filen "wakeuplight_java_helpers.zip" innehåller en Eclipse Java projekt som gör generationen. Vi ska zooma in här nedan.

Dimmer

Wake-up light är att låta ljusintensiteten öka gradvis som uppfattas av en människa. PWM mekanismen ger oss linjär kontroll över ljusintensiteten, men mänsklig perception är mer eller mindre logaritmisk ( Weber-Fechner lag). Om vi inte skulle kompensera för detta och bara låta PWM duty cycle ökar från 0 till 100% i säga 1000 steg, skulle resultatet bli att ljusintensiteten i den tidiga delen av den vakna cykeln, skulle öka alltför snabbt med märkbar hopp, att nå en hög nivå tidigt, och då stiger mycket långsamt från hög till fullt i resten av cykeln. Det är uppenbarligen inte vad vi vill. Vi måste ändra ljusintensiteten exponentiellt snarare än linjärt i tid, att ge föreställningen av en linjär ökning i tid.

ESP8266 PWM är inte heller perfekt. Det har vissa jitter som märks i mycket små driftcykler och orsakar märkbar flimmer i lampan. Så ljuset kan vara helt avstängda, eller på vissa stabilt minimivärdet, men vi bör undvika att vara i mellan. Detta problem blir mindre allvarliga om PWM är låg - vilket är varför jag har valt just 100Hz.

Filen "DutyCycle.java" beräknar en funktion från ett nödvändigt steg i upplevda ljusintensitet (på en skala 0 till 1800) och en PWM-värde (på en skala 0 till 20000). "ConvertDutyCycleToEsp.java" beräknas denna funktion och skriver det till en .h fil som ska inkluderas i det Arduino projektet. Dimmer koden i Arduino gör helt enkelt en titt på genererade tabellen.

Webserver

Jag ville styra projektet med min smartphone. Som jag har mycket mer erfarenhet av att skriva web-apps än inbyggda mobila appar, beslöt jag att ta den mobil-vänlig webb-app strategin.

Webb-app är ett enkelsidigt HTML5/jQuery program som skickar en Ajax POST-begäran när användaren trycker på en knapp (och även hämtar statusuppdateringar med jämna mellanrum). Sidan instruerar webbläsaren att få jQuery från jsDelivr CDNär alla JavaScript och CSS-kod som ingår i HTML-koden som bilderna med Data webbadresser. Som ett resultat, innebär laddar sidan bara en enda GET-begäran till den ESP-01, att hålla allt enkelt och snabbt.

Inklusive taggarna "mobile-web-app-kompatibel" och "apple-mobil-web-app-kompatibel" och en snar vägen ikonen länk, smartphones kan lägga till denna webbsida på startsidan. Efter det, kan den startas på samma sätt som en app (det kommer att startas i en Fullskärm webbläsare), till stor del dölja det faktum att det inte är en native app.

Att ladda upp en skiss till den ESP-01 varje gång när testa små förändringar på webbsidan inte är en trevlig utveckling cykel. Jag har därför utvecklat detta i ett Java web-projekt med "LightServlet.java" simulera svar på ESP-01 Ajax POST-begäranden. 'ConvertWebpageToEsp.java' konverterar web projekt index.html till 'webserver_homepage.h' inkluderar fil som innehåller webbsidan som en strängkonstant.

Se Steg
Relaterade Ämnen

Sträng taklampa

göra en designer kvalitet sträng taklampa på din egen med bara några virka tråd, en ballong och tyg förstyvning. Det är lite av en röra, tar ungefär en dag att torka, men det ser riktigt cool, är oändligt mycket billigare än att köpa en från Design i...

Bloom parametriska taklampa

Bloom är en parametrisk taklampa som skapats med 3D-gräshoppa. Detta instructable kommer att omfatta hur man skära och montera en som konceptet bakom GH definitionen och hur man manipulera design.Om du inte har tillgång till gräshoppa, kan du använda...

Bättre mobiltelefon Signal, Reception och täckning

Du är din mobiltelefon.Oavsett om det är en Facebook inlägg eller tweet, rasande session av Candy Crush, snabb Yelp granskning, snabb Wikipedia läsa, tidsödande YouTube video, Amazon shopping, en viktig affär ring, ett brådskande SMS, e-post, etc. Vå...

Zip knyta Spiral taklampa

Vad skulle du göra om du har en bit trädgårdsslang, vissa lysdiodsrand och massor av zip band? Om jag var du jag kunde tänka på något annat än en lampa :D. Ja, en lampa och jag älskar det uttrycket i ansiktet :)Så Hej min kära medmänniskor, jag är ti...

Hur man målar täckning för airsoft

jag kommer att visa dig hur man målar några täckning för airsoft. Jag gjorde det tidigare idag. Ledsen för bilderna... Jag glömde att ta bilder så de är i färg men de är bra bilder.Steg 1: Först, hitta något som du kan använda. jag använder trä. Skär...

Mini taklampa ljuskrona gjord från IKEA lampor

jag gillar verkligen utseendet på Mini hängande lampor. Fler lampor, desto bättre! Min vision var att ordna ca 20 av dem i en linje, utspridda i en semi organiska mönster. Jag behövde att bygga ett fäste och lista ut ett sätt att konvertera nätspänni...

Hur fungerar marktäckning effekt ogräs planteringstäthet jämfört med ett läge med ingen kompost?

Någon gång under året, alla någon gång doftar kompost som hade fastställts någon gång under dagen, men tror man varför folk lägga marktäckning ner ändå. Är det för färg, lägga textur, eller bara för att det ser bra ut. Bra kompost används av alla des...

Enkla blad marktäckning örtagård

natur inte bryta ryggen gräva i marken med hårda verktyg eller maskiner; Hon ackumuleras lager organiskt skräp och låt oss djur, växter och mikrobiella organismer bryta ner (uppifrån och ned).Naturen har trädgårdsarbete framgångsrikt i tusentals år....

Kväva och ersätta din gräsmatta med marktäckning

jag tillbringade ett år att bli av med min döende gräsmattan och installera en låg/ingen vatten landskap.Det kostade mig bara ett par hundra spänn, jag anställa inte någon att göra det. och jag behövde inte använda ett drag tjänst för att bli av med...

Kläckning kyckling ägg naturligt

jag ska visa dig hur man kan förbättra framgången för en naturlig kyckling kull,Det finns mycket du kan göra, att stödja din hönsmamma och att se till att din kycklingar kläcks tryggt och växa upp till stark höns och tuppar!Det finns naturligtvis mån...

IkeaHack: Tertial taklampa

för min Tertial iPad hållare hacka, jag cannibalized en tertialet, men hade lampan som en vänster. Så jag bestämde mig att skapa en taklampa med den. Jag ville ha två lampor så jag köpte en annan tertialet.Material:2 tertials1 kopplingsplintenVissa t...

DIY mässing Bullet hölje Rose taklampa

Denna Mässing Bullet hölje Rose taklampa -projektet är ganska cool eftersom det inte tar alltför många material eller verktyg för att slutföra. Det gör också en stor gåva!Det bästa är att de verktyg du ska använda är nog verktyg du redan äger. Medan...

RGB LED Mood taklampa med hackad IR-fjärrkontroll

detta instructable dokument utformning och konstruktion av en gigantisk RGB LED taklampa, kontrolleras av en hacka GE fjärrkontroll.Efter att bygga ett par mindre RGB lampor, bestämde jag mig för jag ville se hur långt jag kunde ta konceptet. Kontrol...

Lätt blad hastigt och marktäckning

Med den blad faller. Det är dags att låta gravitationen göra sitt arbete. Fastställa nettning tarp att samla i leafs. Du kan få fågelnät eller några stora nät för runt dina träd.Steg 1: Samla in i högen och gäng det Dra den till eld grop eller kompos...

DIY väva taklampa (gå grön)

Lära sig konsten att göra lampa är kul. Ljusstrålar ger och experimentera på olika sorters nyanser är awesome. Jag har precis börjat bege sig in på området för lampor. Detta är en hängande lampa gjord av papper. Istället för att kasta bort gamla nyhe...

Hemgjord moderna DIY trä taklampa

Skapa en DIY trä taklampa från en skrot pjäs av 3/4" tjock furu. Detta är ett enkelt projekt men kräver vissa exakta snitt från en compound geringssåg. En serie av 30 graders avfasning nedskärningar producerar hexagon 6 sidor. Justera gerings stakete...

Giant taklampa med flera funktioner alias UFO

denna jätte svävande ljus (ytterdiameter 3,6 m eller 142 i) har tre funktioner:1. ge direkt belysning för upplysande rummet: "vanliga" ljuset;2. ge indirekt belysning belysning i taket i två cirkulära band: stämningsfull belysning;3. lägga till...

Repurposed taklampa

Jag köpte detta Instructable jag kommer att visa dig de stegen jag tog till re-syfte en gammal taklampa från min lokala sparsamhet lager.Steg 1: demontera Glas fixturer var i fin form, och trodde de skulle se ännu bättre fördelas i en linje i stället...

Återvunna bil strålkastare taklampa

Hej! Detta är jgfresh och idag jag skapar en ny taklampa från en gammal bil strålkastare. Detta instructable är för Green Living tävling så rösta för mig! Ungefär 4 månader sedan hittade jag denna strålkastare på sidan av vägen, troligen till följd a...