Forum: Mikrocontroller und Digitale Elektronik Raspberry PI: Sensor auslesen über RS232


von N. M. (nidal_mus)


Lesenswert?

Hallo,

Frage von Raspberry Pi Anfänger!

Ich habe eine Wetterstation, die Daten über RS232 schicken kann. Ich 
möchte diese WS mit RPI anschließen und die Daten auslesen

Das Ziel ist natürlich die Daten Automatik auszulesen wenn RPI 
hochfährt.

Es fehlt mir aber die ersten Schritte :-)

Ich bitte um ein einfaches Script (erstmals fürs Auslesen) für die 
Schnittstelle RS323.
mit Python? oder irgendwie anders? Also ich bräuchte einfach einen 
Anfang

übrigens: Steht auf die Anleitung von dieser WS: "You need a "real" 
RS-232 cable. TTL level will not work". Das heißt man braucht keinen 
extra RS323 - TTL Wandler, oder?

Grüße und Danke im Voraus!
Nidal

von Einfach mal ausprobieren (Gast)


Lesenswert?

Wenn deine Wetterstation lesbare Textzeilen hin- und her-schickt, würde 
ich es in 3 Schritten machen.

Zuerst einen alten PC raus kramen, der noch eine serielle Schnittstelle 
hat. Dort einen Terminalemulator starten. Die Kommandos eintippen und 
die Antwort anschauen.

Danach einen RS232-Wandler für den Raspi aufstecken. Bei den üblichen 
Verdächtigen wie Ebay oder Aliexpress suchen. Auf dem Raspi wieder mit 
einem Terminalemulator ausprobieren.

Erst danach schauen, welche Stty-Parameter der Terminalemulatur setzt 
und das Script schreiben.

von Stefan F. (Gast)


Lesenswert?

Du brauchst einen echten USB-zu-RS232 Adapter: 
https://www.reichelt.de/usb-2-0-konverter-a-stecker-auf-rs-232-1-5-m-usb2-seriell-p58641.html

In der Original-Doku von Python findest du die nötigen Infos zur 
Programmierung: 
https://pyserial.readthedocs.io/en/latest/shortintro.html

Vie spannender als das ist jedoch, wie dein "Sensor" die Daten 
formatiert und ob er irgendwelche Kommanods auf der Seriellen 
Schnittstelle benötigt.

Wenn du Fragen zu eine Produkt stellst, dann benenne es bitte, damit man 
nicht raten muss oder gar falsche Ratschläge erteilt.

von Wolfgang (Gast)


Lesenswert?

N. M. schrieb:
> Ich bitte um ein einfaches Script (erstmals fürs Auslesen) für die
> Schnittstelle RS323.
> mit Python? oder irgendwie anders? Also ich bräuchte einfach einen
> Anfang

So schwer?
Google: python serial port raspberry pi
https://pyserial.readthedocs.io/en/latest/shortintro.html

> übrigens: Steht auf die Anleitung von dieser WS: "You need a "real"
> RS-232 cable. TTL level will not work". Das heißt man braucht keinen
> extra RS323 - TTL Wandler, oder?

Das kommt drauf an, wie du an den Raspberry Pi ran gehen willst. Auf 
Seiten der WS brauchst du jedenfalls eine richtige RS232-Schnittstelle.
An deinen Raspberry Pi könntest du die z.B. mit einem USB-RS232-Wandler 
anschließen.

von Zeno (Gast)


Lesenswert?

Schau mal nach dem Tool te923con. Das kann verschiedene Wetterstationen 
auslesen und das Resultat in eine Textdatei schreiben.
Du mußt also mit Deinem Phytonscript zuerst das Tool anwerfen und dann 
die erzeugte Textdatei auslesen.
Ob Deine Wetterstation vom Tool unterstützt wird weis ich nicht.

WEnn die eine reine RS232 Schnittstelle hat dann ist es eigentlich 
einfach mit der Station zu kommunizieren. Du brauchst natürlich das 
Protokoll der Station. Schließ die Station doch einfach  per RS232/USB 
Kabel an und stelle mit einem einfachen Terminalprogramm eine Verbindung 
zur Station her. Wenn das funktioniert, dann ist es in aller Regel 
möglich die Station über reine ASCII Befehlssequenzen auszulesen. Wenn 
alles auf reinem RS232 läuft dann antwortet auch die Station meist mit 
ASCII-Text, also mit Strings.

