Bonjour bryansurf
Voici, je t'ai fait un exemple basé sur UDP, avec toutes les réserves signalées ci-dessus, ça peut être une bonne base de départ. C'est basé sur un ChatGPT que j'ai "retouché".
A l'émetteur il y a 3 boutons, VERT, ORANGE et ROUGE, ce texte est envoyé tel quel au récepteur, tu peux voir ceci dans la console à 115200:
Envoyé :VERT
Quittance <<< :VERT
Envoyé :ORANGE
Quittance <<< :ORANGE
Envoyé :ROUGE
Quittance <<< :ROUGE
lequel allume la LED désignée et renvoie une quittance à l'émetteur:
Message reçu : VERT
quittance >>> : VERT
Message reçu : ORANGE
quittance >>> : ORANGE
Message reçu : ROUGE
quittance >>> : ROUGE
Pour installer ce réseau, il faut d'abord lancer le récepteur afin d'avoir son adresse IP (qui est affichée dans la console) afin de renseigner la variable de l'émetteur:
const char* udpAddress = "192.168.1.122"; // Changez cela par l'adresse IP de votre récepteur
Le programme émetteur:
/*
Name: Test_UDPsender.ino
Created:
Author: jpbbricole/IA
Remarque: https://forum.arduino.cc/t/actionner-un-bouton-sur-un-arduino-et-transmettre-via-wifi-linformation-sur-un-autre-pour-allumer-des-leds/1305509
*/
#include <WiFi.h>
#include <WiFiUdp.h>
// Réseaux Wi-Fi (SSID et mot de passe)
const char* ssid = "ton-SSID";
const char* password = "ton-Password";
// Adresse IP du récepteur ESP32
const char* udpAddress = "192.168.1.122"; // Changez cela par l'adresse IP de votre récepteur
const int udpPort = 4510;
// Pin des boutons
const int btnVertPin = 13;
const int btnOrangePin = 12;
const int btnRougePin = 14;
WiFiUDP udp;
String couleur = "";
// Fonction pour se connecter au Wi-Fi
void connectToWiFi() {
Serial.print("Connexion à ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connexion en cours...");
}
Serial.println("Connecté au WiFi!");
Serial.print("Adresse IP : ");
Serial.println(WiFi.localIP());
}
void setup() {
Serial.begin(115200);
// Connexion au réseau Wi-Fi
connectToWiFi();
// Configuration des pins des boutons
pinMode(btnVertPin, INPUT_PULLUP);
pinMode(btnOrangePin, INPUT_PULLUP);
pinMode(btnRougePin, INPUT_PULLUP);
}
void loop() {
// Lecture des boutons
if (digitalRead(btnVertPin) == LOW) {
udpEnvoiPaquet("VERT");
// delay(1000); // Anti-rebond
} else if (digitalRead(btnOrangePin) == LOW) {
udpEnvoiPaquet("ORANGE");
// delay(1000); // Anti-rebond
} else if (digitalRead(btnRougePin) == LOW) {
udpEnvoiPaquet("ROUGE");
// delay(1000); // Anti-rebond
}
// Réception de la quittance
int packetSize = udp.parsePacket();
if (packetSize) {
char incomingPacket[255];
int len = udp.read(incomingPacket, 255);
if (len > 0) {
incomingPacket[len] = 0;
}
Serial.print("\tQuittance <<< :");
Serial.println(incomingPacket);
}
delay(250);
}
void udpEnvoiPaquet(String btnCouleur){
Serial.println("Envoyé :" + btnCouleur);
udp.beginPacket(udpAddress, udpPort);
udp.print(btnCouleur);
udp.endPacket();
}
Le programme récepteur:
/*
Name: Test_UDPreceiver.ino
Created:
Author: jpbbricole
Remarque: https://forum.arduino.cc/t/actionner-un-bouton-sur-un-arduino-et-transmettre-via-wifi-linformation-sur-un-autre-pour-allumer-des-leds/1305509
*/
#include <WiFi.h>
#include <WiFiUdp.h>
// Réseaux Wi-Fi (SSID et mot de passe)
const char* ssid = "ton-SSID";
const char* password = "ton-Password";
// Port UDP pour recevoir les données
const int localUdpPort = 4510;
// Pin des LEDs
const int ledVertPin = 5;
const int ledOrangePin = 6;
const int ledRougePin = 7;
WiFiUDP udp;
char incomingPacket[255]; // Buffer pour recevoir les paquets
void setup() {
Serial.begin(115200);
// Connexion au réseau Wi-Fi
connectToWiFi();
// Démarrage UDP
udp.begin(localUdpPort);
Serial.println("Serveur UDP en écoute sur le port" + localUdpPort);
// Configuration des pins des LEDs
pinMode(ledVertPin, OUTPUT);
pinMode(ledOrangePin, OUTPUT);
pinMode(ledRougePin, OUTPUT);
}
void loop() {
// Vérification des paquets UDP
int packetSize = udp.parsePacket();
if (packetSize) {
// Réception du message UDP
int len = udp.read(incomingPacket, 255);
if (len > 0) {
incomingPacket[len] = 0;
}
String udpData = (String)incomingPacket;
udpData.trim(); // Nettoyage de la chaîne
Serial.print("Message reçu : ");
Serial.println(udpData);
// Gestion des LEDs selon le message reçu
if (udpData == "VERT") {
digitalWrite(ledVertPin, HIGH);
digitalWrite(ledOrangePin, LOW);
digitalWrite(ledRougePin, LOW);
udpQuittance(udpData);
} else if (udpData == "ORANGE") {
digitalWrite(ledVertPin, LOW);
digitalWrite(ledOrangePin, HIGH);
digitalWrite(ledRougePin, LOW);
udpQuittance(udpData);
} else if (udpData == "ROUGE") {
digitalWrite(ledVertPin, LOW);
digitalWrite(ledOrangePin, LOW);
digitalWrite(ledRougePin, HIGH);
udpQuittance(udpData);
}
}
}
// Fonction pour Envoyer la quittance à l'émetteur
void udpQuittance(String quittance) {
Serial.println("\tquittance >>> : " + quittance);
udp.beginPacket(udp.remoteIP(), udp.remotePort());
udp.print(quittance);
udp.endPacket();
}
// Fonction pour se connecter au Wi-Fi
void connectToWiFi() {
Serial.print("Connexion à ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connexion en cours...");
}
Serial.println("Connecté au WiFi!");
Serial.print("Adresse IP : ");
Serial.println(WiFi.localIP());
}
Dès que j'au du temps, je te fais un exemple avec UDP, ou tu fais comme moi, tu pose la question à ChatGPT ![]()
Cordialement
jpbbricole