Yahoo refuse tous les emails du site. Si vous avez une adresse chez un autre prestataire, c'est le moment de l'utiliser ;)

En cas de soucis, n'hésitez pas à aller faire un tour sur la page de contact en bas de page.

Topic "Communiquer sans fil avec un module nRF24L01, la bibliothèque Mirf et une carte Arduino / Genuino"

Flux RSS des posts récents dans ce topic ( Flux Atom)


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#174 | Signaler ce message


L'époque des communications câblées est révolue. Aujourd'hui, de plus en plus de communications se font sans fil, que ce soit pour le meilleur ou pour le pire. Dans ce tutoriel, nous allons aborder ensemble un sujet complexe : la communication entre cartes électroniques. Nous nous intéresserons à un duo de choc, aussi classique qu'efficace : le module radio nRF24L01 et la bibliothèque Arduino Mirf. En bonus, nous verrons comment fabriquer une sonnette rudimentaire, pour le plus grand bonheur des amateurs de DIY et de domotique.

Lire la suite de l'article sur le site

Derniére modification le par skywodd


Photo de profil de Anderson69s

Anderson69s

Membre

#175 | Signaler ce message


Super article 😉


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#176 | Signaler ce message


Super article 😉

par Anderson69s

Merci :)


Pas de photo de profil

Crakett

Membre

#197 | Signaler ce message


Bonjour Skywodd, comme dis par Anderson69s, super article et sujet très intéressant ;) Je viens de câbler deux cartes (une pro mini 8Mhz 3,3v et une uno) et j'ai quelques soucis ainsi qu'une interrogation sur ton Bonus.

Soucis Au départ ça a fonctionné, j'avais des retours à 0,1,2 ou 3 ms, nickel et des 'Pas de ping', aurais tu une idée ?

Interrogation Ensuite j'ai voulu essayer ton 'Bonus', et la le drame : plus de retour ! J'ai regardé coté doc du module nRF24, et il est dis pour le registre de config RF_SETUP (add 6) que les 3 bit de poids fort '7.6.5' doivent être à '0'. Or tu écrit 0x26, soit le bit '5' à '1'. N'y aurait-il pas une erreur ? N'est-ce pas 0x16 qu'il faut mettre ? Soit mettre à '1' le PLL_LOCK ?

En tout cas, merci pour tous ces articles très bien écrit et détaillé.


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#198 | Signaler ce message


Au départ ça a fonctionné, j'avais des retours à 0,1,2 ou 3 ms, nickel et des 'Pas de ping', aurais tu une idée ?

par Crakett

3 ms avec une vitesse par défaut de 2Mbps c'est énorme ! Et tu ne devrais jamais avoir de "Pas de ping", sauf probléme de portée ou de signal. Qu'est ce que tu utilises comme module nRF ? Sparkfun ? Ardafruit ? Chinois ? Autre ?

Tente un changement de canal radio. N'hésite pas à en tester plusieurs si besoin. Tu as peut être un réseau Wifi à proximité assez puissant pour brouiller le signal du nRF.

Ensuite j'ai voulu essayer ton 'Bonus', et la le drame : plus de retour ! J'ai regardé coté doc du module nRF24, et il est dis pour le registre de config RF_SETUP (add 6) que les 3 bit de poids fort '7.6.5' doivent être à '0'. Or tu écrit 0x26, soit le bit '5' à '1'. N'y aurait-il pas une erreur ? N'est-ce pas 0x16 qu'il faut mettre ? Soit mettre à '1' le PLL_LOCK ?

par Crakett

Extrait du datasheet :

Registre de configuration radio du nRF24L01+

Registre de configuration radio du nRF24L01+

Soit bin(0x26)= b00100110 :

N° bit

Description

Valeur

Signification

7

Emission continue

0

désactivé

6

Réservé

0

5

RF DATA RATE LOW

1

250Kbps

4

PLL LOCK

0

3

RF DATA RATE HIGH

0

250Kbps

2:1

RF POWER

11

0dBm

0

Obsolète

0

Pour moi, tout semble OK. Tu es certain d'avoir un nRF24L01+ ?


Pas de photo de profil

Crakett

Membre

#199 | Signaler ce message


Merci pour ta réponse rapide. En fait il s'agit de modèles chinois "pas cher" équipés de puce "hack" Si24R1. Ils sont resté sous tension toute la nuit et toute la journée, et depuis cet après midi, plus aucune réponse avec ping-pong !! je pense qu'ils sont mort…

J'ai tenté beaucoup de manip (canal, registre config, autre code …), jusqu'au debug du registre status (retour 0xE ou 0x1E), mais plus rien. Pas de wifi proche non plus (loin de la box dans mon bureau).

