Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

Conecté la salida RS-232 de un viejo indicador de báscula directamente al GPIO de la Pi 4, y llegan caracteres raros

Conecté la salida RS-232 de un viejo indicador de báscula directamente al GPIO de la Pi 4, y llegan caracteres raros

Resuelto 5 4

Traducido del Türkçe por IA ·

Hola, soy programador de software y el lado del hardware me resulta un poco ajeno, así que decidme si estoy diciendo tonterías.En la entrada del almacén de un cliente hay un viejo indicador de báscula con una salida DB9 RS-232 en la parte trasera. Según el manual, imprime el peso línea por línea en cada pesada. Mi objetivo es leerlo con una Raspberry Pi 4, enviarlo a Hermetry como telemetría y después mostrar el tonelaje diario en un dashboard.Lo que hice: conecté los pines 2, 3 y 5 del DB9 con cables jumper a los pines GPIO14 (TX), GPIO15 (RX) y GND de la Pi. Activé el puerto serie desde raspi-config. En Python lo leo así:

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

La salida es esta:

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

No sale nada con sentido. Además, de vez en cuando aparece en una terminal algo parecido a mi propia pantalla de login, y tampoco lo entendí. Tampoco estoy seguro de si voy a quemar el indicador o la Pi, porque medí con un multímetro algo como -9 V en la salida del indicador.

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

Traducido del Türkçe por IA ·

¿Es correcta la velocidad en baudios? Podría ser 4800 o algo así en el menú del indicador.

♥ 0

Traducido del Türkçe por IA ·

Miré en el menú, dice 9600 8N1. El manual también lo indica.

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

Traducido del Türkçe por IA ·

No es la velocidad en baudios, es la tensión. Si mediste -9 V, la respuesta ya está ahí.La señal RS-232 oscila aproximadamente entre ±3 y ±15 V y su lógica es invertida: en reposo es negativa, el «1» es negativo y el «0» es positivo. La UART de la Pi, en cambio, es TTL de 3,3 V, de 0 a 3,3 V, con lógica normal. Al conectarlas directamente, tanto el nivel como la polaridad son incorrectos, y esos caracteres basura en la salida son exactamente lo que cabe esperar. Además, aplicar una tensión negativa y unos 9 V al GPIO15 puede dañar el pin. Desconéctalo ya; es cuestión de suerte que la Pi siga en buen estado.En dos de mis instalaciones hice el mismo trabajo y usé dos caminos:1. Módulo MAX3232 (MAX3232, no MAX232; funciona a 3,3 V). VCC a los 3,3 V de la Pi, el lado TTL a GPIO14/15 y el lado RS-232 al DB9. 2. La opción más limpia: un convertidor USB-RS232 (chip PL2303 o FTDI). Aparece como /dev/ttyUSB0 y no tienes que tocar nada del GPIO.Sobre la pantalla de inicio de sesión: la consola serie de la Pi está abierta en /dev/serial0. En raspi-config > Interface > Serial Port, responde No a «login shell over serial» y Sí a «serial port hardware».Y sobre el cruce de TX/RX: no sabemos si la báscula es DCE o DTE. Si no llegan datos, intercambia los pines 2 y 3.Enviar los datos a Hermetry después es sencillo: con paho y un token de acceso, publicas en 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.
Solución aceptada♥ 8

Traducido del Türkçe por IA ·

Convertirlo a número con una regex es importante. Si el indicador imprime texto como " 12.45 kg" y lo envías tal cual, en Hermetry se queda como texto, no se dibuja en el gráfico y no sale ni la media horaria ni el total. En un proyecto enviamos texto durante dos semanas y, cuando nos dimos cuenta, los datos históricos no servían para nada.

♥ 0

Traducido del Türkçe por IA ·

Resuelto, gracias.No encontré un convertidor USB-RS232, así que conseguí un módulo MAX3232 con el técnico de electrónica. Lo conecté, seguían saliendo caracteres basura, luego, como dijo Esra, crucé los pines 2 y 3, y las líneas empezaron a llegar bien. También desactivé la consola serie, la pantalla de login desapareció. El GPIO15 también salió bien, tuve suerte.Gracias a la nota de Tuğba, weight_kg sale como número desde el principio, y se dibuja una gráfica en el dashboard.

Ağ geçidi yine bağlanıyor…
♥ 0
Viendo 6 entradas – de la 1 a la 6 (de un total de 6)
  • Debes estar registrado para responder a este debate.

Únete a la conversación

Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

Compartir