Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller + PC Kommunikation


von Joshua H. (joshih13)


Lesenswert?

Guten Tag,
ich suche nach einer Möglichkeit, einen Mikrocontroller per USB mit 
einem PC zu verbinden. Natürlich klingt das erst mal relativ leicht, ich 
möchte jedoch den Mikrocontroller nicht nur programmieren, sondern ich 
möchte eine dauerhafte Kommunikation von PC und Controller erreichen. 
Meine erste Idee wäre ein ATtiny, welcher die Signale zwischen USB und 
ATmega übersetzt. Allerdings bin ich noch nicht wirklich auf einen 
vernünftigen Schaltplan gestoßen. Aber es muss ja eine "relativ 
einfache" Schaltung geben, denn USB ist ja dafür da, um Daten zu 
übertragen und in jedem Drucker, Eingabegerät etc. muss ja ein solcher 
Controller vorhanden sein. Reicht es also von der Hardware her aus, 
einen ATtinny mit einem ATmega zu verbinden und den ATtiny entsprechend 
mit USB zu verkabeln? Und wie sieht es Software mäßig aus? Kann ich auch 
Strings übertragen, um Beispielsweise ein Display zu nutzen? Vielen Dank 
schonmal im Vorraus!

von Dani (Gast)


Lesenswert?

Schau dir mal den FT232RT an. Das ist ein USB auf Seriell Adapter. 
Programmiert wir das dann auf dem PC und auf dem µC wie eine RS232 
Schnittstelle.
Bei eBay findet funstige Platinen mit dem FT232:
z.B.: www.ebay.de/itm/350876509599

von Christian (Gast)


Lesenswert?

Oder die AT90USB-Serie von Atmel. Kommunikation und Flashen über USB 
Schnittstelle

von decimad (Gast)


Lesenswert?

Diese FT232-Teile sind doch auch irgendwie suboptimal auf Dauer. Wenn 
man mehrere davon am Rechner hat, fängt die große Suche an, welches 
Gerät welchen Com-Port zugewiesen hat (Oder die bekriegen sich, bis man 
bei Port 31245 landet, vor allem wenn sie zwischenzeitlich an einem 
anderen Rechner gewesen sind und man mit Alt-Software zu tun hat, die 
keine Com-Ports über 9 bedienen kann oder ähnliches). Leider habe ich 
über den Gerätemanager keinen Weg gefunden, das herauszufinden. Mit 
Hilfe von D2XX kann man immerhin das Gerät anhand von ID und 
Seriennummer oder anderen Attributen suchen, dafür eignet sich D2XX 
nicht für IO-Completion-Ports (oder boost::asio), weil es die 
Win32-Handle-API umgeht. Also landet man am Ende bei einer völlig 
untransparenten D2XX+Virtual-Com-Port-Geschichte... All meine Anfragen 
bei FTDI, ob man das irgendwie unter einen Hut bringen kann, blieben 
leider unbeantwortet...

Falls jemand Abhilfe hat, wäre ich natürlich dankbar ;)

von m.n. (Gast)


Lesenswert?

Eine fertige Lösung wäre ein Arduino UNO Board: ATmega328 + 
USB-Anbindung.

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


Lesenswert?

Es gibt natürlich auch viele andere µC die USB haben und auch der 
Hersteller direkt eine passende LIB liefert - nicht nur Atmel.
z.B. PIC, NXP, ST, usw...

aber 2 µC dafür einsetzen halte ich für übertrieben.

von Karl H. (kbuchegg)


Lesenswert?

decimad schrieb:
> Diese FT232-Teile sind doch auch irgendwie

mag ja alles sein.

Aber solange die Zusatzfrage vom Fragesteller so lautet ...

> Und wie sieht es Software mäßig aus? Kann ich auch Strings
> übertragen, um Beispielsweise ein Display zu nutzen?

... ist er mit einem FT232 gut bedient.

: Bearbeitet durch User
von Martin V. (oldmax)


Lesenswert?

Hi
Nun, viele µC haben einen USART. Die Pins RxD und TxD setzt du mit einem 
MAX 232 auf einen seriellen Standart-Pegel. Dann braucht es nur noch 
einen USB / Seriell Wandler und fertig. Allerdings..... ein wenig 
Programmieren wirst du wohl müssen.
Zur Frage, ob du auch "Strings" senden kannst: das ist ein klares 
Zeichen dafür, das du vermutlich noch ein Weilchen üben mußt. Strings 
sind Zeichenketten. Also, mehrere Zeichen! Ok, und was ist ein Zeichen? 
Nun, ASCII z.B. zeigt ab 48 dez. eine "0". Demnach sind Zeichen Werte 
eines Bytes. Im Bereich  0 bis 255 liegen sie versteckt, deine Zeichen. 
Schau mal, was Google zu "ASCII-Tabelle" sagt. Deine serielle 
Datenübertragung allerdings überträgt "nur" Bytewerte. Was du mit diesen 
anfängst ist allein deiner Phantasie überlassen....
So, nun warten wir mal auf eine Erfolgsmeldung der Kommunikation.
Gruß oldmax

: Bearbeitet durch User
von Max H. (hartl192)


Lesenswert?

Martin Vogel schrieb:
> Nun, viele µC haben einen USART. Die Pins RxD und TxD setzt du mit einem
> MAX 232 auf einen seriellen Standart-Pegel. Dann braucht es nur noch
> einen USB / Seriell Wandler und fertig.
Wenn der PC keine Serielle eingebaut hat würde ich aber einen Adapter 
der RS232 mit TTL Pegel ausgibt. Spart den MAX232.

Auf dem PC kannst zu zum Anfangen irgendein Terminal Programm verwenden.

von Stefanus (Gast)


Lesenswert?

