User Tools

Site Tools


lab6

This is an old revision of the document!


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 ZigduinoSleep.

Codul pentru biblioteca ZigduinoSleep poate fi descăcat de aici.

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
 
#include <avr/sleep.h>
#include <avr/interrupt.h>
#include <ZigduinoSleep.h>
 
int led = 11;
int state = 0;
 
void setup() {                
 
  pinMode(led, OUTPUT); 
 
  Serial.begin(9600);
  Serial.println("Sleep test");
 
  ZigduinoSleepInit();
}
 
void loop() {
   ZigduinoSleepSet(1);
 
   //Code that is executed before sleep
   state ^= 1;
   if(state == 0) digitalWrite(led, HIGH);   
     else digitalWrite(led, LOW);
 
   Serial.begin(9600);
   Serial.println("Test");
   Serial.flush();
   Serial.end();
 
   //End of code
 
   ZigduinoSleep();
 
}
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 prtocol simplu de sincronizare a timpilor de sleep pentru toate nodurile din laborator.
lab6.1415717726.txt.gz · Last modified: 2014/11/11 16:55 by dan.tudose