esp32-ch390-udp-sensor-gateway.ino
Transmission de données de capteurs analogiques vers un serveur distant via UDP en utilisant l'interface Ethernet CH390.
Ce code suppose que la couche réseau (lwIP) est déjà active sur l'interface CH390. L'ESP32 lit un capteur sur GPIO 34 et envoie la valeur en UDP vers l'IP 192.168.1.100. Vérifiez que le firewall du serveur cible autorise le port 5000.
esp32-ch390-udp-sensor-gateway.ino
#include "WiFi.h" // Nécessaire pour la structure IP même si pas de WiFi
#include "lwip/sockets.h"
#include "driver/gpio.h"
// Supposons que l'interface Ethernet est déjà initialisée et active
// (voir exemple précédent pour l'init CH390)
#define SENSOR_PIN GPIO_NUM_34
#define TARGET_IP "192.168.1.100"
#define TARGET_PORT 5000
void setup() {
Serial.begin(115200);
// Attente que l'IP soit attribuée (logique simplifiée)
delay(5000);
}
void loop() {
// Lecture simulée d'un capteur (ex: température)
float sensor_val = analogRead(SENSOR_PIN) * 0.1;
char payload[64];
sprintf(payload, "TEMP:%.2f", sensor_val);
int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sock >= 0) {
struct sockaddr_in dest_addr;
dest_addr.sin_addr.s_addr = inet_addr(TARGET_IP);
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(TARGET_PORT);
sendto(sock, payload, strlen(payload), 0, (struct sockaddr*)&dest_addr, sizeof(dest_addr));
close(sock);
Serial.println("Data sent via CH390 Ethernet");
}
delay(1000);
}