Microcontroller BLE-Nano von Keywish
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.
Microcontroller BLE-Nano von Keywish 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 (2KB durch den Bootloader reserviert) SRAM 2KB 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) 48mm x 18mm Gewicht 7g 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.
Aufbau der Schaltung - BLE-Nano mit 3 LEDs
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.
Eingabe von AT Befehlen über den seriellen Monitor der Arduino IDE 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 ( 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.
Android App - BLE Testapp von Keywish 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.
BLE-Nano, test der Reichweite außerhalb vom 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
BLE-Nano , test der Reichweite 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).
BLE-Nano, offenes Gelände Im offenen, nicht bebautem Gelände konnte eine Reichweite von 32m hergestellt werden. Damit kommt man ziemlich nah an den maximalen Wert aus der Spezifikation von 40m.
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); } } Video  Read the full article














