In diesem Beitrag möchte ich dir den Microcontroller BLE-Nano von Keywish vorstellen.
Die Bezeichnung BLE steht hier für Bluetooth Low Energie und repräsentiert den Bluetooth Standard 4.0.
Der BLE-Nano ist ein herkömmlicher Arduino Nano Klon, welcher lediglich ein Bluetooth Modul vom Typ CC2540 verbaut hat.
Bezug
Den BLE-Nano habe ich über aliexpress.com für knapp 5€ inkl. Versandkosten erstanden, du bekommst diesen aber auch über ebay.de wo dieser mit ca. 17 € inkl. Versandkosten ca. 3x so teuer ist.
Dieses Mal biete ich keinen direkten Link zum Ebay Artikel bzw. zur Liste an, denn diese Preisspanne ist doch sehr hoch. Daher geht dieses Mal meine Empfehlung klar an aliexpress.com.
Technische Daten
Der BLE-Nano ist, wie bereits erwähnt ein Arduino Nano Klon welcher zusätzlich den Bluetooth Low Energy Chip CC2540 verbaut hat.
- Chip – ATmega328P mit 16 MHz
- Betriebsspannung 5V
- Eingangsspannung 7-12V (Vin)
- Stromaufnahme 19mA
- Speicher
- Flash Speicher 32 KB (2 KB durch den Bootloader reserviert)
- SRAM 2 KB
- EEPROM 1 KB
- Ein / Ausgänge
- digitale Ein / Ausgänge 22
- PWM Pins 8
- analoge Eingänge 8
- max. Stromaufnahme pro Pin 40 mA
- Abmaße (L x B) 48 mm x 18 mm
- Gewicht 7 g
Dokumentation von Keywish
Auf dem GitHub Repository von Keywish findest du eine ausführliche Dokumentation sowie ein Datenblatt zu diesem Microcontroller.
Anschluß & Schaltung
Da der BLE-Nano über einen Bluetooth Chip verfügt und die sonstigen Eigenschaften sehr identisch mit dem “normalen” Arduino Nano Klon sind möchte ich hier speziell nur auf die Programmierung und den Betrieb mit dem Bluetooth Chip eingehen.
Anders wie beim RF-Nano ist der Bluetooth Adapter an keine besonderen Pins verdrahtet und kann einfach über die Serielle Schnittstelle des Microcontrollers angesprochen / ausgewertet werden. Der Microcontroller BLE-Nano erstellt und trennt die Verbindung dabei weitestgehend selbstständig.
AT Befehle zum konfigurieren
Der BLE-Nano ist bereits fertig vorkonfiguriert und einsatzbereit. Wenn man jedoch das Passwort für die Verbindung ändern möchte oder andere Parameter einstellen möchte muss man diese über sogenannte AT Befehle über einen seriellen Terminal einstellen.
In dem kleinen GIF, zeige ich den Befehl zum Test ob der BLE-Nano auf AT Befehle reagiert. Es wird lediglich der Befehl “AT” eingegeben und abgesendet, der BLE-Nano antwortet darauf mit einem “+OK”.
Hierfür kann zbsp. der serielle Monitor der Arduino IDE verwendet werden. Jedoch startet der BLE-Nano nach erfolgreichem schreiben des Kommandos neu und der serielle Monitor “verliert” die Verbindung und das Fenster muss geschlossen und neu geöffnet werden.
Liste an AT Befehlen für den BLE-Nano
Die Liste mit den gültigen AT Befehlen findest du im offiziellen Dokument zum BLE-Nano unter https://github.com/keywish/keywish-nano-plus/blob/master/BLE-Nano/Ble-Nano%20operation%20manual%20V.1.6.pdf. Ich empfehle das Dokument herunterzuladen und mit einem externen Programm zu öffnen.
schreiben von AT Befehlen
Um Werte auf den BLE-Nano zu schreiben muss der Befehl gefolgt von einem Gleichheitszeichen und dem Wert eingegeben werden zbsp:
AT+PASS=123456
Wenn das schreiben erfolgreich war, wird dieses mit einem Text quitiert der BLE-Nano neugestartet.
OK+SetPassWord=123456 +SUCCESS
Sollte bei der Eingabe vom Passwort zbsp. die Regel min 6 Zeichen und nur Zahlen, verletzt werden so wird dieses mit einer Ausgabe quitiert.
+OK EEROR SetPassWord Must 6bit length Must 0~10 numble
Tabelle der gebräuchlichen AT Befehle für den BLE-Nano
Befehl | Beschreibung | default |
---|---|---|
AT+ALL | listet die gesetzten Einstellungen auf | |
AT+VER | Anzeige der BLE Firmware Version | V1.1 |
AT+NAME | setzen des Namens für das Bluetooth Gerät | Ble-Nano |
AT+MAC | anzeigen der MAC Adresse | |
AT+PASS | setzen des Passwortes für die Verbindung | 000000 (6x null) |
Verbinden des BLE-Nano mit einem Android Gerät
Anders als bei Herkömmlichen Bluetooth Geräten (< Bluetooth 4.0) wird bei Bluetooth Low Energy die Verbindung nicht über die Konfiguration der Bluetoothverbindung von Android aufgebaut sondern man muss ein spezielles Programm verwenden.
Auf dem GitHub Repository von Keywish findet man eine APK Datei für Android Geräte um eine Verbindung aufzubauen das Problem ist hier nur das diese mit Chinesischen Zeichen daherkommt und daher die Bedienung sehr umständlich ist.
Da diese App nicht über den Google Playstore installiert wird, werden bei der Installation Sicherheitshinweise angezeigt welche man bestätigen muss.
Ich empfehle hier die Android App “Serial Bluetooth Terminal von Kai Morich“.
Reichweite des Bluetooth Moduls
Laut Spezifikation ist die maximale Reichweite eines Bluetooth LE Gerätes bei 10 bis 40 Meter, dieses liegt unter anderem daran das die Sende / Empfangsleistung (~ 10mW) gedrosselt ist. Diese gewollte Drosselung bringt den Vorteil das der Energieverbrauch deutlich gesunken ist und somit der Einsatz im IoT Bereich erweitert wurde.
Test der Reichweite unter verschiedenen Bedingungen
Als nächstes möchte ich nun einpaar kleine Tests der Reichweite zeigen.
Diese sind natürlich nicht repräsentativ da es viele Faktoren gibt welche Einfluss darauf nehmen.
Einflüsse welche die Reichweite beeinflussen sind zbsp:
- Störungsquellen
- elektrische Geräte, Überlandleitungen
- Qualität der Sender / Empfänger
im Gebäude
Der Test erfolgt im Gebäude, zwischen zwei Räumen, die Wände sind einfache Ziegelwände mit Putz (und Tapete), zusätzlich befinden sich als eventuelle Störungsquellen noch elektrische Geräte wie Fernseher / Receiver und Computer in der nähe.
Es konnte auf zwei Etagen in jedem Raum eine Verbindung zum BLE-Nano hergestellt werden.
Dabei war die maximale Distanz ca. 8m bis 10m.
außerhalb vom Gebäude
Der Empfänger befindet sich außerhalb des Gebäudes und der Sender (das Android Handy) befindet sich im Gebäude.
Ich konnte wiederum dabei von jedem Punkt im Gebäude eine Verbindung zum BLE-Nano herstellen und eine der drei LEDs schalten.
im bebauten Gelände
Der Sender und der Empfänger befinden sich außerhalb vom Gebäude im bebauten Gelände
Es konnte eine maximale Distanz von 21m erreicht werden.
im Gelände
Der Sender und der Empfänger befinden sich außerhalb vom bebauten Gelände (im freien Feld).
Im offenen, nicht bebautem Gelände konnte eine Reichweite von 32 m hergestellt werden. Damit kommt man ziemlich nah an den maximalen Wert aus der Spezifikation von 40 m.
Quellcode
schalten von LEDs per Bluetoothverbindung
Über die serielle Verbindung erhält man einen ASCII Zahlencode welchen man entweder zunächst in den “echten” Wert umzuwandeln oder aber man verwendet diesen so wie er ist.
Im folgenden Code verwende ich die ASCII Zeichen für 0,1 und 2 um die rote, grüne und blaue LED zu schalten.
#define led_rot 8 //rote LED am digitalen Pin D8 #define led_blau 10 //blaue LED am digitalen Pin D10 #define led_gruen 13 //gruene LED am digitalen Pin D13 //Variablen zum speichern Status der LEDs boolean ledRotAN = false; boolean ledBlauAN = false; boolean ledGruenAN = false; void setup() { //beginn der seriellen Kommunikation mit 9600 baud Serial.begin(9600); //definieren das die digitalen Pins als AUSGAENGE dienen pinMode(led_rot, OUTPUT); pinMode(led_blau, OUTPUT); pinMode(led_gruen, OUTPUT); } void loop() { //wenn Daten an den seriellen Schnittstelle anliegen, dann... while (Serial.available() > 0) { //lesen der Daten int value = Serial.read(); //ausgeben der Daten auf der seriellen Schnittstelle //diese Daten sind im Seriellen Monitor der Arduino IDE zu sehen, sowie //werden diese an das Terminal zurück gesendet. //Es wird ein ASCII Zeichen empfangen, //48 = 0 //49 = 1 //50 = 2 Serial.println(value); switch (value) { case 48: //Umkehren des Status ledRotAN = !ledRotAN; //Wenn der Status ledRotAN = true ist dann setzte HIGH, ansonsten LOW digitalWrite(led_rot, ledRotAN ? HIGH : LOW); break; case 49: ledGruenAN = !ledGruenAN; digitalWrite(led_gruen, ledGruenAN ? HIGH : LOW); break; case 50: ledBlauAN = !ledBlauAN; digitalWrite(led_blau, ledBlauAN ? HIGH : LOW); break; } //eine kleine Pause von 2 Millisekunden delay(2); } }
Hallo,
ich würde gerne Wissen, ob und wie der Treiber für das CC2540 Bluetooth Modul installiert wurde. Denn bei mir ist eine verbindung nicht möglich allerdings lässt sich das BLE Nano mit dem obigen Code und der App via Bluetooth steuern, jedoch nicht mit anderen Bluetooth Apps.
Danke schon jetzt für die Hilfe
Hi,
für das Bluetooth Modul benötigst du keine separaten Treiber denn das ganze funktioniert über der seriellen Schnittstelle.
Gruß,
Stefan Draeger
Hallo Stefan,
danke für den ausführlichen Post.
Würde gerne den BLE Nano für ein Stromzählerprojekt verwenden.
Ist der BLE Nano beim Starten automatisch im AT-Command Mode?
Beim HC-05 muss ich das über einen Pin umschalten und die Baudrate ist dann 38400 für das Senden der AT-Befehle. Wie funktioniert das hier?
Danke für eine kurze Rückmeldung
Rainer
Hallo,
ich würde gerne mein BLE-Nano Board mit Hilfe der App “Bluetooth Electronics” steuern, abder es ist keine Verbindung möglich!
brauche ich einen Treiber oder muss ich mithilfe von AT befehlen Daten senden.
Ich bin Einsteiger in Arduino und in Datenübertragung via Bluetooth.
Danke für die Hilfe!!
Mein BLE-Nano von Keywish scheint nicht zum download mit der Arduino IDE geeignet. Als Board wähle ich “Arduino Nano 33 BLE”. Aber nach Kompilierung scheint IDE nach 2 USB Geräten zu suchen und bricht ab. Ein Reset auf dem Board geht auch leider nicht. Beim Anwählen eines klassischen Arduino Nano in der IDE kann ich ein Script downloaden. aber dann fehlt ja alle Wifi und BT Funktionen …
Was kann ich tun ? Geht nur das Original ?
Versuchs doch mal mit dem Board Arduino Nano mit ATmega 328P als Prozessor, bei mir klappt das ganz ohne Probleme.