This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
workshop [2014/07/05 09:04] dan.tudose [Afișarea datelor de la senzori cu Processing] |
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ă, | Sparrow v3 este nodul senzorial folosit în cadrul laboratorului de //Wireless Sensor Networks// şi este echipat cu trei tipuri de senzori: temperatură, | ||
+ | |||
+ | < | ||
==== Zigduino ==== | ==== Zigduino ==== | ||
Line 189: | Line 191: | ||
</ | </ | ||
- | În programul de mai sus se observă folosirea unor macrouri: | + | În programul de mai sus se observă folosirea unor macrouri: |
+ | |||
+ | Alternativ, puteți folosi funcțiile de bibliotecă Arduino: | ||
+ | |||
+ | <code C> | ||
+ | /* | ||
+ | * Blink | ||
+ | * | ||
+ | * The basic Arduino example. | ||
+ | * then off for one second, and so on... We use pin 13 because, | ||
+ | * depending on your Arduino board, it has either a built-in LED | ||
+ | * or a built-in resistor so that you need only an LED. | ||
+ | * | ||
+ | * http:// | ||
+ | */ | ||
+ | |||
+ | |||
+ | int ledPin = 11; // LED (PB5) connected to digital pin 11 | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | pinMode(ledPin, | ||
+ | } | ||
+ | |||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | digitalWrite(ledPin, | ||
+ | delay(1000); | ||
+ | digitalWrite(ledPin, | ||
+ | delay(1000); | ||
+ | } | ||
+ | </ | ||
Pentru a compila şi executa codul de mai jos pe un nod Sparrow folosind Arduino IDE paşii sunt următorii: | Pentru a compila şi executa codul de mai jos pe un nod Sparrow folosind Arduino IDE paşii sunt următorii: | ||
Line 211: | Line 245: | ||
--*// | --*// | ||
- | Led-urile sunt legate la portul B, pinii PB5, PB6 și PB7.</ | + | Led-urile sunt legate la portul B, pinii PB5, PB6 și PB7 (pinii 11, 10, respectiv 9 pentru Arduino).</ |
Line 264: | Line 298: | ||
} | } | ||
</ | </ | ||
+ | |||
===== Comunicația serială ===== | ===== Comunicația serială ===== | ||
Line 313: | Line 348: | ||
<code C> | <code C> | ||
+ | int controlPin = 7; //sensor ON/OFF control pin (PE7) | ||
+ | |||
void setup() { | void setup() { | ||
- | | + | |
+ | pinMode(controlPin, | ||
+ | | ||
// initialize the serial communication: | // initialize the serial communication: | ||
Serial.begin(9600); | Serial.begin(9600); | ||
Line 320: | Line 359: | ||
void loop() { | void loop() { | ||
- | | + | |
+ | |||
+ | // 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)); | ||
| | ||
- | | + | |
| | ||
- | // wait a bit for the analog-to-digital converter | + | |
- | // to stabilize after the last reading: | + | |
- | delay(100); | + | |
} | } | ||
</ | </ | ||
Line 338: | Line 380: | ||
< | < | ||
< | < | ||
- | |||
==== Senzorul digital de temperatură și umiditate ==== | ==== Senzorul digital de temperatură și umiditate ==== | ||
Line 357: | Line 398: | ||
<code C> | <code C> | ||
- | #include "sht21b.h" | + | #include "sht21.h" |
float temp, humid; | float temp, humid; | ||
Line 403: | Line 444: | ||
<code C> | <code C> | ||
+ | int controlPin = 7; //sensor ON/OFF control pin (PE7) | ||
+ | |||
void setup() { | void setup() { | ||
- | | + | |
+ | pinMode(controlPin, | ||
+ | | ||
// initialize the serial communication: | // initialize the serial communication: | ||
Serial.begin(9600); | Serial.begin(9600); | ||
Line 410: | Line 455: | ||
void loop() { | void loop() { | ||
- | | + | |
- | // send the value of analog input 0: | + | |
- | Serial.println(analogRead(A0)); | + | |
- | + | ||
- | PORTE |= (1<< | + | |
- | | + | |
// 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, | ||
+ | | ||
+ | |||
} | } | ||
</ | </ | ||
Line 541: | 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 {{:: | ||
- | |||
- | Instalarea bibliotecii este foarte facilă, trebuie doar să dezarhivați arhiva în // | ||
- | |||
- | 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 < | ||
- | |||
- | 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(" | ||
- | | ||
- | while(Serial.available()) | ||
- | { | ||
- | char c = Serial.read(); | ||
- | Serial.write(c); | ||
- | ZigduinoRadio.write(c); | ||
- | } | ||
- | | ||
- | Serial.println(); | ||
- | | ||
- | ZigduinoRadio.endTransmission(); | ||
- | } | ||
- | | ||
- | if (ZigduinoRadio.available()) | ||
- | { | ||
- | Serial.println(); | ||
- | Serial.print(" | ||
- | | ||
- | while(ZigduinoRadio.available()) | ||
- | Serial.write(ZigduinoRadio.read()); | ||
- | | ||
- | Serial.println(); | ||
- | Serial.print(" | ||
- | Serial.print(ZigduinoRadio.getLqi(), | ||
- | Serial.print(", | ||
- | Serial.print(ZigduinoRadio.getLastRssi(), | ||
- | Serial.print(" | ||
- | Serial.print(ZigduinoRadio.getLastEd(), | ||
- | Serial.println(" | ||
- | } | ||
- | |||
- | | ||
- | delay(1000); | ||
- | } | ||
- | |||
- | void errHandle(radio_error_t err) | ||
- | { | ||
- | Serial.println(); | ||
- | Serial.print(" | ||
- | Serial.print((uint8_t)err, | ||
- | Serial.println(); | ||
- | } | ||
- | |||
- | void onXmitDone(radio_tx_done_t x) | ||
- | { | ||
- | Serial.println(); | ||
- | Serial.print(" | ||
- | Serial.print((uint8_t)x, | ||
- | Serial.println(); | ||
- | } | ||
- | </ | ||
- | |||
- | < | ||
- | < | ||
- | < | ||