esp32-ch390-udp-sensor-gateway.ino
Transmitting analog sensor data to a remote server via UDP using the CH390 Ethernet interface.
This code assumes the network layer (lwIP) is already active on the CH390 interface. The ESP32 reads a sensor on GPIO 34 and sends the value via UDP to IP 192.168.1.100. Ensure the target server's firewall allows 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);
}