samedi 9 janvier 2021

Communication RF 433 MHz avec RadioHead (Arduino, ESP32, ESP8266)

Dans cet article, nous établissons une communication radio à une fréquence de 433 MHz entre cartes Arduino , ESP8266 et ESP32. Il peut s'agir, par exemple, d'un Arduino Uno qui transmet des informations à un ESP8266,  d'un ESP32 transmettant des informations à un Arduino Nano, etc.


L'émetteur et le récepteur

Les modules utilisés sont vendus par paire: l'émetteur, de forme carrée, comporte trois broches: deux pour l'alimentation (VCC et GND) et une entrée pour le message à transmettre (DATA).

Le récepteur comporte 4 broches, mais les deux broches centrales (DATA) sont reliées ensemble, on utilise l'une ou l'autre pour recueillir le message capté. Les deux autres broches (VCC et GND) servent à alimenter le module.


Les deux modules comportent également un connecteur "ANT" qui permet d'ajouter une antenne.

Il est possible de brancher un émetteur et un récepteur au même microcontrôleur de façon à établir une communication bidirectionnelle. Dans les sketches ci-dessous, toutefois, je me contente d'une communication unidirectionnelle.

Installation de la bibliothèque RadioHead

Nous utiliserons la bibliothèque RadioHead qui, en plus d'être compatible avec les cartes Arduino "classiques", fonctionne également avec l'ESP32 et l'ESP8266 (ce qui n'était pas le cas de VirtualWire, le prédécesseur de Radiohead). Puisqu'elle ne semble pas disponible dans le gestionnaire de bibliothèque, vous devrez l'installer à partir du fichier zip disponible sur la page web de RadioHead.

Connexions de l'émetteur à un Arduino Uno

Si vous désirez émettre un message avec un Arduino Uno, l'émetteur sera branché de cette façon:
  • Broche VCC de l'émetteur : 5 V
  • Broche GND de l'émetteur: GND
  • Broche DATA de l'émetteur: broche 12 de l'Arduino

Connexions de l'émetteur à un ESP8266

Pour émettre à partir d'un ESP8266, l'émetteur est branché de la façon suivante:

  • Broche VCC de l'émetteur : 5 V
  • Broche GND de l'émetteur: GND
  • Broche DATA de l'émetteur: broche GPIO 5 de l'ESP8266

Connexions de l'émetteur à un ESP32

Pour brancher l'émetteur à un ESP32:

  • Broche VCC de l'émetteur : VIN (5 V)
  • Broche GND de l'émetteur: GND
  • Broche DATA de l'émetteur: broche D5 de l'ESP32

Connexion du récepteur à un Arduino Uno

Pour recevoir des données sur un Arduino Uno, vous connectez le récepteur de cette façon:

  • Broche VCC du récepteur:  5 V
  • Broche GND du récepteur: GND
  • Broche DATA du récepteur: Broche 11 de l'Arduino

Connexion du récepteur à un ESP8266

Pour un ESP8266, le récepteur est branché de cette façon:

  • Broche VCC du récepteur:  3,3 V
  • Broche GND du récepteur: GND
  • Broche DATA du récepteur: Broche GPIO 4 de l'ESP8266

Connexion du récepteur à un ESP32

Finalement, pour un ESP32, les branchements du récepteur sont:

  • Broche VCC du récepteur:  3,3 V
  • Broche GND du récepteur: GND
  • Broche DATA du récepteur: Broche D4 de l'ESP32


Exemple: sketch de l'émetteur

Le sketch ci-dessous émet un message chaque seconde (il s'agit d'un nombre entier qui augmente d'une unité à chaque émission, ce qui permet de constater si tous les messages arrivent à destination ou non). Le même sketch fonctionnera aussi bien sur une carte Arduino classique que sur un ESP32 ou un ESP8266.

-
-


Exemple: sketch du récepteur

Le sketch ci-dessous affiche dans le moniteur série le message radio reçu par le récepteur. Encore une fois, le même sketch s'applique à l'ESP32, à l'ESP8266 et aux cartes Arduino conventionnelles comme le UNO.

-
-




À lire également:


Yves Pelletier (TwitterFacebook

7 commentaires:

  1. comment tu branches ton esp12 à ta carte de branchement ? (mon esp12e ne rentre pas dans celle-ci).

    RépondreSupprimer
  2. Merci beaucoup pour le tuto, vous utilisez quel kit RX/TX 433 ?
    Je crois que le mien ne fonctionne pas :/
    (vous pourriez même mettre des liens affiliés des produits que vous utilisez dans vos tutos ?)

    RépondreSupprimer
    Réponses
    1. Ça ressemble au émetteur/récepteur 433mhz chinois, ils coûtent moins d'un euro chacun et encore moins chère en lot.
      Par contre je me souviens que, sur une série de la production il manquait une des deux bobines de l'émetteur.

      Supprimer
  3. Bonjour, j'ai essayé le code du transmetteur avec un esp32, mais je reçois ce message à la compile:
    fatal error: util/atomic.h: No such file or directory
    Une idée?
    Merci.

    RépondreSupprimer
  4. Bonjour avec un esp32 et ton code j'ai ce message d'erreur ? C:\Program Files (x86)\Arduino\libraries\RadioHead/RadioHead.h:836:12: fatal error: util/atomic.h: No such file or directory

    RépondreSupprimer
  5. Le message d'erreur signifie qu'il ne trouve pas la librairie Atomic ou quelque chose du genre. Vous avez bien installé la librairie correctement ?

    RépondreSupprimer