User Tools

Site Tools


lab6

Sleep, Low Power și Sincronizare

Codul din laboratoarele anterioare transmitea periodic pachete de date în rețea dar, în intervalele de timp dintre două transmisiuni succesive, cicla inutil. Acest lucru duce la un consum de energie ridicat, ce poate avea un impact semnificativ asupra timpului de viață al nodului senzorial în cazul în care acesta este alimentat de la o baterie.

Din acest motiv, este preferabil ca nodurile să intre într-o stare de low-power în momentele de inactivitate. Pentru aceasta, veți folosi o biblioteca SparrowSleep.

Codul pentru biblioteca SparrowSleep poate fi descărcat de aici.

Pentru a testa modul de sleep, putem folosi exemplul de mai jos:

/* This is an example for SparrowVSleep library.
    You need to call SparrowV_SleepInit function.
    The funciton has 2 params.
    1st param: integer (> 1 second, greater than 1 second) (represent time in seconds, how long the board will sleep)
    2nd param: bool (true - with data retention, false - with no data retention)
               In case of no data retention the board can sleep max 8 secons and it will
    reboot after time end.
*/
 
#include <SparrowVsleep.h>
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  // put your main code here, to run repeatedly:
  Serial. println("****************************");
  Serial.println("Start");
  Serial.flush();
 
  //sleep for 25 seconds with data retention
  SparrowV_SleepInit(25, true);
 
  Serial.println("Stop");
  Serial. println("****************************");
  Serial. println();
  Serial.flush();
  delay(5000);
}
Task 0: Rulați exemplul de mai sus.
Task 1: Adăugați codului de mai sus bibliotecile pentru radio și senzori folosite în laboratoarele anterioare. Nodul trebuie să trimită periodic pachete cu datele de la senzori, apoi să intre în starea de sleep.
Task 2: Creați un protocol simplu de sincronizare a timpilor de sleep pentru toate nodurile din laborator.
lab6.txt · Last modified: 2018/11/08 22:13 by dan.tudose