Transmetteur sans fil nRF24L01+

Matériel testé : nRF24L01+

Bibliothèques : (installation via le gestionnaire de bibliothèques de l’IDE Arduino)

 

Description

Ce module de transmission, basé sur un nRF24L01+, permet de réaliser une liaison sans fil 2,4 GHz entre deux microcontrôleurs. Il communique avec le microcontrôleur via le bus SPI.

ATTENTION
Ce module doit être alimenté avec une tension de 3,3 V.
Une tension supérieure endommagerait le module.

Caractéristiques :

  • Alimentation : 3,3 Vcc
  • Tension entrées/sorties : 0 à 3,3 V ou 5 V
  • Fréquence : 2,4 GHz
  • Vitesse : 250 kbps, 1 Mbps ou 2 Mbps
  • Faible consommation
  • Transmetteur : +7 dB
  • Récepteur : -90 dB
  • Portée : jusqu’à 50 mètres en terrain dégagé
  • Dimensions : 29 x 15 m

 

Câblage

En plus des ports SPI, le nRF24L01+ possède :

  • un port CE : une entrée pour contrôler l’émission et la réception
  • un port IRQ : pour envoyer une interruption à l’Arduino (optionnel)

 

 

Programmation

Avec la bibliothèque NRFLite

Les programmes suivants permettent d’envoyer un message constitué d’un unique caractère.

Émetteur

/*
Transmission d'un unique caractère (envoi)
(Basé sur l'exemple Basic_TX)
*/

#include "SPI.h"
#include "NRFLite.h"

const static uint8_t RADIO_ID = 1;             // Identifiant de l'émetteur
const static uint8_t DESTINATION_RADIO_ID = 0; // Identifiant du récepteur
const static uint8_t PIN_RADIO_CE = 9;
const static uint8_t PIN_RADIO_CSN = 10;

NRFLite _radio;
char message = 'y'; // variable contenant le caractère à envoyer

void setup()
{
    Serial.begin(115200);
    
    if (!_radio.init(RADIO_ID, PIN_RADIO_CE, PIN_RADIO_CSN))
    {
        Serial.println("Cannot communicate with radio");
        while (1);
    }
  
}

void loop()
{
    Serial.print("Envoi : ");
    Serial.print(message);
    
    if (_radio.send(DESTINATION_RADIO_ID, &message, sizeof(message)))
    {
        Serial.println(" ...Succes");
    }
    else
    {
        Serial.println(" ...Echec");
    }

    delay(1000);
}

 

Récepteur

/*
Transmission d'un unique caractère (réception)
(Basé sur l'exemple Basic_RX)
*/

#include "SPI.h"
#include "NRFLite.h"

const static uint8_t RADIO_ID = 0;       // Identifiant du récepteur
const static uint8_t PIN_RADIO_CE = 9;  
const static uint8_t PIN_RADIO_CSN = 10;

NRFLite _radio;
char message; // la variable contenant le caractère à recevoir

void setup()
{
    Serial.begin(115200);
    
    if (!_radio.init(RADIO_ID, PIN_RADIO_CE, PIN_RADIO_CSN))
    {
        Serial.println("Cannot communicate with radio");
        while (1);
    }
}

void loop()
{
    while (_radio.hasData()) // Attente de réception d'un caractère
    {
        _radio.readData(&message);

        Serial.print("Reception : ");
        Serial.println(message);
    }
}

 

Avec une NRFLite et une interruption

Afin d’éviter une lecture en continue et améliorer la synchronisation des deux microcontrôleurs, on peut utiliser une interruption : la réception d’un message interrompt le récepteur pour exécuter une action.

Émetteur

 

Récepteur

 

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *