This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
proiecte:programarea-sparrow-din-arduino [2014/01/31 22:35] alexandru.marin Updated Proiect low power de monitorizare senzorială |
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 ===== | ||
==== Arduino ==== | ==== Arduino ==== | ||
- | Arduino este un proiect hardware open source bazat pe microcontrolerele | + | Arduino este un proiect hardware open source bazat pe microcontroller-ele |
+ | Hardware-ul poate fi extins prin diverse module, ale căror scheme sunt publice, astfel încât pot fi la rândul lor extinse şi îmbunătăţite de utilizatori. | ||
==== Arduino IDE ==== | ==== Arduino IDE ==== | ||
- | Mediul integrat de dezvoltare Arduino a fost proiectat astfel încât să fie uşor de folosit de oameni care nu au cunoştinţe avansate de hardware sau software. În acelaşi timp, Arduino IDE este suficient de flexibil pentru a putea fi folosit şi de utilizatorii avansaţi. Bazat pe mediul de dezvoltare Processing, Arduino IDE este open source şi poate fi extins prin librării C++. Nu în ultimul rând, Arduino IDE este disponibil în versiuni pentru Windows, Mac OS şi Linux, cross-platform-ul fiind unul dintre marile sale avantaje. | + | Mediul integrat de dezvoltare Arduino a fost proiectat astfel încât să fie uşor de folosit de oameni care nu au cunoştinţe avansate de hardware sau software. |
+ | În acelaşi timp, Arduino IDE este suficient de flexibil pentru a putea fi folosit şi de utilizatorii avansaţi. | ||
+ | Bazat pe mediul de dezvoltare Processing, Arduino IDE este open source şi poate fi extins prin librării C++. | ||
+ | Nu în ultimul rând, Arduino IDE este disponibil în versiuni pentru Windows, Mac OS şi Linux, cross-platform-ul fiind unul dintre marile sale avantaje. | ||
==== Sparrow v3 ==== | ==== Sparrow v3 ==== | ||
- | Sparrow v3 este nodul senzorial folosit în cadrul laboratorului de WSN şi este echipat cu trei tipuri de senzori: temperatură, | + | Sparrow v3 este nodul senzorial folosit în cadrul laboratorului de //Wireless Sensor Networks// |
==== Zigduino ==== | ==== Zigduino ==== | ||
- | Zigduino este un shield compatibil cu Arduino care prezintă, ca şi Sparrow v3, un microcontroler | + | Zigduino este un shield compatibil cu Arduino care prezintă, ca şi Sparrow v3, un microcontroller |
- | În ceea ce priveşte suportul software, creatorii Zigduino au făcut | + | În ceea ce priveşte suportul software, creatorii Zigduino au realizat |
===== Configurarea IDE-ului Arduino pentru a suporta Zigduino ===== | ===== Configurarea IDE-ului Arduino pentru a suporta Zigduino ===== | ||
- | Pasul 1: Se instalează Arduino IDE: http:// | + | Pentru a introduce suportul de Zigduino în Arduino IDE este nevoie să se urmeze paşii de mai jos: |
- | Pasul 2: Se descarcă arhiva Zigduino-1.0: | + | |
- | Pasul 3: Se înlocuieşte folder-ul // | + | 1. Se instalează Arduino IDE: http:// |
- | Pasul 4: Se copiază în // | + | |
- | Pasul 5: Se înlocuieşte fişierul // | + | 2. Se descarcă arhiva Zigduino-1.0: |
- | Pasul 6: Se copiază în // | + | |
+ | 3. Se înlocuieşte folder-ul // | ||
+ | |||
+ | 4. Se copiază în // | ||
+ | |||
+ | 5. Se înlocuieşte fişierul // | ||
+ | |||
+ | 6. Se copiază în // | ||
După aceşti paşi ar trebui să fie vizibile doua intrări pentru Zigduino în // | După aceşti paşi ar trebui să fie vizibile doua intrări pentru Zigduino în // | ||
+ | |||
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 40: | Line 53: | ||
===== Hello LED cu Arduino IDE si Sparrow v3 ===== | ===== Hello LED cu Arduino IDE si Sparrow v3 ===== | ||
- | Pasul 1: În // | + | Pentru a compila şi executa codul de mai jos pe un nod Sparrow folosind Arduino IDE paşii sunt următorii: |
- | Pasul 2: În // | + | |
- | Pasul 3: Se alege portul COM corespunzător | + | 1. Se creează un proiect nou şi se copiază codul de mai jos (File-> |
- | Pasul 4: Se uploadează | + | |
+ | 2. În // | ||
+ | |||
+ | 3. În // | ||
+ | |||
+ | 4. Se alege portul COM la care a fost conectat nodul din // | ||
+ | |||
+ | 5. Se uploadează | ||
<code C> | <code C> | ||
Line 76: | Line 96: | ||
===== Librărie pentru senzorul sht21 ===== | ===== Librărie pentru senzorul sht21 ===== | ||
- | Senzorul de umiditate şi temperatură de pe Sparrow este de tipul SHT21 şi este conectat la interfaţa I2C a microcontroller-ului. | + | Senzorul de umiditate şi temperatură de pe Sparrow |
- | Pentru a citi date de la el s-au folosit fişierele sht21.c si sht21.h oferite ca suport în laboratorul [[http:// | + | Pentru a citi date de la acest senzor |
- | Pasul 1: În folder-ul // | + | |
- | Pasul 2: Se copiază sht21.c si sht21.h în folder-ul creat anterior; | + | 1. În folder-ul // |
- | Pasul 3: Se schimbă extensia fişierului .c în .cpp; | + | |
+ | 2. Se copiază sht21.c si sht21.h în folder-ul creat anterior; | ||
+ | |||
+ | 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 " | ||
- | După aceşti paşi se va putea importa header-ul sht21.h în proiectul Arduino: #include " | ||
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. | + | 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, | + | |
+ | Topologia reţelei folosite este formată dintr-un nod-gateway, | ||
+ | |||
+ | 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). | ||
+ | |||
+ | {{ : | ||
+ | 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, | ||
+ | |||
+ | 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, | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | Monitorizarea începe după apăsarea butonului // | ||
+ | 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ă, | ||
+ | |||
+ | Notă: Programul alege automat prima interfaţă COM alocată aşa că este nevoie să se asigure faptul că nodul este conectat astfel. | ||
+ | |||
+ | ===== Resurse ===== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== Bibliografie ===== | ||
+ | |||
+ | * [1] http:// | ||
+ | * [2] http:// | ||
+ | * [3] http:// |