Go Down

Topic: [Résolu] besoin d'aide avec des transceiver NRF24L01 (Read 4 times) previous topic - next topic

zerr0s

Dec 03, 2012, 09:28 pm Last Edit: Mar 10, 2013, 11:14 am by zerr0s Reason: 1
Bonjour,

J'ai acheté 2 modules NRF24L01 pour faire de la transmission radio. Pour le moment, je suis un tuto dont le fonctionnement est pltôt simple:
- Une arduino uno avec un pot et un module radio
- Une arduino sur breadboard, atmega uno, avec un module radio et une led

Le but est d'allumer la led en faisant varier le potentiomètre. Je suis sur l'IDE 1.0.1

Le problème n'est pas côté receveur, mais plutôt au niveau transmetteur. Voci le code utilisé:
Code: [Select]
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

int rate;

void setup(){

 Serial.begin(9600);
 Mirf.cePin = 8;             //ce
 Mirf.csnPin = 7;            //csn
 Mirf.spi = &MirfHardwareSpi;
 Mirf.init();
 Mirf.setRADDR((byte *)"clie1");
 Mirf.payload = sizeof(rate);
 Mirf.config();
 
 Serial.println("Ready !");
}

void loop(){
 rate = analogRead(A0);

 Mirf.setTADDR((byte *)"serv1");

 Mirf.send((byte *) &rate);
 Serial.println(rate);
 while( Mirf.isSending() );

 delay(1000);
}


dès que je mets sous tension l'arduino transmetteur, la led orange L s'allume et reste allumée. Sur la console, une valeur est affichée, et puis plus rien, la boucle plante (A ce niveau, je n'ai que le pot de brancher, le module est débranché).
Après quelques tests, je me rends compte que le problème vient de la ligne "Mirf.send((byte *) &rate);" qui semble tout faire planter car si je la mets en commentaire, le loop fonctionne, mais bon, le module, lui, ne fonctionnera jamais sans cette ligne ...

J'ai pensé à un problème avec mon arduino. J'ai donc entrepris de mettre 2 arduino sur la breadboard et embarquer le code dans l'un des deux. Une fois fais, (toujours que le pot connecté), la led branché sur le 13 s'allume et reste allumée faiblement, signe que le code a encore planté.

Quelqu'un saurait me dire ce qui cloche svp ? J'ai beau retourner les choses dans tous les sens, je  ne vois pas ce que j'ai mal fait ?

B@tto

Si tu as une valeur qui s'affiche, je dirais que le problème vient plutôt de la boucle :
while( Mirf.isSending() );

zerr0s

bah, peut-être, mais je ne vois pas pourquoi elle planterait chez moi et pas chez les autres ...

B@tto

Question conne : tu t'es pas planté dans les branchement ? Parce que j'ai bô regardé ton code, je ne vois rien de suspect. La seule vraie différence que je vois avec le tuto de Skywood : http://skyduino.wordpress.com/2012/01/20/tutoriel-arduino-mirf-v2-nrf24l01/   c'est que lui a choisi un unsigned long, je vois pas ce que ça pourrait changer mais bon ...

zerr0s

J'ai refais 50000 fois les branchements. Mais de toute façon, même sans le module de connecté, le code fait planté la board !
Le module que j'ai acheté est plutôt celui ci : http://img3.buyincoins.com/show/nrf24l01-wireless-transceiver-module.jpg

Sinon, j'ai commandé il y a une semaine 4 de ceux là:
http://hackspark.fr/media/catalog/product/r/f/rf24013.jpg

Cette fois-ci ce sera la version nrf24l01+

J'essaierai ce soir avec le unsigned long, mais je pense comme toi, ça n'y changera pas grand chose.
Comment puis-je vérifier si le module n'a pas grillé ?

Alors une info, vendredi dernier, lors de mes premiers tests, j'avais réussi à les faire fonctionner ces petits modules. le potentiomètre arrivait bien à piloter la led sur la seconde arduino. Et j'ai un témoin: ma femme qui est venu voir et tester le potentiomètre !!

Et j'ai tout éteint pour la soirée, je reviens le lendemain, et depuis plus rien ne fonctionne.

J'attends les nrf24l01+ et je teste avec ceux là ...

Go Up