| Name |
Nachricht |
Omsi-tech

Siedler
48 Beiträge
|
Einfacher Schnittstellenwandler am Arduino betreiben, 13 Jul. 2019 17:51
|
Hallo zusammen,
für die Hochschule baue ich aktuell ein altes IBIS 1 der VGF ohne eigene Datenversorgung (Termin-Gerät) auf eine eigene Arduino basierte Steuerung um. Die Ansteuerung von Display, Tastatur, LDR und Piezo Element läuft auch bereits soweit. Jetzt möchte ich mit dem Gerät auch wieder IBIS Anzeigen ansteuern und habe mir dafür für die serielle Schnittstelle des Arduino einen einfachen Schnittstellenwandler wie auf dem ersten Bild von diesem Beitrag gebaut: https://487481.forumromanum.com/member/forum/entry_ubb.user_487481.1341209229.1114728707.1114728707.1.schnittstellenwandler-ibis_world.html
Am Computer mit IBISUtility funktioniert der Wandler auch ohne Probleme, aber mit dem Arduino tut sich überhaupt nichts. Ich habe am Arduino Pin 3 der seriellen Schnittstelle mit TX1 verbunden und Pin 4 der seriellen Schnittstelle mit GND des Arduino. Prinzipiell bringt der Arduino ja auf der seriellen Schnittstelle im Vergleich zum herkömmlichen Computer nur 5V anstatt 12V. Aufgrund des externen 24V Netzteil für die Speisung des IBIS Wagenbus dürfte dies aber keinen Unterschied machen, zumal ich zwischen Pin 1 und Pin 2 des IBIS Wagenbus auch 24V Ausgangssignal messe. Zum testen habe ich mir ein kurzes Arduino Programm geschrieben, welches als Schleife die Liniennummern 1-9 als Datensatz DS001 senden soll. Das Senden der Daten seitens des Arduino funktioniert auch soweit, welches ich mittels seriellen Monitor kontrolliert habe. Als Einstellung für die serielle Schnittstelle habe ich wie von Cybox beschrieben folgende Konfiguration verwendet: 1200 Baud, 7 Datenbits, 2 Stopbits, Parity even.
Hier ist der Code des Arduino:
void setup() { // put your setup code here, to run once: Serial.begin(1200, SERIAL_7O1); }
void loop() { // put your main code here, to run repeatedly: Serial.write("l001"); delay(5000); Serial.write("l002"); delay(5000); Serial.write("l003"); delay(5000); Serial.write("l004"); delay(5000); Serial.write("l005"); delay(5000); Serial.write("l006"); delay(5000); Serial.write("l007"); delay(5000); Serial.write("l008"); delay(5000); Serial.write("l009"); delay(5000); }
Leider tut sich auf der Anzeige gar nichts, da kein korrekter IBIS Datensatz empfangen wird. Ich weiß aber aktuell auch nicht, wo der Fehler liegen könnte? Hat hier vielleicht jemand eine Idee und könnte mir bei meinem Problem helfen oder hat eventuell schon ein ähnliches Projekt mittels Arduino umgesetzt?
Mit freundlichen Grüßen
Alexander |
|
| |
Beitragsbewertung:
|
Thijs van de Bles


Gelehrter
120 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 13 Jul. 2019 21:42
|
Erstens muss die Parität Einstellung 7E2 sein. Dann gibt es neben der Hardware-Parität auch eine Software-Parität. Es reicht nicht aus, nur ‘l123‘ zu senden. Sie müssen das Telegramm mit einem ‘Carriage Return‘ und der berechneten Parität über den Inhalt des Telegramms schließen.
[CODE] String tekst = ""; long randNumber;
void setup() { Serial.begin(1200, SERIAL_7E2); }
String addIBISparity(String message){ char check_byte = 0x7F; for(int x=0; x < tekst.length(); x++){ char byte = tekst.charAt(x); check_byte = check_byte ^ byte; } return message+check_byte; }
void loop() { randNumber = random(100, 1000); tekst = "l"; tekst += String(randNumber); tekst += "r"; Serial.println(addIBISparity(tekst)); delay(1000); } [/CODE]
Dieser Code sendet jede Sekunde eine zufällige Liniennummer zwischen 100 und 999.
Geändert von Thijs van de Bles am 14.Jul.2019 10:23 |
|
| |
Beitragsbewertung:
|
SeregkaS

Siedler
7 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 14 Jul. 2019 10:59
|
Может это поможет в
Mezgrman |
|
| |
Beitragsbewertung:
|
Omsi-tech

Siedler
48 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 22 Jul. 2019 13:49
|
Hallo zusammen,
vielen Dank für eure Hilfe. Leider tut sich bei der Anzeige immer noch nichts, mit dem Rechner funktioniert aber alles. Es wird an der Anzeige kein gültiger Datensatz empfangen. Wenn die Software mit dem Arduino soweit richtig erscheint, wird es wohl an der Hardware liegen.
Ich habe die serielle Schnittstelle des Arduino im Verdacht, da diese ja keiner herkömmlichen RS232 Schnittstelle wie am Computer entspricht. Hat hier eventuell schon jemand Erfahrungen mit gemacht?
Mir wurde durch jemanden gesagt, dass bei der seriellen Schnittstelle des Arduino möglicherweise das HIGH und LOW Signal vertauscht sind, was natürlich erklären würde warum kein gültiger Datensatz zu Stande kommt. Ich bin mir aber noch unschlüssig, ob ich in den Wagenbus-Sende-Daten einen Transistor einbauen kann, um das Signal wieder zu invertieren.
Vielleicht kennt jemand von euch das Problem mit dem Arduino oder hat sonst noch eine Idee?
Viele Grüße
Alexander |
|
| |
Beitragsbewertung:
|
Mezgrman

Gelehrter
103 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 22 Jul. 2019 14:23
|
SeregkaS:
Может это поможет в
Mezgrman
There is already , with support for TCP :) pyIBIS v2 |
|
| |
Beitragsbewertung:
|
SeregkaS

Siedler
7 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 23 Jul. 2019 08:24
|
on what board do you spend the experience photo upload |
|
| |
Beitragsbewertung:
|
SeregkaS

Siedler
7 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 23 Jul. 2019 21:02
|
There is already , with support for TCP
Mezgrman You would lay out the schemes to your devices.
Geändert von SeregkaS am 23.Jul.2019 21:04 |
|
| |
Beitragsbewertung:
|
Mezgrman

Gelehrter
103 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 23 Jul. 2019 21:31
|
SeregkaS:
[QUOTE] There is already , with support for TCP
Mezgrman You would lay out the schemes to your devices.
[/QUOTE] Excuse me? I didn‘t understand. |
|
| |
Beitragsbewertung:
|
SeregkaS

Siedler
7 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 23 Jul. 2019 21:45
|
source code, circuit, board,example
Geändert von SeregkaS am 23.Jul.2019 21:50 |
|
| |
Beitragsbewertung:
|
Mezgrman

Gelehrter
103 Beiträge
|
|
| |
Beitragsbewertung:
|
SeregkaS

Siedler
7 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 23 Jul. 2019 21:52
|
example |
|
| |
Beitragsbewertung:
|
SeregkaS

Siedler
7 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 23 Jul. 2019 21:55
|
wifi module marking? ESP8266 PIN connection diagram?
Geändert von SeregkaS am 23.Jul.2019 21:57 |
|
| |
Beitragsbewertung:
|
Mezgrman

Gelehrter
103 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 23 Jul. 2019 21:56
|
SeregkaS:
wifi module marking?
I‘m sorry, please write full sentences. Also this is getting off-topic. |
|
| |
Beitragsbewertung:
|
SeregkaS

Siedler
7 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 23 Jul. 2019 22:08
|
1. list of elements for assembly 2. connection diagram 3. Photo "video" of the finished device and how it works. 4. instructions for use. |
|
| |
Beitragsbewertung:
|
Omsi-tech

Siedler
48 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 15 Aug. 2019 10:48
|
Hallo zusammen,
vielen Dank an alle die mir bei Fragen zum Projekt geholfen haben. Inzwischen konnte ich alles fertig zusammen fügen und auch noch die Funktion DS003c von Julian implementieren. Somit kann das Gerät nun neben der Liniennummer auch noch die aktuelle Haltestelle als DS003c ausgeben. Auf meinem YouTube Kanal habe ich ein kurzes Video zum Projekt hochgeladen:
www.youtube.com/watch?v=s78QYCZ0TmA
In den nächsten Wochen werde ich auch noch eine Dokumentation zum Projekt schreiben, welche ich auf speziellen Wunsch gerne zur Verfügung stellen kann. Hierfür werde ich aber noch ein bisschen Zeit brauchen.
Viele Grüße
Alexander |
|
| |
Beitragsbewertung:
|
Tipfix

Siedler
31 Beiträge
|
RE: Einfacher Schnittstellenwandler am Arduino betreiben, 04 Jun. 2021 14:08
|
Thijs van de Bles:
Erstens muss die Parität Einstellung 7E2 sein. Dann gibt es neben der Hardware-Parität auch eine Software-Parität. Es reicht nicht aus, nur l123 zu senden. Sie müssen das Telegramm mit einem Carriage Return und der berechneten Parität über den Inhalt des Telegramms schließen.
[CODE] String tekst = ""; long randNumber;
void setup() { Serial.begin(1200, SERIAL_7E2); }
String addIBISparity(String message){ char check_byte = 0x7F; for(int x=0; x < tekst.length(); x++){ char byte = tekst.charAt(x); check_byte = check_byte ^ byte; } return message+check_byte; }
void loop() { randNumber = random(100, 1000); tekst = "l"; tekst += String(randNumber); tekst += "r"; Serial.println(addIBISparity(tekst)); delay(1000); } [/CODE]
Dieser Code sendet jede Sekunde eine zufällige Liniennummer zwischen 100 und 999.
Hallo
Ich habe den Sketch mal auf einen Arduino Mega geladen und für die Ausgabe auf Serial1 gelegt. Der Arduino sendet auch munter vor sich hin. Ich habe den einfachen Schnittstellenkonverter.
Der obere von beiden. Wenn ich diesen am Rechner betreibe leuchtet die Kontrollled nur wenn er sendet. Am Arduino leuchtet sie ständig und geht nur aus wenn dieser sendet. |
|
| |
Beitragsbewertung:
|
|
|