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
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
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
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 (< 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.

Android App - BLE Testapp von Keywish
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
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
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
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

BLE-Nano, verbinden und LEDs steuern

 

7 Kommentare

  1. 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

    1. Hi,
      für das Bluetooth Modul benötigst du keine separaten Treiber denn das ganze funktioniert über der seriellen Schnittstelle.

      Gruß,

      Stefan Draeger

    2. 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

  2. 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!!

  3. 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 ?

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert