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:02] 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 533: | Line 581: | ||
| */ | */ | ||
| </ | </ | ||
| - | |||
| - | {{ : | ||
| La prima rulare vi se va afișa o listă cu porturi COM disponibile, | La prima rulare vi se va afișa o listă cu porturi COM disponibile, | ||
| Line 540: | Line 586: | ||
| Datele eșantionate de la senzorul de lumină ar trebui să fie vizibile în fereastra deschisă de către schița Processing. | Datele eșantionate de la senzorul de lumină ar trebui să fie vizibile în fereastra deschisă de către schița Processing. | ||
| + | < | ||
| - | ===== 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(); | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | < | ||
| - | < | ||