comme tu sembles maitriser l'arduino , tu peux essayer de charger le code suivant dans ton RMS comme ca tu benficies deja du cablage , ca evite d'utiliser le soft de config sur PC mais avec lequel il faut acheter un adaptateur Serial UART vers USB
ce code devrait passer ta vitesse actuelle de 38400 par 4800 comme reclamé par le code RMS d'André, et avec un cablage sur les GPIO 26/27 ( à adapter donc en fonction de vos configuration)
Apres pour André cela ne devrait pas etre compliquer de modifier le code du RMS pour balayer les quelques vitesses disponibles et de l'enregistrer dès qu' il y en a une qui donne une réponse coherente
ce code devrait passer ta vitesse actuelle de 38400 par 4800 comme reclamé par le code RMS d'André, et avec un cablage sur les GPIO 26/27 ( à adapter donc en fonction de vos configuration)
Apres pour André cela ne devrait pas etre compliquer de modifier le code du RMS pour balayer les quelques vitesses disponibles et de l'enregistrer dès qu' il y en a une qui donne une réponse coherente
Code :
#include <Arduino.h>
HardwareSerial jsySerial(1); // Utilisation de l'UART1 de l'ESP32
#define RXD2 26 //REMPLACER SI different de 26
#define TXD2 27 //REMPLACER SI different de 27
// Fonction pour calculer le CRC16 Modbus
uint16_t crc16_modbus(const uint8_t* buf, uint8_t len) {
uint16_t crc = 0xFFFF;
for (uint8_t pos = 0; pos < len; pos++) {
crc ^= buf[pos];
for (uint8_t i = 8; i != 0; i--) {
if ((crc & 0x0001) != 0) {
crc >>= 1;
crc ^= 0xA001;
} else {
crc >>= 1;
}
}
}
return crc;
}
void setup() {
Serial.begin(115200);
// 1️⃣ Configurer l'ESP32 à la vitesse actuelle du module (38400 bps) A modifier par la valeur fonctionnelle actuelle
jsySerial.begin(38400, SERIAL_8N1, RXD2, TXD2);
delay(1000);
// 2️⃣ Préparer la commande pour changer le module à 4800 bps
byte command[] = {0x01, 0x10, 0x00, 0x04, 0x00, 0x01, 0x02, 0x00};
uint16_t crc = crc16_modbus(command, sizeof(command));
// Ajouter CRC à la fin
byte message[sizeof(command)+2];
memcpy(message, command, sizeof(command));
message[sizeof(command)] = crc & 0xFF; // CRC low byte
message[sizeof(command)+1] = (crc >> 8) & 0xFF; // CRC high byte
// 3️⃣ Envoyer la commande
jsySerial.write(message, sizeof(message));
Serial.println("Commande envoyée pour changer le débit en bauds à 4800.");
delay(500);
// 4️⃣ Reconfigurer l'ESP32 à 4800 bps pour continuer la communication
jsySerial.updateBaudRate(4800); // Méthode ESP32 pour changer la vitesse
Serial.println("ESP32 configuré à 4800 bps pour correspondre au module.");
}
void loop() {
// Relayer les données vers le moniteur série
if (jsySerial.available()) {
Serial.write(jsySerial.read());
}
if (Serial.available()) {
jsySerial.write(Serial.read());
}
}