Ces deux projets illustrent comment contrôler un relais depuis votre smartphone à l'aide d'un Arduino Uno, soit via Bluetooth, soit par Wifi via un module ESP-01 basé sur ESP8266. Que vous envoyiez des commandes simples via une application Bluetooth ou que vous utilisiez une application UDP sur votre réseau local, ces deux solutions offrent une configuration simple et abordable. Sans interface complexe, elles reposent sur une communication série fiable et un code robuste. Ce sont d’excellentes bases pour un contrôle intelligent et sans fil, que ce soit pour automatiser de petits appareils domestiques ou simplement pour expérimenter.

Dans cet article, nous allons développer des projets en utilisant les composants du kit de capteurs et la carte de développement Arduino Uno. Sauf indication contraire, les projets présentés sont compatibles avec les cartes Arduino Uno R3, Arduino Uno R4 Minima, et Arduino Uno R4 Wi-Fi.

Project block diagram - Arduino projects
Figure 1. Schéma-bloc du projet.

Contrôle des ports Arduino Uno via un module Bluetooth

Dans ce projet, un module Bluetooth et un module relais sont connectés à l’Arduino Uno. Le relais est contrôlé à distance depuis un smartphone via Bluetooth. Les commandes utilisées sont :

 

R=1# active le relais

R=0# désactive le relais

 

La figure 1 présente le schéma-bloc du projet. Le schéma de câblage illustré en figure 2 montre comment le module Bluetooth est connecté aux ports 3 et 4 de l’Arduino Uno.

Wiring diagram - Arduino projects article
Figure 2. Schéma de câblage du projet.

Bien qu’il ne soit pas représenté sur le schéma, le module relais est connecté au port 5. Un schéma électrique complet est fourni en figure 3.

Project circuit diagram Arduino projects
Figure 3. Schéma du projet.

Le listing 1 présente le code source du programme (Arduino_Bluetooth.c). Ce programme utilise la bibliothèque SoftwareSerial. Les broches TX et RX du module Bluetooth sont respectivement reliées aux ports 3 et 4 de l’Arduino Uno. Le module relais est connecté au port 5, qui est configuré comme une sortie, et est désactivé à l’initialisation du programme. Dans la boucle principale, le programme attend la réception de données envoyées via le module Bluetooth. Le caractère # est utilisé comme délimiteur de fin de message. Si la donnée reçue est R=1, le relais est activé. Si la donnée reçue est R=0, le relais est désactivé. Notez que le caractère de terminaison ne fait pas partie des données traitées.


Listing 1. Contrôle de l'Arduino à avec un module Bluetooth.

#include <SoftwareSerial.h>
const int BluetoothTXPin = 3; // TX pin
const int BluetoothRXPin = 4; // RX pin
const int Relay = 5; // Relay pin
String cmd;
SoftwareSerial BluetoothSerial(BluetoothTXPin, BluetoothRXPin);

 