Pour le datasheet, j'avais celui de juillet 2007 version 2.0, alors que celui du fabriquant Nordic est de septembre 2008 version 1.0 … ah on trouve de tout dans internet et parfois pas la bonne information.

La solution va donc être l'achat de vrais modules. J'essaierai de revenir pour tenir informé …

[PS] rien à voir, tu n'aurais pas un soucis d'heure pour les messages postés : il est 22h42 et l'heure affiché de la dernière motif est 8h41 …

Derniére modification le par Crakett


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#200 | Signaler ce message


En fait il s'agit de modèles chinois "pas cher" équipés de puce "hack" Si24R1. Ils sont resté sous tension toute la nuit et toute la journée, et depuis cet après midi, plus aucune réponse avec ping-pong !! je pense qu'ils sont mort…

par Crakett

Les clones de nRF24L01 sont pires que tout. C'est même étonnant qu'ils aient fonctionné pendant plus d'une heure !

La solution va donc être l'achat de vrais modules. J'essaierai de revenir pour tenir informé …

par Crakett

De vrais nRF24L01+, d'un vrai fabricant, avec de vrais antennes ;)

Si c'est pour un projet sérieux, prend des modules Sparkfun avec connecteur SMA et des antennes quart d'onde (petits modèles). Sinon les versions avec antenne céramique ont une portée pas trop mauvaise en intérieur.

[PS] rien à voir, tu n'aurais pas un soucis d'heure pour les messages postés : il est 22h42 et l'heure affiché de la dernière motif est 8h41 …

par Crakett

C'est ma faute ;)


Pas de photo de profil

Fred57220

Membre

#256 | Signaler ce message


Bonjour

Merci , pour le tuto.

cela fonctionne impec.

Cordialement


Pas de photo de profil

martin

Membre

#446 | Signaler ce message


Bonjour,

Je souhaite avoir des capteurs de températures qui communiquent sans fils avec mon PC afin de stocker leurs données. Pour cela, je pensais utiliser le capteur DHT22 et un arduino et utiliser une liaison sans fil avec un module (nRF24L01) et réceptionner les données sur un autre arduino et stocker ces données sur une carte SD par exemple. Cela est-il réalisable avec un arduino UNO ou faut-il un MEGA ? Existe-t-il d'autres modules de liaison sans fils (BLE, UWB) ?


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#448 | Signaler ce message


Cela est-il réalisable avec un arduino UNO ou faut-il un MEGA ? Existe-t-il d'autres modules de liaison sans fils (BLE, UWB) ?

par martin

Une carte Arduino UNO est largement suffisante. Aussi bien pour l’émetteur et que le récepteur.

Pour la communication sans fil, le nRF24L01+ est pas mal. Sinon il existe le module LightBlue Bean qui est pas mal pour faire des capteurs BLE (avec une réception via un Raspberry Pi 3 par exemple).


Pas de photo de profil

Taptap

Membre

#464 | Signaler ce message


Tout d'abord, milles merci pour ces excellents tutos. Je débute dans le monde Arduino et même si j'ai des connaissances correctes en électronique, j'ai de grosses lacunes pour la partie programmation (eh oui, à l'époque où j'ai appris l'informatique, les machines s’appelaient "mini 6" "apple 2E" ou "ZX81" et les langages "FORTRAN IV", "PASCAL" ou "ASSEMBLEUR" (celui du Z80 en ce qui me concerne)). J'ai le projet de transmettre la téléinformation de mon compteur "enedis" sur mon serveur domotique (Jeedom DIY) en passant par deux UNO et deux cartes nRF24L01+ (le compteur est à une centaine de métres de la maison pas vraiment en champ libre).

J'ai donc testé les montages avec le croquis "ping pong" que j'ai téléchargé. J'arrive à obtenir une liaison sur une quarantaine de mètres avec un ping pong de 1 à 2 ms.

Pour augmenter la portée j'ai rajouté la ligne BONUS ( Mirf.configRegister(RF_SETUP, 0x26);) dans le code sur le client et sur le serveur mais alors, quelque que soit la distance (c'est le drame !) : pas de pong. Quand je commente la ligne sur les 2 croquis tout fonctionne correctement. Le serveur reçoit le premier ping mais il ne semble pas répondre. J'ai lu sur un forum qu'à pleine puissance le 3,3v des arduino pouvait être un peu juste en intensité. J'ai donc essayé d'alimenter les nRF24L01+ par une alimentation externe mais cela ne change rien.

