Forum: Mikrocontroller und Digitale Elektronik Kommunikation µC <-> PC


von Michael N. (garril)


Lesenswert?

Hallo,

es steht mein erstes Projekt an, bei dem ich kleine Datenmengen 
(Stellung von Schaltern, ADC-Werte, ...) zum PC übertragen möchte bzw 
andersherum Werte setzen möchte (zB PWM-Werte, LEDs, ...).

Wichtig: Das ganze soll möglichst einfach zu implementieren sein und 
lange Zeit funktionieren. Auf PC-Seite hätte ich die Daten dann gerne 
mit einer eigenen Software (die gibt es noch nicht) aufgefangen.

Habe gestern V-USB getestet. Als HID-Gerät lief das ganz gut - leider 
wären da einige Anpassungen (inkl. eigener Treiber) nötig, um 
ordentliche Daten zu übertragen.

Das ganze ist ein Hobby-Projekt und ich bin kein Profi, deshalb steht 
Einfachheit im Vordergrund.


Welche Möglichkeit zur Kommunikation sollte ich nutzen?
Dachte an UART -> RS232 (MAX232), aber an welchen PC kann man das 
heutzutage noch anschließen. Und die USB-Wandler machen häufig Mucken 
wie ich hörte...

Gruß

von Wolfgang (Gast)


Lesenswert?

Michael N. schrieb:
> Und die USB-Wandler machen häufig Mucken
> wie ich hörte...

Dann sammel eigene Erfahrungen. Es gibt Millionen von USB-Wandlern, die 
gut funktionieren. Du musst dir überlegen, was für einen Wandler du 
einsetzen möchtest und worauf du Wert legst.

Beim PL2303-Clone hast du z.B. unter Windows 10 das Problem, dass 
Microsoft beim automatischen Update den funktionierenden Treiber 
gnadenlos durch einen nicht funktionierenden ersetzt. Unter anderen 
Betriebssystemen, die dem Nutzer nicht derart in seine Konfiguration 
reinpfuschen, wird das anders aussehen.

Die vielen Arduinos mit direktem USB-Wandler auf dem Board oder mit 
native USB funktionieren auch problemlos.
Bei einem modernen PC auf eine native RS232-Schnittstelle (ohne internen 
USB-Wandler) zu hoffen, halte ich für nahezu aussichtslos.

von Ingo S. (schicki)


Lesenswert?


von Thomas E. (picalic)


Lesenswert?

Servus,

zum Basteln, v.A. auch, wenn evtl. die gebastelte Schaltung gleich vom 
USB-Port des PCs mit Spannung versorgt werden soll, würde ich aber einen 
USB-Seriell-Wandler mit Logikpegeln vorziehen. Was soll denn die 
umständliche hin -und hertransformierei mit MAX232 o.ä. auf beiden 
Seiten?
Notfalls kann man sich sowas ja auch noch selber stricken, wenn man eh 
schon am Basteln ist... 
https://www.reichelt.de/USB-CAN-BUS-Controller/FT-232-RL/3/index.html?ACTION=3&GROUPID=2946&ARTICLE=64399

: Bearbeitet durch User
von Mark W. (kram) Benutzerseite


Lesenswert?

Also HID ist doch recht einfach. Das wuerde ich fuer den Anfang nehmen. 
Bei HID ist es ja gerade der Vorteil, dass man sich um den Treiber nicht 
kuemmern muss, da jedes Betriebssystem den standardmaessig schon dabei 
hat. Also wenn die Datenraten nicht zu hoch sind wuerde ich bei HID 
bleiben. Ich kenne jetzt allerdings V-USB nicht, ich hatte erst 
kuerzlich einen PSoC ueber HID an meine Anwendung angebunden.

von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Wie wärs mit ethernet?

von Alexander F. (alexf91)


Lesenswert?

Reginald L. schrieb:
> Wie wärs mit ethernet?

Oder WLAN, falls das vorhanden ist.
Ich habe hier ein paar NodeMCU (ESP8266). Die lassen sich in Python 
programmieren.

von eagle user (Gast)


Lesenswert?

Wolfgang schrieb:
> Michael N. schrieb:
>> Und die USB-Wandler machen häufig Mucken
>> wie ich hörte...

> Die vielen Arduinos mit direktem USB-Wandler auf dem Board oder mit
> native USB funktionieren auch problemlos.

Diese Wandler funktionieren sogar ohne Arduino, nämlich an jedem uC mit 
UART-Schnittstelle. Und man kann mit 2 Optokopplern PC und uC einfach 
trennen, so brennt im Zweifelsfall nur der uC ab. Absolut 
empfehlenswert!

> Bei einem modernen PC auf eine native RS232-Schnittstelle (ohne internen
> USB-Wandler) zu hoffen, halte ich für nahezu aussichtslos.

Ein Gerücht oder gibt es eine Trendwende?
heise.de/preisvergleich schrieb:
> Fujitsu D3313-S5 (...) Anschlüsse extern: 1x DVI-I, 1x DisplayPort 1.2,
> 4x USB-A 2.0, 2x Gb LAN (Realtek RTL8111G), 2x Klinke, 1x PS/​2 Tastatur,
> 1x PS/​2 Maus, 2x seriell (...) Gelistet seit: 19.04. 2017, 17:36

In Wirklichkeit hat das Board intern noch eine dritte RS232...

https://www.heise.de/preisvergleich/fujitsu-d3313-s5-a1610879.html

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Hier gibt es diverse Seriell To Ethernet/Wifi/BlueTooth Module:
http://www.usriot.com/p/serial-uart-ethernet-module/

Recht günstig und benötigt auf der µC Seite nur einen UART.

Würde ich ebenfalls empfehlen.
Damit muss der PC nicht unbedingt neben der Elektronik stehen UND der PC 
ist nicht direkt verbunden mit der Elektronik (Stichwort Überspannung 
usw.).

Keinen USB-Seriell Adapter, wäre mir zu unsicher.

: Bearbeitet durch User
von Harry (Gast)


Lesenswert?

Schau dir mal HLDC an. Damit bist du zum Teil vollkommen unabhängig von 
deiner Schnittstelle (WLAN, Bluetooh, UART, RS422, RS485, RS232, SPI, 
i2c,...) und du bekommst deine Informationen sauber übertragen denn in 
der Regel baut man hier auch gleich noch CRC ein.

von Kolle (Gast)


Lesenswert?

Ich habe eine HiFi Fernsteuerung welche kabelgebunden dann Daten an den 
PC senden soll seriell angeklemmt.

RemoteCtrl -> Verstärker -> Kabel -> ATmega -> rs232 -> RS232USB -> 
LinuxPC

56800Baud
Rückkanal in Planung zur Anzeige aktueller Musiktitel auf kleinem LCD 
oder so.

von H-G S. (haenschen)


Lesenswert?

Das Problem mit USB könnte auf PC-Seite sein: Du brauchst ein Programm 
mit USB-Treiber etc.

von Wolfgang (Gast)


Lesenswert?

> Wolfgang schrieb:
> ...
>> Bei einem modernen PC auf eine native RS232-Schnittstelle (ohne internen
>> USB-Wandler) zu hoffen, halte ich für nahezu aussichtslos.
>
> Ein Gerücht oder gibt es eine Trendwende?
> heise.de/preisvergleich schrieb:

Das versuchte ich durch "nahezu" auszudrücken. Es gibt einige wenige, 
die das haben, beispielsweise im Bereich der Industrie-PCs. Aber gehe 
mal in den Laden und mach eine Statistik über den Anteil der 
PCs/Motherboards/Tablets mit originärer RS232-Schnittstelle.

von Wolfgang (Gast)


Lesenswert?

H-G S. schrieb:
> Das Problem mit USB könnte auf PC-Seite sein: Du brauchst ein Programm
> mit USB-Treiber etc.

Wenn jemand unbedingt ein Nischenbetriebssystem einsetzen muss, für das 
der Chipherstellern keine Treiber anbietet, kann das natürlich ein 
Problem sein.

Wenn der TO sich mal äußern würde, auf welchen Betriebssystemen er seine 
Schnittstelle ggf. nutzen möchte, würde das die Auswahl erheblich 
erleichtern.

von Jobst M. (jobstens-de)


Lesenswert?

Wolfgang schrieb:
> Aber gehe
> mal in den Laden und mach eine Statistik über den Anteil der
> PCs/Motherboards/Tablets mit originärer RS232-Schnittstelle.

Tablets natürlich nicht. Aber bei den meisten PCs/Motherboards lässt sie 
sich noch auf dem Board finden und kann mit einem Kabel herausgeführt 
werden.

Allerdings nur eine.

Ansonsten gibt es Steckkarten.

Aber mit den USB-Dingern habe ich bisher nie Probleme gehabt. Und die 
liegen hier zu hauf aus den USB-Ports.


Gruß
Jobst

von Hmm (Gast)


Lesenswert?

Alexander F. schrieb:
> Reginald L. schrieb:
>> Wie wärs mit ethernet?
>
> Oder WLAN, falls das vorhanden ist.
> Ich habe hier ein paar NodeMCU (ESP8266). Die lassen sich in Python
> programmieren.

Der ESP8266 ist keine so schlechte Lösung. Ich verwende ihn (ohne jemals 
die Firmware geupdatet zu haben) in einem aktuellen Projekt als 
WLAN->UART-Wandler.

Vom ESP her macht man einen Acesspoint auf und startet einen 
Telnet-Server. Das ist mit dem AT-Protokoll über eine UART nicht 
wirklich schwierig.

PC-Seitig kann man sich mit Putty in den Server einwählen und einfach 
lostippen.

