Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

J'ai relié directement la sortie RS-232 d'un ancien indicateur de pesage au GPIO du Pi 4, et des caractères bizarres arrivent

J'ai relié directement la sortie RS-232 d'un ancien indicateur de pesage au GPIO du Pi 4, et des caractères bizarres arrivent

Résolu 5 4

Traduit de Türkçe par IA ·

Bonjour, je suis développeur logiciel et le côté matériel m’est un peu étranger, alors dites-moi si je raconte n’importe quoi.À l’entrée de l’entrepôt d’un client, il y a un ancien indicateur de balance avec une sortie DB9 RS-232 à l’arrière. D’après le manuel, il imprime le poids ligne par ligne à chaque pesée. Mon objectif est de lire ces données avec un Raspberry Pi 4, de les envoyer à Hermetry en télémétrie, puis d’afficher le tonnage journalier sur un tableau de bord.Ce que j’ai fait : j’ai relié les broches 2, 3 et 5 du DB9 avec des fils de liaison aux broches GPIO14 (TX), GPIO15 (RX) et GND du Pi. J’ai activé le port série via raspi-config. En Python, je lis comme ceci :

import serial
s = serial.Serial('/dev/serial0', 9600, timeout=2)
while True:
    print(s.readline())

La sortie ressemble à ceci :

b'ùæ þ'
b'ø '
b'àþ'

Il n’y a rien d’utile dedans. De temps en temps, un terminal affiche aussi quelque chose qui ressemble à mon propre écran de connexion, et je n’ai pas compris cela non plus. Je ne suis pas non plus sûr de ne pas griller l’indicateur ou le Pi, car j’ai mesuré environ -9 V sur la sortie de l’indicateur avec un multimètre.

Ağ geçidi yine bağlanıyor…
♥ 2

Traduit de Türkçe par IA ·

Le débit en bauds est-il correct ? Il pourrait être de 4800 ou quelque chose comme ça dans le menu de l’indicateur.

♥ 0

Traduit de Türkçe par IA ·

J’ai regardé dans le menu, il indique 9600 8N1. La notice le dit aussi.

Ağ geçidi yine bağlanıyor…
♥ 1

Traduit de Türkçe par IA ·

Ce n’est pas le débit en bauds, c’est la tension. Si tu as mesuré -9 V, la réponse est déjà là.Le signal RS-232 varie d’environ ±3 à ±15 V et sa logique est inversée : au repos il est négatif, « 1 » est négatif, « 0 » est positif. L’UART du Pi, lui, fonctionne en TTL 3,3 V, de 0 à 3,3 V, avec une logique normale. En les reliant directement, le niveau et la polarité sont tous deux faux, et ces caractères parasites en sortie en sont exactement la conséquence. De plus, appliquer une tension négative et environ 9 V sur le GPIO15 peut détruire la broche. Débranche tout de suite ; c’est un coup de chance si le Pi est encore intact.J’ai résolu le même problème à deux endroits, avec deux méthodes :1. Module MAX3232 (MAX3232, pas MAX232 ; il fonctionne en 3,3 V). VCC sur les 3,3 V du Pi, le côté TTL sur GPIO14/15, le côté RS-232 sur le DB9. 2. La solution plus propre : un convertisseur USB-RS232 (puce PL2303 ou FTDI). Il apparaît comme /dev/ttyUSB0 et tu n’as pas du tout à t’occuper du GPIO.Pour l’écran de connexion : la console série du Pi est active sur /dev/serial0. Dans raspi-config > Interface > Serial Port, réponds Non à « login shell over serial » et Oui à « serial port hardware ».Et pour le croisement TX/RX : on ne sait pas si la balance est DCE ou DTE. Si aucune donnée n’arrive, inverse les broches 2 et 3.Ensuite, l’envoi vers Hermetry est simple : avec paho et un token d’accès, tu publies sur v1/telemetry :

import re, json, serial
import paho.mqtt.client as mqtt

c = mqtt.Client(client_id="kantar-1")
c.username_pw_set(TOKEN, "")
c.tls_set()
c.connect(BROKER_HOST, 8883, keepalive=60)
c.loop_start()

s = serial.Serial('/dev/ttyUSB0', 9600, timeout=2)
while True:
    line = s.readline().decode('ascii', 'ignore')
    m = re.search(r'(-?d+.d+)s*kg', line)
    if m:
        c.publish("v1/telemetry", json.dumps({"weight_kg": float(m.group(1))}), qos=1)
Kayıtta yoksa olmamıştır.
Solution acceptée♥ 8

Traduit de Türkçe par IA ·

Il est important de le convertir en nombre avec une regex. Si l’indicateur affiche du texte comme " 12.45 kg" et que tu l’envoies tel quel, il reste du texte dans Hermetry, n’est pas tracé sur le graphique, et il n’y a ni moyenne horaire ni total. Dans un projet, nous avons envoyé du texte pendant deux semaines, et quand nous l’avons remarqué, les données historiques étaient inutilisables.

♥ 0

Traduit de Türkçe par IA ·

Résolu, merci.Je n’ai pas trouvé de convertisseur USB-RS232, j’ai donc obtenu un module MAX3232 auprès de l’électronicien. Je l’ai branché, toujours des caractères parasites, puis comme l’a dit Esra, j’ai inversé les broches 2 et 3, et les lignes ont enfin commencé à arriver correctement. J’ai aussi désactivé la console série, l’écran de connexion a disparu. GPIO15 est aussi resté intact, j’ai eu de la chance.Grâce à la note de Tuğba, weight_kg part en nombre dès le départ, et un graphique s’affiche sur le tableau de bord.

Ağ geçidi yine bağlanıyor…
♥ 0
6 sujets de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.

Rejoignez la discussion

Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

Partager