Croduino NOVA sleep mode

Početnik si s Croduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala e-radionice na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Croduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.

UVOD

Kada radimo neki projekt rijetko razmišljamo o potrošnji svih modula, ali kada taj projekt trebamo prebaciti na baterijsko napajanje onda vidimo da nam je potrošnja samih modula vrlo bitna. Kada projekt napajamo s baterijama onda nam je bitan svaki mA koji modul može potrošiti, te uvijek tražimo način kako smanjiti potrošnju. Ako imamo manju potrošnju to znači da će sustav(projekt) raditi duže s jednim punjenjem što nam je jako bitno. Kako bi omogućili dugotrajan rad sustavu s Croduino Nova 2 u ovom tutorijalu pokazat ćemo kako Novu možemo „uspavati“ kada ne treba ništa raditi ( npr. mjeri temperaturu svakih sat vremena) i kako ga probuditi. Da bi znali „uspavati“ i „probuditi“ Novu moramo prvo znati koje sve modove rada imamo, pa najprije krenimo s upoznavanjem modova rada.

MODOVI RADA

Croduino Nova 2 ima 4 vrste moda rada koji se razlikuju prema tome koji dijelovi pločice rade, te naravno prema potrošnji, pa krenimo s upoznavanjem koji su to modovi rada.
 
Prvi mod rada u kojemu rade svi dijelovi je Normalni rad i u njemu Croduino Nova 2 ne spava, nego normalno radi sve zadatke, te je uvijek spreman, naravno onda i najviše troši.
 
Drugi mod rada je MODEM-SLEEP te je on zadani mod rada i on je dostupan jedino kada se Croduino Nova 2 povezuje na pristupnu točku. U njemu se jedino isključuje WiFi kada god je to moguće ( između DTIM Beacon intervala koji su postavljeni unutar rutera).
 
Treći mod rada je LIGHT-SLEEP mod u kojemu Croduino Nova 2 gasi WiFi i sistem clock koji kontrolira procesor, te procesor radi, ali ne obavlja nikakav zadatak( prazan hod). U ovom modu Croduino troši puno manje nego u MODEM-SLEEP modu.
 
Zadnji mod u kojemu „uspavljujemo“ Croduino Nova 2 je DEEP SLEEP(duboki san) mod s kojim gasimo sve sustave, osim RTC(real time clock) te je u njemu potrošnja 17uA(3,3 V napajanje), odnosno 50uA( 5V s regulatorom i pull-up otpornicima) što je jako malo te je vrlo prihvatljivo za projekte koji se napajanju s baterijom.
Za smanjenje potrošnje do uA potrebno je skinuti CH340 USB driver, kao i punjač za bateriju s pločice, svakako prije skidanja CH340 čipa potrebno je prebaciti kod na pločicu jer kasnije to neće biti moguće.
Prikaz potrošnje za Normalan rad i DEEP sleep prikazan je u tablici(5V napajanje).

DEEP SLEEP

Kao što smo napisali ovo je jedini mod u kojemu Croduino Nova 2 „spava“ odnosno u kojemu se isključuju svi njegovi sustavi osim RTC(real time clock) te je ovaj mod najštedljiviji i koristi se kada trebamo značajno smanjiti potrošnju, a nije nam potreban konstantan rad mikrokontrolera.
Ovaj mod rada se koristi kada imamo senzore koji nešto mjere u određenim vremenskim intervalima, te podatke šalju na Internet( ili server). Prvo izmjerimo neke vrijednosti te ih pošaljemo te ugasimo mikrokontroler na određeno vrijeme ( vrijeme je u mikrosekundama) najduže na 70 minuta, te ponovimo proces( ponovno uključimo mikrokontroler, izmjerimo , pošaljemo te ga ugasimo).
Kako bi se mikrokontroler mogao probuditi potrebno je pin 16 spojiti na reset pin. Pin 16 ima jednu posebnu funkciju za buđenje mikrokontrolera. kada prođe zadano vrijeme pin 16 se postavlja na LOW te resetira mikrokontroler te on krene izvršavanje programa isto kao kada ga resetiramo s reset tipkom.

ARDUINO KOD

Pogledajmo sada jednostavan kod u kojemu ćemo svake minute očitati temperaturu te ju poslati na Serial monitor. U kodu za gašenje mikrokontrolera koristimo ESP.deepSleep() funkciju kojoj predajemo vrijeme u mikrosekundama( 1s= 1000000 us = 1e6).

//uključujemo biblioteku za DHT senzor
#include<DHT.h>
//definiramo na kojemu pinu je spojen DHT senzor te koju vrstu senzora koristimo(DHT11 ili DHT22)
#define DHTPIN 4
#define DHTTYPE DHT11
//kreiramo konstruktor za DHT biblioteku
DHT senzor_temp(DHTPIN,DHTTYPE);
void setup() {
//započinjemo serijsku komunikaciju(115200 bauda)
Serial.begin(115200);
//započinjemo komunikaciju sa senzorom
senzor_temp.begin();
//ispisujemo poruku da je Croduino budan i temperaturu na Serial monitor
Serial.println();
Serial.println("Croduino je upaljen i ocitava temperaturu");
Serial.print(senzor_temp.readTemperature());
Serial.println(" °C");
//DEEP SLEEP
Serial.println("Gasimo Croduino na jednu minutu");
ESP.deepSleep(60e6); // gasimo Croduino na 60 sekundi
}
void loop() {
}
Leave a Reply