Forum: Mikrocontroller und Digitale Elektronik Digispark im Terminal nutzen


von Joh (Gast)


Lesenswert?

Hallo zusammen.

Ich habe von einem Bekannten (Elektronikbastler) einen Digispark Mini 
geschenkt bekommen.
Die Treiber habe ich installiert, den Digispark habe ich in die Arduino 
IDE eingebunden und anschließend ein Beispielprogramm geflasht, was auch 
das tut was es soll (die auf dem Board aufgelötete LED blinken lassen).

Nun möchte ich ein kleines Programm schreiben, welches über USB (über 
den virtuellen COM-Port -> USB) ein paar Zeichen ausgibt.
Allerdings erscheint der Digispark nicht als virt. COM-Port in meinem 
Gerätemanager unter Windows, auch nicht im Terminal erscheint ein 
COM-Port, den ich auswählen könnte.

Könnt ihr mir weiterhelfen oder hattet ihr bereits ähnliches "Problem", 
dass der Digispark nicht als COM-Port aufgeführt wird?

Eine Verbindung hat der Digispark ja zum OS, sonst hätte ich ja 
offensichtlich nicht das Beispiel-Blink-Programm flashen können.

In der Arduino IDE erscheint als ausgewähltes Modul übrigens unten 
rechts im IDE-Fenster "Digispark (Default - 16.5Mhz) auf COM7".

Vielen Dank und Gruß

von Einer K. (Gast)


Lesenswert?


von Joh (Gast)


Lesenswert?

Ok, danke!

Immerhin konnte ich jetzt schon mal anhand deines Links die Lib 
einbinden und den Controller mit der eingebundenen Lib flashen.
Allerdings wird weiterhin der Controller nicht als virt. COM-Port (im 
Terminal und im Gerätemanager) erkannt.
Nach dem Flashen und erneutem Einstecken des Digisparks erscheint in 
Win10 die Meldung, dass es sich um ein "unbekanntes USB-Gerät" handelt 
(und somit nicht genutzt werden kann).

Sämtliche Versuche haben nun auch nicht weitergeholfen.

