- Eri menetelmät virrankulutuksen minimoimiseksi
- Tarvittavat komponentit
- ESP8266: n lepotilojen tyypit
- ESP8266 syvän lepotilan ohjelmointi
- DeepSleepin testaaminen ESP8266: ssa
Koska IoT-vallankumous kukoistaa joka päivä, liitettyjen laitteiden määrä kasvaa erittäin nopeasti. Tulevaisuudessa suurin osa laitteista on yhteydessä toisiinsa ja kommunikoivat reaaliajassa. Yksi näiden laitteiden ongelmista on virrankulutus. Tämä virrankulutuskerroin on yksi kriittinen ja ratkaiseva tekijä kaikille IoT-laitteille ja IoT-projekteille.
Koska tiedämme, että ESP8266 on yksi suosituimmista moduuleista minkä tahansa IoT-projektin rakentamiseen, niin tässä artikkelissa opitaan virran säästämisestä käytettäessä ESP8266: ta missä tahansa IoT-sovelluksessa. Täällä lataamme LM35-lämpötila-anturitiedot ThingSpeak-pilveen 15 sekunnin välein ja näiden 15 sekunnin aikana ESP8266 pysyy DeepSleep-tilassa virran säästämiseksi
Eri menetelmät virrankulutuksen minimoimiseksi
On useita tapoja optimoida sulautettujen ja IoT-laitteiden virrankulutus. Optimointi voidaan tehdä laitteistolle ja ohjelmistolle. Joskus emme voi optimoida laitteistokomponentteja vähentämään virrankulutusta, mutta varmasti voimme tehdä sen ohjelmistopuolella muuttamalla ja optimoimalla koodin ohjeita ja toimintoja. Tämän lisäksi kehittäjät voivat myös muokata kellotaajuutta pienentääkseen mikrokontrollerin virrankulutusta.Voimme kirjoittaa laiteohjelmiston lepotilaan, kun tietoja ei vaihdeta, ja suorittaa määritetyn tehtävän tietyllä aikavälillä. Lepotilassa kytketty laitteisto kuluttaa paljon vähemmän virtaa, joten akku voi kestää pitkään. Voit myös lukea virrankulutuksen minimointi mikrokontrollereissa, jos haluat tietää enemmän virrankulutustekniikoista.
ESP8266-moduulit ovat yleisimmin käytettyjä Wi-Fi-moduuleja, joissa on monia pienikokoisia ominaisuuksia, joilla on erilaiset tilat, mukaan lukien lepotila, ja näihin tiloihin pääsee käyttämällä joitain laitteisto- ja ohjelmistomuutoksia. Jos haluat lisätietoja ESP8266: sta, voit tarkistaa IoT-pohjaiset projektimme käyttämällä ESP826 Wi-Fi -moduulia, joista osa on lueteltu alla:
- ESP8266 NodeMCU: n ja Atmega16-mikrokontrollerin liittäminen sähköpostin lähettämiseen
- Lämpötila- ja kosteustunnistintietojen lähettäminen Firebase Real-Time -tietokantaan NodeMCU ESP8266: lla
- IoT-ohjattu LED-valot Google Firebase Consolen ja ESP8266 NodeMCU: n avulla
Tässä kerromme ESP8266: n eri lepotiloista ja esitämme ne lähettämällä lämpötilatietoja Thingspeak-palvelimelle säännöllisin väliajoin käyttäen syvää lepotilaa.
Tarvittavat komponentit
- ESP8266 Wi-Fi -moduuli
- LM35 lämpötila-anturi
- Hyppääjän johdot
ESP8266: n lepotilojen tyypit
Esp8266-moduuli toimii seuraavissa tiloissa:
- Aktiivinen tila: Tässä tilassa koko siru on päällä ja siru voi vastaanottaa, lähettää tietoja. Tämä on tietysti eniten virtaa kuluttava tila.
- Modeemi-lepotila: Tässä tilassa keskusyksikkö on toiminnassa ja Wi-Fi-radiot eivät ole käytössä. Tätä tilaa voidaan käyttää sovelluksissa, jotka edellyttävät suorittimen toimintaa, kuten PWM: ssä. Se saa Wi-Fi-modeemipiirin sammumaan, kun se on yhteydessä Wi-Fi AP: hen (tukiasema) ilman tiedonsiirtoa virrankulutuksen optimoimiseksi.
- Kevyt lepotila: Tässä tilassa CPU ja kaikki oheislaitteet on keskeytetty. Kaikki herätykset, kuten ulkoiset keskeytykset, herättävät sirun. Ilman tiedonsiirtoa Wi-Fi-modeemipiiri voidaan sammuttaa ja keskusyksikkö keskeyttää virrankulutuksen säästämiseksi.
- Syvä lepotila: Tässä tilassa vain RTC on toiminnassa ja sirun kaikki muut komponentit on kytketty pois päältä. Tämä tila on hyödyllinen, kun data lähetetään pitkän aikavälin jälkeen.
Liitä LM35-lämpötila-anturi NodeMCU: n A0-napaan.
Kun ESP-moduulissa on HIGH RST-nastassa, se on käynnissä. Heti kun se vastaanottaa LOW-signaalin RST-nastassa, ESP käynnistyy uudelleen.
Aseta ajastin syvän lepotilan avulla, kun ajastin päättyy, D0-nasta lähettää LOW-signaalin RST-nastalle ja moduuli herää käynnistämällä sen uudelleen.
Nyt laitteisto on valmis ja hyvin konfiguroitu. Lämpötilalukemat lähetetään Thingspeak-palvelimelle. Luo tätä varten tili osoitteessa thingspeak.com ja luo kanava käymällä läpi alla olevat vaiheet.
Kopioi nyt Write API -avain. Mitä käytetään ESP-koodissa.
ESP8266 syvän lepotilan ohjelmointi
ESP8266-moduulin ohjelmointiin käytetään helposti saatavaa Arduino IDE -ohjelmaa. Varmista, että kaikki ESP8266-korttitiedostot on asennettu.
Aloita sisällyttämällä kaikki tarvittavat tärkeät kirjastot.
#sisältää
Kun kaikki kirjastot ovat mukana toimintojen käyttämisessä, määritä sitten API-kirjoitusavain, määritä Wi-Fi-nimi ja salasana. Ilmoita sitten kaikki muuttujat jatkokäyttöä varten, mihin tiedot tallennetaan.
Merkkijono apiWritekey = "*************"; // korvaa THINGSPEAK WRITEAPI -avaimellasi tässä char ssid = "******"; // wifi-SSID-nimesi char password = "******"; // wifi-salasana
Tee nyt toiminto yhdistääksesi moduulin Wi-Fi-verkkoon wifi.begin () -toiminnon avulla ja tarkista sitten jatkuvasti, kunnes moduulia ei ole yhdistetty Wi-Fi-verkkoon while-silmukan avulla.
void connect1 () { WiFi.disconnect (); viive (10); WiFi.begin (ssid, salasana); kun (WiFi.status ()! = WL_CONNECTED) {
Tee toinen toiminto tietojen lähettämiseksi asioiden huippupalvelimelle. Tässä lähetetään merkkijono, joka sisältää API-kirjoitusavaimen, kentän numeron ja lähetettävät tiedot. Lähetä sitten tämä merkkijono käyttämällä client.print () -toimintoa.
void data () { if (asiakas.yhteys (palvelin, 80)) { Merkkijono tsData = apiWritekey; tsData + = "& kenttä1 ="; tsData + = merkkijono (tempF); tsData + = "\ r \ n \ r \ n"; client.print ("POST / päivitä HTTP / 1.1 \ n"); client.print ("Isäntä: api.thingspeak.com \ n");
Kutsu yhteys1-toiminto, joka kutsuu toiminnon muodostamaan yhteyden Wi-Fi-verkkoon, ota sitten lämpötilan lukemat ja muunna se celsiusasteiksi.
void setup () { Sarja.alku (115200); Serial.println ("laite on herätystilassa"); connect1 (); int-arvo = analoginen luku (A0); kelluva volttia = (arvo / 1024,0) * 5,0; tempC = voltit * 100,0;
Kutsu nyt data () -toimintoa ladataksesi tiedot thingspeak-pilveen. Lopuksi tärkeä kutsuttava toiminto on ESP.deepSleep (); tämä saa moduulin nukkumaan määritetyn ajanjakson, joka on mikrosekunnissa.
tiedot (); Serial.println ("syvä uni 15 sekunnin ajan"); ESP.deepSleep (15e6);
Loop-toiminto pysyy tyhjänä, koska kaikki tehtävät on suoritettava kerran ja nollattava sitten moduuli määritetyn ajanjakson jälkeen.
Työvideo ja koko koodi on tämän opetusohjelman lopussa. Lataa koodi ESP8266-moduuliin. Poista RST- ja D0-liitännät ennen kuin lataat ohjelman, muuten se antaa virheen.
DeepSleepin testaaminen ESP8266: ssa
Kun olet ladannut ohjelman, huomaat, että lämpötilalukemat latautuvat ThingSpeak-pilveen 15 sekunnin välein ja sitten moduuli siirtyy syvän lepotilaan.
Tämä on valmis syvällisen lepotilan käytöstä ESP8266-moduulissa. Syvä uni on erittäin tärkeä ominaisuus, ja se on sisällytetty useimpiin laitteisiin. Voit viitata tähän opetusohjelmaan ja soveltaa tätä menetelmää eri projekteihin. Jos sinulla on epäilyksiä tai ehdotuksia, kirjoita ja kommentoi alla. Voit myös päästä foorumillemme.