🛠 Remonter des données machine en MQTT via Ethernet
Objetivos
Conectar el Opta a un broker MQTT para enviar el estado de las máquinas a un supervisor (Node-RED, Mosquitto, Tasmota, cloud). El Ethernet 10/100 integrado garantiza un enlace fiable en el taller; el protocolo MQTT, ligero y de publicación/suscripción, es el estándar de la IIoT. Publicarás las entradas digitales cada segundo en un topic jerárquico.
Material
- Arduino Opta alimentado a 24 VDC, cable Ethernet
- Un broker MQTT accesible (Mosquitto en una Raspberry Pi o el servidor de tu elección)
- Un cliente MQTT de prueba (MQTT Explorer, mosquitto_sub)
- IDE Arduino + bibliotecas «Ethernet» y «PubSubClient»
Código completo
// opta_mqtt.ino — publication des entrees I1..I4 en MQTT sur Ethernet
#include <Ethernet.h>
#include <PubSubClient.h>
EthernetClient ethClient;
PubSubClient mqtt(ethClient);
const char* BROKER = "192.168.1.50"; // IP de votre broker Mosquitto
const int ENTREES[] = {A0, A1, A2, A3}; // bornes I1..I4
char topic[40], payload[8];
void setup {
Serial.begin(9600);
if (Ethernet.begin == 0) { Serial.println("Echec DHCP"); while (1); }
Serial.println(Ethernet.localIP);
mqtt.setServer(BROKER, 1883);
for (int i = 0; i < 4; i++) pinMode(ENTREES[i], INPUT);
}
void boucleMqtt {
while (!mqtt.connected) {
if (mqtt.connect("opta-atelier")) { Serial.println("MQTT connecte"); return; }
delay(2000); // nouvelle tentative toutes les 2 s
}
}
void loop {
boucleMqtt;
for (int i = 0; i < 4; i++) {
snprintf(topic, sizeof(topic), "usine/opta1/E%d", i + 1);
snprintf(payload, sizeof(payload), "%d", digitalRead(ENTREES[i]) ? 1 : 0);
mqtt.publish(topic, payload, true); // retain = true
}
mqtt.loop;
delay(1000);
}
Verificación esperada
Con mosquitto_sub -t 'usine/opta1/#', los mensajes «usine/opta1/E1» = 0/1 desfilan cada segundo y siguen tus entradas de 24 V. El flag retain permite al supervisor conocer el último estado desde su conexión.
Errores frecuentes
- Broker inaccesible: verifica el firewall y el puerto 1883; el puerto serie muestra la IP, prueba el ping antes de culpar al sketch.
- Olvidar mqtt.loop: sin él, los keep-alive no se envían y el broker desconecta al Opta cada minuto.
- Saturar la red: publicar en cada vuelta de bucle sin temporización satura el broker; marca la cadencia (1 Hz es suficiente para estados).
- MQTT sin TLS en producción: el puerto 1883 es en claro; para una red empresarial, documenta la segmentación o utiliza Arduino Cloud / AWS IoT, cuyos tutoriales oficiales para Opta existen.
Otros tutoriales para esta placa
- Premier sketch : faire clignoter une LED sur Arduino Opta
- Lire une entrée numérique 24 V (capteur de proximité)
- Commander une charge 230 V avec un relais de sortie
- Server Modbus TCP : exposer les relais sur Ethernet
- Lire un capteur analogique 0–10 V sur les entrées Opta
- Exploiter le double cœur : M7 pour le PLC, M4 en coprocesseur
Ejemplos de código para esta placa
relais_securise.inoArduinoentrees_numeriques.inoArduinoanalogique_0_10v.inoArduinomodbus_tcp_esclave.inoArduinomodbus_rtu_maitre.inoArduinomqtt_telemetrie.inoArduino