Ich möchte mittels Bluetooth von einem batteriebetriebenen Gerät einen
kontinuierlichen Datenstrom an eine noch zu erstellende App auf einem
Android-Mobiltelefon senden. Die Datenrate wird etwa 100Bytes/s
betragen. Zusammenfassen zu kleinen Paketen <50 Bytes wäre auch möglich.
Der Energieverbrauch des Senders sollte möglichst gering sein
(<10mA@3.3V im Durchschnitt). Reichweite maximal 2m würde genügen.
Für diese Aufgabe müsste sich das RFCOMM-Protokoll eignen, zumal es
direkt von Android unterstützt wird. Im Web gibt es eine Fülle von
preisgünstigen Bluetooth-Modulen, z.B: HC-06 und HC-08. Leider gibt es
dazu keine vernünftige Dokumentation, weder auf Englisch noch auf
Deutsch. Insbesondere fehlen Angaben zum verwendeten Protokoll und zum
Energieverbrauch.
Anhand der abgebildeten Chips handelt es sich beim HC-06 offenbar um ein
Modem nach Bluetooth V2.0 , beim HC-08 um V4.0-Standard.
Wer kennt sich aus oder hat die Module schon einmal benutzt:
1. Gibt es genauere Daten zur Stromaufnahme, aufgeteilt in
Senden/Empfangen/Idle?
2. Bringt der V4.0 Low Energy-Standard etwas bei der konkreten Aufgabe?
3. Nutzt 4.0LE auch das RFCOMM-Protokoll, so dass eine problemlose
Kommunikation mit Android-Hausmitteln möglich ist?
Besten Dank
PS: Sorry für das doppelte Posting, aber ich habe wohl das falsche Forum
gewählt.
Hallo Mike,
ich kenne diese Module nicht. Es gibt aber mittlerweile jede Menge
Mikrocontroller, die BLE Peripherie an Bord haben. Wenn Du also eh einen
Mikrocontroller verwendest, könntest Du dich evtl. da umgucken
(insbesondere, wenn Du eh Strom sparen möchtest).
Ich schreibe gerade an eine Android App, die Bluetooth nutzt. In der
Version 6 von Android sieht das soweit auch ganz vernünftig aus. Über
GATT kannst Du aber portabel maximal 20 Bytes am Stück übertragen.
2.) BLE ist halt komplett auf geringen Energiebedarf hin ausgelegt und
wenn Du Deine Kommunikationsparameter auf die benötigte Datenrate und
Latenz anpasst. Mit einem nfr51422 sind <10mA@3.3V auf jeden Fall
möglich.
mfg Torsten
RFCOMM gehört ersteinmal zum Bluetooth Classic Stack, steht also für LE
nicht zur Verfügung.
Da haste erstmal nur GATT.
Also SPP nutzen fällt schonmal flach.
@Thorsten:
Auf dem HC-08 ist nen TI CC2540, also genau das was du sagtest, nen SoC
mit BT LE drauf ;)
Martin W. schrieb:> RFCOMM gehört ersteinmal zum Bluetooth Classic Stack, steht also für LE> nicht zur Verfügung.> Da haste erstmal nur GATT.
GATT ist auf der Client-Seite (OS/X; Android) eigentlich ganz bequeme.
Für erste Tests gibt es eine recht coole Libray für JavaScript:
https://github.com/sandeepmistry/noble> Auf dem HC-08 ist nen TI CC2540
Von TI gibt es auch noch größere, z.B. den cc2650, dass ist ein Cortex
M3, der einen eigenen Cortex M0 hat, der die BLE Hardware bedient.
BT Classic und 4.0 (BTLE) sind an sich unterschiedliche Dinge mit wenig
Gemeinsamkeiten.
BTLE und "Datenstrom" passt zudem nicht super zusammen, da BTLE über die
GATT Register nur ca. 20 Byte pro "Paket" (je nach
Stack/Implementierung) erlaubt.
Ich würde BTLE empfehlen, wenn du kleine Datenmengen selten übertragen
musst, dann profitierst du von der Fähigkeit der BTLE Hardware extrem
schnell aufzuwachen und wieder sendebereit zu sein.
Viele Grüße
Tobi
Mahlzeit!
Folgende Erfahrungen kann ich von dem BLE-Modul cB-OLS425i-04 (mit dem
CC2540) von ConnectBlue weitergeben:
Wie der Vorposter richtig genannt hat, sind 20Byte je Paket möglich. Ein
Paket kann alle 7ms versandt werden. Das reizen wir nicht aus. Wir sind
bei ca. 200Byte/S. Dabei verbraucht das Modul insgesamt rund
33mW(@3,3V=10mA) MEHR, als im nicht verbundenen Zustand (mit Advertising
alle 1000ms). Im letzteren Zustand sind es durchschnittlich 50µA@3,3V =
0,165mW.
Zusammengefasst also ungefähr
200Byte/s -> 10,05mA Durchschnitt @3,3V
Also kommen deine durchschnittlich erhofften 10mA@3,3V@100Byte/s in
Reichweite.
Gruß
Dirk Knoblich
Hi
Um es noch etwas genauer aufzuteilen:
Wir nutzen ein CC2564B von TI. Das HCI Modul braucht bei einen Connect
Interval von 500ms und 8dBm Leistung (entspricht 40 Byte/s) ~200µA. Dazu
kommt der Strom des verwendeten Controllers (beim ConnectBlue Modul vom
Vorredner ist der schon mit drin).
Wir nutzen ein Interval von 10ms und senden alle 20ms (1000 Byte/s).
Dabmit sind es dann schon 7,5mA alleine für das Modul.
Wenn man also viele Daten senden will, sind BLE Module nicht besser als
Classic BT mit SPP.
Gruß
Rainer
Rainer F. schrieb:> Wenn man also viele Daten senden will, sind BLE Module nicht besser als> Classic BT mit SPP.
Interessant wäre zu Wissen, welche Genauigkeit die Quarze der
eingesetzten
Module haben. Laut BLE Spec hängt die Zeit (und damit die Energie für
das Empfänger-Radio), die ein device auf seinen Master lauschen muss von
der Genauigkeit des Timers ab.
Dirk K. schrieb:> Zusammengefasst also ungefähr> 200Byte/s -> 10,05mA Durchschnitt @3,3V
Ich habe mit einem NRF51422 Modul ungefähr die Hälfte gemessen, bei
wesentlich höherem Datendurchsatz. Und sogar da ist noch Luft nach unten
weil ich wegen UART den "schnellen" Oszillator anlassen musste.
Außerdem ist es komplett in C programmierbar, so dass man in einfachen
Fällen keinen weiteren Prozessor braucht.