dimanche 10 novembre 2019

Communication nRF24L01 avec cartes STM32

Les modules nRF24L01 sont des émetteurs/récepteurs qui permettent la communication radio entre deux microcontrôleurs sur la bande 2,4 GHz. Je vous propose aujourd'hui quelques informations pour utiliser ces modules avec une carte STM32 programmée avec l'IDE Arduino (j'ai fait des tests avec une carte Nucleo et une Blue Pill).

Un truc intéressant, c'est qu'en plus de permettre une communication sans fil entre deux cartes STM32, une paire de modules nRF24L01 peuvent facilement être utilisée pour établir une connexion entre une carte STM32 et une carte Arduino, un ESP32, un ESP8266, un Raspberry Pi, etc.

Il existe sur le marché deux modèles de modules nRF24L01: un modèle vert comportant 10 broches, et un modèle noir comportant 8 broches. On peut se les procurer pour un prix qui tourne autour d'un euro par module. Il existe aussi un modèle plus puissant, vendu avec une antenne amovible, mais je n'ai pas eu l'occasion d'en faire l'essai.
Comme vous pouvez peut-être le deviner en lisant le nom des broches sur les images ci-dessus, chaque module communique avec le microcontrôleur auquel il est branché grâce au protocole SPI.

Pour les deux modèles, ça peut être une bonne idée d'ajouter un condensateur de 10 µF entre entre GND et VCC afin de stabiliser l'alimentation.

Préparation de l'IDE Arduino: installation des cartes STM32 et de la bibliothèque RF24-STM

Afin de programmer une carte STM32 avec l'IDE Arduino, il faut d'abord avoir installé le "STM32 core" au moyen du gestionnaire de cartes (instructions ici).

De plus, j'ai installé la bibliothèque RF24-STM; il s'agit d'une version de la bibliothèque RF24 de TMRh20 qui a été modifiée par Jaret Burkett pour la rendre compatible avec les cartes STM32. (J'avais d'abord tenté d'utiliser la version conventionnelle de la bibliothèque RF24 par TMRh20 mais  les messages reçus étaient remplacés par une suite de points d'interrogations dans le moniteur série).

Connexion du nRF24L01 à une carte Nucleo
  • broche VCC du module nRF24L01 - Broche 3.3 V de la carte Nucleo
  • broche CE du module nRF24L01 - Broche D7 de la carte Nucleo*
  • broche CSN du module nRF24L01 - Broche D6 de la carte Nucleo*
  • broche SCK du module nRF24L01 - Broche SCK/D13 de la carte Nucleo
  • broche MOSI du module nRF24L01 - Broche MOSI/D11 de la carte Nucleo
  • broche MISO du module nRF24L01 - Broche MISO/D12 de la carte Nucleo
  • broche IRQ du module nRF24L01 - pas branchée
  • broche GND du module nRF24L01 - Broche GND de la carte Nucleo
* Ces deux broches peuvent être remplacées par d'autres puisqu'on les définit au début du sketch. 





Connexion du nRF24L01 à une Blue Pill
  • broche VCC du module nRF24L01 - Broche 3.3 de la Blue Pill
  • broche CE du module nRF24L01 - Broche A8 de la Blue Pill*
  • broche CSN du module nRF24L01 - Broche B10 de la Blue Pill*
  • broche SCK du module nRF24L01 - Broche A5 de la Blue Pill
  • broche MOSI du module nRF24L01 - Broche A7 de la Blue Pill
  • broche MISO du module nRF24L01 - Broche A6 de la Blue Pill
  • broche IRQ du module nRF24L01 - pas branchée
  • broche GND du module nRF24L01 - Broche G de la Blue Pill


Sketches de démonstration

La bibliothèque RF24-STM est accompagnée d'une dizaine d'exemples qui vous aideront à découvrir les nombreuses possibilités du module nRF24L01.

Je vous présente ci-dessous un sketch pour l'émission d'un message (un nombre croissant est émis chaque seconde), et un autre pour la réception d'un message (le message reçu est affiché dans le moniteur série).  Leur simplicité constitue un avantage lorsqu'on désire vérifier que la communication fonctionne correctement.

Ces programmes sont parfaitement compatibles avec ceux que j'avais déjà publiés pour la communication nRF24L01 impliquant une carte Arduino ou un Raspberry Pi. Vous pouvez donc, par exemple, émettre un message avec un Arduino Uno et le capter avec une carte Nucleo.



Sketch pour l'émission d'un message

-
-

Sketch pour la réception d'un message

-
-

À lire aussi

Au risque de me répéter: vous trouverez sur ce blog d'autres tutos qui vous guideront dans l'utilisation d'un module nRF24L01 avec un Arduino, un Raspberry Pi, un 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.

Pour une communication unidirectionnelle, une paire émetteur/récepteur 433 MHz peut constituer une alternative intéressante.

D'autre part, vous trouverez sur cette page une liste d'articles impliquant les cartes STM32 (programmées avec l'IDE Arduino ou avec mbed).

Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire