Sainsmart Uno R3 als USB HID?

Hi zusammen,

im Zuge einer Box habe ich einen Sainsmart Arduino Uno R3 erworben, die Produktbeschreibung sagt:
"It now uses an ATMega16U2 instead of the ATMega8U2 chip. This allows for faster transfer rates, no drivers needed for Linux or Mac (inf file for Windows is needed), and the ability to have the Uno show up as a keyboard, mouse, joystick, etc."

das Bedeutet also Arduino Leonardo Funktionalität?

Ich bräuchte es in erster Linie um das ganze als MIDI USB Device zu nutzen, ohne Hairless, hat da jemand Informationen wie ich das anstellen kann? Ich habe dazu leider nichts funktionierendes gefunden...

Suche mal im Forum nach HID oder V-USB (VUSB). Ich habe da Threads von 2014 gefunden, die über verschiedene Probleme berichten. Ich könnte mir vorstellen, daß diese Probleme inzwischen behoben sind.

das Bedeutet also Arduino Leonardo Funktionalität?

Teilweise.
Zum ersten brauchst Du einen ISP-Programmierer um den ATmega16U2 umzuprogrammieren und dann brauchst Du den Programmierer um die Sketche auf den ATmega328 zu bekommen.

Dann brauchst Du noch die richtife Firmware für den Atmega16U2 für den MIDI USB Device. Ich glaube nicht daß Deine SW eine Tastatur oder einen Maus als MIDI-USB Device erkennt. Das gleiche Problem hast Du aber auch mit dem Leonardo.

Grüße Uwe

Danke soweit!

Hmm, also Projekte mit anderer Firmware habe ich schon gefunden - dachte das geht zumindest beim Leonardo auch ohne?!

Ich konnte es noch nicht ausprobieren, da der Leonardo noch unterwegs ist, aber es gibt in der IDE doch Sketche für Maus und Keyboard Emulation?

Also zumindest der Teensy kann doch auch MIDI USB von Haus aus oder nicht?

Der Leonardo hat keinen extra 16u2 Controller für USB, sein 32u4 Chip erledigt das so auch noch so nebenbei. Damit läßt sich auch der USB Teil eines Programms direkt ändern. Es könnte jedoch sein, daß dieser Teil im Bootloader Abschnitt des Flash enthalten ist, und deshalb trotzdem noch separat geflasht werden muß.

Hmm, da würde ich doch um genauere Erläuterung bitten! Die Unterschiede in den Chips sind soweit klar, dennoch verstehe ich die genaue Funktionsweise des Arduino als USB HID nicht... Allgemein hatte ich so meine Schwierigkeiten das vorzustellen... Gibt es da vllt. Tutorial, Videos oder sonstiges zu dem Thema? Sonstige Quellen?
Weil dass nun definitiv eine Funktionalität ist die ich gerne ausgiebiger nutzen würde, bloss, mein Arduino mit einer anderen Firmware zu flashen, darauf kann ich verzichten, dann könnt ich mir nämlich auch ein Board mit einem anderem AVR basteln...

Masen:
bloss, mein Arduino mit einer anderen Firmware zu flashen, darauf kann ich verzichten, dann könnt ich mir nämlich auch ein Board mit einem anderem AVR basteln...

also bastle Dir ein Board und hole Dir die notwendigen Infos irgendwoanders ein. 8) 8) 8) 8)
Grüße Uwe

Wieso fühlst du dich denn bitte persönlich angegriffen? Weil ich durch das "Werbe-Versprechen" von einer anderen Funktionsweise ausgegangen bin? Die nun evtl. enttäuscht wurde - was ja nun nicht mal geklärt wurde, immerhin konnte ich es selbst nicht ausprobieren... Ich frag ja deshalb nach Quellen die eben Leonardo und co als USB zum Thema haben, da ich eben da nicht auf konkretes gestossen bin... Wenn mein Arduino auch direkt als MIDI Device nutzbar wäre, ohne das ich ein zusätzliches Board basteln muss wäre ich schon sehr dankbar... Beim Teensy geht das wohl so? Oder habe ich das da auch missverstanden?

Wo steht den die Beschreibung so in der Werbung?

"and the ability to have the Uno show up as a keyboard, mouse, joystick, etc." - hab ich nun so da raus gelesen...

ja eben. hast du den Uno dort gekauft? Vielleicht hat ja deren Uno diese Fähigkeiten?
Wenn nicht, reklamieren