void setup()
{
 pinMode(Relay, OUTPUT); // Relay is output
 digitalWrite(Relay, LOW); // Relay deactive
 BluetoothSerial.begin(9600); // Bluetooth

 

void loop() 
{
 if(BluetoothSerial.available() > 0) // Data arrived?
 {
  cmd = BluetoothSerial.readStringUntil('#'); // Read the data
  if(cmd == "R=1") // R=1?
  {
    digitalWrite(Relay, HIGH); // Relay ON
    BluetoothSerial.println("Relay turned ON");
  }
  if(cmd == "R=0") // R=0?
  {
    digitalWrite(Relay, LOW); // Relay OFF
    BluetoothSerial.println("Relay turned OFF");
  }
 }
}

 


Le projet peut être testé à l’aide d’une application Bluetooth installée sur votre smartphone. L’auteur a utilisé l’application Bluetooth Terminal HC-05 développée par mightyIT (voir figure 4) sur un smartphone Android.

Bluetooth app
Figure 4. Application Bluetooth.

Les étapes pour tester le projet sont :

 

  • Assemblez le matériel et téléversez le programme sur votre Arduino Uno.
  • Activez le Bluetooth de votre smartphone et ouvrez l’application Bluetooth.
  • Cliquez sur SCAN for devices (rechercher des appareils).
  • Le module Bluetooth Arduino Uno devrait apparaître sous le nom JDY-31-SPP. Sélectionnez-le.
  • Si un mot de passe d’appairage est demandé, entrez 1234.
  • Envoyez la commande R=1#. Vous devriez entendre le relais s’enclencher et le message Relay turned ON (relais activé) s’affichera sur votre smartphone.
  • Entrez la commande R=0#. Le relais se désactivera et le message Relay turned OFF (Relais désactivé) s’affichera à l’écran.

 

La figure 5 montre un smartphone envoyant des commandes Bluetooth à l’Arduino Uno.

Activating and deactivating the relay - Arduino projects
Figure 5. Activation et désactivation du relais.

Contrôle des ports Arduino Uno via Wifi

Dans ce projet, on utilise un module ESP8266 pour ajouter une connectivité Wifi à la carte Arduino Uno (dans le cas où vous n’utilisez pas une carte Arduino Uno R4 Wi-Fi). Le projet permet d’activer à distance, via une connexion Wifi, un relais connecté à l’Arduino Uno en utilisant un smartphone. Les commandes valides sont :

 

R=1# active le relais

R=0# désactive le relais

 

La figure 6 montre le schéma-bloc du projet.

Project block diagram.
Figure 6. Schéma-bloc du projet.

L’Arduino Uno standard ne dispose pas du Wifi intégré. Il doit donc être associé à un module Wifi externe. L’une des solutions les plus simples et économiques consiste à utiliser une carte ESP-01, une petite carte basée sur le microcontrôleur ESP8266 (voir figure 7), mesurant seulement 2,7 × 1,2 cm et coûtant environ 3 $.

ESP-01 processor board
Figure 7. Carte processeur ESP-01.

L’ESP-01 possède les caractéristiques suivantes :

 

  • Tension de fonctionnement : +3,3 V
  • Interface : commandes AT simples via le port série/UART
  • Pile de protocoles TCP/IP intégrée, compatible 802.11 b/g/n
  • Aucun composant externe requis

 

Le module ESP-01 communique avec le microcontrôleur hôte via ses broches série TX et RX. Il s’agit d’un module à 8 broches dont la configuration est la suivante :

 

VCC : alimentation +3,3 V

GND : Masse

GPIO0 (ou IO1) : broche E/S, à connecter à +3,3 V pour un fonctionnement normal

GPIO2 (ou IO2) : broche d’E/S polyvalente

RST : broche de réinitialisation, à connecter à +3,3 V pour un fonctionnement normal

CH_PD (ou EN) : broche d’activation, à connecter à +3,3 V pour un fonctionnement normal

TX : broche de sortie série

RX : broche d’entrée série

 

Les broches de l'ESP-01 ne sont pas compatibles avec les plaques d'essais standards ; un adaptateur est donc nécessaire si vous souhaitez monter le module sur une plaque d’essai. Certains adaptateurs intègrent également une puce de conversion de tension +5 V vers +3,3 V, ce qui permet d’alimenter le module directement avec du +5 V. Le kit fourni avec ce livre comprend un tel adaptateur, et vous devez y insérer votre carte ESP-01 avant de procéder aux connexions.

 

Le processeur ESP-01 fonctionne avec des commandes AT. Voici quelques-unes des commandes les plus fréquemment utilisées pour établir la connectivité Wifi :

 

AT+RST - Réinitialise l’ESP-01

AT+CWMODE - Définit le mode ESP-01 (dans ce cas, le mode Station)

AT+CWJAP - configure le SSID du réseau Wifi et le mot de passe

AT+CPIMUX - configure le mode de connexion (réglé ici sur sur connexions multiples)

AT+CIFSR - Retourne l’adresse IP

AT+CIPSTART - établit une connexion TCP ou UDP, en spécifiant l’adresse IP de destination et le numéro de port. Dans ce projet, le protocole UDP est utilisé sur le port 5000. L’adresse IP de destination est définie par défaut sur 0.0.0.0, ce qui permet à n’importe quel appareil du réseau local d’envoyer des données à l’ESP-01, tant que le port 5000 est utilisé. Pour restreindre l’accès uniquement à votre smartphone, vous pouvez remplacer cette adresse par l’IP locale de votre appareil mobile.

Arduino Projects - wiring diagram.
Figure 8. Schéma de câblage du projet.

La figure 8 montre le schéma de câblage du projet où les broches TX et RX de l’ESP-01 sont connectées respectivement aux ports 2 et 3 de l’Arduino Uno. De plus, la broche S du module relais est connectée au port 5.

 

Le listing 2 présente le code source du programme (Arduino_wifi.c). Au début du programme, les broches TX et RX de l’ESP-01 sont assignées aux ports 2 et 3 de l’Arduino Uno via la bibliothèque SoftwareSerial, et le relais est assigné au port 5 et configuré comme sortie. La fonction ConnectToWiFi() utilise les commandes AT pour établir la connexion au réseau Wifi local. Il est essentiel de noter que le SSID et le mot de passe du routeur doivent être fournis dans la commande CWJAP. Cette fonction configure ensuite le protocole de communication UDP sur le port 5000.


Listing 2. Contrôle de l'Arduino avec le module Wifi ESP8266.

#include <SoftwareSerial.h>
const int ESPTxPin = 2; // TX pin
const int ESPRxPin = 3; // RX pin
const int Relay = 5; // Relay port
String buf;
SoftwareSerial ESPSerial(ESPTxPin, ESPRxPin);

// This function connects to the local WiFi router using AT commands
void ConnectToWiFi()
{
 ESPSerial.println("AT+RST");
 delay(5000);
 
 ESPSerial.println("AT+CWMODE=1");
 delay(3000);
 ESPSerial.println("AT+CWJAP=\"BTHub5-6SPN\",\"af4b5e6243\"");
 delay(5000);
 
 ESPSerial.println("AT+CIPMUX=0");
 delay(3000);
 ESPSerial.println("AT+CIPSTART=\"UDP\",\"0.0.0.0\",5000,5000,2");
 delay(5000);
 ESPSerial.println("AT+CIFSR");
 delay(5000);
}
void setup()
{
 pinMode(Relay, OUTPUT); // Relay is output
 digitalWrite(Relay, LOW); // Relay deactive
 ESPSerial.begin(115200); // ESP serial
 ConnectToWiFi(); // Connect to WiFi

void loop() 
{
 if(ESPSerial.available()) // Data available?
 {
  buf = ESPSerial.readStringUntil('#'); // Read data
  int i = buf.indexOf('R'); // Look for 'R'
  if(i > 0) // i is index of R
  {
   if(buf[i] == 'R' && buf[i+1] == '=' && buf[i+2] == '1')
   {
    digitalWrite(Relay, HIGH);
   }
   if(buf[i] == 'R' && buf[i+1] == '=' && buf[i+2] == '0')
   {
    digitalWrite(Relay, LOW);
   }
  }
 }


Dans la boucle main du programme, la fonction ConnectToWiFi() est appelée pour établir la connexion avec le routeur Wifi local. Ensuite, le programme attend la réception de commandes UDP depuis le smartphone. Le programme analyse les données reçues en recherchant la présence du caractère R à l’aide de la fonction intégrée indexOf(). Si le caractère n’est pas trouvé, la fonction renvoie -1 sinon, elle retourne l’index de la première occurrence. Si la commande reçue est R=1, le relais est activé. Si la commande reçue est R=0, le relais est désactivé.

 

Avant de pouvoir tester le projet, vous devez installer une application UDP sur votre smartphone Android. Il en existe plusieurs gratuites sur le Play Store. L’application utilisée dans ce projet s’appelle UDP/TCP Widget par K.J.M, comme montré dans la figure 9.

UDP/TCP Widget apps for Android.
Figure 9. Applications UDP/TCP Widget pour Android.

Les étapes pour tester le programme sont les suivantes :

 

  • Assemblez le circuit.
  • Téléversez le programme sur votre Arduino.
  • Lancez l’application UDP/TCP Widget sur votre smartphone.
  • Appuyez sur l’icône en forme d’engrenage et sélectionnez le protocole UDP. Saisissez l’adresse IP de votre ESP-01 (par exemple, 192.168.1.160 pour l’ESP-01 dans l'exemple de l’auteur), et configurez le port sur 5000 comme illustré dans la figure 10.
  • Ouvrez le menu MESSAGE, sélectionnez le format Text (UTF-8), puis saisissez la commande R=1# pour activer le relais ou R=0# pour le désactiver. Sélectionnez LF\n comme caractère de terminaison.
  • Cliquez sur la flèche rouge à droite puis sur le bouton SEND pour envoyer la commande à l’Arduino Uno.

 

Vous pouvez retrouver l’adresse IP de l’ESP-01 en effectuant un scan des appareils connectés à votre réseau Wifi local. Par exemple, l’application Android Who Uses My WiFi – Net Scanner développée par Phuongpn permet d’afficher les adresses IP de tous les périphériques connectés à votre routeur.

Configure the apps.
Figure 10. Configurer les applications.

Ces projets démontrent la simplicité avec laquelle on peut améliorer une carte Arduino Uno en y ajoutant un contrôle sans fil, que ce soit par Bluetooth classique ou en intégrant une connectivité Wifi via un module ESP-01. Bien au-delà de simples démonstrations techniques, ces montages constituent des bases solides pour explorer des méthodes de communication sans fil avancées ainsi que pour développer des applications IdO.


Note de la rédaction : Cet article (250325-01) est paru dans le numéro de septembre/octobre 2025 du magazine Elektor. Il s'agit d'un extrait du Elektor Universal Sensor Maker Kit. Il a été mis en forme et légèrement modifié afin de respecter les conventions et la mise en page du magazine Elektor.


Questions ou commentaires ?

 

Envoyez un courriel à l'auteur d.ibrahim@btinternet.com, ou contactez Elektor redaction@elektor.fr.

Je m'abonne
Abonnez-vous à la balise thématique Wireless & Communication pour être averti dès qu'une information relative à ce sujet sera publiée par Elektor !