- Verschillende methoden om het stroomverbruik te minimaliseren
- Componenten vereist
- Soorten slaapmodi in ESP8266
- ESP8266 Diepe slaapstand programmeren
- DeepSleep testen in de ESP8266
Omdat de IoT-revolutie elke dag een hoge vlucht neemt, neemt het aantal verbonden apparaten zeer snel toe. In de toekomst zullen de meeste apparaten met elkaar worden verbonden en in realtime communiceren. Een van de problemen waarmee deze apparaten worden geconfronteerd, is het stroomverbruik. Deze stroomverbruiksfactor is een van de kritische en doorslaggevende factoren voor elk IoT-apparaat en IoT-projecten.
Omdat we weten dat ESP8266 een van de meest populaire modules is om elk IoT-project te bouwen, leren we in dit artikel over energiebesparing bij het gebruik van ESP8266 in elke IoT-toepassing. Hier uploaden we LM35-temperatuursensorgegevens naar ThingSpeak-cloud met een interval van 15 seconden en gedurende die 15 seconden blijft ESP8266 in DeepSleep-modus om energie te besparen
Verschillende methoden om het stroomverbruik te minimaliseren
Er zijn verschillende manieren om het stroomverbruik in de embedded en IoT-apparaten te optimaliseren. De optimalisatie is mogelijk op hardware en software. Soms kunnen we hardwarecomponenten niet optimaliseren om het stroomverbruik te verminderen, maar we kunnen het zeker aan softwarekant doen door code-instructies en functies te wijzigen en te optimaliseren. Niet alleen dit, ontwikkelaars kunnen ook de klokfrequentie wijzigen om het stroomverbruik van de microcontroller te verminderen.We kunnen een firmware schrijven om de hardware te laten slapen wanneer er geen gegevensuitwisseling is en de gedefinieerde taak in een bepaald interval uitvoeren. In de slaapstand verbruikt de aangesloten hardware veel minder stroom, waardoor de batterij lang meegaat. U kunt ook Stroomverbruik minimaliseren in microcontrollers lezen als u meer wilt weten over stroomverbruikstechnieken.
ESP8266-modules zijn de meest gebruikte Wi-Fi-modules die worden geleverd met veel functies in een klein formaat met verschillende modi, waaronder slaapmodus, en deze modi kunnen worden geopend met behulp van enige aanpassing in hardware en software. Voor meer informatie over ESP8266 kunt u onze op IoT gebaseerde projecten bekijken met behulp van de ESP826 Wi-Fi-module, waarvan enkele hieronder worden vermeld:
- Koppeling van ESP8266 NodeMCU met Atmega16 Microcontroller om een e-mail te verzenden
- Gegevens van temperatuur- en vochtigheidssensoren naar Firebase Real-Time Database verzenden met NodeMCU ESP8266
- IoT-gestuurde LED met Google Firebase Console en ESP8266 NodeMCU
Hier zullen we verschillende slaapmodi die beschikbaar zijn in ESP8266 uitleggen en deze demonstreren door temperatuurgegevens naar de Thingspeak-server te sturen met een regelmatig interval met behulp van de diepe slaapmodus.
Componenten vereist
- ESP8266 Wi-Fi-module
- LM35 temperatuursensor
- Doorverbindingsdraden
Soorten slaapmodi in ESP8266
De Esp8266-module werkt in de volgende modi:
- Actieve modus: in deze modus wordt de hele chip ingeschakeld en kan de chip de gegevens ontvangen en verzenden. Dit is duidelijk de meest energieverbruikende modus.
- Modem-slaapmodus: in deze modus is de CPU operationeel en zijn de Wi-Fi-radio's uitgeschakeld. Deze modus kan worden gebruikt in de toepassingen waarvoor de CPU moet werken, zoals in PWM. Het zorgt ervoor dat het Wi-Fi-modemcircuit wordt uitgeschakeld terwijl het is verbonden met het Wi-Fi AP (toegangspunt) zonder datatransmissie om het stroomverbruik te optimaliseren.
- Lichte slaapmodus: in deze modus worden de CPU en alle randapparatuur gepauzeerd. Elke wake-up, zoals externe onderbrekingen, zal de chip wakker maken. Zonder datatransmissie kan het Wi-Fi-modemcircuit worden uitgeschakeld en de CPU worden onderbroken om stroom te besparen.
- Diepe slaapmodus: in deze modus is alleen de RTC functioneel en zijn alle andere componenten van de chip uitgeschakeld. Deze modus is handig wanneer de gegevens na lange tijdsintervallen worden verzonden.
Verbind de LM35 temperatuursensor met de A0 pin van NodeMCU.
Wanneer de ESP-module HOOG op de RST-pin heeft, is deze in actieve staat. Zodra het een LAAG signaal op de RST-pin ontvangt, start de ESP opnieuw op.
Stel de timer in met behulp van de diepe slaapmodus, zodra de timer eindigt, stuurt de D0-pin het LOW-signaal naar de RST-pin en wordt de module wakker door deze opnieuw op te starten.
Nu is de hardware klaar en goed geconfigureerd. De temperatuurmetingen worden naar de Thingspeak-server gestuurd. Maak hiervoor een account aan op thingspeak.com en maak een kanaal aan door de onderstaande stappen te doorlopen.
Kopieer nu de API-sleutel schrijven. Die wordt gebruikt in de ESP-code.
ESP8266 Diepe slaapstand programmeren
De gemakkelijk verkrijgbare Arduino IDE zal worden gebruikt om de ESP8266-module te programmeren. Zorg ervoor dat alle ESP8266-kaartbestanden zijn geïnstalleerd.
Begin met het opnemen van alle belangrijke vereiste bibliotheken.
# omvatten
Zodra alle bibliotheken zijn opgenomen voor toegang tot de functies, wijst u de API-schrijfsleutel toe en configureert u uw Wi-Fi-naam en wachtwoord. Declareer vervolgens alle variabelen voor verder gebruik waar de gegevens moeten worden opgeslagen.
String apiWritekey = "*************"; // vervang hier door uw THINGSPEAK WRITEAPI-sleutel char ssid = "******"; // uw wifi SSID-naam char wachtwoord = "******"; // wifi-wachtwoord
Maak nu een functie om de module met het Wi-Fi-netwerk te verbinden met de functie wifi.begin () en controleer vervolgens continu totdat de module geen verbinding heeft met Wi-Fi met de while-lus.
void connect1 () { WiFi.disconnect (); vertraging (10); WiFi.begin (ssid, wachtwoord); while (WiFi.status ()! = WL_CONNECTED) {
Maak een andere functie om de gegevens naar de Thingspeak-server te sturen. Hier wordt een string verzonden met daarin de API-schrijfsleutel, het veldnummer en de gegevens die moeten worden verzonden. Verzend deze string vervolgens met de functie client.print ().
void data () { if (client.connect (server, 80)) { String tsData = apiWritekey; tsData + = "& field1 ="; tsData + = String (tempF); tsData + = "\ r \ n \ r \ n"; client.print ("POST / update HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n");
Roep de functie connect1 op die de functie oproept om Wi-Fi te verbinden, meet vervolgens de temperatuur en zet deze om in graden Celsius.
ongeldige setup () { Serial.begin (115200); Serial.println ("apparaat bevindt zich in de wekmodus"); connect1 (); int waarde = analogRead (A0); float volt = (waarde / 1024,0) * 5,0; tempC = volt * 100,0;
Roep nu de data () -functie aan om de gegevens op thingspeak cloud te uploaden. Ten slotte is de belangrijke aanroepfunctie ESP.deepSleep (); hierdoor zal de module slapen gedurende het gedefinieerde tijdsinterval dat in microseconden is.
gegevens(); Serial.println ("diepe slaap gedurende 15 seconden"); ESP.deepSleep (15e6);
De lusfunctie blijft leeg omdat alle taken één keer moeten worden uitgevoerd en vervolgens de module opnieuw moet worden ingesteld na het gedefinieerde tijdsinterval.
De werkvideo en volledige code worden aan het einde van deze tutorial gegeven. Upload de code in de ESP8266-module. Verwijder de RST en D0 aangesloten draad voordat u het programma uploadt, anders geeft het een foutmelding.
DeepSleep testen in de ESP8266
Na het uploaden van het programma zul je zien dat temperatuurmetingen na elke 15 seconden worden geüpload naar de ThingSpeak-cloud en dan gaat de module in de diepe slaapmodus.
Hiermee is de tutorial over het gebruik van Deep Sleep in de ESP8266-module voltooid. De diepe slaap is een zeer belangrijke functie en is in de meeste apparaten opgenomen. U kunt deze tutorial raadplegen en deze methode toepassen op verschillende projecten. In geval van twijfel of suggestie, schrijf en reageer dan hieronder. Ook kunt u ons forum bereiken.