PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bluetooth-Einstieg



Cysign
12.01.2016, 06:22
Hallo zusammen,

ich frage mich grade, wie ich am besten eine Wiki-Seite zu Bluetooth starten kann.
Anregungen zu wichtigen Punkten könnt ihr gerne als Kommentar posten oder sie auch selbst ergänzen.



Einleitung in die verschiedenen Versionen



Jahr Version Features

Juli 1999 1.0 & 1.0a Hintergedanke: Ersatz für serielle Kabel

Dezember 1999 1.0b Updates zur Fehelrbehebung

Feb 2001 1.1 Standard IEEE 802.15.1.1-2002 wurde festgelegt

Nov 2003 1.2 AdaptiveFrequencyHopping (AFH) wurde ergänzt, um die Störanfälligkeit zu reduzieren, extended synchronous connection oriented (eSCO) wurde hinzugefügt, um Stimmübertragung zu verbessern. IEEE 802.15.1-2005 wurde festgelegt (letzte IEEE-Zertifizierung).

Nov 2004 2.0 + EDR (EDR = Enhanced Data Rate) Geschwindigkeit wurde von 721kbps auf 2,1 Mbps erhöht.

Jul 2007 2.1 + EDR SSP (secure simple pairing) und einige weitere Ergänzungen

Apr 2009 3.0 + HS Datendurchsatz wurde durch den Support von "multiple radios" (was auch immer das genau bedeuten mag?) auf 24Mbps erhöht, die Spezifikation wurde so erweitert, dass der Transfer per Bluetooth initiiert werden kann, aber dann an 802.11 (typischerweise Wlan) übergeben wird.

Jun 2010 4.0 Im gegensatz zum vorherigen Steigern des Datendurchsatzes liegt der Schwerpunkt bei v4.0 beim energiesparenden Anwendungen. Bluetooth 4.0 wird auch BLE (Bluetooth Low Energy) genannt.

2013 iBeacon ein auf Bluetooth 4 basierender, properitärer Standard zur Indoornavigation, sowie zur Verbreitung von lokal begrenzter Signaturen (z.B. Angebote, Gewinnspiele, Links)

Dez 2013 4.1 L2CAP, LS Link Layer, Dualmode, Fast Data Advertising Intervall (Erste Geräte mit Bluetooth 4.1 sind z.B. Samsungs Galaxy Note 4 oder das Nexus 6)

Dez 2014 4.2 Der Schwerpunkt dieser Iteration liegt auf Sicherheit, größerem Datenturchsatz, sowie einem sparsameren Low-Energy-Modus. Insbesondere LE Data Packet Length Extension und die Unterstützung von IPv6 für BluetoothSmart (Stichwort IoT) sind hier erwähnenswert.


Lesenswert ist hierüber das Buch "Inside Bluetooth Low Energy" (Naresh Gupta, 2013), sowie die englische Wikipediaseite: https://en.wikipedia.org/wiki/Bluetooth


Gängige Module für eine einfache, serielle Datenübertragung im Bereich der Mikrokontroller (z.B. Arduino) sind HC-05 und HC-06. Diese lassen sich in der Regel problemlos Plug'n'Play an die serielle Schnittstelle des Mikrokontrollers anbinden.

Arduinospezifisch:
Sollten bei einem Arduino die Pins der seriellen Verbindung (Uno/Nano z.B. Pins 0&1, welche vom USB-Wandler genutzt werden) bereits vergeben sein, so lässt sich über eine softwareemulierte serielle Verbindung ein Bluetoothmodul einbinden


#include <SoftwareSerial.h>
void setup(){
softSerial.begin(9600);
softSerial.println("AT+NAME"); // festlegen des ausgesendeten Gerätenamens
softSerial.println("AT+RESET"); // Neustart des Bluetoothmoduls, damit Änderungen wirksam werden
softSerial.println("beispieltext");
}

void loop(){
...
}



Im Gegensatz zu den Modulen HC-05 und HC-06, welche Bluetooth 2.0+EDR verwenden, nutzt das Modul HM-10 Bluetooth 4.0 (nicht zu verwechseln mit dem Modul CC41-A, welches eine weitaus beschnittenere Firmware und weniger Möglichkeiten bietet, aber sehr ähnlich aussieht!).
einige Daten zur HC-Reihe sind auf folgender Seite zu finden:
http://wiki.pinguino.cc/index.php/SPP_Bluetooth_Modules#HC-05_AT_commands

