Forum: Mikrocontroller und Digitale Elektronik PIC USB Kommunikation


von Markus T. (1lc)


Lesenswert?

Hallo,
Ich hab ein neues Projekt gestartet und brauche Hilfe um vorran zu 
kommen da es Neuland für mich ist.

Ich will über ein Digitalpiano (Yamaha) eine LED-Kette beleuchten die 
mit den angeschlagenen Noten jeweils für verschiedene LED's in der Kette 
aufleuchtet.
Der Part ist nicht das Problem (mit dem Arduino hab ich das schon 
hinbekommen, dazu musste der Arduino allerdings dauerhaft an den PC 
angeschlossen sein).

Nun will ich ein Board bauen dass die Mididaten des Pianos über USB 
einließt und den LED-Strip somit ansteuert.

Informiert habe ich mich schon über das MIDI-USB Protokoll, allerdings 
weiß ich nicht wie ich ich eine serielle Datenübertragung über USB an 
den PIC weitergebe.

Wie gesagt das ist Neuland für mich.
Ich benutze den PIC18F14K22 der besitzt serielle Schnittstellen.
Meine Frage nun: Wie lese ich über den PIC die Daten über USB aus?

Brauche ich einen externen Chip dazu?
Sollte ich mir einen PIC kaufen der USB direkt auslesen kann?
Wie löse ich das Problem am elegantesten?

Mfg
Markus

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Markus L. schrieb:
> Meine Frage nun: Wie lese ich über den PIC die Daten über USB aus?

Du brauchst einen USB-Host. Die meisten µCs mit USB-Unterstützung sind 
nur USB-Devices, keine USB-Hosts.

Es gibt USB-Host-Controller, die man über eine serielle Schnittstelle 
o.ä. an einen µC anschließen kann, ein bekanntes Beispiel ist der 
"Vinculum" VNC1L von FTDI.

Insgesamt: Das ist nicht trivial.
Dein Klavier hat keine normale MIDI-Buchse (5polig, DIN)?

von Markus T. (1lc)


Lesenswert?

Ok dann informier ich mich dazu mal.
Das Klavier besitzt nur eine Usb-B Buchse für den Midi Ausgang.

Und wieso besitzt ein Arduino Uno beispielsweise kein UsbHost chip?

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Markus L. schrieb:
> Und wieso besitzt ein Arduino Uno beispielsweise kein UsbHost chip?

Weil so etwas Geld kostet, so etwas nicht jeder benötigt und die zur 
Ansteuerung des USB-Host erforderliche Software nicht trivial ist.

von Markus T. (1lc)


Lesenswert?

Ok.
Kann man also jedes Beliebige Usb to serial Board nehmen?
Würde dann auch so etwas gehen?(auch wenn es für den Arduino ist)?

http://m.ebay.de/itm/FT232RL-3-3V-5-5V-FTDI-USB-to-TTL-Serial-Adapter-Module-Arduino-Port-DE-TE321-/401110610684?nav=SEARCH

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Markus L. schrieb:
> Kann man also jedes Beliebige Usb to serial Board nehmen?

Nein. Kein einziges.

USB-to-Serial sind USB-Devices, die man an einen USB-Host anschließt. Du 
aber brauchst einen USB-Host. Wie Deinen PC, der ist ein USB-Host. Und 
deswegen kannst Du Dein Klavier auch an den PC anschließen.

USB-Devices aber können miteinander nichts anfangen, die brauchen 
zwingend einen Host, um zu funktionieren. Mit einem USB-Serial-Adapter 
kannst Du auch keine USB-Sticks auslesen.

von PittyJ (Gast)


Lesenswert?

Nimm einen Raspi. Der ist klein, hat einen USB-Host und kostet nur ca 35 
Euro. Und man kann einfach einen Arduino anschliessen.
Dann muss da nur noch die Software geschrieben werden.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der Threadstarter will einen PIC verwenden, keinen Arduino.

von Markus T. (1lc)


Lesenswert?

Rufus Τ. F. schrieb:
> Der Threadstarter will einen PIC verwenden, keinen Arduino.

Ja deswegen, man will ja auch etwas bei so einem Projekt lernen.
Usb Hosts sind alle nicht so günstig, wenn es nicht anders geht gebe ich 
auch 20€ für das Board mit dem VNC1L aus.

http://de.farnell.com/ftdi/vdip1/entwicklungsmodul-f-r-vnc1l/dp/1329313

Angenommen ein Laie wie ich kauft das Ding, welches Interface davon 
(Uart,Spi,etc), verwendet denn ein Laie wie Ich am besten mit dem PIC?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Markus L. schrieb:
> welches Interface davon (Uart,Spi,etc), verwendet denn ein Laie wie Ich
> am besten mit dem PIC?

