Go Down

Topic: Radio fréquence avec Arduino Uno et ATtiny 85 (Read 1 time) previous topic - next topic

xortix

Bonjour à toutes et à tous,

J'ai besoin de vos conseils et surtout de votre aide concernant un projet de radio fréquence entre deux plates formes électronique (une carte arduino uno et un ATtiny 85).


Voici une photo du projet électronique : http://img28.imageshack.us/img28/7191/7fag.jpg

* Je programme l'ATtiny 85 avec une carte USB Tiny AVR programmer : https://www.sparkfun.com/products/11460


J'essaie donc d'échanger des données via un réseau sans fil (radio fréquence) entre une carte Arduino Uno et un programmateur ATtiny. J'utilise pour cela la librairie Manchester. (Lien de la librairie : https://github.com/mchr3k/arduino-libs-manchester)


Principe de fonctionnement :

Carte Arduino : Par défaut le message diffusé est "0". Lorsque j'appui sur le bouton (pin 2) le message envoyé vers le module émetteur (pinTX 5) devient "1" et la LED (pin 13) s'allume. Lorsque je re-appui sur le bouton la LED s'étiend et le message envoyé redevient "0".

Carte ATtiny : Lorsque le message reçu par le module récepteur (pinRX 3) est de valeur "0" alors la LED (pin 1) reste éteinte. Par contre lorsque le message reçu est égale à "1" alors la LED s'allumera.


Le code source pour la carte Arduino Uno est celui ci :
Code: [Select]
#include <Manchester.h>

/*

  Manchester Transmitter example
 
  In this example transmitter will send one 16 bit number per transmittion

  try different speeds using this constants, your maximum possible speed will
  depend on various factors like transmitter type, distance, microcontroller speed, ...

  MAN_300 0
  MAN_600 1
  MAN_1200 2
  MAN_2400 3
  MAN_4800 4
  MAN_9600 5
  MAN_19200 6
  MAN_38400 7


*/

int ledpin=13;
int bouton=2;
int pintx=5;
int etat=0;
int prev_etat=0;
int transmit_data=0;

void setup() {
  pinMode(ledpin, OUTPUT);
  digitalWrite(ledpin, LOW);
  Serial.begin(9600);
  Serial.println("Manchester");
  man.workAround1MhzTinyCore(); //add this in order for transmitter to work with 1Mhz Attiny85/84
  man.setupTransmit(pintx, MAN_1200);
}

void loop() {
 
int val=digitalRead(bouton);
const char *msg = "FALSE";

if((val==HIGH) && (prev_etat==LOW)){
   etat= 1 - etat;
   delay(10);
}

prev_etat=val;

if(etat==0){
   digitalWrite(ledpin,HIGH);
   transmit_data = 1;
} else {
   digitalWrite(ledpin,LOW);
   transmit_data = 0;
}

  Serial.print("RELAY ");
  Serial.println(transmit_data);
  man.transmit(transmit_data);
 
}



Le code source pour carte ATtiny est celui ci :
Code: [Select]

#include <Manchester.h>

/*

  Manchester Receiver example
 
  In this example receiver will receive one 16 bit number per transmittion

  try different speeds using this constants, your maximum possible speed will
  depend on various factors like transmitter type, distance, microcontroller speed, ...

  MAN_300 0
  MAN_600 1
  MAN_1200 2
  MAN_2400 3
  MAN_4800 4
  MAN_9600 5
  MAN_19200 6
  MAN_38400 7

*/

int ledpin=1;
int pinrx=3;
int etat=0;
int prev_etat=0;
int rx_etat=0;

void setup() {
  pinMode(ledpin, OUTPUT);
  digitalWrite(ledpin, LOW);
  //Serial.begin(9600);
  //Serial.println("Manchester");
  man.setupReceive(pinrx, MAN_1200);
  man.beginReceive();
}

void loop() {
 
  int mrxconv;
 
  if (man.receiveComplete()) {
    uint16_t m = man.getMessage();
    man.beginReceive(); //start listening for next message right after you retrieve the message
    mrxconv = (int)m;
    if(mrxconv==1){
      rx_etat = 1;
    }else{
      rx_etat = 0;
    }
  }else{
    rx_etat = prev_etat;
  }

//Serial.print("RELAY ");
//Serial.println(rx_etat);

prev_etat=rx_etat;

if(rx_etat==1){
   digitalWrite(ledpin,HIGH);
} else {
   digitalWrite(ledpin,LOW);
}
 
}



Lorsque j'upload les codes sur la carte Arduino Uno et la carte ATtiny et que j'appui sur le bouton.... rien ne ce passe.


Par contre quand je remplace la carte ATtiny par une carte Arduino Mega 2560, ça fonctionne parfaitement.... Le problème vient donc de l'ATtiny, sauf que j'utilise la librairie Manchester justement pour que la transmission/reception de donnée sans fil fonctionne entre de l'arduino et de l'ATtiny....


Savez-vous quel pourrait être le problème ? Car je cherche depuis 2 semaines et tests beaucoup de choses mais sans résultat jusqu' a maintenant :s

xortix

J'ai trouvé,
Il fallait juste graver la séquence d'initialisation :

fedji78

Bonjour,
je suis entrain de faire la même expérience que vous mais je n'arrive pas à comprendre le branchement.
Pourriez vous m'envoyer une phot pour le branchement ou un détail de comment brancher les cables.
Merci de votre compréhension et à bientôt.
Cordialement
F.A

Go Up