Das Modul HM-10 bietet neben dem herkömmlicen Datentransfer auch die Option an, sich als iBeacon (siehe unten) nutzen zu lassen.

Die Firmware des HM-10, welcher auf den Texas Instrument Chips CC2540 oder CC2541 basiert, wurde bisher kontinuierlich von Jinan Huamao technology Co,. Ltd. weiterentwickelt.
Es ist möglich ein Firmwareupgrade über eine serielle Verbindung herzustellen. Hierzu bietet Jinan Huamao sowohl den Download der Firmware, als auch Tools und eine PDF-Anleitung zum Vorgang selbst zum Download an.

Sollte man ein günstiges HM-10 aus Asien bestellt haben, entpuppt dieses sich gerne als CC41-A. Schafft man es, einen Firmware-Dump des originalen HM-10 aufzutreiben, so kann nach dieser Anleitung das Modul mit der Firmware des HM-10 bespielt werden:
https://www.roboternetz.de/community/threads/68336-Kleines-sparsames-Bluetoothmodul/page2?p=622831&viewfull=1#post622831

Eine Alternatice zum CC2540/1 von Texas Instruments stellt die nRF51..-Serie von Nordic Semoconductors dar.
Zwar ist die nRF52-Serie angekündigt und einige Chips befinden sich (Ende 2015) im Umlauf, jedoch sind diese nicht fehlerfrei und Nordic hat zur Nachbesserung den Vertrieb kurzfristig eingestellt. Vorraussichtlich Anfang 2016 soll die nRF52-Serie aber fehlerfrei(er) und wieder zu beziehen sein.


Die puren Bluetooth-Chips basieren auf ARM-Kernen, welche mit der Firmware bespielt werden müssen.
Texas Instruments setzt hierbei zur Anbindung auf den hauseigenen "TI CC debugger", der mit einem Preis um die 50€ relativ günstig ist, in Verbindung mit der Software "SmartRF Studio", welche kostenfrei mit einem TexasInstruments-Account heruntergeladen werden kann.

Nordic begnügt sich mit einem standard jTag-Debugger, welcher je nach gewünschter Programmeirumgebung jedoch recht teuer werden kann.
Für Hobbyprojekte bietet sich der Segger j-Link Edu für 42€ an, welcher allerdings nicht für kommerzielle Projekte genutzt werden darf. Der jLink gilt als einer der Platzhirsche und überzeugt durch seine hohe Kompatibilität sowohl mit ARM-Prozessoren, als auch mit Programmierumgebungen.
Auf der Softwareseite stellt Nordic zur Entwicklung Tutorials (PDF) für Keil (kostenpflichtige IDE) und ein eigenes nRF SDK bereit.

Sowohl Nordic als auch TI bieten einiges an Dokumentation für die Entwicklung mit ihren Bluetoothchips an.


Durch die breite Unterstützung von Bluetooth 4.0+ steigt die Attraktivität für Hersteller, Smartdevices zu erstellen, welche mit gängigen Smartphones kommunizieren (Fitnesstracker, Heizungsthermostate, Smartwatches) und akzeptabele bis sehr gute Akkulaufzeiten bieten. Theoretisch ist es möglich, ein Böuetoothmodul der version 4+ bei sehr geringem, unstetigem Datendurchsatz mit einer Knopfzelle mehrere Monate zu betreiben, was in der Praxis jedoch durch die angeschlossenen Komponenten stark limitiert wird.

Beim Einstieg in die Welt der Bluetoothmodule sollte darauf geachtet werden, dass es gängige Module sowohl für einen Pegel von 3,3V, als auch 5V gibt.
Sollte das gewünschte Modul jedoch nicht in der passenden Ausführung vorhanden sein, so gibt es wirklich sehr, sehr günstige Pegalwandler aus Basis des BS138 (einige mit 4 Kanälen benötigen sowohl eine Versorgung mit 3,3V als auch 5V, viele Wandler mit 2 Kanälen haben einen Spannungsregler integriert, wodurch lediglich 5V benötigt werden).
Auch ist es gängig, dass die Stromversorgung eines Moduls mit 3,6-6V erfolgt, aber die Signalpins lediglich 3,3V vertragen.


Ist der Aufbau der ersten Schaltung mit Bluetooth geglückt, stößt man recht schnell auf sogennte AT-Befehle.
Diese können z.B. wie folgt aussehen:

