Empfehlung für Bluetooth Adapter an Arduino Pro Micro

17b

Active member
Registriert
17 Aug. 2006
Beiträge
1.664
Moin Moin,

ich brauche mal euer Schwarmwissen. Ist zwar nicht ganz die Zielgruppe, aber vielleicht gibts hier einen schlauen Kopf der mir weiter helfen kann.

Ich habe eine bestehende Schaltung mit einem Arduino Pro Micro, die fertig ist und funktioniert.
Diese liefert mir Kontrollwerte über den seriellen Monitor an der USB C Schnittstelle. Nun möchte ich diese Werte auch mit einem Pixel 6 Android Handy und einem seriellen Terminalprogramm auslesen können. Dazu habe ich schon verschiedene Varianten an Kabeln probiert. Bis auf eine Variante, mit handyseitig USBC Stecker auf USBA Buchse als OTG Adapter, gefolgt von einem USBA Stecker auf USBC Stecker Kabel funktioniert nichts. Ich habe mir auch mal testweise ein vollbelegtes USBC auf USBC Kabel bestellt, selbst dieses funktioniert nicht. Der Trick scheint hier im OTG Adapter zu liegen.
Meine Frage ist nun, gibt es einen bezahlbaren Dongle, den ich an der USBC Schnittstelle des Arduino anstecke und mit dem ich dann via Bluetooth über ein Terminalprogramm die Daten auslesen kann?

Bitte KEINE Empfehlung wie "Nimm nen anderen Prozessor" o.ä., vielen Dank!

Grüße
Stefan
 
Meine Frage ist nun, gibt es einen bezahlbaren Dongle, den ich an der USBC Schnittstelle des Arduino anstecke und mit dem ich dann via Bluetooth über ein Terminalprogramm die Daten auslesen kann?

Wahrscheinlich nicht, denn der Dongle bräuchte einen USB-Bluetooth-Treiber, den man schon deswegen nicht installieren kann, weil der Arduino normalerweise kein Betriebssystem hat.

Es gibt aber Bluetooth-Module zum aufstecken.

 
Ein Betriebssystem braucht man nicht zwingend. Einen Treiber kann man - je nach Komplexität - hier selbst schreiben, oder eben auch nicht. Kommt drauf an. Theoretisch braucht man keinen Treiber, um ein Bluetooth-Modul zu verwenden, weil diese meist die Möglichkeit haben, per UART (serielle Schnittstelle) angesprochen werden zu können. Das ist standardisiert und erfordert keinen Treiber. Erfahrungen habe ich damit aber noch keine, aber das von think_pad verlinkte Kit zeigt, dass so etwas geht.
Allerdings: Dein Produkt spuckt die Daten offenbar nicht per RS-232 aus, sondern über den USB-C-Port. Dafür müsste man also erst einmal am USB-C-Port die Daten zu seriell umwandeln und von dort dann per Bluetooth weiter verschicken. Wenn man großes Glück hat, klappt das einfach durch zusammenstecken entsprechender Komponenten. Bezweifel ich aber. Die Frage ist halt, was da jetzt überhaupt für ein Protokoll über den USB-C-Port gesprochen wird. Wird da eventuell schon eine serielle Schnittstelle emuliert? Auf der Gegenseite muss man außerdem das umgekehrte praktizieren. Die App wird die Daten am USB-C-Port erwarten, vermutlich auch per emulierter serieller Schnittstelle. Da muss man auf jeden Fall an den Code der App ran, um die Daten dann per Bluetooth statt USB-C zu bekommen.
Aber von daher denke ich, dass einfach nur zusammenstöpseln entsprechender Komponenten nicht funktionieren wird, zumindest nicht Plug&Play. Der Code wird auf mindestens einer, eher auf beiden Seiten angepasst werden müssen.
 
Allerdings: Dein Produkt spuckt die Daten offenbar nicht per RS-232 aus, sondern über den USB-C-Port. Dafür müsste man also erst einmal am UEs ist anders: Der SB-C-Port die Daten zu seriell umwandeln und von dort dann per Bluetooth weiter verschicken.

Es ist so: Der OTG-Adapter macht, (warum auch immer), den Arduino zum OTG-Host und die USB-Buchse zum OTG-Device, das ist hier hier eine serielle RS-232-Schnittstelle. Dahinter kann man nichts mehr anschließen, außer einer seriellen Schnittstelle, die die Daten empfängt und darstellt.

Ohne Kabel muss er den Weg über das aufsteckbare Bluetooth-Modul gehen, sich über das Smartphone mit dem Modul verbinden und das Programm so umschreiben, dass die Daten auch über das Bluetooth-Modul ausgegeben werden.
 
Der Arduino hat keinen USB Host Port, also nein. Bzw da müsste ein Raspberry Pi o.Ä. mit 2 USB Host Ports dran das zwischen den Geräten sitzt und beide kontrolliert.

An den Arduino direkt muss ein i2c/SPI/UART Bluetooth Modul um dem Bluetooth Fähigkiet zu geben. Ich würde aber eher den Arduino direkt durch einen ESP32 mit Blueooth ersetzen. Das meiste Arduino Zeug ist technisch einfach veraltet.
 
Es ist so: Der OTG-Adapter macht, (warum auch immer), den Arduino zum OTG-Host und die USB-Buchse zum OTG-Device, das ist hier hier eine serielle RS-232-Schnittstelle. Dahinter kann man nichts mehr anschließen, außer einer seriellen Schnittstelle, die die Daten empfängt und darstellt.
Ach bitte nicht schon wieder so einen Quatsch erzählen. Der Beitrag oben war - bis auf den Link zum Bluetooth-Modul - schon verdreht, aber hier wird's wieder Quark. Der OTG-Adapter macht jedenfalls nicht den Arduino zum Host, sondern das Smartphone. Einen Host muss es aber natürlich geben, sonst wären Smartphone und Arduino beide nur Client. Deswegen funktioniert es auch nur, wenn man so einen OTG-Adapter zwischenschaltet und nicht, wenn nur ein USB-C-Kabel verwendet wird.

Ohne Kabel muss er den Weg über das aufsteckbare Bluetooth-Modul gehen, sich über das Smartphone mit dem Modul verbinden und das Programm so umschreiben, dass die Daten auch über das Bluetooth-Modul ausgegeben werden.
Das wiederum stimmt (auch wenn du dir selbst widersprichst, denn in deinem ersten Beitrag hast du noch behauptet, dass das aufgrund fehlenden Betriebssystems und fehlender Treiber nicht ginge).
Wenn man das Bluetooth-Modul direkt über die serielle Schnittstelle mit dem Arduino verbinden würde und das Programm anpassen würde, dann könnte man so die Daten zumindest schon mal verwenden. Nur: Das erfordert eben eine Änderung des Codes auf dem Arduino und in der App ebenso.

Der Arduino hat keinen USB Host Port, also nein. Bzw da müsste ein Raspberry Pi o.Ä. mit 2 USB Host Ports dran das zwischen den Geräten sitzt und beide kontrolliert.
Ah stimmt, gar nicht daran gedacht aber ja, der wird nur als Client arbeiten. Theoretisch könnte man ihn wohl auch zum USB-Host umprogrammieren bzw. mit einem USB-Host-Shield versehen, aber auch hier ist dann wieder eine Änderung am Code nötig.

An den Arduino direkt muss ein i2c/SPI/UART Bluetooth Modul um dem Bluetooth Fähigkiet zu geben. Ich würde aber eher den Arduino direkt durch einen ESP32 mit Blueooth ersetzen. Das meiste Arduino Zeug ist technisch einfach veraltet.
Siehe erster Beitrag, das kommt für ihn nicht in Frage.
 
Siehe erster Beitrag, das kommt für ihn nicht in Frage.
Die Optionen sind halt "ESP32/nRF51/nRF52 als Bluetooth Modul zusätzlich verbauen und einen Treiber dafür schreiben, sowie eine Firmware für den Bluetooth Chip" oder "ESP32 statt des Arduinos verbauen und den Code 1:1 weiterzunutzen weil man den auch per Arduino IDE programmieren kann und nur erweitern für Bluetooth".

Umprogrammiert werden muss so oder so, aber der Aufwand beim kompletten Umstieg auf den ESP32 ist massiv geringer.

Wenn die Schaltung wirklich 1:1 so bleiben muss, dann ist ein Raspberry Pi oder Thinclient am USB Port die einzige Option.

