User Tools

Site Tools


workshop

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
workshop [2014/07/06 10:11]
dan.tudose [Senzorul digital de temperatură și umiditate]
workshop [2014/10/27 12:44] (current)
dan.tudose
Line 103: Line 103:
  
 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.
 +
 +<imgcaption sparrowv3 | Nodul senzorial Sparrow v3.2>{{ :sparrowv3.png |}}</imgcaption>
  
 ==== Zigduino ==== ==== Zigduino ====
Line 346: Line 348:
  
 <code C> <code C>
 +int controlPin = 7; //sensor ON/OFF control pin (PE7)
 +
 void setup() { void setup() {
-  DDRE |= 1<<PE7; //sensor on/off control+   
 +  pinMode(controlPin, OUTPUT) //sensor on/off control 
 +  
   // initialize the serial communication:   // initialize the serial communication:
   Serial.begin(9600);   Serial.begin(9600);
Line 353: Line 359:
    
 void loop() { void loop() {
-  PORTE &= ~(1<<PE7); //enable all sensors+  digitalWrite(controlPin, LOW); //enable all sensors 
 +  
 +  // wait a bit for the analog-to-digital converter 
 +  // to stabilize after the last reading: 
 +  delay(100); 
 +  
   // send the value of analog input 0:   // send the value of analog input 0:
   Serial.println(analogRead(A0));   Serial.println(analogRead(A0));
      
-  PORTE |= (1<<PE7); //disable all sensors+  digitalWrite(controlPin, HIGH); //disable all sensors
      
-  // wait a bit for the analog-to-digital converter + 
-  // to stabilize after the last reading: +
-  delay(100);+
 } }
 </code> </code>
Line 371: Line 380:
 <imgcaption light | Senzorul de lumină și schema de conectare la microcontroller> {{ :light.png |}}</imgcaption> <imgcaption light | Senzorul de lumină și schema de conectare la microcontroller> {{ :light.png |}}</imgcaption>
 <note>**Task 1:** Senzorul de lumină este conectat la canalul A2. Citiți valoarea acestuia și trimiteți-o pe serială.</note> <note>**Task 1:** Senzorul de lumină este conectat la canalul A2. Citiți valoarea acestuia și trimiteți-o pe serială.</note>
- 
 ==== Senzorul digital de temperatură și umiditate ==== ==== Senzorul digital de temperatură și umiditate ====
  
Line 436: Line 444:
  
 <code C> <code C>
 +int controlPin = 7; //sensor ON/OFF control pin (PE7)
 +
 void setup() { void setup() {
-  DDRE |= 1<<PE7; //sensor on/off control+   
 +  pinMode(controlPin, OUTPUT) //sensor on/off control 
 +  
   // initialize the serial communication:   // initialize the serial communication:
   Serial.begin(9600);   Serial.begin(9600);
Line 443: Line 455:
    
 void loop() { void loop() {
-  PORTE &= ~(1<<PE7); //enable all sensors +  digitalWrite(controlPin, LOW); //enable all sensors 
-  // send the value of analog input 0: + 
-  Serial.println(analogRead(A0)); +
-   +
-  PORTE |= (1<<PE7); //disable all sensors +
-  +
   // wait a bit for the analog-to-digital converter   // wait a bit for the analog-to-digital converter
   // to stabilize after the last reading:   // to stabilize after the last reading:
   delay(100);   delay(100);
 +  
 +  // send the value of analog input 0:
 +  Serial.println(analogRead(A2));
 +  
 +  digitalWrite(controlPin, HIGH); //disable all sensors
 +  
 + 
 } }
 </code> </code>
Line 574: Line 589:
  
  
-===== Transmisia radio ===== 
- 
-Pentru a folosi transceiver-ul radio cu care sunt dotate nodurile senzoriale, vom utiliza o bibliotecă scrisă pentru Arduino ce ne va smplifica foarte mult codul. Această bibliotecă se numește ZigduinoRadio și poate fi descărcată de {{::zigduinoradio_201111130010.zip|aici}}.  
- 
-Instalarea bibliotecii este foarte facilă, trebuie doar să dezarhivați arhiva în //Arduino\libraries// 
- 
-Mai jos aveți un exemplu care vă permite să trimiteți și să recepționați date de pe interfața radio. 
- 
-<code C> 
-/* 
- 
-Run this sketch on two Zigduinos, open the serial monitor at 9600 baud, and type in stuff 
-Watch the Rx Zigduino output what you've input into the serial port of the Tx Zigduino 
- 
-*/ 
- 
-#include <ZigduinoRadio.h> 
- 
-void setup() 
-{ 
-  ZigduinoRadio.begin(11); 
-  Serial.begin(9600); 
-   
-  ZigduinoRadio.attachError(errHandle); 
-  ZigduinoRadio.attachTxDone(onXmitDone); 
-} 
- 
-void loop() 
-{ 
-  if (Serial.available()) 
-  { 
-    ZigduinoRadio.beginTransmission(); 
-     
-    Serial.println(); 
-    Serial.print("Tx: "); 
-     
-    while(Serial.available()) 
-    { 
-      char c = Serial.read(); 
-      Serial.write(c); 
-      ZigduinoRadio.write(c); 
-    } 
-     
-    Serial.println();  
-     
-    ZigduinoRadio.endTransmission(); 
-  } 
-   
-  if (ZigduinoRadio.available()) 
-  { 
-    Serial.println(); 
-    Serial.print("Rx: "); 
-     
-    while(ZigduinoRadio.available()) 
-      Serial.write(ZigduinoRadio.read()); 
-       
-    Serial.println(); 
-    Serial.print("LQI: "); 
-    Serial.print(ZigduinoRadio.getLqi(), 10); 
-    Serial.print(", RSSI: "); 
-    Serial.print(ZigduinoRadio.getLastRssi(), 10); 
-    Serial.print(" dBm, ED: "); 
-    Serial.print(ZigduinoRadio.getLastEd(), 10); 
-    Serial.println("dBm"); 
-  } 
-  
-   
-  delay(1000); 
-} 
- 
-void errHandle(radio_error_t err) 
-{ 
-  Serial.println(); 
-  Serial.print("Error: "); 
-  Serial.print((uint8_t)err, 10); 
-  Serial.println(); 
-} 
- 
-void onXmitDone(radio_tx_done_t x) 
-{ 
-  Serial.println(); 
-  Serial.print("TxDone: "); 
-  Serial.print((uint8_t)x, 10); 
-  Serial.println(); 
-} 
-</code> 
- 
-<note>**Task 0:** Rulați exemplul de mai sus și adăugați un identificator unic fiecărui nod (de ex. numele vostru).</note> 
-<note>**Task 1:** Trimiteți datele de la senzori periodic prin radio. Dacă reușiti, veți putea vedea toate datele de la toti ceilalti senzori (inclusiv ale senzorilor vostri)</note> 
-<note>**Task 2:** Scrieți un sketch Processing care să vă afișeze grafic toate datele de la toți senzorii conectați </note> 
  
  
workshop.1404630666.txt.gz · Last modified: 2014/07/06 10:11 by dan.tudose