User Tools

Site Tools


proiecte:programarea-sparrow-din-arduino

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
proiecte:programarea-sparrow-din-arduino [2014/02/01 00:58]
alexandru.marin
proiecte:programarea-sparrow-din-arduino [2015/09/28 17:48] (current)
alex.marin
Line 1: Line 1:
 ====== Programarea nodului senzorial Sparrow v3 folosind Arduino IDE ====== ====== Programarea nodului senzorial Sparrow v3 folosind Arduino IDE ======
  
-Marin Alexandru Gabriel - Master AAC1+Marin Alexandru-Gabriel - Master AAC1 
 ===== Introducere ===== ===== Introducere =====
  
Line 18: Line 19:
 ==== Sparrow v3 ==== ==== Sparrow v3 ====
  
-Sparrow v3 este nodul senzorial folosit în cadrul laboratorului de Wireless Sensor Networks şi este echipat cu trei tipuri de senzori: temperatură, umiditate și luminozitate ambientală. Acesta dispune de un microcontroller Atmega128RFA1, care încorporează un transmiţător radio conform cu standardul IEEE 802.15.4, peste care se poate implementa popularul protocol Zigbee.+Sparrow v3 este nodul senzorial folosit în cadrul laboratorului de //Wireless Sensor Networks// şi este echipat cu trei tipuri de senzori: temperatură, umiditate și luminozitate ambientală. Acesta dispune de un microcontroller Atmega128RFA1, care încorporează un transmiţător radio conform cu standardul IEEE 802.15.4, peste care se poate implementa popularul protocol Zigbee.
  
 ==== Zigduino ==== ==== Zigduino ====
Line 29: Line 30:
 Pentru a introduce suportul de Zigduino în Arduino IDE este nevoie să se urmeze paşii de mai jos: Pentru a introduce suportul de Zigduino în Arduino IDE este nevoie să se urmeze paşii de mai jos:
  
-1. Se instalează Arduino IDE: http://www.arduino.cc/en/Main/Software (versiunea 1.0.5 - Aşa cum se menţionează şi în readme-ul arhivei, Zigduino-1.0 este compatibil doar cu Arduino-1.0x);+1. Se instalează Arduino IDE: http://www.arduino.cc/en/Main/Software (versiunea 1.0.5 - Zigduino-1.0 este compatibil doar cu Arduino-1.0x);
  
 2. Se descarcă arhiva Zigduino-1.0: https://github.com/logos-electromechanical/Zigduino-1.0; 2. Se descarcă arhiva Zigduino-1.0: https://github.com/logos-electromechanical/Zigduino-1.0;
Line 42: Line 43:
  
 După aceşti paşi ar trebui să fie vizibile doua intrări pentru Zigduino în //Tools->Boards// (în meniul Arduino IDE). După aceşti paşi ar trebui să fie vizibile doua intrări pentru Zigduino în //Tools->Boards// (în meniul Arduino IDE).
 +
 Notă: Daca IDE-ul era pornit, va fi nevoie de un restart. Notă: Daca IDE-ul era pornit, va fi nevoie de un restart.
  
Line 103: Line 105:
 3. Se schimbă extensia fişierului .c în .cpp; 3. Se schimbă extensia fişierului .c în .cpp;
  
-După aceşti paşi se va putea importa header-ul sht21.h în proiectul Arduino: #include "sht21.h", aşa cum se va vedea în proiectul ataşat.+După aceşti paşi se va putea importa header-ul sht21.h în proiectul Arduino: //#include "sht21.h"//, aşa cum se va vedea în proiectul următor. 
 Notă: Dacă IDE-ul era pornit, va fi nevoie de un restart. Notă: Dacă IDE-ul era pornit, va fi nevoie de un restart.
  
 ===== Proiect low power de monitorizare senzorială ===== ===== Proiect low power de monitorizare senzorială =====
  
-Folosind mediul de dezvoltare Arduino IDE modificat conform paşilor prezentaţi anterior s-a creat un proiect de monitorizare senzorială bazat pe comunicare radio între mai multe noduri Sparrow v3, pornind de la scheletul de cod oferit în laboratorul doi.+Folosind mediul de dezvoltare Arduino IDE modificat conform paşilor prezentaţi anterior s-a creat un proiect de monitorizare senzorială bazat pe comunicare radio între mai multe noduri Sparrow v3, pornind de la scheletul de cod oferit în laboratorul doi, secţiunea //Stări de low power pentru Sparrow v3//.
  
