Bluetooth Sensor auslesen

#5645851
Lesenswert?

Hallo,

ich habe hier einen Bluetooth-Sensor, der mittels APP für Android 
ausgelesen werden kann. Ich würde das Teil gerne mit meinem Rechner 
verbinden und die Daten in Matlab weiterverarbeiten. Leider gibts die 
Software nur als Androidapp.

Meine Frage wäre, ob es ein Programm gibt, mit dem man die eingehenden 
Datenpakete der Bluetooth Schnittstelle monitoren kann. Wenn das 
Protokoll nicht zu komplex ist, kann man vielleicht rauskriegen was da 
die Nutzdaten sind.

Oder hättet ihr noch ne andere Idee?
#5645859
Lesenswert?

Bei meinem Android Handy findet sich in den Einstellungen bei den 
Entwickleroptionen eine Einstellmoeglichkeit zum Bluetooth Trace Log. 
D.h. es koennte sein dass dein Handy das bereits kann und du es nur 
einschalten mustt. Ich habe es selber noch nicht genutzt.
Es koennte sein dass Du die Entwickleroptionen auch erst aktivieren 
musst auf deinem Handy, bei mir war es glaube ich ein paar mal auf die 
Systeminfos tippen, dann wurde es sichtbar, dass muesstest Du fuer dein 
Handy aber mal googeln,
Viel Erfolg
#5645982
Lesenswert?

Ein Sensor, bei dem man nicht an die Messdaten rankommt, ist m.E. 
Spielzeug. Mir ist schon klar, dass Phywe ein anderes Zielpublikum hat 
bzw. würde es über Android als Umweg wahrscheinlich auch funktionieren. 
Der Sensor ist jetzt halt da, und die Frage ist, ob ich mit vertretbarem 
Aufwand da an Messdaten rankomme. Ein Android-Gerät habe ich nicht und 
müsste das erst anschaffen.
(Firma: Torrox.de) #5646000
Lesenswert?

Markus L. schrieb:

> Meine Frage wäre, ob es ein Programm gibt, mit dem man die eingehenden
> Datenpakete der Bluetooth Schnittstelle monitoren kann. Wenn das
> Protokoll nicht zu komplex ist, kann man vielleicht rauskriegen was da
> die Nutzdaten sind.

Du kannst Dich mal mit einem generischen GATT-Client (z.B. 
https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Connect-for-mobile) 
auf das Gerät verbinden und Dir Struktur des GATT Servers angucken. 
Evtl. ist die trivial und evtl. sogar selbstbeschreibend.

Wenn das nicht hilft, dann brauchst Du einen Sniffer. Nordic und TI 
bieten sehr günstige Lösungen, die auf deren Eval-Boards aufsetzen.

> Oder hättet ihr noch ne andere Idee?

Dem Hersteller eine EMail schicken und ihn höflich darum bitten, Dir die 
Dokuentation der BLE Schnittstelle zukommen zu lassen.
#5646019
Lesenswert?

Dazu gibt es auch ein "Schüler-Interface". Früher nannte sich sowas 
"Nürnberger Trichter" und wurde am Hirn angebracht.

Kann man das Teil hier öffnen, um den verbauten Chip oder Modul zu 
erkennen? Vielleicht ist das ein Standardbauteil wie die FTDI-Chips für 
USB/RS232 oder ähnliches. Die Entwickler sind nicht immer so begeistert, 
alles selbst bauen zu müssen.
#5646020
Lesenswert?

Ich habe schon bei einigen Geräten, die per Bluetooth 4 ("BTLE") mit 
einem Smartphone kommunizieren, und für die es eben nur eine 
Smartphone-App gibt, das Protokoll erfolgreich reverse engineered, um 
das Gerät auch ohne die Hersteller-App bzw. mit eigener Software nutzen 
zu können.

Deine Chancen stehen meiner Einschätzung nach gut, und es ist 
tatsächlich gar nicht mal sooo schwer. Man braucht dazu üblicherweise 
auch keinerlei zusätzliche Hardware; Carsten F. hat das entscheidende 
Stichwort bereits genannt:

Bei den meisten modernen Android-Smartphones genügt es, die 
"Entwickleroptionen" freizuschalten (im Zweifelsfall kurz danach 
googlen, wenn Du nicht weisst, wie das geht), und dann in den 
"Entwickleroptionen" die Option "Bluetooth HCI-Snoop-Protokoll" temporär 
zu aktivieren.

Mit dieser Option aktiviert, startest Du die zum Gerät zugehörige 
Smartphone-App, machst einige Messungen, damit einige Daten gesendet 
werden. Dann kannst Du die "Bluetooth HCI-Snoop-Protokoll"-Option wieder 
deaktivieren.