Das, mit dem Du bereits Erfahrungen gesammelt hast und das schnell genug 
ist, um die Anforderungen zu erfüllen, die Deine Anwendung stellt - die 
MIDI-Nutzdaten kommen mit 31.25 kBaud, der Protokolloverhead für die 
Ansteuerung des USB-Hosts kommt dazu, so daß Du eine doch deutlich 
höhere Baudrate brauchen wirst, wenn Du UART verwendest.


Es gibt übrigens auch (exotische) USB-zu-MIDI-Interfaces:

http://www.kentonuk.com/products/items/utilities/usb-host.shtml

Letztlich ist das, was Du mit dem USB-Host anstellen willst, /genau das 
gleiche/.

von Hurra (Gast)


Lesenswert?

Es gibt PICs mit USB OTG. Ob man damit Host spielen kann, so dass das 
Piano funktionier? Schwierig.

Hast du denn keine normale MIDI-Schnittstelle? Das sollte deutlich 
einfacher sein, denke ich.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hurra schrieb:
> Ob man damit Host spielen kann, so dass das Piano funktionier?

Dafür wäre so etwas da.

Erklärender Einschub für den Threadstarter:

USB OTG ("on the go") ist ein USB-Gerät, das sowohl Device als auch Host 
sein kann.

Ein PIC mit OTG-Funktionalität wäre also funktional gleichbedeutend mit 
einem PIC mit angeschlossenem USB-Host-Controller.

Die Software dafür ist aber nicht trivial (grundlegender USB-Stack und 
darauf aufsetzend USB-Midi-Unterstützung), keine Übung für 
Programmieranfänger.

von Markus T. (1lc)


Lesenswert?

Hurra schrieb:
> Es gibt PICs mit USB OTG. Ob man damit Host spielen kann, so dass das
> Piano funktionier? Schwierig.
>
> Hast du denn keine normale MIDI-Schnittstelle? Das sollte deutlich
> einfacher sein, denke ich.

Nein eine normale Schnittstelle gibt es nicht, nur USB.

von Hurra (Gast)


Lesenswert?

Markus L. schrieb:
> Hurra schrieb:
>> Es gibt PICs mit USB OTG. Ob man damit Host spielen kann, so dass das
>> Piano funktionier? Schwierig.
>>
>> Hast du denn keine normale MIDI-Schnittstelle? Das sollte deutlich
>> einfacher sein, denke ich.
>
> Nein eine normale Schnittstelle gibt es nicht, nur USB.

Hmm. Also mit Host habe ich keine Erfahrung, aber USB-OTG-PICs hab ich 
schon verwendet, natürlich auch mit USB.

Es gibt Beispiele von Microchip:
http://ww1.microchip.com/downloads/en/AppNotes/01141a.pdf
http://www.microchip.com/doclisting/TechDoc.aspx?type=CodeExamples
Ich würde mir das mal ziehen, und schauen, wie komplex das ist.

Folgende PICs mit OTG fallen mir ein:
PIC32MX470F512H - ein ziemlich mächtiger 32-Bitter
PIC24FJ128GC010 - ein 16-bitter mit viel Peripherie

Natürlich gibts weitere.
Ich würde mal mit den Beispielen von Microchip starten, und schauen, 
wieviel Flash man braucht und welches Device am günstigsten ist. Und ob 
das überhaupt realisierbar ist.

Eine Warnung: Die Microchip-USB-Stacks sind NICHT leichtverständlich.

Für PIC32 wäre noch zu sagen: Harmony ist Geschmackssache aber 
inzwischen fast zwingend. Sollte man sich vorher ansehen.

von Markus T. (1lc)


Lesenswert?

Na Gut, dann bedanke ich mich für die vielen Antworten und stürze mich 
erstmal in Literatur zum dem ganzen Thema, Ich weiß ja jetzt grob wo es 
hingeht.

Mfg
Markus

von Audiomann (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> MIDI-Nutzdaten kommen mit 31.25 kBaud, der Protokolloverhead für die
> Ansteuerung des USB-Hosts kommt dazu, so daß Du eine doch deutlich
> höhere Baudrate brauchen wirst, wenn Du UART verwendest.

Sicher? Ich dachte immer über USB-MIDI kommt mehr und in höherer Rate.

?

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

> Ich dachte immer über USB-MIDI kommt mehr und in höherer Rate.

Brilliant beobachtet.
Eine Baudrate wie fuer ein serielles Midiinterface ist
bei USB natuerlich nicht relevant.

von Clemens L. (c_l)


Lesenswert?

Audiomann schrieb:
> Ich dachte immer über USB-MIDI kommt mehr und in höherer Rate.

Es ist theoretisch möglich. In der Praxis bemühen sich viele Geräte, die 
serielle MIDI-Geschwindigkeit im Durchschnitt nicht zu überschreiten.

von Master S. (snowman)


Lesenswert?

Für die PIC32 gibt's im Harmony ein "Audio v1.0 Host Client Server". Ob 
damit auch MIDI gemeint ist?

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.