Es gibt ISP Programmieradapter, die sowohl zum flashen als auch für 
serielle UART Kommunikation geeignet sind: 
http://shop.myavr.de/index.php?404;http://myavr.de:80/shop/article.php?artDataID=36

Unter Linux hat man als Alternative zu den durchnummerierten COM-Ports 
die Möglichkeit, die Geräte anhand ihrer physikalischen Verbindung 
(USB-Port, Hub und dessen Port) zu adressieren. Vieleicht kann Windows 
das auch irgendwie.

Ansonsten hat sich für mich unter Windows und Linux bewährt, alle 
"gleichen" UART Adapter an einen Hub zu stecken (mit fester 
Port-Zuordnung) und nur noch den Hub bei Bedarf an den Laptop zu 
stecken. Das Betriebsystem erkennt die Geräte dann immer in der gleichen 
Reihenfolge und numeriert sie daher immer gleich durch.

von Karl Käfer (Gast)


Lesenswert?

Hi,

Joshua H. schrieb:
> ich suche nach einer Möglichkeit, einen Mikrocontroller per USB mit
> einem PC zu verbinden. Natürlich klingt das erst mal relativ leicht, ich
> möchte jedoch den Mikrocontroller nicht nur programmieren, sondern ich
> möchte eine dauerhafte Kommunikation von PC und Controller erreichen.

Ich benutze dazu meistens sowas hier [1].

HTH,
Karl

[1] 
http://www.elektor.de/jahrgang/2011/september/usb-ft232r-breakout-board.1915085.lynkx

von Stephan B. (matrixstorm)


Lesenswert?

Erst kuerzlich drueber gestolpert.

Passt ja bissel zum Thema, von daher: 
http://www.youtube.com/watch?annotation_id=annotation_513104&feature=iv&src_vid=HKrgVZ_b9Eo&v=iepf0CHr6Hk

MfG

von Marc Rupprath (Gast)


Lesenswert?

Hallo;
"ich suche nach einer Möglichkeit, einen Mikrocontroller per USB mit
einem PC zu verbinden."


1. Möglichkeit, wie beschrieben:

USART Schnittstelle des µC mittels USART -->USB Adapter.
Dann hast du vom Code eine "klassische"serielle 
Kommunikationsverbindung.


2. Klassisches USB:

Dann benötigst du einen µC mit USB Interface, als Referenz sei mal ein 
Vausatz genannt: Velleman P8055N "USB Experiment Interface Board"

Es wird kein treiber seitens des PC verwendet das das sog, HID Protokoll 
(Human Interface Device) verwendet wird (daselbe wie für Mäuse , 
Joysticks,Tastaturen.

3. Es gibt spezielle Perepheriekontroller, siehe mal 
unter:http://www.ulpi.org/


Ein Controller board wo das verwendet wird ist hier:
http://www.wvshare.com/img/devkit/accBoard/conn-open/USB3300-USB-HS-Board-5.jpg


Es gibt hier auch Referenzcode in C

Im Falle von 2-3 kommst du aber dauerhaft nicht um das Verstaändniss der 
USB Spezifikation und des HID Geräteklassen spezifikation nicht herum.

Aus dem Franzis Buchverlag gibt es jedoch gute Literatur

Gruß

Marc

von chris_ (Gast)


Lesenswert?


von W.S. (Gast)


Lesenswert?

decimad schrieb:
> Diese FT232-Teile sind doch auch irgendwie suboptimal auf Dauer. Wenn
> man mehrere davon am Rechner hat, fängt die große Suche an, welches
> Gerät welchen Com-Port zugewiesen hat

Nanana.. ganz so ist es NICHT.
Man sollte es sich merken, daß das Neuzuweisen einer immer weiter 
ansteigenden COM Nummer nur dann pasiert, wenn das USB-Device keine 
Seriennummer in seinen Descriptoren besitzt. Hat es eine, dann hat es 
auch eine feste COM-Nummer, egal, an welche USB-Buchse man es steckt. 
Das gilt nicht nur für FTDI-IC's, sondern generell.

Bei den FTDI-Teilen müßte man dafür einen kleinen EEPROM dem FT232 
gönnen und mit dem FTPROG (oder MPROG oder so) dem Gerät eine 
individuelle Seriennummer verpassen.

@Joshua H.:
Wenn du
"ich suche nach einer Möglichkeit, einen Mikrocontroller per USB mit 
einem PC zu verbinden"
sowas anvisierst, dann suche dir besser gleich einen µC aus, der einen 
USB-Devicecore bereits eingebaut hat und lies dir die Dokus zum USB 
algemein und zu virtuellen COM-Ports im speziellen durch. Falls du dir 
dann mal nen NUC120, LPC2478, LPC1343, LPC17xx, STM32F103 ausgesucht 
hast, poste das mal so, daß ich's finde. Für die genannten µC hab ich 
nämlich passende Quellen, von denen ich was posten könnte.


W.S.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Joshua H. schrieb:
> Reicht es also von der Hardware her aus,
> einen ATtinny mit einem ATmega zu verbinden und den ATtiny entsprechend
> mit USB zu verkabeln? Und wie sieht es Software mäßig aus?

Hier eine Sammlung mit zig verschiedenen Projekten, alle mit USB, in 
diesem Fall mit der wahrscheinlich einfachsten (primitivsten) USB-Lösung 
V-USB:

http://www.obdev.at/products/vusb/prjall.html

Eine Beispiel-Umsetzung kannst du auch auf meiner Seite finden:

https://guloshop.de/shop/USB-TTL-ADC-PWM-Signalwandler:::10.html

Alles Open Source, nachbauen nicht nur erlaubt, sondern erwünscht. :-)
http://guloshop.de/f/sources/

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.