Utilisation du module nRF24L01+ avec l’Arduino
Je viens de commander 2 modules nRF24L01 chez Robotshop (4€65 le module) : http://www.robotshop.com/eu/module-emetteur-recepteur-24g-nrf24l01.html.
Ces modules sont des transceiver, c’est à dire qu’’ils peuvent émettre et réceptionner en radio fréquence de 2.4 GHz. On va tester leur utilisation sur 2 Arduino Uno.
Les caractéristiques techniques sont les suivantes :
– Interface Arduino via bus SPI (8 Mhz), autorisant le 5v.
– Alimentation 3.3v du module.
– Bande radio fréquence 2.4 GHz et possibilité de 126 canaux.
– Transmission / Réception à 1 ou 2 Mb/s.
– Puissance de transmission programmable : 0, –6, –12 ou –18 dBm.
– Consommation en émission à 0 dBm de 11.3 mA.
– Consommation en réception à 2 Mb/s de 12.3 mA.
Les modules se présentent comme suit :
Le schéma du module est le suivant :
La documentation du chipset se trouve à l’adresse : ftp://imall.iteadstudio.com/Modules/IM120606002_nRF24L01_module/DS_nRF24L01.pdf
La présentation est finie concernant le matériel.
Une librairie de nom ‘Mirf’ pour l’utilisation avec l’Arduino est fournie à l’adresse : http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01
Il suffit de télécharger le fichier Mirf.zip, de le décompresser et ensuite de copier le dossier ‘Mirf’ dans le dossier ‘libraries’ où se trouve votre IDE Arduino.
Le branchement du module avec l’Arduino sera le suivant et utilise le bus SPI :
Broche module | Broche Arduino | Fonction |
1 | GND | Masse |
2 | 3.3v | VCC/3.3v |
3 | 8 (configurable) | CE |
4 | 7 (configurable) | CSN |
5 | 13 | SCK |
6 | 11 | MOSI |
7 | 12 | MISO |
8 | non connectée | IRQ |
Attention l’alimentation du module s’effectue en 3.3v (broche 2), les autres broches pour le dialogue via le bus SPI supporte le 5v.
Une petite image qui présente le module avec les broches :
Pour les tests, nous allons envoyer une valeur de type ‘integer’ côté émetteur.
Côté récepteur nous afficherons la valeur reçue pour vérifier le bon échange.
Le programme côté émetteur sera le suivant :
/* #include <SPI.h> // gestion du bus SPI int valeur = 770; // contient la valeur à envoyer void setup() void loop() |
Le programme côté récepteur sera le suivant :
/* #include <SPI.h> // gestion du bus SPI int valeur = 0; // contient la valeur à recevoir void setup() void loop() |
J’ai testé l’émission et la réception à l’intérieur de ma maison; l’émetteur étant positionné au rez de chaussée; le récepteur capte sur tout le rez de chaussée; au 1er étage, je capte sur les pièces situées au dessus de la pièce où se situe l’émetteur; au sous-sol je capte également lorsque je me situe sous la pièce où se situe l’émetteur.
Conclusion : un bon module RF 2.4 GHz avec antenne intégrée.
D’autres articles viendront complétés l’utilisation de ce module.
Salut, merci pour ton article. Il y a cependant une petite erreur :
// RF_SETUP=0000abcd : a=1–>2Mb/s, a=0–>1Mb/s; puissance émission bc=00–>-18 dBm, bc=01–>-12dBm, bc=10–>-6dBm, bc=00–>0dBm;
Le dernier BC = 11 pour 0dBm et non pas 00 😉
Bonjour,
Merci c’est corrigé
boujour! j’essaie de transmettre depuis une arduino uno vers arduino mega 2560 mais cela ne marche pas je sait pas quoi faire pourriez vous m’aider svp ?!
Question très bête… il faut donc 2 arduino : un côté émetteur + un côté récepteur ?
D’autres articles viendront complétés l’utilisation de ce module
A remplacer par :
D’autres articles viendront compléter l’utilisation de ce module
Bonjour, merci infiniment pour cet exemple qui fonctionne parfaitement.
Meilleurs voeux 2015 !
bonjours pouvez vous nous montrer le branchement avec la carte arduino ? merci
Bonjour, Merci pour votre article
j’ai fait quelques modification a votre programe et je veux envoyer un message genre » bien reçu » lors du reception du valeur envoyé mais ça ne marche pas
peux tu m’aider sur ce s’il vous plait
Bonjour
Je suis débutant en arduino, et si quelqu’uun pouvait me dire ce que signifient à la compilation les 30 ou 40 lignes style
« Arduino/sketch_may20e.ino:15: undefined reference to `Mirf' »
ça me serait d’un grand secours
Merci
Bonjour,
Cela signifie que la librairie MIRF est manquante, il faut l’installer.
Si toutefois les secours ne sont toujours pas arrivés….
Bonjour
Après avoir rajouté la ligne
#include
je n’ai plus d’erreur et je peux téléverser les programmes.
Mais ça ne fonctionne pas, et impossible de savoir si ça vient de l’émission ou de la réception.
Quelqu’un sait-il pourquoi j’ai dû rajouter cette ligne et si ce pourquoi explique le non fonctionnement ?
Merci
La ligne à ajouter est
#include
Le MirfSpiDriver.h avait sauté
J’avais fait un répertoire MirfSpiDriver dans la librairie pour y mettre le .h
En mettant MirfSpiDriver.h dans le répertoire Mirf, je n’ai plus besoin de mettre l’include.
Mais ça marche toujours pas.
Si je fini par trouver pourquoi, je ne manquerai pas de vous en faire part.
Cette fois ci c’est bon, ça marche.
Un condensateurs de 4,7µF entre le +Vcc et le Gnd de chaque module nrf24L01 a résolu le problème.
Ah oui : Je suis débutant en Arduino, mais ni en programmation ni en électronique.
Un bon scope et un analyseur logique, ça aide…
Je valide la solution, une capa sur chaque carte et hop tout le monde communique !
Merci
bonjour j ai besoin aussi du module Nrf24l01 pour mon projet .
nous avons besoin d’une valeur de frequence adapter pour une distance de 20m est ce que 2.4GHz suffit ?
Merci beaucoup, grâce à cet exemple j’ai pu faire un bateau radiocommandé qui fonctionne parfaitement.
Merci !
Bonjour,
Je voulais savoir s’il était possible d’utiliser ce module pour commander une lampe sans fil à distance ? J’ai regardé les solutions disponibles, pas trop fan du wifi sur le coup donc je me demandais s’il était possible d’utiliser ça. La lampe serait situé dans une salle au sous-sol et serait commandé par une télécommande situé au RDC.
Bonsoir,
Oui tout à fait possible
Une autre question, ce module est-il fiable en terme de « résistance » aux interférences ?
Merci encore !
Bonsoir,
Un grand MERCI.
Ça fonctionne super bien ! Je vais pouvoir développer des maquettes pour mes élèves de collège.
A plus
Jacques
Bonjour et merci
Un grand merci à itechnofrance pour ce tutoriel. Il fonctionne, par contre j’ai utilisé une source de tension externe de 3.3 V avec un condensateur (on en trouve pour moins de 3 euros sur eBay).
Merci