Problem mit serieller Kommunikation

HIho,

ich versuche eine Serielle Kommunikation mit dem Arduino Uno nicht über die eingebaute USB Schnittstelle, sondern über die 2 Pins + GND direkt auf dem Board und einen Usb to Serial Konverter. Leider klappt das nicht. Solange ich die Usb Schnittstelle auf dem Arduino benutze geht alles wunderbar. Einstellung sind die gleichen, (9600, 8N1)

Gibts da irgendwas zu beachten?

Gruß ilu

Hast du TX und RX gekreuzt? Das heißt RX mit TX und TX mit RX verbunden.

Hi,

ja hab ich, auch schon mal getauscht die beiden Adern. Wenn ich den usb2serial Konverter mit nem serial2ethernet Konverter betreibe hab ich eine funktionierende Kommunikation doch sobald ich einen von beiden an den Arduino hänge krieg ich nur wenn überhaupt nur Zeichenwirrwarr.

Gruß Ilu

iluvatar2k13: ich versuche eine Serielle Kommunikation mit dem Arduino Uno nicht über die eingebaute USB Schnittstelle, sondern über die 2 Pins + GND direkt auf dem Board und einen Usb to Serial Konverter. Leider klappt das nicht.

Die Hardwareschaltung hast Du ja so ungefähr beschrieben, bis auf die beiden Pins am Arduino, die Du verwendest.

Aber Du hast keinen Sketch geschickt. Und "klappt nicht" ist keine detaillierte Fehlerbeschreibung.

HI,

die Pins sind natürlich RX und TX also Pin 0 und 1 am Arduino. Den Sketch habe ich deswegen nicht eingefügt da das ganze über die eingebaute USB Schnittstelle des Arduino funktioniert hat.

Hier mal der Sketch:

/*First own Arduino Programm - testing serial connection */

void setup(){
   
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  
   
}
void loop(){
  char textin;
  while(Serial.available()> 0){
  digitalWrite(13,HIGH);
  delay(500);
  digitalWrite(13,LOW);
  textin = Serial.read();
  Serial.print(textin);
  delay(1000);
  }
}

Leider krieg ich da wenn ich über die Pins gehe nur Zeichenmüll.

Gruß Ilu

Zeichenmüll? Schau mal ob du die Serielle Schnittstelle auch mit einer Baudrate von 9600 abfragst.

Hi,

im Terminalprogramm habe ich das selbe eingestellt wie im Setup vom Arduino, muss man das sonst noch was einstellen?

Gruß

Ilu

iluvatar2k13: die Pins sind natürlich RX und TX also Pin 0 und 1 am Arduino.

Diese Pins zu verwenden ist natürlich falsch.

Das sind die Pins der eingebauten HardwareSerial Schnittstelle. Die kannst Du nicht nochmal für was anderes verwenden. Außer, Du liebst Kurzschlüsse und Elektronikschrott.

Du mußt für eine zusätzliche serielle Schnittstelle Pins verwenden, die für noch nichts anderes verwendet werden. Und dann müssen die Pins über eine Library wie "SoftwareSerial" angesteuert werden.

Und wenn es was vernünftiges werden soll, dann nimmst Du nicht die mit der Arduino-Software mitgelieferte SoftwareSerial-Library, sondern die AltSoftSerial-Library.

Hi, wenn ich die verwende dann natürlich ohne gleichzeitig am usb zu hängen.

So wie ich das verstanden habe kann man wenn man den Arduino nicht am Usb hängen hat diese Pins für serielle Übertragungen verwenden. Wozu sollten die auch sonst extra noch mit RX und TX beschriftet sein.

In meiner fertigen Schaltung soll es darum gehen, das der Arduino über die serielle Schnittstelle einen String übers Netzwerk von einem Ethernet2Serial Konverter bekommt. Leider geht eben die serielle Übertragung nicht.

Gruß Ilu

Hiho,

ich hab jetzt was zu der Thematik gefunden, anscheinend erwartet der Arduino andere Spannungspegel als in der "normalen" RS232 verwendet. Man braucht dazu einen Pegelwandler. Es gibt anscheinend eine RS232-Shield der genau das machen soll.

Gruß

Ilu

iluvatar2k13: Wozu sollten die auch sonst extra noch mit RX und TX beschriftet sein.

Die Beschriftung dient als kleine Merkhilfe, dass das die HardwareSerial Schnittstelle ist und dass Du die Pins nicht als allgemeine I/O Leitungen verwenden kannst, sobald Du "Serial.begin" im Sketch stehen hast.

iluvatar2k13: anscheinend erwartet der Arduino andere Spannungspegel als in der "normalen" RS232 verwendet.

Seriell-RS232 verwendet andere Pegel als Seriell-TTL.

Und auch andere Anschlüsse, normalerweise. Geräte, die mit RS232 Pegeln arbeiten, erkennst Du normalerweise am 9-poligen D-Sub Stecker bzw. Buchse.

Der Arduino arbeitet mit 5V Serial-TTL Pegeln.

Die erste (und auf vielen Boards auch einzige) HardwareSerial-Schnittstelle ist mit einem USB-Adapter verbunden, der eine serielle Verbindung zum PC ermöglicht.

Weitere HardwareSerial-Schnittstellen, wie sie z.B. auf dem MEGA Board vorhanden sind, sind frei für den direkten Anschluss von anderen Geräten, die seriellen ebenfalls mit TTL-Pegeln kommunizieren.

Oder man kann Adapter anschließen:

Um zum Beispiel eine serielle Verbindung mit 5V TTL-Pegel mit einem PC herzustellen, benötigt man einen Adapter wie eBay Artikelnummer 121182907987 für den Arduino.

Und um zum Beispiel eine RS232 Verbindung mit RS232-Pegel herzustellen, benötigt man einen Adapter wie eBay Artikelnummer 121182990883 für den Arduino.

Falls das Board nicht genügend serielle Hardwareschnittstellen aufweist, können ggf. weitere serielle Schnittstellen per Software-Library emuliert werden.