Forum: Mikrocontroller und Digitale Elektronik Sensor mit RS422 interface und Konverter verbunden an Esp32 via TTL


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Christian P (Gast)


Angehängte Dateien:

Lesenswert?

Guten Tag allesamt,

bei mir hat sich ein Problem ergeben in der Datenumwandlung.
Es geht um einen Sensor, welcher per RS422 Interface an einem Konverter 
(RS422 auf Bidirektionales TTL-UART-Konvertierungsboard-> habe das rote 
Modell von Amazon) verbunden ist. Dieser wiederum ist an einem ESP32 
verbunden.(Framework Arduino- IDE Platformio in VSCode)
1
Sensor    Konverter     ESP32(UART0)
2
T+   ----  T+   TX   an   RX
3
T-   ----  T-       
4
R-   ----  R-   RX   an   TX
5
R+   ----  R+
6
GND  ----  GND       an  GND
Wenn ich den Sensor direkt an den Computer anschließe und direkt mit 
HTerm nachschaue, kommen die gewünschten Daten raus.(Abbildung 1, kurze 
Info 31 74 87 sind zusammen ein Messwert).

Verwende ich jetzt den Konverter zwischen ESP32 und Sensor kommen nur 
falsche oder auch wenn der Sensor nicht bewegt wird neue Werte heraus 
(Abbildung 2).
1
#include <Arduino.h>
2
3
void getDataFromSensor(int length)
4
{
5
6
  uint8_t data[length + 1] = {0};
7
8
  
9
    if (Serial.available())
10
    {
11
      Serial.readBytes(data, length); 
12
    }
13
    Serial.println("\n\nReceived:\n");
14
    for (size_t i = 0; i < length + 1; i++)
15
    {
16
      if (!data[i] == 0)
17
      {
18
        Serial.print(data[i], HEX);
19
      }
20
    }
21
  
22
}
23
24
void setup()
25
{
26
  Serial.begin(115200);
27
}
28
29
void loop()
30
{
31
  getDataFromSensor(600);
32
  delay(10000);
33
}
Das ist mein Code dazu. Meine Frage ist benötige ich einen anderen 
Konverter oder ist mein Code falsch? Ich weiß nicht wie ich weiterkommen 
kann.
Ich bitte um etwas leichter zu verstehende Erklärungen. Ich kenne mich 
(noch) nicht so gut in der Welt der Mikrocontroller aus.

Vielen Dank!

von Steve van de Grens (roehrmond)


Lesenswert?

Du hast vergessen, auf die Dokumentation des Sensors zu verweisen oder 
wenigstens seinen exakten namen anzugeben. Gleiches gilt fü den Adapter.

"habe das rote Modell von Amazon" soll wohl ein schlechter Witz sein, 
oder?

> Ich kenne mich (noch) nicht so gut in der Welt der Mikrocontroller aus.

Dann fange mal besser mit einem Arduino Uno oder Nano an. Die ESP Chips 
haben zahlreiche spezielle Fallstricke, sowohl was ihre >Hardware 
angeht, als auch die Software. Da läuft im Hintergrund viel mehr drauf, 
als nur dein Sketch.

von Wolfgang (Gast)


Lesenswert?

Christian P schrieb:
> Wenn ich den Sensor direkt an den Computer anschließe und direkt mit
> HTerm nachschaue, kommen die gewünschten Daten raus.

Heißt das, dass dein Computer ein RS422-Interface besitzt oder ist dein 
Konverter dabei irgendwie im Spiel?

Prüfe die Polarität deiner Signale.

von Steve van de Grens (roehrmond)


Lesenswert?

Dein Sketch funktioniert nur, wenn der Sensor zwischen den Pausen immer 
genau 600 Bytes am Stück liefert. Das wiederum erfordert bei deinem 
Programmaufbau einen ausreichend großen Empfangspuffer. Die Größe kann 
man mit Serial.setRxBufferSize(600) einstellen, ich weiß aber nicht wo 
die Limits sind.

: Bearbeitet durch User
von Christian P (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die Antwort,

Habe jetzt nachträglich die Dokumentation des Sensors mitgegeben.
Entschuldigung, dass ich so unpräzise war mit dem Konverter. Da es nur 
einen gibt, dachte ich es wäre klar gewesen. Entschuldigung nochmal.
(Pegelwandlermodul 5-V-Pegelsignalwandler RS422 auf Bidirektionales 
TTL-UART-Konvertierungsboard für Serielle Schnittstellen Bidirektionales 
Board)
Dazu gibt es leider keine Dokumentation.

Links zu Ebay usw. darf man ja, soweit ich weiß nicht reinschreiben in 
seine Frage.

Leider habe ich momentan keine Zeit langsam und genau mich mit dem Thema 
Mikrocontroller zu befassen.

von Christian P (Gast)


Angehängte Dateien:

Lesenswert?

Mein Konverter ist dabei nicht im Spiel.
Es ist ein Simples USB zu RS422 Kabel.
Habe noch die Dokumentation von dem Kabel

von Christian P (Gast)


Lesenswert?

Der Sensor sendet kontinuierlich Daten aus. Bei meinem Beispiel wollte 
ich einfach eine kleine Menge davon anzeigen lassen.

Wenn diese Verbindung steht, sollen aus dem kontinuierlichen Daten immer 
Pakete herausgelesen werden.

Das ist das Ziel.

von Steve van de Grens (roehrmond)


Angehängte Dateien:

Lesenswert?

Christian P schrieb:
> Da es nur einen gibt, dachte ich es wäre klar gewesen.

Es weder nur einen Sensor, noch nur einen RS422 Adapter. Amazon ist 
nicht die ganze Welt und außerdem ändert sich das Angebot dort ständig.

Ich habe bei Amazon rote "RS422 auf Bidirektionales 
TTL-UART-Konvertierungsboard" gefunden, beide ohne Anschlussplan und 
ohne Datenblatt. So etwas kauft man nicht, wenn man bei Verstand ist. 
Schon gar nicht für 9 Euro.

Christian P schrieb:
> Leider habe ich momentan keine Zeit langsam und genau mich mit dem Thema
> Mikrocontroller zu befassen.

Dann lasse es halt bleiben. hast du gedacht, dass wir dein Projekt zu 
Ende bringen?

Stimmt die Baudrate? Laut Doku sind es standardmäßig 921,6k.

Laut Kapitel 8.2 liefert das Gerät immer 3 Bytes mit einer Wiederholrate 
von 2 kHz (änderbar). Die drei Bytes haben in den oberen Bits eine 
eindeutige Kennzeichnung, woran du erkennen kannst, ob das ein L, M oder 
H Byte war.

Empfange die Bytes also fortlaufend einzeln und ordne sie drei Variablen 
(L,M,H) zu. Immer wenn du bei H angekommen bist, gebe sie zusammen auf 
dem Bildschirm aus.

Die Fußnote 2) irritiert mich. Sie beschreibt das Bit 7 genau umgekehrt, 
als die Tabelle darüber.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Christian P schrieb:
> Links zu Ebay usw. darf man ja, soweit ich weiß nicht reinschreiben in
> seine Frage.

