Neu: Die KI-Firewall überwacht die gesamte Plattform und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Ich habe den RS-232-Ausgang einer alten Waagenanzeige direkt an den Pi 4 GPIO angeschlossen, und es kommen seltsame Zeichen an

Ich habe den RS-232-Ausgang einer alten Waagenanzeige direkt an den Pi 4 GPIO angeschlossen, und es kommen seltsame Zeichen an

Gelöst 5 4

Von Türkçe mit KI übersetzt ·

Hallo, ich bin Softwareentwickler und die Hardware-Seite ist mir etwas fremd, also sagt Bescheid, wenn ich Unsinn erzähle.Am Wareneingang eines Kunden steht eine alte Waagenanzeige, auf der Rückseite gibt es einen DB9-RS-232-Ausgang. Laut Handbuch druckt sie bei jeder Wägung das Gewicht zeilenweise aus. Mein Ziel ist, das mit einem Raspberry Pi 4 auszulesen, als Telemetrie an Hermetry zu senden und dann die tägliche Tonnage in einem Dashboard anzuzeigen.Was ich gemacht habe: Ich habe die Pins 2, 3 und 5 des DB9 mit Jumperkabeln an die Pins GPIO14 (TX), GPIO15 (RX) und GND des Pi angeschlossen. Über raspi-config habe ich die serielle Schnittstelle aktiviert. In Python lese ich so:

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

Die Ausgabe sieht so aus:

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

Es kommt nichts Sinnvolles dabei heraus. Außerdem erscheint ab und zu im Terminal so etwas wie mein eigener Login-Bildschirm, das habe ich auch nicht verstanden. Ich bin auch nicht sicher, ob ich die Anzeige oder den Pi damit kaputt mache, denn ich habe am Anzeigeausgang mit einem Multimeter etwa -9 V gemessen.

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

Von Türkçe mit KI übersetzt ·

Stimmt die Baudrate? Im Menü der Anzeige könnten es 4800 o. Ä. sein.

♥ 0

Von Türkçe mit KI übersetzt ·

Ich habe im Menü nachgesehen, dort steht 9600 8N1. Das Handbuch sagt das auch.

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

Von Türkçe mit KI übersetzt ·

Es liegt nicht an der Baudrate, sondern an der Spannung. Wenn du -9 V gemessen hast, steht die Antwort bereits da.Das RS-232-Signal liegt etwa zwischen ±3 und ±15 V und seine Logik ist invertiert: Im Ruhezustand ist es negativ, „1“ ist negativ, „0“ ist positiv. Die UART des Pi arbeitet dagegen mit 3,3 V TTL, 0 bis 3,3 V, und mit normaler Logik. Verbindest du beides direkt, stimmen sowohl Pegel als auch Polarität nicht, und genau dieser Zeichensalat ist die Folge. Außerdem kann eine negative Spannung bzw. rund 9 V an GPIO15 den Pin zerstören. Trenne das sofort; es ist Glück, wenn der Pi noch heil ist.Bei mir in zwei Lagern ist dieselbe Aufgabe angefallen, ich habe zwei Wege genutzt:1. MAX3232-Modul (MAX3232, nicht MAX232; das arbeitet mit 3,3 V). VCC an die 3,3 V des Pi, die TTL-Seite an GPIO14/15, die RS-232-Seite an die DB9. 2. Die sauberere Variante: ein USB-RS232-Wandler (PL2303 oder FTDI-Chip). Er erscheint als /dev/ttyUSB0, und du musst dich gar nicht mit GPIO befassen.Zur Login-Bildschirm-Frage: Die serielle Konsole des Pi ist über /dev/serial0 aktiv. In raspi-config > Interface > Serial Port beantwortest du „login shell over serial“ mit Nein und „serial port hardware“ mit Ja.Und zur TX/RX-Kreuzung: Wir wissen nicht, ob die Waage DCE oder DTE ist. Kommen keine Daten an, tausche Pin 2 und 3.Das Weiterleiten an Hermetry ist danach einfach: Mit paho und Access-Token veröffentlichst du auf 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.
Akzeptierte Lösung♥ 8

Von Türkçe mit KI übersetzt ·

Die Umwandlung in eine Zahl per Regex ist wichtig. Wenn die Anzeige Text wie " 12.45 kg" ausgibt und du ihn so weitergibst, bleibt er in Hermetry als Text erhalten, wird nicht im Diagramm dargestellt und es gibt weder einen Stundenmittelwert noch eine Summe. Wir haben in einem Projekt zwei Wochen lang Text gesendet, und als wir es bemerkten, waren die historischen Daten nutzlos.

♥ 0

Von Türkçe mit KI übersetzt ·

Gelöst, danke euch.Einen USB-RS232-Wandler habe ich nicht gefunden, also habe ich beim Elektroniker ein MAX3232-Modul besorgt. Angeschlossen, wieder Müll gekommen, dann habe ich wie von Esra vorgeschlagen die Pins 2 und 3 gekreuzt, und die Zeilen kamen endlich sauber an. Die serielle Konsole habe ich auch abgeschaltet, der Login-Bildschirm ist verschwunden. GPIO15 ist auch heil geblieben, ich hatte Glück.Dank Tuğbas Hinweis wird weight_kg von Anfang an als Zahl gesendet, und im Dashboard wird ein Diagramm gezeichnet.

Ağ geçidi yine bağlanıyor…
♥ 0
Ansicht von 6 Beiträgen – 1 bis 6 (von insgesamt 6)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.

Mitdiskutieren

Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

Teilen