Die "Bluetooth HCI-Snoop-Protokoll"-Option erzeugt eine Log-Datei, die 
Du einfach per USB-Kabel o.Ä. auf Deinen Computer überspielen und dort 
mit dem beliebten Open Source-Programm "Wireshark" öffnen kannst. Dann 
siehst Du ganz bequem, was da an Bluetooth-Kommunikation stattgefunden 
hat, kannst es nach Belieben filtern etc., besser geht es kaum.

Die Messwerte werden vermutlich als immer gleich aufgebaute Datenpakete 
von maximal 20 Bytes gesendet; es wird vermutlich genügen, einige dieser 
Datenpakete mit unterschiedlichen Messwerten zu sammeln, zu vergleichen, 
welche Bytes sich ändern, und das sind dann die Nutzdaten/Messwerte.

Ist jetzt etwas verkürzt und vereinfacht ausgedrückt, aber so in etwa 
solltest Du grundsätzlich vorgehen.
#5646054
Lesenswert?

Markus L. schrieb:
> Ich würde das Teil gerne mit meinem Rechner
> verbinden und die Daten in Matlab weiterverarbeiten.

Das Gerät arbeitet mit Bluetooth 4 alias Bluetooth Low Energy. Das hat 
mit dem "Blutooth classic" nur den Namen geneinsam, die Systeme sind 
inkompatibel.

Ich hatte dasselbe Problem mit einem Eigenbau, den ich über ein Android 
Smartphone mit BLE steuern und am PC entwickeln will.

BT classic hat ein serielles Profil definiert und man muss nur ein BT 
2.x USB-Dongel in den PC stecken, es über die BT-Software aktivieren und 
connecten und schon hat man das Gerät unter Linux über /dev/rfcommx als 
tty zugreifbar.

Bei BTLE ist alles "besser": es gibt kein serielles Profil und die 
gesamte Protokollverarbeitung ist vom System- in der Anwendungsbereich 
verlagert. Mit Standardsoftware kann man zwar testen, aber einen 
regulären Zugang bekommt man nicht so einfach hin, wenn überhaupt.

Ich hab mir per Hardware geholfen:
- einen chinesischen USB <-> ttl-tty-Adapter und einen
- MLT-BT05 BLE-Adapter auf einen Stück Lochraster
mit einem Kabelbinder zusammengeflanscht - siehe Anhang

Der MLT-BT05 läuft auf 3.3 V, der USB-Adapter ebenfalls und der stellt 
freundlcherweise neben den 5 V vom USB auch 3.3 V für ein 
angeschlossenes Gerät bereit.

Wenn man das Teil in die USB-Buchse steckt, ist der BLE-Adapter über 
/dev/ttyUSBx zugreifbar.

Ansprechen konnte ich dann mein BLE-Gerät über das Terminal der 
Arduino-IDE - das ist doof genug, dass es funktioniert, während ich mit 
den üblichen Terminal-Programmen bis jetzt auf keinen grünen Zweig 
gekommen bin.

Den USB-BLE-Adapter muss man dann per AT-Befehl als Master definieren 
und - vermutlich - noch die passenden Kennungen für Profil und 
Charakteristik für das Zielgerät programmieren und dann hoffen, dass man 
an die Daten kommt.

Leider ist das alles ein ziemliches Gefrickel, weil es keine 
vernünftigen Dokumentationen gibt.
Angehängte Dateien:
#5646917
Lesenswert?

Danke mal für eure Hilfe. Muss mal schauen, was ich davon umsetze. 
Leider habe ich eigentlich keine zeitliche Kapazitäten für sowas, und 
das Auslesen in Matlab wäre auch nur nice2have. Vielleicht kann man auch 
ne Projektarbeit draus machen und nen Studi dransetzen. 
Reverse-Engineering ist eigentlich eine interessante Sache.
#5646981
Lesenswert?

Torsten R. schrieb:
> Vielleicht schreibst Du beim nächsten mal, dass Du die Frage nur aus
> langer Weile gestellt hast, dann spare ich mir eine Antwort.

Ich habe nicht aus langer Weile geschrieben. Es ist insgesamt nur eben 
auf niedriger Priorität neben dem Tagesgeschäft. Ich werde mir die 
Sachen auch anschauen, und wenn es passt eine Projektarbeit für Studis 
drausmachen (es sei denn ich kriege es in 1-2 h selber hin, es scheint 
mir aber aufwändiger zu sein).

Und wenn ein paar Studis das bearbeiten war deine Antwort doch auch 
nicht umsonst.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren