Hallo,
vielleicht kennt hier jemand ein paar Links, die ich derzeit nicht
finden kann:
Ich möchte ein paar alte Bluetooth-Tastaturen und Gamecontroller (nicht
BLE) als Eingabegeräte für Arduino-Projekte nutzen.
Blauäugig wie ich zunächst war, habe ich mir einfach ein HC-05 bestellt
um dann festzustellen, dass dies nur das serielle Profil unterstützt.
Bevor ich mir nun ein AT-09 oder RN41/RN42 oder nochwas anderes
bestelle, wollte ich zunächt Codebeispiele finden, in denen Bluetooth
HID-Geräte als Eingabegeräte seitens eines Arduino genutzt werden.
Leider scheint alle Welt entweder das Gegenteil zu machen: Alte
Tastaturen zu Bluetooth-Tastaturen umzubauen oder aber ein Smartphone
etc. als Middelware einzusetzen, welches die Tastendrücke auf das
serielle Profil umsetzt, so dass auf dem Arduino lediglich Strings vom
seriellen Port gelesen werden.
"Arduino" ist für mich hier zunächst ein Platzhalter für die von der
Arduino-IDE unterstützten Boads < 10€
Ich suche also nach Links zu Beschreibungen, wie ich mit einem
geeigneten Bluetooth-Modul vom Arduino aus ein HID-Keyboard pairen kann,
um danach auf Tastendrücke zu reagieren.
Je nachdem sitze ich vermutlich auch auf dem Schlauch und sehe die
naheliegende Lösung nicht. Aber auch auf Produktseiten wie
https://www.microchip.com/wwwproducts/en/RN42
steht "Supports HID profile for making accessories such as keyboards,
mouse, pointing devices" aber nichts von READING HID devices...
Also schon mal vielen Dank an alle, die Konstruktives beitragen können.
Danke für die Hinweise! In die Richtung habe ich auch schon überlegt.
Es erscheint mir allerdings irgendwo durch die Brust ins Auge, wenn ich
da erst noch über eine USB-Schicht gehen muss.
Insofern wäre dann aber tatsächlich ein USB-fähiger Mikrocontroller das
Mittel der Wahl.
Wobei: Was ist in so einem Bluetooth-Stick drin? Vermutlich auch nur
ein Bluetooth-Modul. Der HC-05/RN42 hat ja laut Datenblatt
(https://cdn.sparkfun.com/datasheets/Wireless/Bluetooth/CSR-BC417-datasheet.pdf)
auch einen USB-Port an Board. Der SPI-Port wird wohl zum flashen der
Firmware benötigt.
Der Unterschied zwischen HC-05 und RN42 ist wohl auch nur die Firmware.
Was mich hier wirklich etwas wundert ist die Tatsache, das es für diese
doch recht grundlegende Funktion noch nicht zig Implementierungen gibt.
USB-Tastaturen werden auf USB fähigen Geräten z.B. direkt durch die
Arduino-IDE unterstützt (https://www.arduino.cc/en/Reference/GetKey)
Jedoch gibt es auch die zahlreichen Boards mit integriertem Bluetooth im
Arduino-Zoo keine Keyboard-Bibliothek, bzw. ich habe keine gefunden.
blaue Ratlosigkeit schrieb:> "Arduino" ist für mich hier zunächst ein Platzhalter für die von der> Arduino-IDE unterstützten Boads < 10€
Leg ein paar Teuros für ein NRF52x Board drauf. Das kann (allerdings mit
dem NRF SDK) die Gegenstelle für moderne BTLE Hardware sein.
Parsen von HID Report Deskriptoren ist dummerweise aber nicht-trivial,
und Bluetooth Classic funktioniert mit NRF5x Chips auch nicht.
Entweder verwendest du einen Controller mit integrierter
USB-_HOST_-Funktion (da gehört etwas mehr dazu als "nur USB"), oder du
verwendest einen Controller, der eine Bluetooth(-HOST)-Schnittste
besitzt.
Zum einen brauchst du einen Bluetooth-Hardwaretreiber für deinen
Hostcontroller, zum anderen brauchst du einen Treiber für HID-Geräte. Da
USB-HID und Bluetooth-HID identisch sind, kannst du dich da bei
Mikrocontrollern mit USB-Host(!) umschauen.
Achtung: Alle Tastaturtreiber, die ich gesehen habe, nutzen nur das
vereinfachte Bootprotokoll von USB-HID. Das reicht nicht, wenn du ein
Gamepad nutzen willst.
Der ganze Kram ist leider ziemlich aufwändig.
Ben B. schrieb:> Pairen ... OMG.
Ist bei Bluetooth der üblicherweise verwendete Begriff. Da das Verfahren
nunmal offiziell "Pairing" heißt, ist das auch nachvollziehbar. Was wäre
denn deiner Meinung nach angemessen? "Verpaaren"?
S. R. schrieb:> Ben B. schrieb:>> Pairen ... OMG.>> Ist bei Bluetooth der üblicherweise verwendete Begriff. Da das Verfahren> nunmal offiziell "Pairing" heißt, ist das auch nachvollziehbar. Was wäre> denn deiner Meinung nach angemessen? "Verpaaren"?
Lernt man heutzutage kein Deutsch mehr zu Hause?
Das heisst "koppeln".
John Doe schrieb:> Lernt man heutzutage kein Deutsch mehr zu Hause?> Das heisst "koppeln".
Oh. Ups. Ich ziehe meine Aussage zurück und entschuldige mich. :-)
Ich spreche tatsächlich kaum Deutsch im normalen Leben. Ausländer und
so.
prinzipiell glaube ich, dass es NICHT zu schaffen ist, dass ein Arduino
(korrekte) Zeichen einer Bluetoothtastatur auswerten kann:
- ATmega328 hat kein USB (und schon gar kein OTG)
Einen Empfänger, der bspw. Zeichen einer Bluetoothtastatur empfängt und
dekodiert und die dann als Stream sendet ist mir nicht bekannt (belehrt
mich eines besseren, ich hätte auch gerne so einen Chip)
Selbst eine USB Tastatur an einem Arduino (mit Kabel) klappt nicht (ich
habs auf einem STM32F103 versucht und bin auch daran gescheitert, weil
eben kein OTG)
Auf STM32F4(29) hatte das dann geklappt .. mit Fremdcode (und im besten
Fall hab ich da dann davon die hälfte verstanden, was gerade so zum
Anpassen gereicht hat).
Normalerweise bin ich nicht der Typ der sagt: "geht nicht", hier aber
schon! (smile, solltest du das hinbekommen, so bitte hier die Lösung
posten, ich glaube ich wäre nicht der einzige den das dann extrem
interessieren würde)
Ralph S. schrieb:> prinzipiell glaube ich, dass es NICHT zu schaffen ist, dass ein Arduino> (korrekte) Zeichen einer Bluetoothtastatur auswerten kann:> - ATmega328 hat kein USB (und schon gar kein OTG)
Wozu braucht man denn USB, wenn er eine Bluetooth-Tastatur auswerten
soll? Einen Bluetooth-Chip braucht man, den muss man extern anknoten.
Der Rest (also HCI- und HID-Treiber) ist Software, das kann der
AVR/Arduino selbst.
Ralph S. schrieb:> Einen Empfänger, der bspw. Zeichen einer Bluetoothtastatur empfängt und> dekodiert und die dann als Stream sendet ist mir nicht bekannt (belehrt> mich eines besseren, ich hätte auch gerne so einen Chip)
Nach spontaner Suche habe ich von TI ein CC2564MOD gefunden. Das ist ein
vollwertiger HCI-Controller, per UART angeschlossen. Um damit eine
BT-Tastatur zu benutzen, ist einiges an Arbeit nötig, aber "geht nicht"
gibt's nicht. ;-)
Ralph S. schrieb:> Selbst eine USB Tastatur an einem Arduino (mit Kabel) klappt nicht (ich> habs auf einem STM32F103 versucht und bin auch daran gescheitert, weil> eben kein OTG)
Logisch. Eine USB-Tastatur ist ein USB-Device und muss an einen USB-Host
angeschlossen werden (OTG in Host-Role ist auch ein Host). Wenn du
keinen USB-Host hast, geht's halt nicht. Ich hab das mal mit einem
STM32F107 gemacht, der konnte das. Ist aber alles andere als trivial.
S. R. schrieb:> Ich hab das mal mit einem> STM32F107 gemacht, der konnte das. Ist aber alles andere als trivial.
.. wie gesagt: ich habs mit einem F429 gemacht ...
Hmmm, die genannten Chips werd ich mir angucken...
Alex G. schrieb:> Kennt ihr dieses Tutorial/Projekt?> https://www.learnrobotics.org/blog/control-arduino-robot-bluetooth-keyboard/> Scheint genau das gewünschte zu sein.
Und sonst gehts noch gut?
Die wollten keinen PC zwischenschalten. Und komm jetzt nicht mit einem
HPC-Rechencluster.
Nimm mal weniger von dem komischen Zeugs, dann klappts auch wieder mit
dem Lesen und Verstehen...