Also doch wieder so ein schnell produzierter und wackelig 
funktionierender Schrott :-(

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Joh schrieb:
> Also doch wieder so ein schnell produzierter und wackelig
> funktionierender Schrott

Das Ding nutzt V-USB, und CDC (serielle Schnittstelle) ist via V-USB 
nicht unter Einhaltung der USB-Spezifikation umsetzbar.

Ältere Betriebssysteme waren da etwas toleranter.

Schrott ist das Ding trotzdem nicht, denn niemand zwingt einen, CDC 
damit umzusetzen. Für Tastatur-, Maus- oder Joystick-Anwendungen lässt 
sich das Biest nämlich auch einsetzen, das alles nutzt HID, und das kann 
mit V-USB spezifikationskonform umgesetzt werden.

von Jk (Gast)


Lesenswert?

Ok..

Und wie bringe ich das Gerät nun dazu, dass es als virt. COM-Port ein 
harmloses Zeichen an den PC (Terminal) schickt?

Treiberinstallation hat auch mit der HID-Lib ("keyboard example") 
funktioniert..

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jk schrieb:
> Und wie bringe ich das Gerät nun dazu, dass es als virt. COM-Port ein
> harmloses Zeichen an den PC (Terminal) schickt?

Gar nicht. Virtueller COM-Port setzt CDC voraus, und das kann V-USB 
nicht standardkonform umsetzen, weswegen Dein Windows sich dem ganzen 
verweigert.

von Stefan F. (Gast)


Lesenswert?

> Und wie bringe ich das Gerät nun dazu, dass es als virt. COM-Port ein
> harmloses Zeichen an den PC (Terminal) schickt?

Das tut es schon. Du stellst die Falsche Frage. Du solltest fragen: Wie 
bringe ich mein Windows dazu, dieses Gerät zu akzeptieren.

Versuche es mal mit Linux, könnte aufschlussreich sein. Vor allem die 
Ausgabe des "dmesg" Befehls.

von Jk (Gast)


Lesenswert?

Also Voraussetzung für mein Vorhaben ist explizit Windows (XP-10).
Wenn es -egal ob es nun am OS des PCs oder am Digispark liegt- nicht 
funktioniert, muss ich wohl oder übel auf eine andere wenn auch 
überdimensionierte Plattform mit hardware-USB-Converter (Arduino Nano) 
zurückgreifen..

Schade..

von Stefan F. (Gast)


Lesenswert?

Oder ein Bluepill Board (STM32F103C8T6). Ist momentan billiger als 
Arduino, hat mehr Speicher und viel schneller.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jk schrieb:
> muss ich wohl oder übel

Oder auf CDC verzichten. Wenn Du einfach nur ein paar Zeichen ausgeben 
willst, kann sich Dein Digispark auch als USB-Tastaur verkaufen. Das ist 
HID, und das ist spezifikationskonform mit Low-Speed-USB umsetzbar.

von Einer K. (Gast)


Lesenswert?

Gibt auch ähnlich große Zwerge, mit einem 32U4 drauf.

von Jk (Gast)


Lesenswert?

Ja, das mit dem HID hatte ich vor.
Leider habe ich nichts brauchbares gefunden, wie der Controller Daten 
empfängt. Nur, wie er Daten rausschickt (wenn der Digispark z.B eine

von Jk (Gast)


Lesenswert?

Tastatur emuliert.

von Einer K. (Gast)


Lesenswert?

Suche mal nach "Beetle ATMEGA32U4".
Ist nicht viel größer, als der Digispark.
Aber kann deine virtuelle Serielle.
noch nicht getestet

von joh (Gast)


Lesenswert?

Also nochmal:
Gibt es eine Möglichkeit, nach der Treiberinstallation den 
angeschlossenen Digispark in Windows als virtual-COM-device 
anzusprechen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nur unter alten Windows-Versionen.

Sonst nicht, weil das Ding nur Low-Speed-USB unterstützt, und das für 
serielle Schnittstellen nötige CDC-Protokoll nicht spezifikationskonform 
mit Low-Speed-USB realisierbar ist.

Daß das überhaupt irgendwo funktioniert, liegt an einer sehr laxen 
Auslegung der USB-Spezifikation durch alte Betriebssystemversionen.

Du musst also entweder ein USB-Protokoll verwenden, das mit 
Low-Speed-USB auskommt (was die serielle Schnittstelle ausschließt) oder 
einen anderen Controller mit USB-Hardware (wie den Atmega32U4) 
verwenden.

: Bearbeitet durch User
von joh (Gast)


Lesenswert?

Ok danke!

von joh (Gast)


Lesenswert?

Noch eine Frage zu dem HID:
Da das HID ja bei mir vom example-Sketch funktionierte und der Digispark 
auch eine Tastatur emulierte (habe ich im Editorfenster gesehen), ist es 
auch möglich, dass der Digispark über den HID-Mode Daten empfangen kann?
Schließlich wäre das ja genau jenes, was ich bräuchte?!

Gruß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

joh schrieb:
> ist es auch möglich, dass der Digispark über den HID-Mode Daten
> empfangen kann?

Ja, HID-Geräte können auch Daten empfangen. Die LEDs von Tastaturen 
beispielsweise werden auf diese Art angesteuert, oder "force 
feedback"-Joysticks.

Nur funktioniert das über komplett andere Systemfunktionen als die 
Ansteuerung einer (virtualisierten) seriellen Schnittstelle.

von joh (Gast)


Lesenswert?

Naja, das müsste ich dann entsprechend für die Windows-Applikation 
programmieren, dass ein "Zeichen über HID" gesendet werden soll und eben 
nicht über den virt. COM-Port. Das ist dann der nächste Step..

Ich würde das Ganze für den PC in VB.net (Visual Studio) programmieren 
wollen.
Die App soll einfach nur zwei Buttons beinhalten, woraufhin die Pins des 
Digisparks nach Anklicken auf HIGH oder LOW gehen.

Gruß

von Joh (Gast)


Lesenswert?

Nochmals final den Frust ablassen:
 - Nach mehrstündigen Versuchen scheint es weder über DigiUSB/CDC oder 
anderweitig (trotz Einarbeitung in dürftige "Tutorials" im Internet) 
nicht zu klappen. Es ist auch nicht ein einziges Beispiel im Netz zu 
finden, wo von oben bis unten beschrieben ist, wie man selbst die 
mitgelieferten Beispiel-Sketches zum Laufen bringt.
Doch scheint mein Vorhaben so einfach zu sein: Ein Zeichen via USB an 
den Digispark zu senden, woraufhin er die onboard-LED ein/ausschalten 
soll.

Naja, dann wars das mit Digispark erstmal. Somit ist das Ding (für mich 
und mein ach so ominöses Projekt) unbrauchbar.

Die Hypes im Netz über so ein Ding verstehe ich dann trotzdem nicht.

von Stefan F. (Gast)


Lesenswert?

Welche Hypes?
Das Teil hat nicht einmal eine richtige USB Schnittstelle!

Wer vom Fach ist, weiß dass man davon ungefähr so viel halten kann, wie 
von Lautsprecherboxen aus Plastik oder Goldfisch-Gläser ohne 
Filteranlage oder Haarschneider am Staubsauger-Rohr oder Edel-Fleece 
Pullover mit Cashmeregriff von QVC.

von Einer K. (Gast)


Lesenswert?

Stefan U. schrieb:
> Das Teil hat nicht einmal eine richtige USB Schnittstelle!

Das ist natürlich wahr.
Allerdings schafft es die Arduino IDE auf dem Weg da Software drauf zu 
spielen. Auch unter Win 10.
Das ist der Beweis für: Unmöglich ist es nicht.

Ist vielleicht nicht jedermanns Sache selber einen Treiber für Win 10 zu 
schreiben. (Meine jedenfalls nicht)
Und sowieso reichen meine USB Kenntnisse dafür nicht aus.

Joh schrieb:
> - Nach mehrstündigen Versuchen scheint es weder über DigiUSB/CDC oder
> anderweitig (trotz Einarbeitung in dürftige "Tutorials" im Internet)
> nicht zu klappen.

Habe das mal (wieder) kurz getestet.
Wenn ich einen solchen präparierten Digispark(Klon) in mein Win10 stecke 
gibts einen blauen Bildschirm. Natürlich mit dem zwangsläufig folgenden 
Win Neustart.


Wie gesagt, bei mir sind für solche Zwecke "Beetle 32U4" im Einsatz.
Die haben solche Probleme nicht. Und sind nur unwesentlich größer.

von Stefan F. (Gast)


Lesenswert?

> Ist vielleicht nicht jedermanns Sache selber einen Treiber für
> Win 10 zu schreiben

Das ist der Knackpunkt. Wenn du doch in diese Richtung weiter forschen 
möchtest, könnte der generische libusb Treiber hilfreich sein, den 
letztendlich auch Arduino (wegen avrdude) verwendet. Ich würde dann mal 
dessen Dokumentation lesen.

Allerdings fürchte ich, dass man dazu erstmal lernen muss, wie USB 
überhaupt funktioniert und die Fachbegriffe dazu.

Für meinen Hausgebrauch bevorzuge ich µC Platine mit USB-UART. Mit dem 
STM32F103 komme ich klar, denn dazu liefert der Hersteller eine USB-UART 
(CDC) Library.

von Einer K. (Gast)


Lesenswert?

Stefan U. schrieb:
> könnte der generische libusb Treiber hilfreich sein, den
> letztendlich auch Arduino (wegen avrdude) verwendet.

verwendet wird nicht avrdude, sondern micronucleus.exe.
Aber ansonsten hast du natürlich recht.

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.