PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unterschied zwischen UART vs. RS232



HannoHupmann
07.08.2014, 09:57
Hallo zusammen,

meine Roboter möchte ich zukünftig gerne über Funk programmieren. Bisher werden die Roboter über die RS232 (Serielle Schnittstelle) programmiert. Nun habe ich gesehen, dass es verschiedene Funkmodule für RS232 gibt.
z.B.: http://www.schmidt-infosystems.de/led_display_daten_uebertragungssysteme_funk_uebert ragungssystem_9600.php

Über ZigBee geht es wohl auch - habe ich gehört - allerdings können diese Module nur UART. Nun stellt sich für mich die Frage: wo ist der Unterschied zwischen UART und RS232?

Gibt es noch andere Module mit denen ich RS232 wireless übertragen kann?
Gibt es vor allen auch kostengünstigere Lösungen als 130€?

- - - Aktualisiert - - -

Nachtrag: Offensichtlich ist der Unterschied zwischen UART und RS232 der Pegel mit dem die beiden Systeme arbeiten.

Gehe ich richtig in der Annahme, dass man bei UART für den Computer noch einen Pegelwandler braucht MAX232 meine ich heißt der Baustein?

Auf der µC Seite würde dann nicht benötigt werden für 5V Systeme und eine Anpassung bei 3,3V Systemen?

Meine Propeller Chips arbeiten mit 3,3V bisher programmiere ich die über einen Adapter für die RS232 Schnittstelle.

PICture
07.08.2014, 10:59
Hallo!


Offensichtlich ist der Unterschied zwischen UART und RS232 der Pegel mit dem die beiden Systeme arbeiten.

Gehe ich richtig in der Annahme, dass man bei UART für den Computer noch einen Pegelwandler braucht MAX232 meine ich heißt der Baustein?

Ja, so ist es allgemein ohne in Details von Protokollen zu gehen ! :D

Bernd_Stein
07.08.2014, 11:14
Hallo zusammen,


Auf der µC Seite würde dann nicht benötigt werden für 5V Systeme und eine Anpassung bei 3,3V Systemen?


Ich verstehe diesen Satz zwar nicht ganz, aber der MAX 3232 ist der Richtige für Dich. Lese auch hier :

http://www.mikrocontroller.net/topic/109633#3748122


Bernd_Stein

Wsk8
07.08.2014, 11:18
RS232: +-12V
UART: normal 3-5V

Bei Reichelt gibts ab ca. 20 Taler XBEE Funkmodule:
http://www.reichelt.de/ZIGBEE-XBEE-ZBCA/3/index.html?&ACTION=3&LA=446&ARTICLE=108355&artnr=ZIGBEE+XBEE+ZBCA&SEARCH=zigbee

Für ca. 40 Taler gibts dann auch schon ein paar Km Reichweite: http://www.reichelt.de/ZIGBEE-XBEE-PZBD/3/index.html?&ACTION=3&LA=446&ARTICLE=108356&artnr=ZIGBEE+XBEE+PZBD&SEARCH=zigbee

Und was mich interessieren würde, ob das Ding wirklich 40Km schafft:
http://www.reichelt.de/ZIGBEE-XP-868H/3/index.html?&ACTION=3&LA=446&ARTICLE=108360&artnr=ZIGBEE+XP+868H&SEARCH=zigbee

mfg

HannoHupmann
07.08.2014, 11:49
Die XBEEs sind mir auch schon aufgefallen. Allerdings stellt sich für mich die Frage, wieviel Hardware drum rum notwendig ist um ein XBEE Modul am PC anzuschließen (USB oder RS232 Anschluss) und wieviel Hardware um das Modul am µC zu implementieren.

Soweit ich es verstanden habe müsste man PC-Seitig den Pegel von 5V auf +/-12V heben, also MAX232 Baustein bzw. damit sollte es ja auch gehen:
http://shop.embedded-projects.net/in-circuit-gmbh/usb-b-uart-bridge.html?c=18

Auf der anderen Seite (µC) reicht wohl dieses Modul: http://www.reichelt.de/ZIGBEE-XBEE-ZBCA/3/index.html?&ACTION=3&LA=446&ARTICLE=108355&artnr=ZIGBEE+XBEE+ZBCA&SEARCH=zigbee#av_tabprod
es arbeitet schon mir 3,3V also wäre keine Anpassung des Pegels notwendig.

Reicht das schon um die entsprechenden XBEE Module einzubinden? Wie läuft das eigentlich bei XBEE mit dem Verbinden der beiden Module? Läuft das alles automatisch oder muss man die irgendwie aufeinander einschwören?

Wsk8
07.08.2014, 12:00
Die XBEEs sind mir auch schon aufgefallen. Allerdings stellt sich für mich die Frage, wieviel Hardware drum rum notwendig ist um ein XBEE Modul am PC anzuschließen (USB oder RS232 Anschluss) und wieviel Hardware um das Modul am µC zu implementieren.
Prinzipiell solltest du nur eine USB-UART Bridge benötigen, z.b. OpenOcd: http://www.amazon.de/ICprog-OpenOCD-JTAG-Adapter-Debugger-Blau-Gr%C3%BCn/dp/B00J8H9QMO
Oder: http://shop.in-circuit.de/products/Home/Schnittstellenmodule/27/USB-A-UART-Bridge

mfg

BMS
07.08.2014, 12:14
Hallo,
wenn der PC noch eine echte serielle Schnittstelle besitzt, ist kein USB-UART-Wandler notwendig.
Anstelle eines MAX232 oder MAX3232 kann man auch eine kleine Transistorschaltung einsetzen, z.B.
http://www.dd-wrt.com/wiki/images/b/bb/LaFonera_Hardware_Serial-Cable-Port_11_simple_schematic.jpg
habe ich bereits getestet und funktioniert wunderbar. Ist eben absolut low-cost und mit Bauteilen aus der Bastelkiste schnell aufgebaut.
Grüße, Bernhard

HannoHupmann
07.08.2014, 15:08
Echten RS232 habe ich nicht mehr und da ich früher oder später auf Laptop umsteigen möchte, würde ich gerne alle Schnittstellen über USB erledigen. Ich kenn die Schaltung sowas habe ich mir auch schon aufgebaut für meinen Propeller Chip, müsste sehr ähnlich sein.

Ich denke ich kann mit USB-UART --- Funkstrecke --- UART - µC erreichen was ich möchte.
Ich denke dafür brauch ich also eine USB-UART Bridge (für 10€)
zwei XBEE Module a 23€
Also roundabout um die 60€

Eine Frage bleibt noch offen: Wie verbinde ich die beiden XBEE Module miteinander...

Wsk8
07.08.2014, 15:32
Eine Frage bleibt noch offen: Wie verbinde ich die beiden XBEE Module miteinander...
Mit Funkwellen ;)

mfg

Valen
07.08.2014, 16:39
Mit Funkwellen ;)

mfg

Und den Anleitung: Xbee 802.15.4 (Series 1)

http://ftp1.digi.com/support/documentation/90000982_P.pdf

P.s:

Xbee != Zigbee

http://tutorial.cytron.com.my/2011/03/06/is-xbee-zigbee/

HannoHupmann
07.08.2014, 21:15
Verstanden... mit Funkwellen, Mensch da hätte ich ja mal gleich drauf kommen können und ich dachte schon es wäre Magie... #

Na ich werd dann mal mein Glück versuchen, wie oben beschrieben.
Eine Frage noch, wie ist das mit dem RESET Signal? Ich möchte das XBee Modul wie gesagt gerne für die Programmierung bei meinen Propeller Chips verwenden. Dazu habe ich eine kleine, feine Platine die mit 2 Transistoren den Pegel von 3.3V auf die RS232 Pegel umsetzt und mit einem dritten Transistor ein RESn Signal auslöst.

Valen
07.08.2014, 21:34
Den Xbee-Modulen haben mehrere pins für digitale Ein- und Ausgangen, und auch analoge Eingangen und PWM/DAC Ausgangen. Durch richtige Einstellungen der interne Registern kann man den Pin-zustanden von den beiden Modulen synchronisieren. 'Virtual Wire' so gesagt. Ein Spannungswechsel, Hi zu Low oder Low zu Hi, auf einen Pin wird an den andere Modul dann auch passieren. (mit ein wenig Verzögerung)


http://www.ladyada.net/make/xbee/arduino.html


Wenn man zu einen Modul mit API-paketten kommuniziert kann man auch den Konfiguration von den Entfernte Modul ändern, und so auch die Digitale zustand einer seiner Pins. (Wo zu du den Reset Transistor angeschaltet hat)

Peter(TOO)
08.08.2014, 01:58
Hallo,

Nachtrag: Offensichtlich ist der Unterschied zwischen UART und RS232 der Pegel mit dem die beiden Systeme arbeiten.

Du hast da noch ein kleines Durcheinander:

RS-232, eigentlich RS-232C, ist eine ANSI-Norm. Die praktisch selbe internationale Norm gibt es auch noch als V.24 von ITU (früher CCITT).
Die Norm umfasst die Pegel und die Steckerbelegung des 25-poligen Steckers. Da war optional noch ein Hilfskanal vorgesehen, welcher aber kaum benutzt wurde, und auch noch Signale für die Signalqualität, deshalb die 25 Pole.
Definiert ist nur, dass die Daten seriell übertragen werden, die Norm enthält aber weder Angaben zum Datenformat noch zum Übertragungsprotokoll.
IBM hat dann mit der Einführung des IBM-AT den 9-poligen Stecker eingeführt, bei welchem die ganzen Zusatzkanäle weggelassen wurden.

UART (Universal Asynchronous Receiver Transmitter) ist die Schaltung, früher meist ein ganzes IC, welche die Parallel/Seriell Wandlung der Daten macht und auch noch das Hardware Handshake übernimmt. Dies ist wiederum keine Pegeldefinition.

Die Pegel auf der UART-Seite werden im Allgemeinen als TTL bezeichnet, wobei sich diese eigentlich auf 5V beziehen.

Die gesuchte Pegelwandlung bezieht sich also auf TTL <--> RS-232. In deinem konkreten Fall wäre es "3.3V TTL <--> RS-232"-

MfG Peter(TOO)

HannoHupmann
08.08.2014, 10:01
Scheinbar hat sich schon jemand Gedanken darum gemacht wie man einen Propeller Chip über XBEE programmieren kann. Scheint aber mehr oder minder so zu laufen wie ich mir das schon dachte und ich muss mal probieren wie es geht, wenn ich die Module da habe. Dazu muss ich sie aber erst noch bestellen :D

Thegon
09.08.2014, 10:53
Ich weiß nicht ob die Entscheidung schon gefallen ist oder noch nicht - aber ich werfe einfach mal in die Runde:
wäre Bluetooth eine Lösung? Ich habe sehr gute Erfahrungen gemacht mit dem Bluetoothmodul BTM222 (z.B. bei Amazon erhältlich. ca. 15 Euro)

Legt man Beriebsspannung an, dann wird das Modul von einem bluetooth-fähigen PC/Laptop als Serial Adapter erkannt und ohne jegliche Treiberinstallatin steht das Modul nach dem Verbinden als Virtuelle Com-Schnittstelle zur Verfügung. Was der PC in die Schnittstelle schreibt, kommt dann am TX-Pin wieder heraus.
Nur die Baudrate muss man auf dem Modul direkt einstellen (über die serielle Schnittstelle wenn das Modul nicht verbunden ist) und nicht im Terminal/Programm, da muss man erst draufkommen.


Und das Modul läuft mit 3,3V, d.h. auf 5V sind Pegelwandler nötig. Eine sehr simple Realisierung habe ich von hier:
http://www.robotfreak.de/blog/mikrocontroller/preiswerte-bluetooth-anbindung/44
nachgebaut, mehr braucht es nicht. Reichweite betrug bei mir ca. 70m.

Um UART über kürzere Distanzen per Funk zu übertragen finde ich das Teil genial.

Grüße
Thegon

HannoHupmann
10.08.2014, 08:03
Hallo Thegon,

Blauzahn war auch in der Überlegung, aber da mein Entwicklungsrechner kein Blauzahn hat, müsste ich auch hier erst wieder einen Stick kaufen. Ich habe mich jetzt, auch wegen der Reichweite, für XBee entschieden. Xbee ist auch noch etwas hardwarenäher als blauzahn und daher für mich einfacher zu implementieren.

Die Idee von dir ist aber grundsätzlich auch sehr fein!

HannoHupmann
14.08.2014, 08:36
So jetzt ist alles da, ich muss also "nur noch" zum Laufen bekommen :)

HannoHupmann
16.08.2014, 14:10
Mal wieder funktioniert es nicht auf anhieb, vielleicht kann mir jemand helfen?
Bisher habe ich es geschaft, die beide XBEE Module über die UART Bridge anzusprechen und mit dem XCTU Programm zu flashen. Dabei habe ich mich an die Anleitung hier gehalten:
http://plischka.at/Funk_XBEE.html

Soweit so gut, leider funktioniert die Funkverbindung zwischen µC und PC nicht wie gewünscht. Leider habe ich nur eine UART Bridge und so kann ich nicht testen ob es a) am µC liegt oder b) an den beiden Modulen und die sich nicht verbinden wollen.

Jemand eine Idee wie ich da weiter kommen könnte?

Was mich weiter ein wenig wundert ist, dass die Module (XBee S2 REv A) ganz ohne Antenne geliefert werden. Weder Chip noch Wire ist daran oder darauf. http://www.reichelt.de/Zigbee-XBEE/ZIGBEE-XBEE-ZBCA/3/index.html?&ACTION=3&LA=2&ARTICLE=108355&GROUPID=5726&artnr=ZIGBEE+XBEE+ZBCA
Das habe ich bestellt und bekommen habe ich ein klein wenig anders aussehendes Modell.

Valen
16.08.2014, 15:29
Du brauchst den mikrocontroller nicht wirklich zum testen der Funkverbindung. Nur Din und Dout von den entfernte Xbee zusammen schalten. Dann bekommst du ein loopback Funkverbindung. Alles was dort hin gesendet wird, soll gleich so zurück gesendet werden.


Was mich weiter ein wenig wundert ist, dass die Module (XBee S2 REv A) ganz ohne Antenne geliefert werden. Weder Chip noch Wire ist daran oder darauf. http://www.reichelt.de/Zigbee-XBEE/Z...GBEE+XBEE+ZBCA
Das habe ich bestellt und bekommen habe ich ein klein wenig anders aussehendes Modell.28913
Schade, die Batterien sind leer.

Foto?

- - - Aktualisiert - - -

Aus deinem gelinkten Anleitung:


... Der Eingang ist wohl 5V resident.Dort bin ich mich nicht so sicher von. Zur Sicherheit wurde ich den Datensheet von diesen Modulen darauf nachsehen.

http://ftp1.digi.com/support/documentation/90000976_T.pdf

Bis jetzt habe ich nur von Max eingangspannung 3.4 oder 3.6 Volt gehört. Es Funktioniert vielleicht mit 5 Volt, aber wie lange? Digi/Maxstream könnte das aber in dem letzten Jahren verbessert haben. Seht aber nicht so aus laut den oben gelinkten Anleitung von Digi.

HannoHupmann
16.08.2014, 17:32
Guter Tipp, gleich ausprobiert. Ergebnis: Kein Rückemeldung von der anderen Seite. Wie ich vermute habe, funktioniert die Verbindung noch nicht korrekt.

Ich betreibe die beiden XBees mit 3,3V sollte also ohne Probleme funkionieren.

Wsk8
16.08.2014, 17:45
Ich kann mich noch in etwa daran erinnern, dass man bei den Modulen einstellen kann, an wen gesendet wird und was empfangen werden soll. Sicher dass das passt??


So, here are my settings:

ID = 0x0508
DL = 0xFFFF
DH = 0x0
SM = 1
MY = 0x1
RN = 0
NI = "Alarm 1"
RO = 0

I am just going to explain a few of the important ones, you can look through the datasheet for the rest.
ID: This is a group ID
DL & DH: These are Destination address. In this case it is set to broadcast, so all radios in the same group will receive the data
SM: This is the sleep mode, in this case I was using Pin 9 to put the radio to sleep (by pulling the line high). If you wake from sleep, give the radio about 14ms to wake up before using it (_delay_ms(14) would work).
MY: This is the address / ID of this particular radio, they should be unique within a group
NI: Node Identification, a human readable name you can give the radio

mfg

HannoHupmann
17.08.2014, 09:56
Guten Morgen zusammen. Jetzt klappt zumindest schon mal die Paarung über Funk und der Empfänger sendet zurück was der Coordinator ihm schickt. Es lag vermutlich an einer Einstellung im Serial Interfacing. Über Pin D7 wäre die CTS flow Control gelaufen und da an pin7 nichts anliegt flowt und controlled da auch nix.

Nächster schritt ist jetzt meinen µC davon zu überzeugen, dass er Serielle Signale über Funk bekommt.

- - - Aktualisiert - - -

Hallo zusammen. Bisher wird der Serielle Port über Funk von meinem µC nicht erkannt. Mein bisheriger Adapter hat auch noch eine kleine Besonderheit: bei der Programmierung wird die Reset Spannung von 3,3V auf GND gezogen. Damit der µC im Boot-Loader Modus ist.
Hier die Schaltung die auch gleichzeitig die Pegelanpassung für die 3,3V des µC generiert.

28914
Leider wird das RESET Signal über die RS232 Leitung 4 übertragen, dann mit dem T1 - BC547 invertiert und zieht den µC auf GND. Ich kann zwar mit dem XBEE auch ein RESET Signal übertragen, aber meine UART Bridge stellt kein RESET Signal zu Verfügung ;-(.

Wäre die Lösung also doch über USB-zu->RS232-zu->UART zu gehen und dann die RESET Leitung entsprechend mit zu übertragen oder gibt es noch eine andere Möglichkeit?

HannoHupmann
17.08.2014, 11:25
Weiß einer wie ich ein I/O Signal über Funk übertragen kann? Was ich da einstellen muss und vor allen wie die Schaltung davor sein sollte. Ich kann natürlich einfach 3,3V auf den Eingang geben oder eben GND aber wie wir alle wissen funktioniert das bei µC in der Regel nicht? Muss ich eine pullup oder pulldown Schaltung aufbauen?

Valen
18.08.2014, 23:31
Leider können deine Series 2 Xbees keine 'Virtuelle Draht Durchführung', nur Series 1/802.15.4:

http://www.digi.com/support/kbase/kbaseresultdetl?id=3522

Am ende der link:


Series 1 XBees that are running the 802.15.4 firmware support Digital and Analog Line Passing. This feature allows a radio to take an input from one XBee and directly alter the output of another XBee. Essentially acting as a wire replacement for digital and analog signals instead of just UART data. This is unique to the 802.15.4 firmware and is not possible on any other XBee without using an external microcontroller or a programmable variant. For more information, please refer to the following KB articles:

Digital I/O Line Passing: http://www.digi.com/support/kbase/kbaseresultdetl?id=2188
Analog Line Passing: http://www.digi.com/support/kbase/kbaseresultdetl?id=2180


Vielleicht kannst du mit dein uC ein Remote Configuration API pakette senden das den Pin-zustanden der andere Xbee anpasst (oder abfragt).

HannoHupmann
19.08.2014, 10:26
Tja blöd, hätte ich das mal vorher gewusst, dann wäre ich vermutlich gleich auf die Serie 1 augesprungen. Dann brauch ich mir aber auch keine Gedanken mehr darüber machen ob und wie ich das hinbekomme sondern kann die Module nur als RS232 Übertrager nutzen. Zum Glück gibt es für meinen µC auch einen Bootloader mit dem man ohne das DTR Signal auskommt.