Ja... Also ich wäre ja erstmal froh wenn ich wüsste wie ich den dazu bringen kann. - Nur dann kann ich ja auch behaupten dass es nicht geht :wink:
Und darum geht es mir ja hier (unter anderem)...
Aber eine andere Firmware flashen kann ja nicht Sinn und zweck sein oder? Kann ich mir um ehrlich zu sein auch nicht beim Leonardo vorstellen, wenn's dafür extra Beispiel Sketche gibt?

Und wenn das schon keiner konkret beantworten kann, da evtl. kein SainSmart Uno vorhanden, wäre ich ja schon über generelle Infos zum Thema Arduino als USB HID froh, wie es beim Leonardo oder Teensy läuft etc, um es evtl. mit meinem Uno auszuprobieren, bzw. mich generell intensiver mit dem Thema auseinander zu setzten... Weil der Leonardo ist schon unterwegs, und ein Teensy kommt sicherlich auch noch zum Fuhrpark dazu - vor allem wenn die anderen Devices nicht als MIDI USB angezeigt werden können... MIDI to Serial Bridge ist halt auf Dauer keine Lösung, und angeflanschtes MIDI Interface auch nicht, finde ich auch irgendwie "unsportlich" :wink:

Masen:
Aber eine andere Firmware flashen kann ja nicht Sinn und zweck sein oder? Kann ich mir um ehrlich zu sein auch nicht beim Leonardo vorstellen, wenn's dafür extra Beispiel Sketche gibt?

Das hat DrDiettrich schon erklärt: Der Leonardo kommt mit einem Atmega32U4 daher, der hat schon USB integriert und ist auch als USB-Tastatur oder Maus nutzbar.
Du jedoch hast einen Uno, höchstwahrscheinlich mit einem Atmega328. Der kommt ohne USB-Anschluss daher, die USB-Schnittstelle wird über einen zweiten Mikrocontroller, einem Atmega16U2, ermöglicht. Der 16U2 ist im Auslieferungszustand allerdings so programmiert, dass er ausschließlich die Wandlung USB-seriell beherrscht, will man dem Board andere USB-HID-Funktionen verpassen ist eben jener 16U2 umzuprogrammieren. Da ist es tatsächlich einfacher, sich einen entsprechenden Leonardo bzw. auch den von dir angesprochenen Teensy zuzulegen. Musst nur beachten, dass der Teensy 3.1 auch nur 3,3V kann.

Mir ist nicht bekannt, daß der LEonardo als USB-Midi-Device von einem PC erkannt wird.
Ich kenne auch keine Firmware für den ATmega16U2 die sowas macht, aber in diese Richtung habe ich mich nie informiert. Jedenfalls, wenn es sie gibt mußt Du die Firmware des ATmega16U2 ersetzen (flashen) Wenn Du das nicht Tun willst, dann geht es halt nicht.

Wenn der Teensy3.1 das kann, dann nimm diesen. Vieleicht kann er es, weil er einen anderen Controller hat: 32 bit ARM Cortex-M4 72 MHz CPU

Ich nehme es nicht persönlich aber daß Du auf unsere Antworten nicht eingehst ist schon frustrierend.

Grüße Uwe

Hallo,

es gibt ein Uno-Midi-Projekt: Turn-your-Arduino-Uno-into-an-USB-HID-Mididevice

Theseus:
es gibt ein Uno-Midi-Projekt: Turn-your-Arduino-Uno-into-an-USB-HID-Mididevice

Gut, das bestätigt noch einmal die Vorgehensweise die Uwe und ich bereits in der Theorie beschrieben haben. Danke für den Link!

uwefed:
Mir ist nicht bekannt, daß der LEonardo als USB-Midi-Device von einem PC erkannt wird.
Ich kenne auch keine Firmware für den ATmega16U2 die sowas macht, aber in diese Richtung habe ich mich nie informiert. Jedenfalls, wenn es sie gibt mußt Du die Firmware des ATmega16U2 ersetzen (flashen) Wenn Du das nicht Tun willst, dann geht es halt nicht.

Wenn der Teensy3.1 das kann, dann nimm diesen. Vieleicht kann er es, weil er einen anderen Controller hat: 32 bit ARM Cortex-M4 72 MHz CPU

Ich nehme es nicht persönlich aber daß Du auf unsere Antworten nicht eingehst ist schon frustrierend.

Grüße Uwe

Hi Uwe,

doch doch, ich versuch ja schon auf die Antworten ein zu gehen :wink:
Bloß, wie du siehst sind die zum einen Widersprüchlich, was ja durchaus in einer Diskussion so vorkommen mag :wink: Zum anderen bin ich auch in meiner Recherche immer wieder auf die selben Widersprüche gestoßen - sodass ich nun noch mehr verwirrt bin :wink:

Zum einen durch 2 Punkte: Ich weiß nicht wirklich wie und ob das beim Leonardo funktioniert, und zum anderem bin ich davon ausgegangen dass es bei meinem UNO auch geht.

Gut, das mit dem Flashen des 16U2 habe ich ja verstanden - würde aber denke ich bedeuten dass ich den UNO dann nicht mehr auf konventionellem Wege mit Sketches versorgen kann, oder? - denn das möchte ich halt vermeiden... Das hin und her flashen ist dann eher sehr unkomfortabel was das entwickeln angeht... Wo würde ich denn überhaupt entsprechende Firmware bekommen?

Wie funktioniert dass denn beim Leonardo? - Kennt da jemand entsprechende Projekte oder Sketches betreffend MIDI? Das sollte ja dann eigentlich auch möglich sein... (Ich hab das halt öfter schon gelesen/gehört, wo es dann hieß "könnt man mit einem Leonardo machen, aber ich mach das lieber so...", wie es mit einem Leonardo geht, habe ich jedoch nirgendwo entdecken können :wink: )


Um es vllt. mal besser deutlich zu machen worum es mir geht - Ich beschäftige mich halt generell mit MIDI-Controller und Synthesizer Programmierung, und möchte halt nun auch Arduinos einsetzten.
Nun will man ja solche System gerne möglichst schlank halten - und über Projekte wie HIDUINO bin ich schon gestoßen, bloß damit wird ja der Arduino komplett als MIDI Interface umgewandelt, sprich, um nun weitere Funktionalität wie die MIDI-Controller Logik oder den Synth-Code zu verwenden, müsste ja ein weiterer Arduino her, und dass will ich halt eben vermeiden. Deswegen schrieb ich ja auch, dann würde ich mir schon lieber für diesen Zweck eine eigene kleine Platine mit einem ATmega bauen, oder ein 5$ USB MIDI Interface aus China verbauen oder ähnliches anstatt einen Arduino dafür zu verschwenden :wink:

Dennoch würde ich ja am liebsten eine All-in-One Lösung haben, sprich - programmierbarer Arduino, der eben als MIDI-Device erscheint um darüber mit dem PC zu kommunizieren. Mit dem Teensy geht das ja augenscheinlich! (sofern ich das nicht missverstanden habe)
Mit dem Leonardo angeblich auch - ich hab nur nirgendwo gefunden wie.
Mit meinem UNO dachte ich dass es auch gehen sollte, aber da habe ich mich wohl zu sehr von Werbe-Versprechen fehlleiten lassen :wink:

Also den Teensy 2 und 3.1 werde ich mir wohl in den nächsten Wochen ohnehin zulegen, wenn ich bei der Leonardo Sache weiterkomme, und vllt. auch der UNO doch so einsetztbar wäre, wäre das natürlich Klasse :wink:

Masen:
Gut, das mit dem Flashen des 16U2 habe ich ja verstanden - würde aber denke ich bedeuten dass ich den UNO dann nicht mehr auf konventionellem Wege mit Sketches versorgen kann, oder? - denn das möchte ich halt vermeiden... Das hin und her flashen ist dann eher sehr unkomfortabel was das entwickeln angeht... Wo würde ich denn überhaupt entsprechende Firmware bekommen?

Mit meinem UNO dachte ich dass es auch gehen sollte, aber da habe ich mich wohl zu sehr von Werbe-Versprechen fehlleiten lassen :wink:

Du brauchst eben einen ISP-Programmierer. Damit hast du auch kein hin-und-her beim Programmieren. Die Arduino-Plattform räumt schon sehr viele Hindernisse im Umgang mit Mikrokontrollern weg. Will man aber ans Eingemachte abseits typischer (Einsteiger-)Anwendungen, muss man halt tief in die Materie einsteigen.

Es gibt bei Mikrokontrollern immer zwei Hemmschuhe (wie auch bei jedem anderen Werkzeug). Der eine sind die technischen Grenzen der Hardware und der andere ist das eigene Können. Sowohl der Leonardo als auch der Uno mit dem Trick über den 16u2 sind technisch in der Lage ein Midi-HID zu simulieren. Das können dagegen Arduinos mit FTDI-Chip nicht. Also sind die Werbeaussagen richtig, wobei ja in der Werbung auch nur von Tastatur und Co. die Rede ist. Dass (dir) das Wissen fehlt, eine recht spezielle Anwendung zu programmieren, kannst du den Werbern nicht vorwerfen.

Wenn du dir eine Nähmaschine kaufst, mit der man laut Werbung bezaubernde Hochzeitskleider mit Unmengen Rüschen nähen kann, dann beschwerst du dich doch auch nicht, dass man schon langjährige Praxis wenn nicht gar Meister sein muss, um die Hochzeitskleider hinzubekommen. Man kann sich erst beschweren, wenn auch ein Könner seines Fachs das auf der Maschine nicht schafft.

Also ich habe einen ISP-Programmierer und ich bin auch überzeugt davon dass ich den bedienen kann, zumindest hat es in der Vergangenheit, lange bevor es Arduinos gab immer gut geklappt :wink:

Anstatt dich an meinen Unwissen aufzuziehen - dann klär mich doch bitte auf!
Wenn ich den 16U2 mit einer anderen Firmware für MIDI-HID flashe, geht dann noch die serielle USB Kommunikation zum ATMega um entsprechende Sketches up-zu-loaden?

Nun wenn nicht, müsste ich doch dafür dann wieder umflashen oder nicht?

Und naja "Trick" sagt es ja schon, wenn ich mit einer Funktionalität werbe, dann sollte diese ja von Haus aus gegeben sein, und nicht erst durch einen Trick ermöglicht werden, vor allem nicht dann wenn dieser die eigentliche Funktionalität unmöglich macht, in dem Falle die normale Arduino-Nutzung, Uploaden von Sketches über die IDE...

Wenn dem nun nicht so ist, also MIDI-HID und reguläre Nutzung als Arduino möglich ist, dann kläre mich doch bitte auf wie nun der 16U2 zu flashen ist, wie anschließend die Kommunikation mit dem ATMega läuft, wie ich in meinen Sketches auf die Signale zugreifen kann usw.... Ich habe dazu leider nichts gefunden... MIDI klappt halt aktuell ganz gut mit der MIDI Library und einer MIDI/Serial Bridge...

Ich bin ja nicht hier um SainSmart zu bashen sondern um zu erfahren wie ich eben diese Funktionalität nutzen kann...

Das selbe gilt halt auch für den Leonardo - ich bin da nun auch von ausgegangen dass man ihn ohne umflashen als HID nutzen kann, wenn dem nicht so ist, würde ich mich auch an dieser Stelle über weitere Infos freuen :wink:

Eigentlich hätte ich mir vorgestellt, daß das USB Interface konfigurierbar oder umschaltbar ist, wenn man schon mal so tolle Mikrocontroller einsetzt. Zumindest wenn sich die USB-Firmware und das Anwendungsprogramm auf dem gleichen Chip befindet (Leonardo...), und damit die Kommunikation zwischen beiden keinen Einschränkungen unterliegt.

Der Leonardo scheint ja (der Beschreibung nach) direkt als COM Port und HID einsetzbar zu sein - sehe ich das richtig?
Wie sieht es dort mit MIDI aus?

In vielen Beschreibungen stoße ich noch auf alte USB Controller, z.B. 8u2 in der o.g. Bibliothek, während mein Uno bereits einen 16u2 Controller hat. Muß man da mit Problemen mit der Firmware rechnen, oder sind diese Controller soweit (binär?) kompatibel?

Die Anschlüsse auf dem Uno-Bord sind mir auch noch nicht klar. Die Leiste neben dem USB Stecker scheint für den Atmega zuständig zu sein, die andere für den USB Controller? Lassen sich damit beide Controller unabhängig voneinander programmieren? Oder kann man an die zweite Leiste nur einen anderen Arduino anhängen, wenn man den UNO als ISP verwendet?

In der Zwischenzeit habe ich mir einen USB-TTL USB-STC-ISP zugelegt, leider ohne zugehörige Kabel. Läßt sich der an diese Leisten anschließen?