Communication entre deux arduino sans fil

Module nRF24L01 sont des transceiver, c’est à dire qu’’ils peuvent émettre et réceptionner en radio fréquence de 2.4 GHz. On va tester leur utilisation sur 2 Arduino Uno. Réfléchissez à la manière de communiquer entre deux Arduino par liaison radio pour transmettre les données du capteur numérique de température et d’humidité DHT11. Une carte doit être configurée comme un récepteur de signaux et l’autre microcontrôleur comme un émetteur.


Pour cette activité, nous aurons besoin:

  • deux Arduino Uno / Arduino Nano / Arduino Mega
  • deux modules télécommande nrf24lo1
  • capteur dht11
  • LCD 16×02 i2c (ne peut être utilisé)
  • fils de connexion
  • librairies nRF24L01.h, LiquidCrystal_I2C.h, DHT.h

Matériel supplémentaire sur ce sujet:

  1. Branchement module télécommande Arduino
  2. Capteur de température et d’humidité DHT11
  3. Branchement WiFi module ESP8266 ESP-12

Communication entre deux cartes Arduino par nRF24L01

Le module nRF24L01 possède un démodulateur, un synthétiseur de fréquence et un amplificateur de signal intégrés. La portée du nRF24L01 Arduino peut atteindre 30 mètres, et dans la version avec amplificateur et antenne, jusqu’à 1000 mètres. Le module peut utiliser 127 canaux de communication avec des fréquences de signal allant de 2,4 GHz à 2,483 GHz. La vitesse de la connexion sans fil peut être réglée à 250 kbps, 1 Mbps ou 2 Mbps.

Communication entre deux cartes Arduino
Communication entre deux cartes Arduino par nRF24L01
nRF24L01 Arduino Uno Arduino Nano Arduino Mega
MISO 12 12 50
MOSI 11 11 51
SCK 13 13 52
SC 10 10 53

Connectez le capteur DHT11 à la première Arduino et configurez en mode émetteur du module nRF24L01. Après avoir assemblé le schéma de câblage, chargez le code dans la carte.

Programme Arduino pour émetteur sans fil nRF24L01

#include "SPI.h"
#include "nRF24L01.h"
#include "RF24.h"
#include "DHT.h"

const uint64_t pipe = 0xF0F1F2F3F4LL;
RF24 radio(9,10);  // pour MEGA2560 radio(9,53);
DHT dht(2, DHT11);

void setup() {
  dht.begin();
  Serial.begin(9600);
  radio.begin();
  radio.setChannel(0);
  delay(2);

  radio.setChannel(0);
  radio.setDataRate(RF24_1MBPS);
  radio.setPALevel(RF24_PA_HIGH);

  radio.openWritingPipe(pipe);
  radio.stopListening();
}

void loop() {
  float data[2];
  
  data[0] = dht.readHumidity();
  data[1] = dht.readTemperature();
  radio.write(&data, sizeof(data));

  Serial.print("Humidity: ");
  Serial.println(data[0]);
  Serial.print("Temperat: ");
  Serial.println(data[1]);
  delay(1000);
}

Explication du code pour émetteur sans fil nRF24L01:

  1. les données du capteur de température et d’humidité DHT11 sont envoyées au port série et par canal radio une fois par seconde;
  2. les ports 9 et 10 pour la connexion de nRF24L01 peuvent être changés.
Communication par nRF24L01 entre deux Arduino
Communication par nRF24L01 entre deux Arduino
LCD 1602 i2c Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Connectez l’écran LCD à la deuxième carte Arduino et mettez le module en mode récepteur. Après avoir assemblé le schéma de câblage, chargez le code dans le microcontrôleur.

Programme Arduino pour récepteur sans fil nRF24L01

#include "Wire.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C LCD(0x27, 16, 2); // définit lcd 16 x 2
 
#include "SPI.h"
#include "nRF24L01.h"
#include "RF24.h"

const uint64_t pipe = 0xF0F1F2F3F4LL;
RF24 radio(9,10);  // pour MEGA2560 radio(9,53);

void setup() {
  LCD.init(); // initialisation de l'afficheur
  LCD.backlight();

  Serial.begin(9600);
  radio.begin();
  radio.setChannel(0);
  delay(2);

  radio.setChannel(0);
  radio.setDataRate(RF24_1MBPS);
  radio.setPALevel(RF24_PA_HIGH);

  radio.openReadingPipe(1, pipe);
  radio.startListening();
}

void loop() {
  float data[2];
  
  if (radio.available()) {
    radio.read(&data, sizeof(data));

    Serial.print("Humidity: ");
    Serial.println(data[0]);
    Serial.print("Temperat: ");
    Serial.println(data[1]);

    LCD.setCursor(0, 0);
    LCD.print("Humidity: ");
    LCD.print(data[0]);
    LCD.setCursor(1, 0);
    LCD.print("Temperat: ");
    LCD.print(data[1]);
  }
 
}

Explication du code pour récepteur sans fil nRF24L01:

  1. les ports 9 et 10 pour la connexion de nRF24L01 peuvent être changés;
  2. si les données du récepteur n’apparaissent pas sur le moniteur de port, vérifiez d’abord que l’émetteur est correctement connecté.

Conclusion. Communication entre deux Arduino. Le module fonctionne sur l’interface SPI, donc vous devez connecter le nRF24L01 aux ports spécifiques du microcontrôleur (rappelez-vous que Arduino Mega 2560 a SPI sur d’autres ports). La portée du module est comparable à celle du module bluetooth Arduino, mais avec le nRF24L01 vous pouvez créer une communication multicanal. Il est donc possible de mettre en réseau jusqu’à 7 appareils.





One Reply to “Communication radio fréquence entre deux Arduino”

  1. Bonjour j ai ma belle mere qui ateinte d alzheimer dèfoit elle sort sans qu on le sache es que c est possible par cette solution . Ca veut dire si elle s eloigne de la maison la carte emetrice emet un signale pour la carte receptrice et elle nous prevoi
    Merci Acceptez mes salutations

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.