ESP32 + Module RS485 sortie TTL et JSY-MK-227

Bonjour a tous, je demande votre aide pour extraire les données d'un capteur type JSY-MK-227 (Sortie RS485) courant continu sur un ESP32 pour extraire la Tension, Intensité et Puissance, j'ai essayé des bouts de codes trouvés par ci ou par la sans succès.
J'ai cherché sur le net, mais il n'y a rien qui parle d'exemples avec ce capteur....

J'ai lu et relu le datasheet sans rien y comprendre...

Voici le capteur en question:

JSY-MK-227-User-Manual.pdf (511,1 Ko)

Pouvez vous me donner un coup de main, je ne sais pas d'ou commencer.

PS: Je suis novice avec ce genre de capteur....

Votre sujet a été déplacé vers la section française du forum.

Milles excuses...

Bonjour bbjodel

Peut-être par ici :wink:
Je n'ai pas essayé.

Cordialement
jpbbricole

Merci jpbbricole, ja'i essayé de compiler mais j'ai cette erreur:
ESP32_MODBUS_RS485:4:1: error: 'ModbusRTU' does not name a type
ModbusRTU mb; // Instance du protocole Modbus
^
C:\Users\Fred\Documents\Arduino 1.8.19\ESSAIS\ESP32_MODBUS_RS485\ESP32_MODBUS_RS485.ino: In function 'bool readSensor()':
ESP32_MODBUS_RS485:29:8: error: 'mb' was not declared in this scope
if (!mb.slave()) {
^
C:\Users\Fred\Documents\Arduino 1.8.19\ESSAIS\ESP32_MODBUS_RS485\ESP32_MODBUS_RS485.ino: In function 'void setup()':
ESP32_MODBUS_RS485:45:3: error: 'mb' was not declared in this scope
mb.begin(&ModbusSerial);
^
C:\Users\Fred\Documents\Arduino 1.8.19\ESSAIS\ESP32_MODBUS_RS485\ESP32_MODBUS_RS485.ino: In function 'void loop()':
ESP32_MODBUS_RS485:54:3: error: 'mb' was not declared in this scope
mb.task(); // Tâche Modbus
^
exit status 1
'ModbusRTU' does not name a type

Par contre dans le datasheet il donne:
Voltage 0100h et 0101H
Current 0102H et 0103H
Active power 0104H et 0105H

Que mettre dans le code pour les adresses ?

// Adresses Modbus des registres pour tension, intensité, et puissance
//#define REG_VOLTAGE 0x0000  // Remplacer par l'adresse exacte
//#define REG_CURRENT 0x0001  // Remplacer par l'adresse exacte
//#define REG_POWER   0x0002  // Remplacer par l'adresse exacte

Par contre je crois qu'il faut envoyer une requete 01 03 01 00 00 14 44 39

Voici mon montage:

Navré, l'IA n'est pas toujours au top :face_with_diagonal_mouth: et je n'ai pas de quoi essayer.
Essaies de poser la question en demandant avec une autre bibliothèque que celle-ci ou inspires toi de l'exemple de la bibliothèque ModbusRTU.

Cordialement
jpbbricole

Bonjour bbjodel

Dans le schéma de câblage de ton message #6, tu as oublié de relier la carte JSY-MK-227 aux deux fils de l'alimentation : +5V et masse

Cordialement.

Salut amic, ils sont bien connectés meme s'ils ne sont pas représentés sur l'image...

J'ai trouvé un projet écrit en python, existe t-il un logiciel pour conversion de ce script en langage arduino ?

Si quelqu'un a une idée voici le code.

jsy22x.zip (363,8 Ko)

Regarde ce projet de routeur solaire basé sur un JSY-MK-194T qui dialogue en modbus RTU.

C'est le même principe, je pense que tu pourrais t'inspirer du code source pour le dialogue avec ta carte JSY-MK-227

L'autre solution serait de contacter le vendeur de la carte pour voir s'ils n'ont pas des exemples de programme pour ESP32.

Dans la rubrique télécharger il y a un formulaire de contact ou vous pourez demander de l'aide pour un programme de lecture de la carte pour ESP32, il y a même un chat pour dialoguer en direct.

Il existe des bibliothèques arduino ESP32 pour ces modules JSY

ainsi qu'un github

ça peut aider...

Attention à l'expression "sortie TTL".
Elle est souvent utilisé pour désigner des signaux 0V/5V or "TTL" a une tout autre signification :

  • Niveau considéré comme bas jusqu'à 0,8 V,
  • Niveau considéré comme haut à partir de 2 V

La raison est que l'on n'entre pas sur une base d'un transistor bipolaire, mais sur un émetteur.

Conséquences :

  • Un circuit "vrai TTL" comme le 7402 ne sera pas compatible avec un atmega328p (Uno, nano)
  • Un circuit 74HC02 sera compatible avec un atmega328p
  • Un circuit 74HCT02 sera compatible avec un 7402 et incompatible avec un atmega328p.

La famille HCT, technologie Mos, a été développée pour remplacer la famille TTL qui est en technologie bipolaire.

Même si dans 99,99 % des cas "on se comprend" il est préférable d'oublier cette erreur d'appellation.

Une fois le dialogue établi avec ton capteur, tu veux faire quoi des données ? affichage ? Mqtt?

JSY_MK_227.ino (1,8 Ko)

voilà un programme pour lire les infos que tu souhaites

les données seront visibles dans le moniteur arduino

Merci Irigolo pour cette aide, en effet je suis rentre en contact avec le développeur de la bibliothèque MycilaJSY, il a modifié la librairie a ma demande et celle d'un ami, mais moi je travaille avec l'Arduino IDE 1.8.19 et Mathieu (Développeur) travaille avec Platformio, sa librairie me donne des erreurs de compilation.. Je vais essayer votre code. Je veux juste recuperer la tension et les ampères par contre je n'ai pas de DE et RE.

Erreur de compilation, c'est la meme que j'avais:
In file included from c:\users\alfred\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0\xtensa-esp32-elf\include\c++\5.2.0\shared_mutex:35:0,
from C:\Users\Alfred\Documents\Arduino\libraries\MycilaJSY\src/MycilaJSY.h:10,
from C:\Users\Alfred\Documents\Arduino 1.8.19\ESP32_TEST_JSY_MK_227\ESP32_TEST_JSY_MK_227.ino:2:
c:\users\alfred\appdata\local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0\xtensa-esp32-elf\include\c++\5.2.0\bits\c++14_warning.h:32:2: error: #error This file requires compiler and library support for the forthcoming ISO C++ 2014 standard. This support is currently experimental, and must be enabled with the -std=c++1y or -std=gnu++1y compiler options.
#error This file requires compiler and library support for the forthcoming
^
utilisé : C:\Program Files (x86)\arduino-1.8.19\libraries\MycilaJSY
exit status 1
Erreur de compilation pour la carte DOIT ESP32 DEVKIT V1

Mathieu m'avait dit d'avoir un compilateur C++17 minimum, j'ai fait des recherches le mien est un 201103L visiblement, comment mettre ce compilateur sur Arduino IDE ????

Fred

Merci 68tjs, oui je connais...

Fred

Effectivement, j'ai aussi des erreurs de compilation avec Arduino IDE 2.3.2
C:\Users\Loïc\Documents\Arduino\JSY_MK_227\JSY_MK_227.ino:10:1: error: 'MycilaJSY' does not name a type
C:\Users\Loïc\Documents\Arduino\JSY_MK_227\JSY_MK_227.ino: In function 'void setup()':
C:\Users\Loïc\Documents\Arduino\JSY_MK_227\JSY_MK_227.ino:29:3: error: 'jsy' was not declared in this scope
C:\Users\Loïc\Documents\Arduino\JSY_MK_227\JSY_MK_227.ino: In function 'void loop()':
C:\Users\Loïc\Documents\Arduino\JSY_MK_227\JSY_MK_227.ino:37:19: error: 'jsy' was not declared in this scope

exit status 1

Compilation error: 'MycilaJSY' does not name a type

J'ai essayé moi aussi avec Arduino IDE 2.3.4 mème conclusion...

Je vais essayer avec VSCode et Plateformio, je débute, patience

J'ai essayé de compiler le fichier read dans les exemples du Github, j'ai une erreur. Si tu est resté en contact avec Mathieu, pose lui la question voilà l'erreur en question :
C:\Users\Loïc\Documents\Arduino\JSY_MK_227\JSY_read_227\JSY_read_227.ino: In function 'void loop()':
C:\Users\Loïc\Documents\Arduino\JSY_MK_227\JSY_read_227\JSY_read_227.ino:45:9: error: 'class Mycila::JSY' has no member named 'toJson'

exit status 1

Compilation error: 'class Mycila::JSY' has no member named 'toJson'