Wo hast du das gelesen?

Wenn du andere Beträge hier im Forum liest, siehst du, dass sich da 
niemand an Ebay-, Amazone- oder sonstigen Links stört.

von Christian P. (Gast)


Lesenswert?

Mir ist bewusst, was diese Byte sind und was man mit denen macht. Mir 
geht es um die Verbindung zwischen Sensor und dem Esp32. Die Umwandlung 
von Hexwerte zu Messwert funktioniert schon, es klappt leider die 
Verbindung noch nicht.
Deswegen hoffe ich hier Tipps oder offensichtliche Fehler, die für mich 
nicht offensichtlich sind, aufgezeigt zu bekommen.

Der Sensor ist auch passend voreingestellt 115200 baud und 1 khz 
Messrate.


Ich möchte nicht, dass diese Community meine Aufgabe erledigt, sondern 
nur, wenn möglich, mir zeigt was ich falsch gemacht habe.
Das Problem an dem ich hänge ist: Ich weiß nicht, ob der Konverter der 
richtige ist und/oder mein Code falsch ist. An der Kommunikation 
scheitere ich schon seit mehreren Wochen und habe dieses Forum als 
Hilfestellung angesehen.

Kommunikation allgemein zwischen zwei Esps habe ich verstanden und schon 
ausprobieren können. Leider lässt sich das nicht auf den Sensor 
übertragen.

Ich bedanke mich trotzdem zutiefst auf jede Antwort auf meine Frage.

von Stefan F. (stefanus)


Lesenswert?

Christian P. schrieb:
> Deswegen hoffe ich hier Tipps oder offensichtliche Fehler, die für mich
> nicht offensichtlich sind, aufgezeigt zu bekommen.

Habe ich gemacht. Aber wenn sie dir nicht gefallen, und du auch keinen 
Bock darauf hast, dich selbst weiter rein zu fuchsen, dann lass es halt 
bleiben. Aber beschwere dich nicht bei uns.

von Christian P. (Gast)


Lesenswert?

Habe mich verlesen.
Das keine links gepostet werden sollen gilt nur für das Markt-forum.

Da ich jetzt gelernt habe werde ich nach was anderem suchen.

von Christian P. (Gast)


Lesenswert?

Habe mich verlesen.
Das keine links gepostet werden sollen gilt nur für das Markt-forum.

von Christian P. (Gast)


Lesenswert?

Bitte nicht falsch verstehen die letzten 7 Wochen habe ich 
ununterbrochen mich mit Mikrocontroller befasst und mir selber 
beigebracht auf diesen zu programmieren.
Da ich aus der Richtung Softwareentwicklung komme, ist mir Elektronik 
und Elektrotechnik neu. Ich habe tutorials und Foren durchforstet, 
dennoch kam ich zu keinem Ergebnis.
Deswegen versuche ich jetzt selber hier Antworten von erfahrenen Leuten 
einzuholen.
Ich habe leider nicht die Erfahrung,  wo man solche Konverter kauft oder 
verkabelt. Könntst du mir ein paar Websiten nennen, die solche Konverter 
oder allgemein Geräten entwickeln/verkaufen? Leider finde ich nur Müll 
ohne Anleitung.

Danke weiterhin für deine Antworten, leider kann mir niemand sonst im 
Umfeld damit helfen.

von Stefan F. (stefanus)


Lesenswert?

Du hast zu viele Baustellen gleichzeitig. Mache eine Pause um einen 
klaren Kopf zu kriegen.

Dann Gehe die Baustellen schrittweise an. Schreibe einen ganz simplen 
Sketch, der die empfangenen Bytes einzeln (keine Blöcke) 1:1 an den PC 
weiter leitet. Dort müsste das Hterm dann die bekannte Anzeige liefern.

Starthilfe: 
https://docs.arduino.cc/built-in-examples/communication/SerialPassthrough

Ziel: Die serielle Kommunikation auf beiden Seiten ans Laufen bringen. 
Mache das erst mal, dann sehen wir weiter.

Und besorge dir zwischenzeitlich einen Logic Analyzer (ab 8 Euro). Der 
wird nützlich sein.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.