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 01:32] dan.tudose [Transmisia radio] |
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 113: | Line 115: | ||
| 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:// | + | - Se instalează Arduino IDE: http:// |
| - | + | | |
| - | 2. Se descarcă arhiva Zigduino-1.0: | + | |
| - | + | | |
| - | 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 // | ||
| Line 194: | 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 216: | 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 269: | Line 298: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| ===== Comunicația serială ===== | ===== Comunicația serială ===== | ||
| Line 318: | 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 325: | 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 343: | Line 380: | ||
| < | < | ||
| < | < | ||
| - | |||
| ==== Senzorul digital de temperatură și umiditate ==== | ==== Senzorul digital de temperatură și umiditate ==== | ||
| Line 362: | Line 398: | ||
| <code C> | <code C> | ||
| - | #include "sht21b.h" | + | #include "sht21.h" |
| float temp, humid; | float temp, humid; | ||
| Line 398: | Line 434: | ||
| </ | </ | ||
| - | ===== Transmisia radio ===== | + | ===== Afișarea datelor de la senzori cu Processing |
| - | Pentru a folosi transceiver-ul radio cu care sunt dotate nodurile senzoriale, | + | în exemplul de mai jos vom vedea cum putem să trimitem un octet de date de la placa Sparrow la PC și să afișam grafic rezultatul. Comunicația |
| - | Instalarea bibliotecii este foarte facilă, trebuie doar să dezarhivați arhiva în //Arduino\libraries// | + | Bineînțeles, |
| + | Pur și simplu dezarhivați în directorul Arduino și rulați fișierul .exe | ||
| - | Mai jos aveți un exemplu care vă permite să trimiteți și să recepționați date de pe interfața radio. | + | Încărcați următorul program |
| <code C> | <code C> | ||
| - | /* | + | int controlPin = 7; //sensor ON/OFF control pin (PE7) |
| - | + | ||
| - | 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() { |
| - | + | ||
| - | void setup() | + | |
| - | { | + | |
| - | ZigduinoRadio.begin(11); | + | |
| - | Serial.begin(9600); | + | |
| | | ||
| - | | + | |
| - | 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(); | + | |
| - | } | + | |
| | | ||
| - | | + | |
| - | | + | Serial.begin(9600); |
| - | | + | } |
| - | | + | |
| - | + | ||
| - | 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(" | + | |
| - | | + | |
| + | void loop() { | ||
| + | digitalWrite(controlPin, | ||
| + | |||
| + | // wait a bit for the analog-to-digital converter | ||
| + | // to stabilize after the last reading: | ||
| + | delay(100); | ||
| | | ||
| - | | + | |
| + | Serial.println(analogRead(A2)); | ||
| + | |||
| + | digitalWrite(controlPin, | ||
| + | |||
| + | |||
| } | } | ||
| + | </ | ||
| - | void errHandle(radio_error_t err) | + | După cum puteți vedea, programul trimite pe serială datele citite de la senzorul de lumină. |
| - | { | + | Pentru a le afișa în mod grafic, încărcați următoarea schiță în Processing: |
| - | Serial.println(); | + | |
| - | | + | |
| - | Serial.print((uint8_t)err, | + | |
| - | Serial.println(); | + | |
| - | } | + | |
| - | void onXmitDone(radio_tx_done_t x) | + | <code C> |
| - | { | + | // Graphing sketch |
| - | Serial.println(); | + | |
| - | Serial.print(" | + | |
| - | Serial.print((uint8_t)x, 10); | + | // This program takes ASCII-encoded strings |
| - | | + | // from the serial port at 9600 baud and graphs them. It expects values in the |
| - | } | + | // range 0 to 1023, followed by a newline, or newline and carriage return |
| + | |||
| + | // Created 20 Apr 2005 | ||
| + | // Updated 18 Jan 2008 | ||
| + | // by Tom Igoe | ||
| + | // This example code is in the public domain. | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | int xPos = 1; // horizontal position of the graph | ||
| + | |||
| + | void setup () { | ||
| + | // set the window size: | ||
| + | | ||
| + | |||
| + | // List all the available serial ports | ||
| + | | ||
| + | // I know that the first port in the serial list on my mac | ||
| + | // is always my Arduino, so I open Serial.list()[0]. | ||
| + | // Open whatever port is the one you're using. | ||
| + | | ||
| + | // don't generate a serialEvent() unless you get a newline character: | ||
| + | | ||
| + | // set inital background: | ||
| + | | ||
| + | } | ||
| + | void draw () { | ||
| + | // everything happens in the serialEvent() | ||
| + | } | ||
| + | |||
| + | void serialEvent (Serial | ||
| + | // get the ASCII string: | ||
| + | | ||
| + | |||
| + | | ||
| + | // trim off any whitespace: | ||
| + | | ||
| + | // convert to an int and map to the screen height: | ||
| + | float inByte = float(inString); | ||
| + | | ||
| + | |||
| + | // draw the line: | ||
| + | | ||
| + | | ||
| + | |||
| + | // at the edge of the screen, go back to the beginning: | ||
| + | if (xPos >= width) { | ||
| + | xPos = 0; | ||
| + | | ||
| + | } | ||
| + | else { | ||
| + | // increment the horizontal position: | ||
| + | | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | /* Max/MSP v5 patch for this example | ||
| + | | ||
| + | 1591.3oc0YszbaaCD9r7uBL5RalQUAO3CvdyS5zVenWZxs5NcfHgjPCIfJIT | ||
| + | RTxj+6AOHkoTDooroUs0AQPR73a+1cwtK3WtZxzEpOwqlB9YveAlL4KWMYh6 | ||
| + | Q1GLo99ISKXeJMmU451zTUQAWpmNy+NM+SZ2y+sR1l02JuU9t0hJvFlNcMPy | ||
| + | dOuBv.U5Rgb0LPpRpYBooM3529latArTUVvzZdFPtsXAuDrrTU.f.sBffXxL | ||
| + | vGE50lIHkUVJXq3fRtdaoDvjYfbgjujaFJSCzq4.tLaN.bi1tJefWpqbO0uz | ||
| + | 1IjIABoluxrJ1guxh2JfPO2B5zRNyBCLDFcqbwNvuv9fHCb8bvevyyEU2JKT | ||
| + | YhkBSWPAfq2TZ6YhqmuMUo0feUn+rYpY4YtY+cFw3lUJdCMYAapZqzwUHX8S | ||
| + | crjAd+SIOU6UBAwIygy.Q1+HAA1KH6EveWOFQlitUK92ehfal9kFhUxJ3tWc | ||
| + | sgpxadigWExbt1o7Ps5dk3yttivyg20W0VcSmg1G90qtx92rAZbH4ez.ruy1 | ||
| + | nhmaDPidE07J+5n2sg6E6oKXxUSmc20o6E3SPRDbrkXnPGUYE.i5nCNB9TxQ | ||
| + | jG.G0kCTZtH88f07Rt0ZMMWUw8VvbKVAaTk6GyoraPdZff7rQTejBN54lgyv | ||
| + | HE0Ft7AvIvvgvIwO23jBdUkYOuSvIFSiNcjFhiSsUBwsUCh1AgfNSBAeNDBZ | ||
| + | DIDqY.f8.YjfjV1HAn9XDTxyNFYatVTkKx3kcK9GraZpI5jv7GOx+Z37Xh82 | ||
| + | LSKHIDmDXaESoXRngIZQDKVkpxUkMCyXCQhcCK1z.G457gi3TzMz4RFD515F | ||
| + | G3bIQQwcP3SOF0zlkGhiCBQ1kOHHFFlXaEBQIQnCwv9QF1LxPZ.A4jR5cyQs | ||
| + | vbvHMJsLll01We+rE2LazX6zYmCraRrsPFwKg1ANBZFY.IAihr8Ox.aH0oAL | ||
| + | hB8nQVw0FSJiZeunOykbT6t3r.NP8.iL+bnwNiXuVMNJH9H9YCm89CFXPBER | ||
| + | bz422p8.O4dg6kRxdyjDqRwMIHTbT3QFLskxJ8tbmQK4tm0XGeZWF7wKKtYY | ||
| + | aTAF.XPNFaaQBinQMJ4QLF0aNHF0JtYuHSxoUZfZY6.UU2ejJTb8lQw8Fo5k | ||
| + | Rv6e2PI+fOM71o2ecY1VgTYdCSxxUqLokuYq9jYJi6lxPgD2NIPePLB0mwbG | ||
| + | YA9Rgxdiu1k5xiLlSU6JVnx6wzg3sYHwTesB8Z5D7RiGZpXyvDNJY.DQX3.H | ||
| + | hvmcUN4bP1yCkhpTle2P37jtBsKrLWcMScEmltOPv22ZfAqQAdKr9HzATQwZ | ||
| + | q18PrUGt6Tst2XMCRUfGuhXs6ccn23YloomMqcTiC5iMGPsHsHRWhWFlaenV | ||
| + | XcqwgCQiGGJzptyS2ZMODBz6fGza0bzmXBj7+DA94bvpR01MffAlueO7HwcI | ||
| + | pWCwmzJdvi9ILgflLAFmyXB6O7ML0YbD26lenmcGxjVsZUN+A6pUK7AtTrPg | ||
| + | M+eRYG0qD9j4I7eEbco8Xh6WcO.or9XDC6UCiewbXHkh6xm5LiPEkzpJDRTu | ||
| + | mEB44Fgz4NCtJvX.SM1vo2SlTCZGAe7GZu6ahdRyzFOhYZ+mbVVSYptBw.K1 | ||
| + | tboIkatIA7c1cTKD1u.honLYV04VkluHsXe0szv9pQCE9Ro3jaVB1o15pz2X | ||
| + | zYoBvO5KXCAe0LCYJybE8ZODf4fV8t9qW0zYxq.YJfTosj1bv0xc.SaC0+AV | ||
| + | 9V9L.KKyV3SyTcRtmzi6rO.O16USvts4B5xe9EymDvebK0eMfW6+NIsNlE2m | ||
| + | eqRyJ0utRq13+RjmqYKN1e.4d61jjdsauXe3.2p6jgi9hsNIv97CoyJ01xzl | ||
| + | c3ZhUCtSHx3UZgjoEJYqNY+hYs5zZQVFW19L3JDYaTlMLqAAt1G2yXlnFg9a | ||
| + | 53L1FJVcv.cOX0dh7mCVGCLce7GFcQwDdH5Ta3nyAS0pQbHxegr+tGIZORgM | ||
| + | RnMj5vGl1Fs16drnk7Tf1XOLgv1n0d2iEsCxR.eQsNOZ4FGF7whofgfI3kES | ||
| + | 1kCeOX5L2rifbdu0A9ae2X.V33B1Z+.Bj1FrP5iFrCYCG5EUWSG.hhunHJd. | ||
| + | HJ5hhnng3h9HPj4lud02.1bxGw. | ||
| + | -----------end_max5_patcher----------- | ||
| + | |||
| + | */ | ||
| </ | </ | ||
| - | < | + | La prima rulare vi se va afișa o listă cu porturi COM disponibile, |
| - | < | + | |
| + | Datele eșantionate | ||
| + | |||
| + | < | ||
| + | |||
| + | |||