Sicherheitstechisch ist das natürlich der absolute Killer (keine 
Verschlüsselung, keine Anmeldung, Funk), aber meine Messwerte sind weder 
geheim noch gefährlich.

Sonst kann ich generell noch FT232RL empfehlen. CP210x verwende ich sehr 
viel in der Arbeit, ebenfalls ohne ein einziges Problem bisher.
Beim FT232 sind Fakes im Umlauf. Die also bei Reichelt oder Conrad 
kaufen, nicht beim Chinesen.

von Michael N. (garril)


Lesenswert?

Vielen Dank bereits für die vielen Antworten und Ideen.

Ich möchte für diverse Betriebssysteme (Windows, Linux, optional 
Android) die Möglichkeit zusätzliche Taster, Drehregler, ... 
anzuschließen.
Da dies an einer möglichst großen Bandbreite an Endgeräten funktionieren 
soll, scheidet RS232 aus.

Toll (auf lange Sicht) wäre eine Art variable Schnittstelle: Der 
Mikrocontroller (kein Arduino - geht hier um eine reine µC-Schaltung) 
sendet seine Befehle per UART und je nach angeklemmten Baustein (ESP8266 
für WLAN, USB-Wandler, ...) werden die Befehle verschickt.

Für den Anfang würde ich aufgrund der Einfachheit auf eine 
kabelgebundene Lösung setzen wollen (Stromversorgung über PC, kein Ärger 
mit WLAN, ...).
Hier fiel mal der Begriff eines "USB-seriell-Wandlers mit Logikpegeln" - 
das schien mir für dieses Ziel sehr passend. Gibt es da Empfehlungen?

von Stefan F. (Gast)


Lesenswert?

> USB-seriell-Wandlers mit Logikpegeln

Suche nach "USB-UART", die gibts für wenige Euros un unterschiedlichen 
Varianten bei Amazon, Ebay sowie jedem Elektronik Händler.

von Michael N. (garril)


Lesenswert?

Vielen Dank! Die Frage hier hat sich sehr gelohnt - jetzt weiß ich wie 
ich alles umsetzen werde.

Zur Sicherheit:
Der Adapter hier ist korrekt, oder?
http://www.ebay.de/itm/FT232RL-FTDI-USB-zu-TTL-Serien-Converter-Adapter-Modul-5V-3-3V-Fur-Arduino/322450824431

Wenn ich alles damit hinbekomme, dann versuche ich eine Netzwerk-Lösung 
:)

von Stefan F. (Gast)


Lesenswert?

> Der Adapter hier ist korrekt, oder?

Ja.

von Hmm (Gast)


Lesenswert?

Michael N. schrieb:
> Für den Anfang würde ich aufgrund der Einfachheit auf eine
> kabelgebundene Lösung setzen wollen (Stromversorgung über PC, kein Ärger
> mit WLAN, ...).
> Hier fiel mal der Begriff eines "USB-seriell-Wandlers mit Logikpegeln" -
> das schien mir für dieses Ziel sehr passend. Gibt es da Empfehlungen?


Die CP210x serie oder der FT232RL sind genau das.

von Pandur S. (jetztnicht)


Lesenswert?

> Da dies an einer möglichst großen Bandbreite an Endgeräten funktionieren
soll, scheidet RS232 aus.

> Hier fiel mal der Begriff eines "USB-seriell-Wandlers mit Logikpegeln" -
das schien mir für dieses Ziel sehr passend. Gibt es da Empfehlungen?


Ist natuerlich Quatsch oder auch nicht.
Die Uebertragung ist per Comport. Mittlerweile auf dem PC als 
USB-to-Serial realisiert. Die PC software sieht ein Comport.

Auf dem Device geht es per UART. Mit der UART Ansteuerung.

Nun kann man sich noch ueberlegen, will man den USB-to-UART Umsetzer als 
USB-to-UART Adapter in den PC einstecken, und dann per serieller 
Schnittstelle dh RS232, RS422, RS485 ueber das Kabel oder will man
ein USB Kabel und einen USB-to-UART Chip auf dem Device.

Dazu ist anzumerken.
USB ist limitiert auf 5m. Und wenn man keinen sauberen GND hat, dh 
Spannungsdifferenzen ueber den GND, zB in Industrieumgebung, hat USB ein 
Problem. Abhilfe waere eine Potentialtrennung. auf dem Device zwischen 
USB Kabel, und dem UART auf TTL Basis. Und USB ist Punkt-zu-Punkt.

Zum Vergleich sind alle Seriellen, dh RS232, RS422, RS485 toleranter 
geben GND Spannungen im Bereich von wenigen Volt. Die Kabellaenge laesst 
ein mehrfaches zu, abhaengig von der Geschwindigkeit. Und bei RS422, 
RS485 kann man auch mehrere Devices an ein Comport des PC anbinden.

Ich empfehl Seriell ueber das Kabel.

: Bearbeitet durch User
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.