Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Après MAJ 15.04 et rollback Routeur KO
#11
re-rebonjour

Bon, bingo!

V15.04 compilée avec mon 38400 bauds et ça fonctionne.
Je suis comme : https://f1atb.fr/forum_f1atb/thread-1658-post-13513.html#pid13513

Il faut effectivement que je trouve comment on fait pour faire revenir le JSY aux 4800 bauds, 
mais si un petit paramètre pouvait se glisser, je vois que l'on est plusieurs à avoir eu le souci avec ce paramètre de JSY.

Dans tous les cas mercis pour les réflexions qui m'ont permis de recouvrir la mémoire de mon installation initiale et de mon JSY non normé.

Bonne fin de week-end à toutes et tous
Daft
Répondre
#12
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


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());
  }
}
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)