Theoretisch könnte man ihn wohl auch zum USB-Host umprogrammieren
mWn kann ein Atmega32u4 das grundsätzlich nicht. Ggf mit Bitbanging an freien Datenpins, aber ob man das auf dem Speicher hinkriegt ist fraglich. Da muss dann zusätzlich zum reinen USB Host Port Code noch ein Treiber für das Bluetooth Modul in Firmware von Null geschrieben werden. Da werden die 32k Flash schon sehr schnell sehr eng.

Ich weiß von rp2040 dass es (funktionierende) Projekte mit Host Ports am rp2040 gibt, aber bei AVRs wäre mir das neu. Falls es das gibt ists eher obskur.
 
Hi Stefan / 17b,

Kannst du den Code vom Arduino selbst ändern? Dann könntest du die serielle Ausgabe auf ein freies Pin-Paar legen und mit einem seriellen Bluetooth-Adapter auf jedem beliebigen Gerät empfangen. Wie man den Empfang unter Android einrichtet weiß ich nicht, auf Linux richtet man mit bluetoothctl/rfcomm recht einfach den seriellen Port ein. Auf Windows geht das auch, kenne mich damit nicht aus. Bluetooth RFCOMM ist ein Teil des Bluetooth-Standards und sollte in allen besseren Bluetooth-Empfänger vorhanden sein. Das sollte mit einer seriellen Terminal App für Android auch klappen.

Am Arduino musst du den Serial-Debug output einfach auf 2 freie Pins legen, zum Senden würde auch einer reichen, wenn du bloß loggen willst. Das machst du in void setup(). Dann müsstest du nur einmal alle Println("...")-Aufrufe so ändern, dass sie das neue serial-Objekt verwenden.

Ich verbinden meinen Bluetooth Adapter unter Linux z.B. mit dem Code hier. Sonst gibt's dafür auch viele Anleitungen im Netz:
z.B. Unter Linux hier:
Code:
bluetoothctl pair <bluetooth-adresse>
sudo rfcomm bind 0 <bluetooth-adresse>

#daten lesen z.B. mit minicom /dev/rfcomm0

IMG_20240513_120828.jpg-c60.jpgIMG_20240513_120817.jpg-c60.jpg
So einen Grove Dongle benutze ich an meinem STM32, um einen UART Output einfach mit Bluetooth an meinen PC zu senden und dort zu lesen. Du kannst aber bestimmt einen günstigen HC-05/HC-06 (6-7 € auf ebay) verwenden. Sollte gleich funktionieren.

Viel Spaß beim Basteln

sebsus
 
Umprogrammiert werden muss so oder so
Das denke/fürchte ich auch.

mWn kann ein Atmega32u4 das grundsätzlich nicht. Ggf mit Bitbanging an freien Datenpins, aber ob man das auf dem Speicher hinkriegt ist fraglich. Da muss dann zusätzlich zum reinen USB Host Port Code noch ein Treiber für das Bluetooth Modul in Firmware von Null geschrieben werden. Da werden die 32k Flash schon sehr schnell sehr eng.
Geht schon, schön ist es aber nicht unbedingt :D
https://www.mikrocontroller.net/articles/USB#Implementierung_in_Software_auf_Atmel_AVR oder einem USB-Host-Shield.
 
Moin Moin,
endlich mal ein paar mehr Infos zur Funktionsweise, vielen Dank dafür!
Ich kann zwar den Arduino umprogrammieren, aber das Dingen ist fertig und vor allem alle Pins voll. Ein HC05/06 geht also einfach nicht... Man muss das Ding einfach als fertigen vergossenen Block sehen.
Klar, würde ich das als neues Projekt starten, dann würde ich ein HC0x Modul direkt vorsehen oder einen entsprechenden Chip/Arduino nehmen. Ist es jetzt aber nun mal nicht.
Wenn das alles nicht über BT "so einfach" funktioniert, dann ist das eben so. Danke euch für die Infos!
 
Hi 17b,
mhh ok yikes, wenn du die Pins nicht mehr großartig umbelegen kannst. Passiert den besten. Klingt nach einem umfangreichen Projekt. Ich hätte noch eine Idee, die wohl genau das sein könnte, was du suchst, aber Kabelgebunden, ohne Bluetooth: Anscheinend kann man Arduinos auch von Android aus programmieren. Es sollte dann wohl auch der Serielle Monitor zur Verfügung stehen. Ich hab kurz nachgesehen und diese serial Monitor-App[1] hier gefunden, aber das selbst nicht ausprobiert caveat emptor. Vielleicht findest du das noch raus

Im Prinzip ist verhält sich ein Arduino über den USB-Stecker wie ein Serieller USB-Adapter. Wenn man sich bisschen auskennt, sieht man auch FTDI oder WCH340 am Arduino, der zwischen Seriell und USB-Adaptiert. Ich weiß nicht, wie die Treiberunterstützung unter Android dafür ist. Aber manchmal funktionieren skurrile Adapter Kombinationen unter Android (z.B. USB-Diskettenlaufwerk auf Android). Da das System Management unter Android nicht so offen für den Nutzer ist wie unter Linux oder Windows, musst du einfach Glück haben. Bestimmt kennt sich jemand anderes da besser aus als ich, aber ich glaube das ist einen Versuch Wert.

[Android Telefon] <-- [USB-Kabel] --> [Arduino Controller]

[1] https://play.google.com/store/apps/details?id=de.kai_morich.serial_usb_terminal&hl=de&gl=US

EDIT: Ich bin mir nicht, sicher wie das bei dem Pro Micro ist. Mein randomly picked Arduino Nano Klon hier hat einen CH340 auf der Unterseite.
 
Zuletzt bearbeitet:
Ich verwende die von dir genannte App gerade, sie funktioniert für die Datenübertragung vom Arduino zum Handy hervorragend. Ich hatte aber oben beschrieben, dass das mit den Kabeln so eine Sache ist. Nicht jedes Kabel funktioniert, nur die Kombination
Dazu habe ich schon verschiedene Varianten an Kabeln probiert. Bis auf eine Variante, mit handyseitig USBC Stecker auf USBA Buchse als OTG Adapter, gefolgt von einem USBA Stecker auf USBC Stecker Kabel funktioniert nichts. Ich habe mir auch mal testweise ein vollbelegtes USBC auf USBC Kabel bestellt, selbst dieses funktioniert nicht. Der Trick scheint hier im OTG Adapter zu liegen.
läuft.
 
Ich hatte aber oben beschrieben, dass das mit den Kabeln so eine Sache ist. Nicht jedes Kabel funktioniert, nur die Kombination läuft.
Der Grund dafür steht in Beitrag #6:
Der OTG-Adapter macht jedenfalls nicht den Arduino zum Host, sondern das Smartphone. Einen Host muss es aber natürlich geben, sonst wären Smartphone und Arduino beide nur Client. Deswegen funktioniert es auch nur, wenn man so einen OTG-Adapter zwischenschaltet und nicht, wenn nur ein USB-C-Kabel verwendet wird.
Soll heißen: Für USB muss immer einer USB-Host und einer USB-Client sein. Es sind aber beide USB-Client. Erst der OTG-Adapter sorgt dafür, dass das Smartphone umschaltet und vom USB-Client zum USB-Host wird.
 
@lehai und @zwieblum
Danke für eure Antworten, aber bitte lest euch meine Postings durch. Kein anderer Chip und keine Pins mehr frei!

@cuco
Danke dir, das bringt Licht ins Dunkle. Jetzt weiss ich wenigstens worauf ich beim Kabel achten muss wenn das mit dem BT Dongle nix wird (davon gehe ich aus)
 
Ich verstehe nicht was du meinst
 
Zumindest die Tx und Rx LED werden von 2 separaten Pins gesteuert. Wenn die LEDs nicht gebraucht werden, kann man die LED rauslöten und die Pins anders benutzen. Klar ist ein wenig Aufwand notwendig aber theoretisch möglich.
 
Danke dir, aber das auslöten von SMD LEDs ist bei einer bestehenden FERTIGEN Schaltung nicht gewünscht. Nebenbei werden auch diese LEDs gebraucht.

Danke für eure Kommentare. Ich werde es weiter mit Kabeln machen. Jetzt, da ich, dank Cuco weiss wieso weshalb und warum, bleib ich beim Kabel. Der Thread kann also geschlossen werden!
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben