Wakker plafondlamp (5 / 6 stap)

Stap 5: De software


Als u gebruik wilt maken de software-as-is zonder enige wijziging en niet schelen hoe het gemaakt, de procedure is eenvoudig: downloaden en uitpakken van de bijgevoegde 'wakeuplight_esp01.zip', open in de Arduino IDE. Wijzig de instellingen in 'configuration.h'. Het moet uw Wifi SSID en wachtwoord, IP-adresgegevens, de naam van een NTP-server (u kunt waarschijnlijk laat dit ongewijzigd) en informatie over timezone - uw standaardverschuiving ten opzichte van UTC in minuten, alsmede eventuele zomertijd regels.

Nadat u de juiste wijzigingen hebt, gewoon uploaden van de schets om de ESP-01.

Als u wilt enkele wijzigingen aanbrengen in de software, of gewoon geïnteresseerd bent in hoe het werkt, is wat meer gedetailleerde informatie hieronder opgenomen.

Algemene architectuur

Mijn eerste versie van deze software was in plain C en organisch groeide van experimenteren. Op een gegeven moment het werkte (kinda), maar het was een totaal knoeit. Ik besloot vervolgens refactoring en overschakelen naar C++, het creëren van een enkele klasse voor elke afzonderlijke functie (bestaande uit een .h bestand de klasse definiëren en een bestand van de .cpp die de implementatie bevat). De klassen krijgen in de belangrijkste module geïnstantieerd. Natuurlijk, zijn de meeste klassen afhankelijk van anderen. De belangrijkste module injecteert deze afhankelijkheden via de constructors van de betreffende klassen.

De volgende klassen zijn aanwezig:

  • Configuratie: biedt een interface naar alle configuratiegegevens, zowel hardcoded (hierboven genoemde), alsmede gegevens die zijn opgeslagen in EEPROM (zoals de alarminstellingen). Alle andere modules (met uitzondering van de Dimmer) is afhankelijk van configuratie.
  • Dimmer: Hiermee past u de lichtintensiteit met PWM.
  • Wificlient: maakt de verbinding met een Wifi access point.
  • NTPClient: krijgt universele tijd van een tijdserver.
  • LocalClock: universal time omgezet in lokale tijd, DST Rekeningreglementen eventueel rekening.
  • Alarm: gebruikt Dimmer, LocalClock en configuratie voor het uitvoeren van de basisfunctie van het inschakelen van het licht geleidelijk gedurende een ingestelde periode.
  • Webserver: serveert een mobiele-vriendelijke webpagina als alarm configuratie en handmatige bediening wilt inschakelen.
  • Serialhost: seriële communicatie mogelijk maakt voor de foutopsporing.

Meer gedetailleerde informatie is beschikbaar in de bronbestanden. De Dimmer en Webserver modules zijn speciaal in de zin dat ze deels gegenereerde code gebruiken. Het bestand 'wakeuplight_java_helpers.zip' bevat een Eclipse Java-project dat de generatie doet. We zullen dit hieronder inzoomen.

Dimmer

Het punt van het licht wakker is te laten de lichtintensiteit geleidelijk verhogen zoals waargenomen door een mens. Het PWM-mechanisme geeft ons lineaire controle over de lichtintensiteit, maar menselijke waarneming is min of meer logaritmische (de Weber-Fechner wet). Als wij niet zou compenseren en laat het recht van de PWM cyclus verhoging van 0 tot 100 procent in zeggen 1000 stappen, zou dit ertoe leiden dat in het begin van de cyclus van de wakker, lichtintensiteit zou te snel met merkbaar sprongen toenemen, vroeg, het bereiken van een hoog niveau en dan heel langzaam van hoog naar volledig in de rest van de cyclus stijgen. Dat is natuurlijk niet wat we willen. We moeten veranderen van de lichtintensiteit eerder exponentieel dan lineair in tijd, om de perceptie van een lineaire verhoging van tijd.

Ook is de ESP8266 PWM niet perfect. Het heeft sommige jitter die is merkbaar in zeer kleine plicht cycli en merkbaar flikkering veroorzaakt in de lamp. Dus het licht kunnen volledig af, of op sommige stabiele minimumwaarde, maar we moeten voorkomen dat tussendoor. Dit probleem wordt minder ernstig als de frequentie PWM laag is - en daarom heb ik gekozen voor slechts 100Hz.

Het bestand 'DutyCycle.java' berekent een functie van een vereiste stap in waargenomen lichtintensiteit (op een schaal van 0 tot 1800) en de waarde van een PWM (op een schaal van 0 tot 20000). 'ConvertDutyCycleToEsp.java' wordt deze functie berekend en schrijft het naar een .h bestand in de Arduino project moeten worden opgenomen. De Dimmer code in de Arduino doet gewoon een blik omhoog op deze gegenereerde tabel.

Webserver

Ik wilde om te controleren van het project met mijn smartphone. Als ik heb veel meer ervaring met het schrijven van web-apps dan native mobiele apps, besloten heb ik om de web-app mobiele-vriendelijke aanpak.

De web-app is een single-pagina HTML5/jQuery-toepassing waarmee een Ajax POST-aanvraag worden verzonden wanneer de gebruiker op een knop drukt (en ook periodiek opgehaald statusupdates). De pagina krijgt de browser om jQuery uit de jsDelivr CDNinstructie, alle JavaScript en CSS-code is opgenomen in de HTML-code, evenals de beelden met behulp van de Gegevens URL's. Dientengevolge, laden van de pagina met zich meebrengt slechts een enkele GET-verzoek naar de ESP-01, houden alles eenvoudig en snel.

Smartphones kunt met inbegrip van de 'mobile-web-app-staat' en 'apple-mobiele-web-app-staat' tags en een pictogram van de snelkoppeling, deze webpagina aan het huisscherm toevoegen. Daarna kan het worden gestart op dezelfde manier als een app (het zal worden gestart in een volledig scherm-browser), grotendeels verbergen het feit dat er niet een native app.

Moetend uploaden van een schets naar de ESP-01, telkens wanneer het testen van kleine wijzigingen in de webpagina niet is een mooie ontwikkeling cyclus. Daarom heb ik dit ontwikkeld in Java web-project, met 'LightServlet.java' simulatie van de reactie van de ESP-01 op de Ajax POST-aanvragen. De 'ConvertWebpageToEsp.java' zet de web projecten index.html aan de 'webserver_homepage.h' omvatten bestand waarin de webpagina als een tekenreeksconstante.

Gerelateerde Artikelen

' OK om wakker' klok voor uw peuter

' OK om wakker' klok voor uw peuter

3-d: 45 AM, mijn zoon is gelukkig en wakker. Het is tijd om te beginnen zijn ochtend routine. Hij wordt schreeuwen voor wat brood met Nutella en wil gaan naar beneden om te spelen.3-d: 46 AM Ik krijg een punch van mijn vrouw, dat ik moet gaan uit bed
Wakker gloeien met dit ritueel van de Detox 3 dollar

Wakker gloeien met dit ritueel van de Detox 3 dollar

ik ben geobsedeerd met zwemwater. Opgroeien in Japan, het nemen van een lange bad elke nacht en het maken van uitstapjes naar de onsen, of openbaar badhuis met water meestal afkomstig van een lokale minerale warmwaterbron, waren een deel van mijn rou
GEEN knik - trillingen hoed om u wakker te maken

GEEN knik - trillingen hoed om u wakker te maken

Hey guys, Is het moeilijk om wakker in de klas?Niet je merkt dat je houden knikken?Deze NONOD hoed zetten! Deze hoed kunnen een antwoord!Controleert uw slaap!Stap 1:Stap 2: Voorbereiden alle materialen -Arduino Uno-Versnellingsmeter sensor-Adafruit F
Voorzien van plafondlamp

Voorzien van plafondlamp

In dit Instructable die ik u de stappen die ik nam tonen zal om opnieuw een oude plafondlamp purpose kocht ik vanuit mijn lokale zuinigheid magazijn.Stap 1: ontmantelen De glas-armaturen waren in grote vorm, en dacht dat die ze zouden kijken nog bete
De droommachine of, hoe meer om wakker te worden terwijl je slaapt

De droommachine of, hoe meer om wakker te worden terwijl je slaapt

Dit is een goedkope, DIY, Arduino aangedreven oneironautics apparaat waarmee gebruikers te waarschuwen zich wanneer ze in een diepe dreamstate, zonder wakker worden. Met andere woorden, zal deze machine u vertellen wanneer je droomt, terwijl je droom
Hoe om wakker te vroeg

Hoe om wakker te vroeg

Sommige mensen worstelen om wakker te vroeg. Alles wat u hoeft te doen is trainen uw lichaam en geest. Vrij snel zal u consequent vroeg wakker, klaar om te gaan. Hier is een paar eenvoudige stappen...Stap 1: Niet Dwing jezelf om te gaan vroeg naar be
Koffie Bacon Steak wakker

Koffie Bacon Steak wakker

Biefstuk wakker met deze koffie spek creatie!Stap 1: Bacon koffie biefstuk wakker ingrediëntenBacon Steak wakkerIngrediënten8 ounce Slab Bacon1/2 kopje Espresso azijn1/2 kop bruine suiker1/2 kopje vers grond koffiebonen1 eetlepel Paprika1 kop bevrore
Houd uw computer wakker met een kopje

Houd uw computer wakker met een kopje

dit is een echt handig tip voor willen zorgen dat uw computer wakker of blijven grooveshark spelen, met behulp van een kopje.Laser muizen alleen...Ik niet gebruik deze houwer mezelf, mijn bureau is glas en zorgt ervoor dat dit effect anyway, plus de
De plafondlamp van gerecycleerde Auto koplamp

De plafondlamp van gerecycleerde Auto koplamp

Hallo! Dit is jgfresh en vandaag ben ik het creëren van een nieuwe plafondlamp van een oude auto koplamp. Dit instructable is voor de groen wonen contest zo stemming voor mij!! Ongeveer 4 maanden geleden vond ik deze koplamp aan de kant van de weg, w
Schud & wakker

Schud & wakker

Veel koppels ondervinden dit probleem, ze hebben om op een ander tijdstip wakker te worden. Met een normale wekker wakker beiden wanneer het alarm van gaat. Shake & Wake is de oplossing voor dit probleem. De klok met behulp van een draadloze RF signa
Hoe uw kamergenoot wakker voor de sportschool

Hoe uw kamergenoot wakker voor de sportschool

wanneer je kamergenoot lui en moe is en moet hij een beetje "extra" motivatie om hem wakker te worden, moet u drastische maatregelen nemen.Bijvoorbeeld:-hem te slaan met een knuppel-water in zijn gezicht te spugen-meubels op zijn bed stapelen-ij
13W LED licht, mijn versie wakker

13W LED licht, mijn versie wakker

Ik werd eerst geïntroduceerd aan de idee van "Blauwe LED light box door ewilhelm" en was zeer geïnteresseerd. de slaapkamer van mijn laatste appartement ontvangen direct zonlicht als de zon werd stijgt, dus ik gebruikte om wakker te worden zeer
Hoe om mensen wakker te houden wanneer ze slapen te

Hoe om mensen wakker te houden wanneer ze slapen te

dit is best grappig. Ik zal u tonen hoe om mensen wakker te houden wanneer ze slepping de grappige manier zijn.Stap 1: Krijgen het amp Eerst moet u iets dat u kunt aansluiten uw i-pod in te krijgen. Ik gebruikte mijn eindversterker tour elektrische g
Hoe om wakker van PC via USB-poort - Hack te

Hoe om wakker van PC via USB-poort - Hack te

Het besluit van al dan niet te verlaten de USB-poort power circuit ingeschakeld wanneer het systeem is in ("Slapen" / "Suspend to RAM") is links tot het moederbord BIOS/firmware.Het kan zelfs hebben een BIOS optie die u voor dit doel c