mercredi 4 décembre 2019

Communication nRF24L01 avec cartes ESP32 et ESP8266

Voyons aujourd'hui comment utiliser un émetteur-récepteur nRF24L01 avec un ESP32 ou un ESP8266. Les modules nRF24L01 permettent d'établir une communication radio entre deux microcontrôleurs à une fréquence de 2,4 GHz.

Préparation de l'IDE Arduino

Puisque l'ESP sera programmé avec l'IDE Arduino, les cartes appropriées doivent avoir été installées dans l'IDE au moyen du gestionnaire de cartes (voir les instructions détaillées pour l'ESP8266 et pour l'ESP32).

La bibliothèque RF24 mise au point par TMRh20 doit également être installée (ça peut se faire par l'entremise du gestionnaire de bibliothèques). Il s'agit de la même bibliothèque qu'on utilise pour une carte Arduino conventionnelle (Uno, etc.).

Connecteurs du module nRF24L01

La figure ci-contre pourrait se révéler utile pour identifier les connecteurs du module nRF24L01.

Certains modèles, généralement verts, comportent 10 broches alors que d'autres, généralement noirs, en comportent 8.

La répartition des broches sur deux rangées ne permettent pas l'insertion du module sur une breadboard.

Connexions du nRF24L01 à l'ESP32

J'ai branché le module nRF24L01 à ma carte ESP32 de la façon suivante:
  • GND du nRF24L01 - GND de l'ESP32
  • VCC du nRF24L01 - 3V3 de l'ESP32
  • CE du nRF24L01 - D4 de l'ESP32
  • CSN du nRF24L01 - D5 de l'ESP32
  • SCK du nRF24L01 - D18 de l'ESP32
  • MOSI du nRF24L01 - D23 de l'ESP32
  • MISO du nRF24L01 - D19 de l'ESP32
  • IRQ du nRF24L01 - Pas branché


Connexions du nRF24L01 à l'ESP8266

J'ai branché le module nRF24L01 à ma carte Wemos D1 Mini de la façon suivante:
  • GND du nRF24L01 - GND de l'ESP8266
  • VCC du nRF24L01 - 3V3 de l'ESP8266
  • CE du nRF24L01 - GPIO4 (D2) de l'ESP8266
  • CSN du nRF24L01 - GPIO5 (D1) de l'ESP8266
  • SCK du nRF24L01 - GPIO14 (D5) de l'ESP8266
  • MOSI du nRF24L01 - GPIO13 (D7) de l'ESP8266
  • MISO du nRF24L01 - GPIO12 (D6) de l'ESP8266
  • IRQ du nRF24L01 - Pas branché


Sketch #1: émission d'un message

Voici un sketch minimaliste pour l'émission d'un message (il s'agit du même sketch déjà publié pour l'utilisation d'un nRF24L01 avec un Arduino, seule la numérotation des broches est différente).

-
-

Sketch #2: réception d'un message

Voici un deuxième sketch minimaliste qui rapporte dans le moniteur série tous les messages reçus par le nRF24L01.

-
-

Sketch #3: réception d'un message et publication dans une page web

Ce troisième exemple utilise également les possibilités WiFi de l'ESP32 ou de l'ESP8266: les messages reçus par le nRF24L01 sont publiés dans une page web. On peut ainsi concevoir un réseau de microcontrôleurs qui transmettraient les mesures de leurs capteurs à un ESP32 ou un ESP8266 qui se chargerait de transmettre les données par WiFi (les données peuvent être émises par une carte Arduino ou par un carte STM32, par exemple).

-
-

L'adresse IP de l'ESP32 ou de l'ESP8266 s'affiche dans le moniteur série au démarrage du programme.


En recopiant cette adresse dans un navigateur web, on atteint une page web qui indique le message le plus récent reçu par le module nRF24L01.

À lire également

Vous trouverez sur ce blogs d'autres tutos qui vous guideront dans l'utilisation d'un module nRF24L01 avec un Arduinoun STM32un Raspberry Piun MSP430 Launchpad.

Dans le passé, j'ai aussi utilisé le nRF24L01 pour fabriquer un véhicule téléguidé et un système MIDI sans fil.

Finalement vous trouverez sur cette page une liste de tous les articles impliquant l'ESP32 et l'ESP8266.


Yves Pelletier   (TwitterFacebook)

4 commentaires:

  1. Gros avantage de cette technologie, c'est la communication bi-directionelle. En plus c'est du 2.4GHz, c'est bien pour la distance moins pour les parasites.

    RépondreSupprimer
  2. Quelques précisions en vrac :

    - Le NRF ne sait transférer que des paquets de 32 octets max il ne faut pas choisir un buffer de taille supérieure sinon le reste du paquet sera perdu
    - Le NRF aime la stabilité en tension d'alimentation, un petit condo genre 10uF ne lui fera pas de mal
    - Son alimentation n'est pas du tout tolérante au 5V mais accepte de fonctionner bien en dessous de 3.3V (les specs indiquent 1.9V min), par contre ses broches logiques sont tolérantes donc utilisables en communication 5V
    - Descendre sa vitesse d'émission à 250Kbps permet d'augmenter sa portée car cela augmente sa sensibilité (modèle NRF24L01+ car NRF24L01 tout court qui ne descend pas aussi bas)
    - Attention à la largeur de bande de fréquence si vous utilisez plusieurs NRF, à 2Mbps vous devez laisser u espace de 2Mhz entre chaque canal mais un seul à 250Kbps
    - le NRF peut agir en mode hub récepteur et recevoir un signal de plusieurs NRF émettant sur des canaux différents
    - En cas d'environnement radio "bruyant" tapez plutôt dans les 25 canaux supérieurs.
    - Contrairement aux modules wifi habituels dans la bande des 2.4Ghz ce NRF 2.4Ghz est vraiment peu gourmand avec seulement 26mA en émission et moins de 30uA en écoute et devient donc très intéressant pour le coupler à un ESP pour lequel on voudrait consommer moins en communication radio
    - méfiez-vous des imitations, celles-ci consomment souvent plus et portent moins loin
    - The end ...

    RépondreSupprimer
    Réponses
    1. À tout ça on peut aussi rajouter mysensor ( https://mysensors.org ). Très bien pour faire des objets connectés diy qui consomment peu !

      Supprimer
  3. Bonjour je cherche une solution radio RF avec possibilité de cryptage ? Existe-il une solution pour un ESP32 ? Merci

    RépondreSupprimer