Comment faire la Communication bidirectionnelle par modules FM avec Arduino?

mars 04 2025

ASSISTANCE PREMIUM DISPONIBLE AU +237 690861311 APPEL OU WHATSAPP

Pour communiquer entre deux Arduino en utilisant des modules RF, comme le nRF24L01 ou les modules 433 MHz, voici un guide détaillé avec les étapes, outils nécessaires et exemples de code.

  1. 2 modules nRF24L01.

  2. 2 cartes Arduino (UNO, Nano, etc.).

  3. Câbles de connexion.

  4. Condensateur de 10 µF (optionnel pour stabiliser l’alimentation).

  • Connectez le module nRF24L01 comme suit :

    Pin nRF24L01 Arduino UNO/Nano
    VCC 3.3V
    GND GND
    CE Pin 9
    CSN Pin 10
    SCK Pin 13
    MOSI Pin 11
    MISO Pin 12
  • Ajoutez un condensateur de 10 µF entre VCC et GND du module pour éviter les fluctuations.

  1. Ouvrez l’IDE Arduino.

  2. Allez dans Outils > Gestionnaire de Bibliothèques.

  3. Recherchez “RF24” et installez la bibliothèque par “TMRh20”.

Créez un fichier transmitter.ino :

cpp
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
 
// Définir les broches CE et CSN
RF24 radio(9, 10);
 
// Adresse pour communication
const byte address[6] = “00001”;
 
void setup() {
    Serial.begin(9600);
    radio.begin();
    radio.openWritingPipe(address);
    radio.setPALevel(RF24_PA_LOW); // Puissance faible
    radio.stopListening(); // Mode émetteur
}
 
void loop() {
    const char text[] = “Hello Arduino!”;
    bool success = radio.write(&text, sizeof(text)); Envoi du message
 
    if (success) {
        Serial.println(“Message envoyé !”);
    } else {
       .println(“Échec d’envoi.”);
    }
 
    delay(1000); // Pause d’une seconde
}

Créez un fichier receiver.ino :

cpp
#include <SPI.h>
#includeRF24L01.h>
#include <RF24.h>
 
// Définir les broches CE et CSN
RF24 radio(9, 10);
 
// Adresse pour la communication
const byte address[6] = “00001”;
 
void setup() {
    Serial.begin(9600);
    radio.begin();
 radio.openReadingPipe(0, address);
    radio.setPALevel(RF24_PA_LOW); // Puissance faible
    radio.startListening(); // Mode récepteur
}
 
void loop() {
    if (radio.available()) {
        char text[32] = “”;
        radio.read(&text, sizeof(text)); // Lecture du message
        Serial.print(“Message reçu : “);
        Serial.println(text);
    }
}

  1. Téléversez le code émetteur sur un Arduino et connectez son module nRF24L01.

  2. Téléversez le code récepteur sur l’autre Arduino avec son module.

  3. Ouvrez le moniteur série sur les deux cartes pour observer la transmission.

  • Communication bidirectionnelle.

  • Faible consommation d’énergie.

  • Portée jusqu’à ~100 mètres en espace ouvert.

  • Nécessite une alimentation stable (condensateurs recommandés).

  • Sensible aux interférences dans la bande des 2,4 GHz.

Pour une solution plus simple mais unidirectionnelle, utilisez les modules RF 433 MHz (émetteur/récepteur). Le principe est similaire mais limité à l’envoi ou la réception de messages simples.

Code exemple pour émetteur :

cpp
#include <VirtualWire.h> 
 
void setup() 
    vw_set_tx_pin(12 // Broche de transmission 
   _setup(0); Vitesse en bits/s}
 
void loop() 
    const char *msg = "Hello World"; 
    vw_send((uint8 *), strlen(msg)); 
    vw_wait_tx(); // Attendre la fin de l'envoi 
    delay(1000); 
}

Code récepteur :

cpp
#include <VirtualWire.h>void setup() { vw_set_pin(11); // Broche réception 
    vw_setup(2000); // Vitesse en bits/s 
    vw_rx_start(); Démarrer la réception 
void loop() { 
    uint8_t buf[VW_MAX_MESSAGE_LEN]; 
    uint8_t buflen = VW_MESSAGE; 
    if (vw_message(buf, &buflen)) { // Si message reçu Serial.print("Message : 
        for ( i = 0; i < buflen; i++) { Serial.print((char)buf[i]); 
        } 
        Serial.println(); 
    } 
}

Avec ces étapes, vous pouvez choisir entre une communication bidirectionnelle avancée (nRF24L01) ou une solution simple et économique (433 MHz).

Write a Reply or Comment

Translate »