von Chr. M. (snowfly)


Lesenswert?

Ich hatte auch mal so eine Wetterstation und den gleichen Plan.

Leider war es da so dass die Kommunikation über ein seltsames
BitBang-Protokoll realisiert wurde und Stromversorgung für die
Schittstelle war da auch irgendwie verbastelt.

PCSoftware hätte es wohl gegeben, mit dem µC wollte ich es nicht
auslesen.

von N. M. (nidal_mus)


Angehängte Dateien:

Lesenswert?

Hallo und Danke für die Antworte!

Stefanus F. schrieb:
> Wenn du Fragen zu eine Produkt stellst, dann benenne es bitte, damit man
> nicht raten muss oder gar falsche Ratschläge erteilt.

http://wiki.argentdata.com/index.php/ADS-WS1

mit USB-RS232 Konverter (PC <-> WS) habe ich jetzt das Ergebnis auf 
Windows-PC über Putty (siehe Anhang).

Ich benutze momentan einen RPI vom 2012! (erst zum Testen)
nach update, upgrade habe ich das Script eingegeben:

 import time
 import serial
 ser = serial.Serial(
     port='/dev/serial0',
     baudrate = 9600,
     parity=serial.PARITY_NONE,
     stopbits=serial.STOPBITS_ONE,
     bytesize=serial.EIGHTBITS,
     timeout=1
 )

passiert nichts :-)

so ich kämpfe weiter, und jede Hilfe wäre dankbar! :-)

von Stefan F. (Gast)


Lesenswert?

N. M. schrieb:
> mit USB-RS232 Konverter (PC <-> WS) habe ich jetzt das Ergebnis auf
> Windows-PC über Putty (siehe Anhang).

Sehr gut. Das ist doch schon etwas greifbares.

Du hast da immer wieder zie gleichen zeichenfolgen. Jetzt könntest du 
mal einen Sensor beeinflussen (z.B. die Temperatur 1°C erhöhen) und dann 
schauen, was sich verändert.

von Joachim B. (jar)


Angehängte Dateien:

Lesenswert?

N. M. schrieb:
> Ich habe eine Wetterstation, die Daten über RS232 schicken kann. Ich
> möchte diese WS mit RPI anschließen und die Daten auslesen

schickt sie die Daten kontinuierlich?
ich vermute mal JA (dann ist es so wie mein Arduino der die Daten auch 
kontinuierlich schickt)

> Das Ziel ist natürlich die Daten Automatik auszulesen wenn RPI
> hochfährt.

Autostart einrichten, gibts bestimmt Anleitungen im Netz.

> Ich bitte um ein einfaches Script (erstmals fürs Auslesen) für die
> Schnittstelle RS323.

was gibts da einzurichten? siehe unten.

> mit Python? oder irgendwie anders? Also ich bräuchte einfach einen
> Anfang

Python brauchts nicht mal

> übrigens: Steht auf die Anleitung von dieser WS: "You need a "real"
> RS-232 cable. TTL level will not work". Das heißt man braucht keinen
> extra RS323 - TTL Wandler, oder?

gg ganz genau, ein einfaches USB2rs232 Kabel reicht
ich nutze solche Kabel (blau oder grün nach belieben)
https://www.ebay.de/i/322683757693?chn=ps

lsusb ohne Kabel
an den PI anstecken,
lsusb mit Kabel sehen ob es erkannt wird (der Unterschied machts!)

Ggffs noch eine UDEV Regel nach ID einfügen -> googeln damit sich das 
Kabel immer auf den selben USB Port nach ID anmeldet!

GtkTerm auf dem PI installieren
Die Verbindungsparameter in Gtkterm einstellen Baudrate & 8N1 z.B.
GtkTerm im Terminal aufrufen fertig

von Bernd (Gast)


Lesenswert?

> ... passiert nichts ...

Das ist kein Script.

von Joachim B. (jar)


Lesenswert?