AT+NAMEirgendwas
AT+ gibt dem Modul zu erkennen, dass nun ein Befehl für die Einstellungen folgt.
NAME ist hier recht offensichtlich. Hiermit wird der Name festgelegt, welchen das Bluetoothmodul aussendet, in diesem Fall 'irgendwas'.
Wird als Kommando lediglich

AT+NAME
ohne einen neuen Namen gesendet, so gibt das Modul den aktuellen Wert wieder.

Ein HM-10 Modul kann auf den Befehl AT+HELP zum Beispiel folgendermaßen antworten:


************************************************** ******************
* Command Description *
* ---------------------------------------------------------------- *
* AT Check if the command terminal work normally *
* AT+RESET Software reboot *
* AT+VERSION Get firmware, bluetooth, HCI and LMP version *
* AT+HELP List all the commands *
* AT+NAME Get/Set local device name *
* AT+PIN Get/Set pin code for pairing *
* AT+PASS Get/Set pin code for pairing *
* AT+BAUD Get/Set baud rate *
* AT+LADDR Get local bluetooth address *
* AT+ADDR Get local bluetooth address *
* AT+DEFAULT Restore factory default *
* AT+RENEW Restore factory default *
* AT+STATE Get current state *
* AT+PWRM Get/Set power on mode(low power) *
* AT+POWE Get/Set RF transmit power *
* AT+SLEEP Sleep mode *
* AT+ROLE Get/Set current role. *
* AT+PARI Get/Set UART parity bit. *
* AT+STOP Get/Set UART stop bit. *
* AT+START System start working. *
* AT+IMME System wait for command when power on. *
* AT+IBEA Switch iBeacon mode. *
* AT+IBE0 Set iBeacon UUID 0. *
* AT+IBE1 Set iBeacon UUID 1. *
* AT+IBE2 Set iBeacon UUID 2. *
* AT+IBE3 Set iBeacon UUID 3. *
* AT+MARJ Set iBeacon MARJ . *
* AT+MINO Set iBeacon MINO . *
* AT+MEA Set iBeacon MEA . *
* AT+NOTI Notify connection event . *
* AT+UUID Get/Set system SERVER_UUID . *
* AT+CHAR Get/Set system CHAR_UUID . *
* -----------------------------------------------------------------*
* Note: (M) = The command support slave mode only. *
* For more information, please visit http://www.bolutek.com *
* Copyright@2013 www.bolutek.com. All rights reserved. *
************************************************** ******************


Mit einem Firmwareupdate für den Bluetoothchip können weitere Kommandos eingeführt werden.


Sollte das Bluetoothmodul auf ein existierendes Kommando (z.B. einfach nur AT, was bei Funktion mit einem OK bestätigt wird) nicht reagieren, so kann es daran liegen, dass die Übertragungseinstellungen des genutzten Terminalprogramms geändert werden müssen oder eine falsche Baudrate gewählt wurde.
Bei der Verwendung des SerialMonitors der ArduinoIDE und einem HM-10 Modul habe ich festgestellt, dass die Einstellung "Both NL & CR" nötig ist, um eine Reaktion vom Modul zu bekommen.

Beim Initiieren eines HM-10 Moduls per Arduino habe ich festgestellt, dass zwischen den einzelnen AT-Kommandos ein kurzes Delay (z.B. 30 Millisekunden) hilfreich sein kann, um eine fehlerfreie Kommunikation sicherzustellen.
Entfiel dieses Delay, so kam statt eines "OK" ein Zeichenwirrwar vom Modul zurück (evtl. ist dies auf die Verwendung von SoftSerial zurückzuführen).


Ein iBeacon ist ein Bluetoothmodul, das on-the-fly an passierende Geräte eine Signatur aussendet. Läuft man mit einer entsprechend aktivierten Software am Smartphone an einem iBeacon vorbei, so können z.B. lokale Sonderangebote oder Gewinnspiele an das Smartphone übermittelt werden.
Auf der Dmexco 2014 (Fachmesse für digitales Marketing und Werbung) wurde dieser von Apple 2013 eingeführte properitäre Standard mehrfach demonstriert.
'Properitär' daher, da er nicht standardmäßig von Mobilgeräten genutzt wird. Um iBeacons mit Androidgeräten zu erkennen und zu nutzen ist eine entsprechende Software nötig.


//Edit: Was auf jeden Fall noch fehlt:
-(Audio)Profile und Codecs, A2DP https://de.wikipedia.org/wiki/A2DP
-Dual-Mode-Modul: HM-13

.

Cysign
12.01.2016, 20:12
https://developer.bluetooth.org/TechnologyOverview/Pages/BLE.aspx