Je précise que les modules que j'utilise sont de modules chinois mais que la puce est bien estampillée nRF24L01+:

Le texte de votre lien

Peut-être est-ce des clones quand même !!!

Merci pour vos avis


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#475 | Signaler ce message


Pour augmenter la portée j'ai rajouté la ligne BONUS ( Mirf.configRegister(RF_SETUP, 0x26);) dans le code sur le client et sur le serveur mais alors, quelque que soit la distance (c'est le drame !) : pas de pong.

par Taptap

Je viens de re-tester avec des nRF24L01+ d'un fournisseur fiable (Sparkfun). Avec alimentation en USB via la carte Arduino.

Je confirme : Mirf.configRegister(RF_SETUP, 0x26); après Mirf.config(); passe bien le module en 250Kbps/0dBm. Le ping fonctionne quand les deux côtés sont programmés avec cette même valeur.

Je précise que les modules que j'utilise sont de modules chinois mais que la puce est bien estampillée nRF24L01+:

(…)

Peut-être est-ce des clones quand même !!!

par Taptap

Surement des clones ou des nRF24L01 non "+".

N.B. Ces cartes ont un ampli de puissance intégré. Légalement, je suis pas certain que se soit dans la limite de 1mW.

Si le module répond avec Mirf.configRegister(RF_SETUP, 0x07); c'est qu'il s'agit d'un nRF24L01 non "+".

Edit: J'ai ajouté une remarque dans le chapitre bonus concernant l'ancienne génération de nRF24L01.

Derniére modification le par skywodd


Pas de photo de profil

Taptap

Membre

#476 | Signaler ce message


Merci beaucoup pour ton retour. je vais faire le test avec Mirf.configRegister(RF_SETUP, 0x07) et je te tiendrai au courant.

Sur la puce il y a bien écrit nRF24L01+ mais les chinois sont très forts pour écrire n'importe quoi y compris "made in France" si on leur demande !!!

Taptap.


Pas de photo de profil

Taptap

Membre

#493 | Signaler ce message


J'ai fait le test en rajoutant la ligne Mirf.configRegister(RF_SETUP, 0x07); et ce n'est pas franchement concluant. On ne peut pas dire que ça ne fonctionne pas, mais nettement moins bien qu'en l'absence de la ligne (transmission moins stable et de moins longue portée).

Je pense que c'est mes modules qui merdent. En même temps, lors de la première utilisation, j'ai branché l'alimentation d'un des 2 à l'envers (le + sur GND et vice versa !!!); le module en question était très chaud avant que je ne me rende compte de mon erreur. Je suis même surpris qu'il transmette encore quelque chose.

Je vais donc racheter des nRF24L01 + (!) et je referai des essais.

En tous les cas, merci pour tes précieux conseils.

Taptap


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#499 | Signaler ce message


Je pense que c'est mes modules qui merdent. En même temps, lors de la première utilisation, j'ai branché l'alimentation d'un des 2 à l'envers (le + sur GND et vice versa !!!); le module en question était très chaud avant que je ne me rende compte de mon erreur. Je suis même surpris qu'il transmette encore quelque chose.

par Taptap

Si le module a eu le temps de chauffer, c'est mort. C'est effectivement étonnant qu'il transmet encore.

Avec les nRF24L01, une inversion de polarité ou une surtension, c'est fatal.

Je vais donc racheter des nRF24L01 + (!) et je referai des essais.

par Taptap

Passe par un fournisseur sérieux comme Watterott par exemple. Les modules d'eBay c'est vraiment pas fiable.


Pas de photo de profil

Lolonini

Membre

#531 | Signaler ce message


Bonjour, j'ai essayé votre tuto avec les fameux ping mais rien ne se passe. J'utilise des module chinois mais lorsque je vais dans moniteur série je n'est qu'un Go ! et aucune indication de ping ou de "pas de pin". Si vous pourriez m'aidé.

Merci d'avance


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#534 | Signaler ce message


j'ai essayé votre tuto avec les fameux ping mais rien ne se passe. J'utilise des module chinois mais lorsque je vais dans moniteur série je n'est qu'un Go ! et aucune indication de ping ou de "pas de pin".

par Lolonini

Mauvais câblage ? Module HS ? (essayez avec un autre module)

Si il n'y a pas de ping ou de retour sur le moniteur série, c'est que les modules ne communiquent pas entre eux ou avec la carte Arduino.

Si c'est des modules chinois, il y a aussi une forte probabilité que les modules en question soit des contrefaçon à moindre coûts. Il serait bon d'essayer avec un autre jeu de modules provenant d'un autre vendeur.