toughc5-rs485-modbus-master.ino
Exemple de communication Modbus RTU sur le bus RS485 du ToughC5.
Utilise les pins GPIO dédiés au transceiver RS485. Nécessite la bibliothèque ModbusRTU. Le pin RE/DE contrôle la direction du bus. Vérifiez l'adresse du slave et le baudrate.
toughc5-rs485-modbus-master.ino
#include <M5ToughC5.h>
#include <ModbusRTU.h>
#define RS485_RX_PIN 16
#define RS485_TX_PIN 17
#define RS485_RE_DE_PIN 15 // Pin de contrôle direction
ModbusRTU mb;
void setup() {
M5.begin();
M5.Display.init();
M5.Display.setTextColor(WHITE);
M5.Display.drawString("RS485 Master", 10, 10);
// Configuration UART2 pour RS485
Serial2.begin(9600, SERIAL_8N1, RS485_RX_PIN, RS485_TX_PIN);
pinMode(RS485_RE_DE_PIN, OUTPUT);
digitalWrite(RS485_RE_DE_PIN, HIGH); // Mode réception par défaut
mb.begin(&Serial2);
mb.master();
}
void loop() {
uint16_t regs[10];
uint16_t regAddr = 0;
uint16_t regNum = 10;
uint8_t slaveId = 1;
digitalWrite(RS485_RE_DE_PIN, LOW); // Mode émission
delayMicroseconds(50);
if (mb.readHreg(slaveId, regAddr, regs, regNum)) {
digitalWrite(RS485_RE_DE_PIN, HIGH); // Retour en réception
delay(100);
M5.Display.setCursor(10, 30);
M5.Display.printf("Reg 0: %d\n", regs[0]);
M5.Display.printf("Reg 1: %d\n", regs[1]);
} else {
M5.Display.setCursor(10, 30);
M5.Display.println("Comm Error");
}
delay(1000);
}