- Olika metoder för att minimera strömförbrukningen
- Komponenter krävs
- Typer av vilolägen i ESP8266
- ESP8266 Deep Sleep Mode-programmering
- Testar DeepSleep i ESP8266
Eftersom IoT-revolutionen blomstrar varje dag ökar antalet anslutna enheter mycket snabbt. I framtiden kommer de flesta enheterna att vara anslutna till varandra och kommunicera i realtid. Ett av problemen med dessa enheter är strömförbrukningen. Denna energiförbrukningsfaktor är en avgörande och avgörande faktor för alla IoT-enheter och IoT-projekt.
Som vi vet att ESP8266 är en av de mest populära modulerna för att bygga något IoT-projekt, så i den här artikeln lär vi oss om att spara energi när man använder ESP8266 i alla IoT-applikationer. Här laddar vi upp LM35-temperatursensordata till ThingSpeak-molnet i 15 sekunders intervall och under dessa 15 sekunder förblir ESP8266 i DeepSleep-läge för att spara ström
Olika metoder för att minimera strömförbrukningen
Det finns flera sätt att optimera strömförbrukningen i de inbäddade enheterna och IoT-enheterna. Optimeringen kan göras på hårdvara och programvara. Ibland kan vi inte optimera hårdvarukomponenter för att minska strömförbrukningen, men vi kan säkert göra det på mjukvarusidan genom att ändra och optimera kodinstruktioner och funktioner. Inte bara detta, utvecklare kan också ändra klockfrekvensen för att minska mikrokontrollers energiförbrukning.Vi kan skriva en firmware för att få hårdvaran att sova när det inte finns något datautbyte och utföra den definierade uppgiften i ett visst intervall. I viloläge drar den anslutna hårdvaran mycket mindre ström och därmed kan batteriet hålla länge. Du kan också läsa Minimera energiförbrukningen i mikrokontroller om du vill veta mer om energiförbrukningstekniker.
ESP8266-moduler är de mest använda Wi-Fi-modulerna kommer med många funktioner i liten storlek med olika lägen inklusive viloläge och dessa lägen kan nås med viss modifiering av hårdvara och programvara. För att lära dig mer om ESP8266 kan du kolla våra IoT-baserade projekt med ESP826 Wi-Fi-modulen, några av dem listas nedan:
- Gränssnitt ESP8266 NodeMCU med Atmega16 Microcontroller för att skicka ett e-postmeddelande
- Skicka temperatur- och luftfuktighetsdata till Firebase Realtidsdatabas med NodeMCU ESP8266
- IoT-kontrollerad LED med Google Firebase Console och ESP8266 NodeMCU
Här kommer vi att förklara olika vilolägen som finns tillgängliga i ESP8266 och demonstrera dem genom att skicka temperaturdata till Thingspeak-servern regelbundet med hjälp av djupt viloläge.
Komponenter krävs
- ESP8266 Wi-Fi-modul
- LM35 temperatursensor
- Bygeltrådar
Typer av vilolägen i ESP8266
Esp8266-modulen fungerar i följande lägen:
- Aktivt läge: I det här läget slås hela chipet på och chipet kan ta emot, överföra data. Uppenbarligen är detta det mest strömförbrukande läget.
- Modem-viloläge: I det här läget fungerar CPU: n och Wi-Fi-radioerna är inaktiverade. Detta läge kan användas i applikationer som kräver att CPU: n ska fungera, som i PWM. Det gör att Wi-Fi-modemkretsen stängs av när den är ansluten till Wi-Fi AP (Access Point) utan dataöverföring för att optimera strömförbrukningen.
- Ljus-viloläge: I detta läge är CPU och alla kringutrustningar pausade. Eventuell väckning som externa avbrott kommer att väcka chipet. Utan dataöverföring kan Wi-Fi-modemkretsen stängas av och CPU avbrytas för att spara strömförbrukning.
- Djupt viloläge: I det här läget fungerar bara RTC och alla andra komponenter i chipet stängs av. Detta läge är användbart om data överförs efter långa intervaller.
Anslut LM35-temperatursensorn med A0-stiftet på NodeMCU.
När ESP-modulen har HIGH på RST-stift är den i körläge. Så snart den tar emot LÅG signal på RST-stift startar ESP om.
Ställ in timer med djupt viloläge, när timern slutar skickar D0-stiftet LÅG signal till RST-stift och modulen vaknar genom att starta om den.
Nu är hårdvaran redo och väl konfigurerad. Temperaturavläsningarna skickas till Thingspeak-servern. För detta gör du ett konto på thingspeak.com och skapar en kanal genom att gå igenom stegen nedan.
Kopiera nu Write API-nyckeln. Som kommer att användas i ESP-koden.
ESP8266 Deep Sleep Mode-programmering
Den lätt tillgängliga Arduino IDE kommer att användas för att programmera ESP8266-modulen. Se till att alla ESP8266-kortfiler är installerade.
Börja med att inkludera alla viktiga bibliotek som krävs.
#omfatta
När alla bibliotek är inkluderade för åtkomst till funktionerna tilldelar du sedan API-skrivnyckeln, konfigurerar ditt Wi-Fi-namn och lösenord. Deklarera sedan alla variabler för vidare användning där data ska lagras.
Sträng apiWritekey = "*************"; // ersätt med din THINGSPEAK WRITEAPI-nyckel här char ssid = "******"; // ditt wifi-SSID-namn char lösenord = "******"; // wifi lösenord
Gör nu en funktion för att ansluta modulen till Wi-Fi-nätverket med hjälp av wifi.begin () -funktionen och kontrollera sedan kontinuerligt tills modulen inte är ansluten till Wi-Fi med hjälp av en loop.
void connect1 () { WiFi.disconnect (); fördröjning (10); WiFi.begin (ssid, lösenord); medan (WiFi.status ()! = WL_CONNECTED) {
Skapa en annan funktion för att skicka data till ThingsPeak-servern. Här skickas en sträng som innehåller API-skrivnyckel, fältnummer och data som måste skickas. Skicka sedan den här strängen med funktionen client.print ().
ogiltiga data () { if (client.connect (server, 80)) { String tsData = apiWritekey; tsData + = "& field1 ="; tsData + = Sträng (tempF); tsData + = "\ r \ n \ r \ n"; client.print ("POST / uppdatera HTTP / 1.1 \ n"); client.print ("Värd: api.thingspeak.com \ n");
Ring connect1-funktionen som kommer att ringa funktionen för att ansluta Wi-Fi och ta sedan avläsningarna av temperaturen och konvertera den till Celsius.
ogiltig installation () { Serial.begin (115200); Serial.println ("enheten är i väckningsläge"); connect1 (); int-värde = analogRead (A0); flottörvolt = (värde / 1024,0) * 5,0; tempC = volt * 100,0;
Ring nu data () -funktionen för att ladda upp informationen på thingspeak-molnet. Slutligen är den viktiga funktionen att ringa till ESP.deepSleep (); detta får modulen att sova under det definierade tidsintervallet som är i mikrosekunder.
data(); Serial.println ("djup sömn i 15 sekunder"); ESP.deepSleep (15e6);
Loop-funktionen kommer att förbli tom eftersom all uppgift måste utföras en gång och sedan återställa modulen efter det angivna tidsintervallet.
Arbetsvideon och hela koden ges i slutet av denna handledning. Ladda upp koden i ESP8266-modulen. Ta bort den anslutna kabeln RST och D0 innan du laddar upp programmet annars kommer det att ge ett fel.
Testar DeepSleep i ESP8266
Efter uppladdning av programmet ser du att temperaturavläsningarna laddas upp i ThingSpeak-molnet efter var 15: e sekund och sedan går modulen i djupt viloläge.
Detta slutför självstudien om att använda Deep Sleep i ESP8266-modulen. Deepsleep är mycket viktigt och det har inkluderats i de flesta enheter. Du kan hänvisa till denna handledning och använda den här metoden för olika projekt. Om du är osäker eller förslag, vänligen skriv och kommentera nedan. Du kan också nå vårt forum.