-Topologia reţelei folosite este formată dintr-un nod-gateway, care ascultă permanent mediul de transmisie, şi mai multe noduri care citesc date de la toate tipurile de senzori la intervale regulate de timp, apoi intră în sleep, pentru a minimiza consumul de energie.+Topologia reţelei folosite este formată dintr-un nod-gateway, care ascultă permanent mediul de transmisie, şi mai multe noduri care citesc date de la toate tipurile de senzori la intervale regulate de timp, apoi intră în sleep, pentru a consuma cât mai puţină energie.
  
 Gateway-ul este singurul nod care primeşte pachete (nu există comunicare între noduri non-gateway, aşa cum se poate observa în imaginea de mai jos). Gateway-ul este singurul nod care primeşte pachete (nu există comunicare între noduri non-gateway, aşa cum se poate observa în imaginea de mai jos).
  
 {{ :proiecte:retea.png?nolink&400 | Topologia folosită}} {{ :proiecte:retea.png?nolink&400 | Topologia folosită}}
-Gatewayul aşteaptă să primească un pachet integral de la unul din celelalte noduri. Acest eveniment este detectat o dată cu declanşarea excepţiei de TRX24_RX_END, în al cărei handler este parsat pachetul primit (acesta conţine informaţii despre id-ul nodului sursă şi valori citite de la senzori). Informaţiile parsate sunt printate pe interfaţa serială, după care nodul gateway aşteaptă următorul pachet.+Gatewayul aşteaptă să primească un pachet integral de la unul din celelalte noduri. Acest eveniment este detectat o dată cu declanşarea excepţiei de TRX24_RX_END, în al cărei handler este parsat pachetul primit (acesta conţine informaţii despre id-ul nodului sursă şi valori citite de la senzorii nodului sursă). Informaţiile parsate sunt trimise de către gateway pe interfaţa serială, după care se aşteaptă următorul pachet. 
 + 
 +Aşa cum s-a menţionat anterior, înainte de a citi date de la senzori pentru a le trimite către gateway, celelalte noduri rămân într-o stare de sleep pentru o perioadă prestabilită. Această stare, caracterizată de un consum redus de energie, presupune dezactivarea tuturor senzorilor, urmată de trecerea microcontroller-ului în sleep. 
 + 
 +Mecanismul utilizat pentru ieşirea din acestă stare este reprezentat de activarea MAC symbol counter-ului şi a întreruperii SCNT_CMP1_vect, care se declanşează atunci când registrul Symbol Counter are aceeaşi valoare cu registrul Symbol Counter Output Compare, acesta din urmă fiind iniţializat în prealabil cu o valoare corespunzătoare pentru perioada de sleep dorită. Ieşirea din starea de sleep este reprezentată practic de declanşarea întreruperii SCNT_CMP1_vect. 
 + 
 +Proiectul este ataşat în secţiunea Resurse. 
 + 
 +===== Monitorizarea datelor cu Processing ===== 
 + 
 +Pentru a monitoriza datele trimise de noduri a fost creată o interfaţă grafică în Processing, cu o coloană de butoane şi o zonă de grafice, aşa cum se poate obseva în video-ul de mai jos. Datele pentru grafice sunt citite de pe interfaţa serială, unde sunt trimise de nodul-gateway. 
 + 
 +{{http://www.youtube.com/v/vnCcOBF_6xI?.swf?720x388}} 
 + 
 +Monitorizarea începe după apăsarea butonului //Start//
 +Cu ajutorul celorlalte butoane se poate alege unul dintre cele trei noduri precum şi modul graficelor. Se pot afişa grafice pentru valorile citite de la senzorii de temperatură, luminozitate şi umiditate (fie toate graficele în acelaşi timp, fie doar unul dintre ele). 
 + 
 +Notă: Programul alege automat prima interfaţă COM alocată aşa că este nevoie să se asigure faptul că nodul este conectat astfel. 
 + 
 +===== Resurse =====
  
-Aşa cum am menţionat anterior, înainte de a citi date de la senzori pentru a le trimite către gateway, nodurile non-gateway rămân într-o stare de sleep pentru o perioadă prestabilită. Această stare, caracterizată de un consum redus de energie, presupune dezactivarea tuturor senzorilor, urmată de trecerea microcontroller-ului însuşi în sleep.+{{:proiecte:arduino_sketch.zip| Arduino Sketch}} Proiectul low power de monitorizare senzorială
  
-Mecanismul utilizat pentru ieşirea din acestă stare este reprezentat de activarea MAC symbol counter-ului şi întreruperii SCNT_CMP1_vect, care se declanşează atunci când Symbol Counter Register are aceeaşi valoare cu Symbol Counter Output Compare Register, iniţializat în prealabil. Ieşirea din starea de sleep este reprezentată practic de declanşarea întreruperii.+{{:proiecte:processing_sketch.zip| Processing Sketch}} Interfaţgrafică
  
-===== Sketch Processing pentru plot-area datelor =====+===== Bibliografie =====
  
 +* [1] http://www.arduino.cc
 +* [2] http://www.logos-electro.com/zigduino
 +* [3] http://elf.cs.pub.ro/wsn/wiki
  
proiecte/programarea-sparrow-din-arduino.1391209116.txt.gz · Last modified: 2014/02/01 00:58 by alexandru.marin