Pages: [1] 2 3   Go Down
Author Topic: [Résolu] besoin d'aide avec des transceiver NRF24L01  (Read 4277 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 108
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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 ?
« Last Edit: March 10, 2013, 05:14:16 am by zerr0s » Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3626
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Offline Offline
Full Member
***
Karma: 0
Posts: 108
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3626
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ...
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 108
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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à ...
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3626
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah bin la ça expliquerai pourquoi ça plante sur le  while( Mirf.isSending() );, si le module est mort il ne risque pas d’acquiescer l'envoi ... Comme je vois VCC sur les pins je suis méfiant, c'est du 3.3V de base les NRF. Certains sont dotés d'un régulateur, d'ailleurs les miens me donnent le choix : un pin 3.3V et un autre 5V
Logged


France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Vu les symptômes ça sent le câblage foireux et/ou le nRF24L01 cramé (ou pas super en forme).

Ah bin la ça expliquerai pourquoi ça plante sur le  while( Mirf.isSending() );, si le module est mort il ne risque pas d’acquiescer l'envoi ... Comme je vois VCC sur les pins je suis méfiant, c'est du 3.3V de base les NRF. Certains sont dotés d'un régulateur, d'ailleurs les miens me donnent le choix : un pin 3.3V et un autre 5V
C'est pour cela que dans mon code du tutoriel je fait un timeout pour gérer ce cas d'erreur smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Full Member
***
Karma: 0
Posts: 108
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

arff oui. j'ai branché en 5v moi !! Bon premier grillage de composant depuis que j'ai commencé arduino. sur le tuto que j'ai suivi, il n'y avais pas marqué s'il fallait des résistances et s'il fallait brancher sur du 3 ou 5. Mais j'aurai du aller voir la doc technique du transceiver !

ou encore, en suivant le tuto de skywood, j'aurai du ajouter des résistances 10k entre l'arduino et le transceiver !

Du coup, pour les prochains modules que je vais recevoir, je ferai deux fois plus attention  smiley-eek
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

arff oui. j'ai branché en 5v moi !! Bon premier grillage de composant depuis que j'ai commencé arduino. sur le tuto que j'ai suivi, il n'y avais pas marqué s'il fallait des résistances et s'il fallait brancher sur du 3 ou 5. Mais j'aurai du aller voir la doc technique du transceiver !
En regarde l'image on voit que VCC est directement relié au nRF24L01.
Sur les modules un peu plus "pro" il y a un régulateur LDO 3v3, comme ça si on envoi du 5v pas de probléme.
Avec les modules en question: 5v = cramé
Une lecture rapide du datasheet suffit à lever tout les doutes smiley-razz

ou encore, en suivant le tuto de skywood, j'aurai du ajouter des résistances 10k entre l'arduino et le transceiver !
Les résistances de 10K ne sont pas obligatoire, le nRF24L01 possède des entrées tolérantes au +5V mais c'est toujours bien de les mètres.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Full Member
***
Karma: 0
Posts: 108
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

je me permets de déterrer ce post car je m'y suis remis après avoir reçu mes nouveaux transceivers NRF24L01+.
Je suis ce tuto car ils utilisent les mêmes modules que j'ai: http://www.bajdi.com/playing-with-nrf24l01-modules/

Les modules sont neufs. Voilà mon câblage. J'ai un module sur une arduino mega 2560 ethernet, un autre sur une arduino uno.
 Pour ce câblage j'ai mis:
- CE sur 8
- CSN sur 7
- SCK 13
- MISO sur 12
- MOSI sur 11

Et cette fois ci j'ai vraiment fais gaffe et j'ai bien alimenté en 3.3V smiley

J'ai refais le montage décrit dans le tuto (pot sur la mega et une led sur la uno). Et impossible de faire fonctionner le tout. Je ne pige pas le problème. J'ai essayé de mettre des valeurs statiques à envoyer pour la valeur du pot, mais rien n'y fait. je ne sais pas si c'est a mega qui n'envoi pas ou si c'est la uno qui ne reçois pas.

J'ai d'abord commencé par mettre des résistances 10K, puis n'arrivant pas à faire fonctionner, je les ai viré. Sur le tuto, ils n'en utilisent pas. Dans le doute d'un module défectueux, j'ai remplacé les modules par 2 autres tout neufs également (j'en avais commandé 4).

y a t il un test tout simple pour voir où se trouve le problème ?
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Essaye l'exemple "ping" de la librairie arduino Mirf smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Full Member
***
Karma: 0
Posts: 108
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

j'ai essayé l'exemple ping sans succès. Malgré le fait qu'un des 2 me renvoi "Ping ..." suivi d'un temps de réponse, le second ne m'affiche jamais le "Pong".

Je ne sais absolument pas ce qui cloche !! A vouloir faire des économies en achetant le moins cher, je me galère à faire fonctionner ces modules .... zutttttttt
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3626
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Erreur de branchement quelque part forcement ...
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 108
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon je reprendrai à 0 demain. Sinon, est-ce que l'ethernet ne peut pas influer sur le module rf ?
C'est une arduino mega 2560 ethernet de freetronics. J'avais lu quelque part que certains modules utilisés conjointement avec de l'ethernet pouvait ne pas fonctionner ...

Allez à demain.
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bon je reprendrai à 0 demain. Sinon, est-ce que l'ethernet ne peut pas influer sur le module rf ?
L'ethernet est sur la carte qui envoi ping ou pong ?

Le chipset ethernet utilise le port SPI de même que le module nRF.
Il faut que tu mettes la broche CS du chipset ethernet à HIGH pour le désactiver.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: [1] 2 3   Go Up
Jump to: