top of page

Le transmetteur radio nRF24L01 est un module développé par Nordic Semiconductor, permettant d'émettre et de recevoir des données sur la gamme de fréquences de 2.4GHz (comme le WiFi ou le Bluetooth) en utilisant le protocole de communication propriétaire de Nordic nommé "ShockBurst". Ce protocole de communication permet à deux ou plusieurs transmetteurs d'échanger des données, avec adressage, gestion des erreurs de transmission et retransmission automatique en cas de non-réponse du destinataire. 

Plusieurs modules comportant ce transmetteur sont disponibles, soit avec une antenne gravée sur le circuit imprimée, soit avec une antenne externe; la portée est alors beaucoup plus grande (une centaine de mètres environ).

​

La bibliothèque RF24 gérant ce module est téléchargeable ici et ses principales fonctions sont :

  • RF24 radio(CE_PIN, CSN_PIN). Cette fonction permet de créer l'objet où CE_PIN et CSN_PIN représentent les numéros des broches CE et CSN.

​

 

​

LE TRANSMETTEUR RADIO NRF24L01

Programme 1 :​

/*NRF24L01_Emetteur est un programme qui, grâce à un module NRF24L01, envoie un tableau de valeurs à une autre carte Arduino.*/

#include <SPI.h>                                                          // appel des bibliothèques
#include <nRF24L01.h>
#include <RF24.h>

#define CE_PIN   9
#define CSN_PIN 10

const uint64_t adresse = 0xE8E8F0F0E1LL;           // adresse du canal de communication
int data[5];                             

RF24 radio(CE_PIN, CSN_PIN);                                   // création de l'objet radio

void setup()
{                  
  radio.begin();                                                              // initialisation du module NRF24L01
  radio.openWritingPipe(adresse);                             // configuration du canal de communication du module NRF24L01
}

void loop()   
{
  data[0] = 0;
  data[1] = 1;
  data[2] = 2;
  data[3] = 3;
  data[4] = 4;
  radio.write( data, sizeof(data) );                               // envoi des données
}

Exemple :

Nous souhaitons envoyer un tableau de données d'une carte Arduino vers une autre carte Arduino afin de les afficher dans le moniteur série.

Liste du matériel :

  • 2 Arduino Uno

  • 2 transmetteur nRF24L01

Câblages :​

Programme 2 :​

/*NRF24L01_Récepteur est un programme qui, grâce à un module NRF24L01, reçoit un tableau de valeurs
depuis une autre carte Arduino et les affiche dans le moniteur série.*/

#include <SPI.h>                                                       // appel des bibliothèques
#include <nRF24L01.h>
#include <RF24.h>

#define CE_PIN   9
#define CSN_PIN 10

const uint64_t adresse = 0xE8E8F0F0E1LL;        // adresse du canal de communication

RF24 radio(CE_PIN, CSN_PIN);                               // création de l'objet radio

int data[5];

void setup()   
{
  Serial.begin(9600);                                               // initialisation du moniteur série
  radio.begin();                                                         // initialisation du module NRF24L01
  radio.openReadingPipe(1,adresse);                   // configuration du canal de communication du module NRF24L01     
  radio.startListening();                                          // configuration du module NRF24L01 en récepteur
}


void loop() {
  if ( radio.available() )                                           // si des données sont présentes
  {
    radio.read( data, sizeof(data) );                        // lecture des données
    Serial.print("data[0]=");                                     // affichage dans le moniteur série
    Serial.println(data[0]);
    Serial.print("data[1]=");
    Serial.println(data[1]);
    Serial.print("data[2]=");
    Serial.println(data[2]);
    Serial.print("data[3]=");
    Serial.println(data[3]);
    Serial.print("data[4]=");
    Serial.println(data[4]);
  }
}

Il faut réaliser deux fois ce montage.

  • radio.begin(). Cette fonction permet d'initialiser l'objet.

  • radio.openWritingPipe(adresse)  où adresse représente l'adresse du canal de communication sur 5 octets. Cette fonction permet au module émetteur d'ouvrir le canal de communication avec le module récepteur avec lequel il va communiquer.

  • radio.openReadingPipe(0, addresse). Cette fonction permet au module récepteur d'accepter le canal de communication proposé par le module émetteur avec lequel il va communiquer.

  • radio.stopListening(). Cette fonction permet de mettre le module en mode émetteur.

  • radio.startListening(). Cette fonction permet de mettre le module en mode récepteur.

  • radio.available() indique le nombre d'octets reçus.

  • radio.write( &texte, sizeof(texte) ) où texte représente le message à envoyer et sizeof(texte) la longueur du message. Cette fonction permet au module émetteur d'envoyer les données.

  • radio.read( &texte, sizeof(texte) ) où texte représente le message à recevoir et sizeof(texte) la longueur du message. Cette fonction permet au module récepteur de recevoir les données.

​​

Dans l'univers Arduino, le module radio est principalement utilisé lorsque nous devons transmettre des informations entre deux équipements distants de plusieurs dizaines de mètres.

bottom of page