- Różne metody minimalizacji zużycia energii
- Wymagane składniki
- Rodzaje trybów uśpienia w ESP8266
- Programowanie w trybie głębokiego uśpienia ESP8266
- Testowanie DeepSleep w ESP8266
Ponieważ rewolucja IoT rozwija się każdego dnia, liczba podłączonych urządzeń rośnie bardzo szybko. W przyszłości większość urządzeń będzie połączona ze sobą i komunikować się w czasie rzeczywistym. Jednym z problemów, z jakim borykają się te urządzenia, jest zużycie energii. Ten współczynnik zużycia energii jest jednym z krytycznych i decydujących czynników dla każdego urządzenia IoT i projektów IoT.
Ponieważ wiemy, że ESP8266 jest jednym z najpopularniejszych modułów do budowy dowolnego projektu IoT, w tym artykule dowiemy się o oszczędzaniu energii podczas korzystania z ESP8266 w dowolnej aplikacji IoT. Tutaj przesyłamy dane czujnika temperatury LM35 do chmury ThingSpeak w odstępach 15 sekund i podczas tych 15 sekund ESP8266 pozostaje w trybie DeepSleep, aby oszczędzać energię
Różne metody minimalizacji zużycia energii
Istnieje kilka sposobów optymalizacji zużycia energii w urządzeniach wbudowanych i urządzeniach IoT. Optymalizację można przeprowadzić na sprzęcie i oprogramowaniu. Czasami nie możemy zoptymalizować komponentów sprzętowych w celu zmniejszenia zużycia energii, ale z pewnością możemy to zrobić po stronie oprogramowania, zmieniając i optymalizując instrukcje i funkcje kodu. Nie tylko to, programiści mogą również zmodyfikować częstotliwość zegara, aby zmniejszyć zużycie energii mikrokontrolera.Możemy napisać oprogramowanie układowe, które uśpi sprzęt, gdy nie ma wymiany danych i wykonywać określone zadanie w określonym przedziale czasu. W trybie uśpienia podłączony sprzęt pobiera bardzo mniej energii, dzięki czemu bateria może trwać długo. Możesz również przeczytać artykuł Minimalizowanie zużycia energii w mikrokontrolerach, jeśli chcesz dowiedzieć się więcej o technikach zużycia energii.
Moduły ESP8266 są najczęściej używanymi modułami Wi-Fi, wyposażonymi w wiele funkcji w małych rozmiarach, posiadających różne tryby, w tym tryb uśpienia, a dostęp do tych trybów można uzyskać po wprowadzeniu pewnych modyfikacji sprzętu i oprogramowania. Aby dowiedzieć się więcej o ESP8266, możesz sprawdzić nasze projekty oparte na IoT wykorzystujące moduł Wi-Fi ESP826, niektóre z nich są wymienione poniżej:
- Połączenie ESP8266 NodeMCU z mikrokontrolerem Atmega16 w celu wysłania wiadomości e-mail
- Wysyłanie danych z czujnika temperatury i wilgotności do bazy danych czasu rzeczywistego Firebase za pomocą NodeMCU ESP8266
- Dioda LED kontrolowana przez IoT przy użyciu konsoli Google Firebase i ESP8266 NodeMCU
Tutaj wyjaśnimy różne tryby uśpienia dostępne w ESP8266 i zademonstrujemy je, wysyłając dane o temperaturze do serwera Thingspeak w regularnych odstępach czasu przy użyciu trybu głębokiego uśpienia.
Wymagane składniki
- Moduł Wi-Fi ESP8266
- Czujnik temperatury LM35
- Przewody połączeniowe
Rodzaje trybów uśpienia w ESP8266
Moduł Esp8266 działa w następujących trybach:
- Tryb aktywny: w tym trybie cały układ jest włączony, a układ może odbierać i przesyłać dane. Oczywiście jest to tryb najbardziej energochłonny.
- Tryb uśpienia modemu: W tym trybie procesor działa, a radia Wi-Fi są wyłączone. Ten tryb może być używany w aplikacjach wymagających pracy procesora, jak w PWM. Sprawia, że obwód modemu Wi-Fi wyłącza się podczas połączenia z punktem dostępu Wi-Fi (punktem dostępu) bez transmisji danych, aby zoptymalizować zużycie energii.
- Tryb uśpienia: w tym trybie procesor i wszystkie urządzenia peryferyjne są wstrzymane. Każde przebudzenie, takie jak zewnętrzne przerwania, spowoduje obudzenie chipa. Bez transmisji danych obwód modemu Wi-Fi można wyłączyć, a procesor zawiesić, aby oszczędzać energię.
- Tryb głębokiego uśpienia: w tym trybie działa tylko zegar czasu rzeczywistego, a wszystkie inne elementy układu są wyłączone. Ten tryb jest przydatny, gdy dane są przesyłane po długich odstępach czasu.
Podłącz czujnik temperatury LM35 do styku A0 NodeMCU.
Gdy moduł ESP ma WYSOKI na pinie RST, jest w stanie pracy. Jak tylko otrzyma sygnał LOW na pinie RST, ESP restartuje się.
Ustaw timer w trybie głębokiego uśpienia, po zakończeniu timera pin D0 wyśle sygnał LOW do pinu RST, a moduł obudzi się, restartując go.
Teraz sprzęt jest gotowy i dobrze skonfigurowany. Odczyty temperatury zostaną przesłane na serwer Thingspeak. W tym celu załóż konto na thingspeak.com i utwórz kanał, wykonując poniższe czynności.
Teraz skopiuj klucz Write API. Który zostanie użyty w kodzie ESP.
Programowanie w trybie głębokiego uśpienia ESP8266
Łatwo dostępne Arduino IDE posłuży do zaprogramowania modułu ESP8266. Upewnij się, że wszystkie pliki płyty ESP8266 są zainstalowane.
Zacznij od uwzględnienia wszystkich ważnych wymaganych bibliotek.
#zawierać
Gdy wszystkie biblioteki zostaną uwzględnione w celu uzyskania dostępu do funkcji, przypisz klucz API do zapisu, skonfiguruj swoją nazwę Wi-Fi i hasło. Następnie zadeklaruj wszystkie zmienne do dalszego wykorzystania, w miejscu przechowywania danych.
String apiWritekey = "*************"; // zamień na swój klucz THINGSPEAK WRITEAPI w tym miejscu char ssid = "******"; // nazwa SSID sieci Wi-Fi char hasło = "******"; // hasło Wi-Fi
Teraz wykonaj funkcję łączenia modułu z siecią Wi-Fi za pomocą funkcji wifi.begin (), a następnie sprawdzaj w sposób ciągły, aż moduł nie zostanie podłączony do Wi-Fi za pomocą pętli while.
void connect1 () { WiFi.disconnect (); opóźnienie (10); WiFi.begin (ssid, hasło); while (WiFi.status ()! = WL_CONNECTED) {
Utwórz inną funkcję, aby wysłać dane do serwera rzeczy. Tutaj zostanie wysłany ciąg znaków zawierający klucz zapisu API, numer pola i dane, które mają zostać wysłane. Następnie wyślij ten ciąg za pomocą funkcji 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 / aktualizacja HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n");
Wywołaj funkcję connect1, która wywoła funkcję połączenia Wi-Fi, a następnie odczytaj temperaturę i zamień ją na stopnie Celsjusza.
void setup () { Serial.begin (115200); Serial.println ("urządzenie jest w trybie budzenia"); connect1 (); wartość int = analogRead (A0); napięcie zmiennoprzecinkowe = (wartość / 1024,0) * 5,0; tempC = wolty * 100,0;
Teraz wywołaj funkcję data (), aby przesłać dane do chmury rzeczyspeak. Wreszcie ważną funkcją do wywołania jest ESP.deepSleep (); spowoduje to uśpienie modułu na określony przedział czasu, który jest wyrażony w mikrosekundach.
dane(); Serial.println ("głęboki sen przez 15 sekund"); ESP.deepSleep (15e6);
Funkcja pętli pozostanie pusta, ponieważ wszystkie zadania należy wykonać raz, a następnie zresetować moduł po zdefiniowanym przedziale czasu.
Działający film wideo i pełny kod podano na końcu tego samouczka. Wgraj kod w module ESP8266. Usuń przewód podłączony do RST i D0 przed załadowaniem programu, w przeciwnym razie spowoduje to błąd.
Testowanie DeepSleep w ESP8266
Po wgraniu programu zobaczysz, że odczyty temperatury wgrywają się na chmurę ThingSpeak co 15 sekund a następnie moduł przechodzi w tryb głębokiego uśpienia.
To kończy samouczek dotyczący korzystania z funkcji Deep Sleep w module ESP8266. Głęboki sen jest bardzo ważną funkcją i został uwzględniony w większości urządzeń. Możesz skorzystać z tego samouczka i zastosować tę metodę do różnych projektów. W przypadku jakichkolwiek wątpliwości lub sugestii prosimy pisać i komentować poniżej. Możesz również dotrzeć do naszego forum.