Communication entre deux Arduino Nano ESP32
Ce guide vous montre comment établir une connexion entre deux appareils Arduino Nano ESP32 en utilisant TCP/IP sur WiFi et échanger des données. Un Arduino Nano ESP32 fonctionne comme un client TCP tandis que l'autre agit comme un serveur TCP. Plongeons dans le processus avec un exemple :
- Le premier Arduino Nano ESP32 (désigné comme Arduino Nano ESP32 #1) est connecté à un bouton et sert de client TCP.
- Le deuxième Arduino Nano ESP32 (désigné comme Arduino Nano ESP32 #2) est connecté à une LED et sert de serveur TCP.
- Les deux appareils Arduino Nano ESP32 se connectent entre eux via le LAN local ou Internet.
- Lorsque le bouton sur Arduino Nano ESP32 #1 est pressé, cela déclenche l'allumage de la LED sur Arduino Nano ESP32 #2.
Préparation du matériel
2 | × | ESP-WROOM-32 Dev Module | |
2 | × | Micro USB Cable | |
1 | × | Push Button | |
1 | × | LED | |
1 | × | Breadboard | |
1 | × | Jumper Wires | |
1 | × | (Recommended) ESP32 Screw Terminal Adapter |
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
Communication entre deux Arduino Nano ESP32 - Aperçu
Il existe diverses méthodes pour permettre la communication entre "Arduino Nano ESP32 #1" et "Arduino Nano ESP32 #2". Le choix de la méthode dépend de la distance entre eux. Certaines des options incluent :
Methods | Distance |
---|---|
SPI | very short |
I2C | very short |
UART (TTL) | very short |
UART (RS-232/485/422) | short |
Bluetooth | short |
LoRa | long |
WiFi | unlimited(*) |
※ NOTE THAT:
(*) :
- Si les deux appareils Arduino Nano ESP32 sont connectés à Internet, la distance de communication est illimitée.
- Si les deux appareils Arduino Nano ESP32 ne sont pas connectés à Internet mais sont connectés au même LAN (Réseau Local), la distance de communication est limitée à l'intérieur du réseau LAN.
Ce tutoriel va utiliser le WiFi pour la communication entre deux ESP32.
Communication entre deux Arduino Nano ESP32 via WiFi
Deux appareils Arduino Nano ESP32 peuvent établir une communication via WiFi dans les conditions suivantes :
- Si les deux appareils Arduino Nano ESP32 sont sur le même LAN (réseau local), ils peuvent communiquer sans avoir besoin de se connecter à Internet.
- Si les deux appareils Arduino Nano ESP32 sont dans des réseaux LAN différents, ils doivent se connecter à Internet pour faciliter la communication.
Il existe deux méthodes principales de communication entre deux appareils Arduino Nano ESP32 :
- Communication Directe :
- Dans cette méthode, un Arduino Nano ESP32 agit en tant que client TCP tandis que l'autre sert de serveur TCP. Ils communiquent directement entre eux via WiFi.
Communication indirecte via un serveur centralisé (par exemple, serveur MQTT) :
- Les deux appareils Arduino Nano ESP32 agissent comme des clients TCP et communiquent indirectement via un serveur centralisé tel qu'un serveur MQTT. Vous pouvez consulter le tutoriel sur la communication ESP32-vers-Arduino Nano ESP32 via MQTT pour les détails de mise en œuvre.
Il nécessite un protocole d'application que deux Arduino Nano ESP32 utilisent pour communiquer entre eux. Par exemple :
- Protocole auto-défini sur TCP brut (utilisé pour la communication directe)
- Modbus TCP (utilisé pour la communication directe)
- HTTP (utilisé pour la communication directe)
- Telnet (utilisé pour la communication directe)
- SSH (utilisé pour la communication directe)
- MQTT (utilisé pour la communication indirecte via un serveur)
Exemple d'Application
Implémentons l'application suivante : Un bouton ou un interrupteur connecté à Arduino Nano ESP32 #1 contrôlera une LED connectée à Arduino Nano ESP32 #2 via WiFi.
Pour simplifier, nous utiliserons un protocole auto-défini (créé par nous, non standard).
Protocole auto-défini
Nous définissons un protocole simple comme suit :
- Créez une connexion TCP entre l'Arduino Nano ESP32 n°1 et l'Arduino Nano ESP32 n°2
- Arduino Nano ESP32 n°1 :
- Client TCP : fait activement une demande de connexion TCP à l'Arduino Nano ESP32 n°2
- Si l'état de l'interrupteur passe à ON, l'Arduino Nano ESP32 n°1 envoie un octet (commande) avec la valeur 1 à l'Arduino Nano ESP32 n°2.
- Si l'état de l'interrupteur passe à OFF, l'Arduino Nano ESP32 n°1 envoie un octet (commande) avec la valeur 0 à l'Arduino Nano ESP32 n°2.
- Arduino Nano ESP32 n°2 :
- Serveur TCP : écoute une demande de connexion TCP de l'Arduino Nano ESP32 n°1. S'il y a une demande TCP, il accepte et la connexion est créée.
- S'il reçoit un octet :
- Si la valeur est 1, allumer la LED
- Si la valeur est 0, éteindre la LED
- Schéma de câblage pour Arduino Nano ESP32 #1 : CLIENT TCP + UN BOUTON/INTERRUPTEUR
- Schéma de câblage pour Arduino Nano ESP32 #2 : SERVEUR TCP + UNE LED
- Tutoriel Arduino Nano ESP32 - LED
- Tutoriel Arduino Nano ESP32 - Bouton
- Si c'est la première fois que vous utilisez un ESP32, consultez comment configurer l'environnement pour Arduino Nano ESP32 sur Arduino IDE.
- Connectez un bouton/interrupteur à Arduino Nano ESP32 #1
- Connectez une LED à Arduino Nano ESP32 #2
- Ouvrez Arduino IDE (appelé Arduino IDE #1)
- Installez la bibliothèque ezButton sur Arduino IDE
- Connectez Arduino Nano ESP32 #1 au PC via un câble USB et sélectionnez le port COM de Arduino Nano ESP32 #1 sur Arduino IDE #1
- Ouvrez une autre fenêtre Arduino IDE (appelée Arduino IDE #2) en cliquant sur l'icône Arduino IDE sur votre PC (important!(**))
- Connectez Arduino Nano ESP32 #2 au PC via un câble USB et sélectionnez le port COM de Arduino Nano ESP32 #2 sur Arduino IDE #2
- Copiez le code de Arduino Nano ESP32 #1, collez-le dans Arduino IDE #1 et enregistrez-le (nommé ESP321)
- Copiez le code de Arduino Nano ESP32 #2, collez-le dans Arduino IDE #2 et enregistrez-le (nommé ESP322)
- Téléchargez le code de Arduino Nano ESP32 #2 sur Arduino Nano ESP32 #2 en premier
- Ouvrez le moniteur série sur Arduino IDE #2, obtenez l'adresse IP du serveur TCP
- Mettre à jour l'adresse IP du serveur TCP dans le code du Arduino Nano ESP32 #1
- Téléverser le code du Arduino Nano ESP32 #1 sur le Arduino Nano ESP32 #1
- Ouvrir le moniteur série sur l'IDE Arduino #1
- Appuyer et maintenir le bouton sur le Arduino Nano ESP32 #1 → observer l'état de la LED sur le Arduino Nano ESP32 #2 (ON)
- Relâcher le bouton sur le Arduino Nano ESP32 #1 → observer l'état de la LED sur le Arduino Nano ESP32 #2 (OFF)
- Répéter plusieurs fois le processus ci-dessus.
- Voir la sortie sur les deux moniteurs série
- Moniteur série du Arduino Nano ESP32 #1
- Moniteur série de Arduino Nano ESP32 #2
- Si vous ouvrez une fenêtre Arduino IDE #2 via "Fichier" → "Nouveau" ou "Ouvrir" depuis la fenêtre Arduino IDE #2, vous ne pourrez PAS ouvrir deux moniteurs séries pour deux Arduino Nano ESP32 sur le même PC en même temps.
- Il existe une alternative à ce protocole auto-défini. C'est le Modbus TCP. Le protocole Modbus est standardisé, il présente de nombreux avantages par rapport au protocole auto-défini. Voir plus dans le tutoriel Arduino Nano ESP32 - Modbus
Schéma de câblage
This image is created using Fritzing. Click to enlarge image
This image is created using Fritzing. Click to enlarge image
※ NOTE THAT:
Il faut utiliser une résistance pour la LED si elle n'intègre pas de résistance. Nous avons des tutoriels dédiés pour le bouton et la LED. Vous pouvez en savoir plus sur :
Code Arduino Nano ESP32 pour Arduino Nano ESP32 #1
Code Arduino Nano ESP32 pour Arduino Nano ESP32 #2
Étapes rapides
※ NOTE THAT: