User Tools

Site Tools


lab5

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
lab5 [2014/11/04 15:08]
dan.tudose
lab5 [2018/11/09 09:55] (current)
dan.tudose
Line 1: Line 1:
 ====== Protocoale de transmisie ====== ====== Protocoale de transmisie ======
  
-Pentru lucrarea curentă de laborator veți folosi biblioteca ZigduinoTransfer ce folosește clasele definite în laboratorul anterior pentru transmisia radio. Clasa implementează un protocol peste functiile de transmisie și recepție obișnuite și poate fi descărcată de {{:zigduinoprotocol.zip| aici}}.+Pentru lucrarea curentă de laborator veți folosi biblioteca SparrowTransfer ce folosește clasele definite în laboratorul anterior pentru transmisia radio. Clasa implementează un protocol peste functiile de transmisie și recepție obișnuite și poate fi descărcată de {{::sparrowradio.zip|aici}}.
  
 Instalarea bibliotecii este foarte facilă, trebuie doar să dezarhivați arhiva în Arduino\libraries Instalarea bibliotecii este foarte facilă, trebuie doar să dezarhivați arhiva în Arduino\libraries
Line 9: Line 9:
 Codul pentru Transmitter: Codul pentru Transmitter:
 <code C> <code C>
-#include <ZigduinoTransfer.h> +#include "SparrowTransfer.h" 
 + 
 //create object //create object
-ZigduinoTransfer ET;  +SparrowTransfer ST;  
 + 
 struct SEND_DATA_STRUCTURE{ struct SEND_DATA_STRUCTURE{
   //put your variable definitions here for the data you want to send   //put your variable definitions here for the data you want to send
   //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO   //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
-  int blinks; +  uint16_t data;
-  int pause;+
 }; };
  
Line 24: Line 23:
 SEND_DATA_STRUCTURE mydata; SEND_DATA_STRUCTURE mydata;
  
 +void blinkLED() //blinks the LED
 +{
 +  digitalWrite(8,LOW);
 +  delay(20);
 +  digitalWrite(8,HIGH);  
 +}
 + 
 void setup(){ void setup(){
-  Serial.begin(9600); + Serial.begin(9600); 
-  //start the library, pass in the data details +  
-  ET.begin(details(mydata)); + //start the library, pass in the data details 
-   + ST.begin(details(mydata)); 
-  pinMode(11, OUTPUT); +  
-   + pinMode(8, OUTPUT); 
-  + digitalWrite(8, LOW); 
 +  
 + mydata.data = 0;
      
 } }
  
 void loop(){ void loop(){
-  //this is how you access the variables. [name of the group].[variable name] 
-  mydata.blinks = 5; 
-  mydata.pause = 10; 
-  //send the data 
-  ET.sendData(); 
      
-  //Just for fun, we will blink it out too +  mydata.data++;
-   for(int i = mydata.blinksi>0; i--){ +
-      digitalWrite(11, HIGH); +
-      delay(mydata.pause * 100); +
-      digitalWrite(11, LOW); +
-      delay(mydata.pause * 100); +
-    }+
      
-  delay(5000);+  //send the data 
 +  ST.sendData(); 
 +  blinkLED(); 
 + 
 +  delay(1000);
 } }
 +
 </code> </code>
  
Line 57: Line 59:
  
 <code C> <code C>
-#include <ZigduinoTransfer.h> +#include "SparrowTransfer.h" 
 + 
 //create object //create object
-ZigduinoTransfer ET;  +SparrowTransfer ST;  
 + 
 struct RECEIVE_DATA_STRUCTURE{ struct RECEIVE_DATA_STRUCTURE{
-  //put your variable definitions here for the data you want to receive +  //put your variable definitions here for the data you want to send 
-  //THIS MUST BE EXACTLY THE SAME ON THE OTHER NODE!!! +  //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO 
-  int blinks+  uint16_t data
-  int pause;+ 
 }; };
- 
 //give a name to the group of data //give a name to the group of data
 RECEIVE_DATA_STRUCTURE mydata; RECEIVE_DATA_STRUCTURE mydata;
 +
 +uint16_t old_index, received_index, lost;
  
 void setup(){ void setup(){
   Serial.begin(9600);   Serial.begin(9600);
-  //start the library, pass in the data details   
-  ET.begin(details(mydata)); 
      
 +  //start the library, pass in the data details  
 +  ST.begin(details(mydata));
 + 
   pinMode(11, OUTPUT);   pinMode(11, OUTPUT);
-  +  digitalWrite(11, HIGH);  
 +  
 +
 + 
 +void blinkLED() 
 +
 +  digitalWrite(11, LOW); 
 +  delay(20); 
 +  digitalWrite(11, HIGH);  
 } }
  
 void loop(){ void loop(){
   //check and see if a data packet has come in.    //check and see if a data packet has come in. 
-  if(ET.receiveData()){ +  if(ST.receiveData() == SUCCESS){ 
-    //this is how you access the variables. [name of the group].[variable name] +     
-    //since we have data, we will blink it out.  +    blinkLED(); 
-    for(int i = mydata.blinks; i>0; i--){ +     
-      digitalWrite(11, HIGH); +    received_index++; 
-      delay(mydata.pause * 100); +     
-      digitalWrite(11LOW); +    if(old_index != 0) 
-      delay(mydata.pause * 100); +      lost += mydata.data old_index 1; 
-    }+       
 +    Serial.print("Frame arrived: "); 
 +    Serial.print(mydata.data); 
 +    Serial.print(" "); 
 +    Serial.print("lost: "); 
 +    Serial.print(lost); 
 +    Serial.print(", loss: "); 
 +    Serial.print(lost*100.0/(lost+received_index), 3); 
 +    Serial.println("%"); 
 +       
 +    old_index = mydata.data;
   }   }
-   +  
-  //you should make this delay shorter than your transmit delay or else messages could be lost +  //optional delay, to disable flooding serial interface 
-  delay(250);+  //delay(250);
 } }
 +
 </code> </code>
  
 <note>**Task 0:** Rulați exemplele de mai sus.</note> <note>**Task 0:** Rulați exemplele de mai sus.</note>
-<note>**Task 1:** Modificați structura de date pentru a conține urmatoarele câmpuri: adresa nodului care face transmisia (un octet), sequence number pentru transmisie (doi octeși) și payload (32 biți). Trimiteți mesaje și afișati-le pe serială.</note>+<note>**Task 1:** Modificați structura de date pentru a conține urmatoarele câmpuri: adresa nodului care face transmisia (un octet), sequence number pentru transmisie (doi octeți) și payload (32 octeți). Trimiteți mesaje și afișati-le pe serială.</note>
 <note>**Task 2:** Modificați biblioteca pentru a permite transmisia bidirecțională de date.</note> <note>**Task 2:** Modificați biblioteca pentru a permite transmisia bidirecțională de date.</note>
  
lab5.1415106513.txt.gz · Last modified: 2014/11/04 15:08 by dan.tudose