dimanche 1 décembre 2013

simulation xbee s1 avec arduino

Nous pouvons simuler avec une carte arduino une trame API issue d'un xbee série 1 côté base recevant une donnée analogique d'un End device. La donnée analogique est une valeur aléatoire entre 200 et 212. Copier ce code et le téléverser dans une carte UNO.



int data [30];
int drapeau=0;
int periode=100;
int k=0;

void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(0));
  data[0] = 0x7e; //start
  data[1] = 0x00; // longueur MSB
  data[2] = 10; // longueur LSB
  data[3] = 0x00; // API identifier
  data[4] = 0x00; // adresse 16 bits MSB
  data[5] = 0x00; // adresse 16 bits LSB
  data[6] = 0x43; // digital channel mask H
  data[7] = 0x00; // digital channel mask L
  data[8] = 0x00; // analog channel mask H
  data[9] = 0x02; // analog channel mask L
  data[10] = 0x00; // digital samples
  data[11] = 0x00; // analog sample H
  data[12] = 0x00; // analog sample L
  data[13] = 0; //checksum
}


void loop() {

  if (millis()%periode<drapeau){
    for (int i=0;i<=10;i++){
      Serial.write(data[i]);
    }
    //k++;
    //int val = 512+200*sin(6.28*0.1*k*periode/1000);
    int val=random(200,212);
    data[11]=highByte(val);
    data[12]=lowByte(val);
    data[13]=calculeChecksum(data);
    Serial.write(data[11]);
    Serial.write(data[12]);
    Serial.write(data[13]);
  }
  drapeau = millis()%periode;
  delay(2);  
}

int calculeChecksum(int donnee[] ){
  int somme = 0;
  for (int i=3;i<=12;i++){
    somme+=donnee[i];
  }
  return somme %(16*16);
}

Aucun commentaire:

Enregistrer un commentaire