N. M. schrieb:
> mit USB-RS232 Konverter (PC <-> WS) habe ich jetzt das Ergebnis auf
> Windows-PC über Putty (siehe Anhang).
>
> Ich benutze momentan einen RPI vom 2012! (erst zum Testen)
> nach update, upgrade habe ich das Script eingegeben:
>
>  import time
>  import serial
>  ser = serial.Serial(
>      port='/dev/serial0',

das ist aber nicht der USB wandler

der müsste irgendwie /dev/ttyUSBxx heissen, siehe mein Bild!
https://www.mikrocontroller.net/attachment/414409/Pi3-GTKterm.jpg

von PittyJ (Gast)


Lesenswert?

Gibt es für Raspian kein Putty?
Für X86-Linux gibt es das mit
apt-get install putty

Dann könnte man einfach mal die Verbindung testen.

Gerade noch mal auf dem Raspi getestet, da gibt es auch ein putty.
Wenn du das von Windows kennst, warum nimmst du es nicht auch auf Linux?

von georg (Gast)


Lesenswert?

N. M. schrieb:
> passiert nichts :-)

Natürlich nicht, das initialisiert ja nur die Schnittstelle (wenn es 
überhaupt die richtige ist). Von Daten empfangen ist nirgends die Rede.

Georg

von Stefan F. (Gast)


Lesenswert?

PittyJ schrieb:
> Gibt es für Raspian kein Putty?

Es gibt dieses und reichlich andere Terminalprogramme für Linux. Spontan 
fällt mir ein: Cutecom, Hammer Terminal, Minicom. Oder auch ganz 
primitiv: Schnittstelle mit stty konfigurieren und dann mit dem cat 
Befehl anzeigen, was rein kommt.

sudo su -
stty -F /dev/ttyUSB0 115200
cat /dev/ttyUSB0

(oder so ähnlich)

von devzero (Gast)


Lesenswert?

screen ist auch perfekt dafuer

Allerdings wenn es schon daran scheitert, frag ich mich echt, wie Du das 
dann auswerten willst...

Hast Du denn schon eine Grundlegende Idee was die Daten bedeuten?

von GEKU (Gast)


Lesenswert?

N. M. schrieb:
> baudrate = 9600,

Ist die Baudrate nicht 2400 ?

von GEKU (Gast)


Lesenswert?

Ich würde von der funktionierenden Verbindung PC (putty) < = > 
Wetterstation auf PC (putty) < = > RS232 to USB < = >  Raspberry, unter 
Beibehaltung der Putty-Einstellungen, umschalten.
(Wetterstation durch Raspberry mit RS232/USB Konverter ersetzen)


und dann nach der Methode von

Stefanus F. schrieb:
> sudo su -
> stty -F /dev/ttyUSB0 115200
> cat /dev/ttyUSB0

sehen ob von PC-Putty Zeichen am Raspberry empfangen werden können.

(PC spielt Wetterstation)

von GEKU (Gast)


Lesenswert?

Ich würde von der funktionierenden Verbindung PC (putty) < = > 
Wetterstation auf PC (putty) < = > RS232 to USB < = >  Raspberry, unter 
Beibehaltung der Putty-Einstellungen, umschalten.
(Wetterstation durch Raspberry mit RS232/USB Konverter ersetzen)


und dann nach der Methode von

Stefanus F. schrieb:
> sudo su -
> stty -F /dev/ttyUSB0 115200
> cat /dev/ttyUSB0

sehen ob von PC-Putty Zeichen am Raspberry empfangen werden können.

(PC spielt Wetterstation)

PittyJ schrieb:
> Gibt es für Raspian kein Putty?

Ja, aber man benötigt für die Ausführung von Putty eine graphische 
Oberfläche.

von physiker (Gast)


Lesenswert?

Googeln "ADS-W1 linux", dritter Treffer gibt eine genaue Anleitung:
https://www.instructables.com/id/Raspberry-Pi-2-Weather-Station/

von N. M. (nidal_mus)


Lesenswert?

Hallo und Danke nochmal!

gut, ich probiere diese verschiedenen Sachen aus und melde mich in paar 
Tagen wieder

Grüße und bis dann
Nidal

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.