- Metodi diversi per ridurre al minimo il consumo di energia
- Componenti richiesti
- Tipi di modalità di sospensione in ESP8266
- Programmazione della modalità Deep Sleep ESP8266
- Test di DeepSleep nell'ESP8266
Poiché la rivoluzione dell'IoT è in pieno boom ogni singolo giorno, il numero di dispositivi connessi sta aumentando molto rapidamente. In futuro, la maggior parte dei dispositivi sarà collegata tra loro e comunicherà in tempo reale. Uno dei problemi affrontati da questi dispositivi è il consumo di energia. Questo fattore di consumo energetico è uno dei fattori critici e decisivi per qualsiasi dispositivo IoT e progetto IoT.
Poiché sappiamo che ESP8266 è uno dei moduli più popolari per creare qualsiasi progetto IoT, quindi in questo articolo impariamo come risparmiare energia durante l'utilizzo di ESP8266 in qualsiasi applicazione IoT. Qui carichiamo i dati del sensore di temperatura LM35 su ThingSpeak cloud in un intervallo di 15 secondi e durante quei 15 secondi ESP8266 rimane in modalità DeepSleep per risparmiare energia
Metodi diversi per ridurre al minimo il consumo di energia
Esistono diversi modi per ottimizzare il consumo energetico nei dispositivi embedded e IoT. L'ottimizzazione può essere eseguita su hardware e software. A volte non possiamo ottimizzare i componenti hardware per ridurre il consumo di energia, ma sicuramente possiamo farlo sul lato software modificando e ottimizzando le istruzioni e le funzioni del codice. Non solo, gli sviluppatori possono anche modificare la frequenza di clock per ridurre il consumo di energia del microcontrollore.Possiamo scrivere un firmware per far dormire l'hardware quando non c'è scambio di dati ed eseguire l'attività definita in un determinato intervallo. In modalità sleep, l'hardware collegato consuma molta meno energia e quindi la batteria può durare a lungo. Puoi anche leggere Minimizzare il consumo di energia nei microcontrollori, se vuoi saperne di più sulle tecniche di consumo energetico.
I moduli ESP8266 sono i moduli Wi-Fi più utilizzati e sono dotati di molte funzionalità di piccole dimensioni con diverse modalità tra cui la modalità di sospensione e queste modalità sono accessibili utilizzando alcune modifiche hardware e software. Per saperne di più su ESP8266, puoi controllare i nostri progetti basati su IoT utilizzando il modulo Wi-Fi ESP826, alcuni di essi sono elencati di seguito:
- Interfacciamento di ESP8266 NodeMCU con il microcontrollore Atmega16 per inviare un'e-mail
- Invio dei dati dei sensori di temperatura e umidità al database in tempo reale Firebase utilizzando NodeMCU ESP8266
- LED controllato IoT utilizzando Google Firebase Console e ESP8266 NodeMCU
Qui spiegheremo le diverse modalità di sospensione disponibili in ESP8266 e le dimostreremo inviando i dati sulla temperatura al server Thingspeak a intervalli regolari utilizzando la modalità di sospensione profonda.
Componenti richiesti
- Modulo Wi-Fi ESP8266
- Sensore di temperatura LM35
- Cavi jumper
Tipi di modalità di sospensione in ESP8266
Il modulo Esp8266 funziona nelle seguenti modalità:
- Modalità attiva: in questa modalità, l'intero chip è acceso e il chip può ricevere e trasmettere i dati. Ovviamente, questa è la modalità che consuma più energia.
- Modem-sleep mode: in questa modalità, la CPU è operativa e le radio Wi-Fi sono disabilitate. Questa modalità può essere utilizzata nelle applicazioni che richiedono il funzionamento della CPU, come in PWM. Fa spegnere il circuito del modem Wi-Fi durante la connessione con l'AP Wi-Fi (punto di accesso) senza trasmissione di dati per ottimizzare il consumo energetico.
- Modalità di sospensione leggera: in questa modalità, la CPU e tutte le periferiche sono in pausa. Qualsiasi riattivazione come interruzioni esterne risveglierà il chip. Senza la trasmissione dei dati, il circuito del modem Wi-Fi può essere spento e la CPU sospesa per risparmiare energia.
- Modalità Deep-sleep: in questa modalità solo l'RTC è funzionante e tutti gli altri componenti del chip sono spenti. Questa modalità è utile quando i dati vengono trasmessi dopo lunghi intervalli di tempo.
Collegare il sensore di temperatura LM35 con il pin A0 di NodeMCU.
Quando il modulo ESP ha HIGH sul pin RST, è in stato di esecuzione. Non appena riceve il segnale LOW sul pin RST, l'ESP si riavvia.
Imposta il timer utilizzando la modalità di sospensione profonda, una volta che il timer termina, il pin D0 invia il segnale LOW al pin RST e il modulo si sveglierà riavviandolo.
Ora l'hardware è pronto e ben configurato. Le letture della temperatura verranno inviate al server Thingspeak. Per questo, crea un account su thingspeak.com e crea un canale seguendo i passaggi seguenti.
Ora copia la chiave API di scrittura. Che verrà utilizzato nel codice ESP.
Programmazione della modalità Deep Sleep ESP8266
L'IDE Arduino facilmente disponibile verrà utilizzato per programmare il modulo ESP8266. Assicurati che tutti i file della scheda ESP8266 siano installati.
Inizia includendo tutte le librerie importanti richieste.
#includere
Una volta incluse tutte le librerie per l'accesso alle funzioni, assegnare la chiave di scrittura API, configurare il nome e la password Wi-Fi. Quindi dichiarare tutte le variabili per un ulteriore utilizzo in cui memorizzare i dati.
String apiWritekey = "*************"; // sostituisci con la tua chiave THINGSPEAK WRITEAPI qui char ssid = "******"; // nome SSID wifi char password = "******"; // password wifi
Ora, crea una funzione per connettere il modulo alla rete Wi-Fi usando la funzione wifi.begin () e poi controlla continuamente finché il modulo non è connesso al Wi-Fi usando il ciclo while.
void connect1 () { WiFi.disconnect (); ritardo (10); WiFi.begin (ssid, password); while (WiFi.status ()! = WL_CONNECTED) {
Crea un'altra funzione per inviare i dati al server thingspeak. Qui verrà inviata una stringa che contiene la chiave di scrittura API, il numero di campo e i dati che devono essere inviati. Quindi inviare questa stringa utilizzando la funzione 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 / aggiornamento HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n");
Chiama la funzione connect1 che chiamerà la funzione per connettere il Wi-Fi quindi prendere le letture della temperatura e convertirla in Celsius.
void setup () { Serial.begin (115200); Serial.println ("il dispositivo è in modalità Wake up"); connect1 (); valore int = analogRead (A0); volt float = (valore / 1024,0) * 5,0; tempC = volt * 100,0;
Ora, chiama la funzione data () per caricare i dati su thingspeak cloud. Infine, la funzione importante da chiamare è ESP.deepSleep (); questo farà dormire il modulo per l'intervallo di tempo definito che è in microsecondi.
dati(); Serial.println ("sonno profondo per 15 secondi"); ESP.deepSleep (15e6);
La funzione Loop rimarrà vuota poiché tutte le attività devono essere eseguite una volta e quindi ripristinare il modulo dopo l'intervallo di tempo definito.
Il video di lavoro e il codice completo sono forniti alla fine di questo tutorial. Carica il codice nel modulo ESP8266. Rimuovere il cavo connesso RST e D0 prima di caricare il programma altrimenti darà un errore.
Test di DeepSleep nell'ESP8266
Dopo aver caricato il programma, vedrai che le letture della temperatura vengono caricate sul cloud ThingSpeak ogni 15 secondi e quindi il modulo entra in modalità di sospensione profonda.
Questo completa il tutorial sull'uso di Deep Sleep nel modulo ESP8266. Il deepsleep è una caratteristica molto importante ed è stato incluso nella maggior parte dei dispositivi. Puoi fare riferimento a questo tutorial e applicare questo metodo a diversi progetti. In caso di dubbi o suggerimenti, scrivi e commenta di seguito. Inoltre puoi raggiungere il nostro forum.