Relais mit HM-10 (CC2541) ohne Arduino schalten

HM-10 (CC2541) hat digitale Ausgänge und die lassen sich per AT- Befehle schalten. Die AT -Befehle können nicht nur über Serielle Schnittstelle gesendet werden. Sondern Ferngesteuert über Bluetooth Verbindung. Somit ist es möglich nur mit einem  HM-10 (CC2541) Modul und einem Smartphone eine Steuerung aufzubauen. Ein Arduino oder zusätzliches Mikrocontroller ist dafür gar nicht nötig. Sobald Ihr Handy mit HM-10 Modul verbinden ist, Senden  Sie AT -Befehl vom BLE Terminaltprogramm und HM-10 Modul schaltet ein Pin hoch oder runter. Ich werde auch eine Beispiel APP mit app Inventor Ihnen vorstellen.

Es stehen 10 digitale Ports bei einem HM-10-Modul zu Verfügung. Die können Entweder als Inputs oder Outputs benutzt werden werden.

Die 8 Ports besitzen auch ADC und können die Spannungen messen. Spannung wird in Volt gemessen mit 2 Nachkommastellen (Befehl: “AT+ADC4?” Antwort “OK+ADC4:2.10” ).

HM-10 (CC2541) für Fernsteuerung über Bluetooth konfigurieren.
Voraussetzung ist ein Original HM-10 Modul zu besitzen. Die HM-10 Fälschungen unterscheiden sich vom Original HM-10 Modul nur durch Firmware und unterstützen nicht alle AT-Befehle. Manchen fehlt sogar der Bootlader, so das Aufspielen richtiger Firmware über Serielle Schnittstelle nicht möglich ist (Genau so ein Modul aus China habe ich erwischt, war dafür aber billig)

So erkennt man Original HM-10 Modul
AT+VERS? oder AT+VERR?  Antwort sollte lauten HMSoft V540

Dieses Tutorial bezieht sich auf HM-10 Modul mit Firmwareversion  V540

Wenn das HM-10 Modul (CC2541) andere Firmwareversion hat lesen Sie hier weiter.

HM-10 in Batteriebetrieb mit 0,4 mA Stromverbrauch

HM-10 in Batteriebetrieb ohne Arduino 0,4mA Stromverbrauch

Diese Betriebsart ist nur im Verbindung mit MODE1  und MODE2 möglich

Im Mode 1 Sind  Ports so konfiguriert
2 Digitale Outputs PIO2, PIO3
8 Digitale/Analoge Inputs PIO4 – PIOB
Digitale Outputs behalten ihren Zustand nach dem Trennung der Bluetooth  Verbindung. Und das ist auch ganz wichtig.

Im Mode 2 Sind  Ports so konfiguriert
10 Digitale Outputs PIO2, PIOB
Digitale Outputs verlieren ihren Zustand nach dem Trennung der Bluetooth  Verbindung.

So stellen wir den Stromsparmodus bei HM-10 Modul  ein:
AT+MODE1  // Ermöglicht AT befehle über Bluetooth zu empfangen
AT+PWRM0  // Stromsparmodus 0,4 mA unverbunden,  8 mA verbunden

Damit ist es möglich: Bluetooth Verbindung  aufbauen, Steuerbefehl senden und die Bluetooth Verbindung trennen. Bei diesem Betriebsart  nur der  Verbraucher (falls eingeschaltet) zieht den Strom + 0,4 mA  HM-10 Modul in sleep Mode (empfangsbereit).

Nachdem wir mit dem Befehl AT+MODE1 über serielle Schnittstelle HM-10 in Fernsteuerung Modus umgeschaltet haben, können wir zum Handy greifen. Und von da alles anderes erledigen. Ich habe das Programm “Serial Bluetooth Terminal“entdeckt, das ist die beste app meine Meinung nach zwischen Bluetooth Terminals.  Nicht vergessen die AT – Befehle werden ohne abschlusszeichen gesendet. Dazu bitte im “settings” die Einstellung “Send” “Newline” auf “None” umschalten.
AT-commands über Bluetooth Terminal HM-10

settings

Send

Newline

None

HM-10 Terminal Bluetooth


Jetzt können die PIO2- PIO3– Ausgänge
mit AT befehlen umgeschaltet werden.


AT+PIO21
AT+PIO30
AT+PIO31
AT+PIO20

Beispiel APP MIT App Inventor 2 für HM-10 Modul

HM-10 MIT App Inventor 2 BluetoothLE Extension Beispiel Ich habe einfache APP geschrieben, die 2 Ausgänge von dem HM-10 Modul schaltet.

Als Grundgerüst wurde APP vom Martyn Currey verwendet.

Das App hat 4 Buttons: BLE Geräte suchen, Verbinden mit ausgewähltem Gerät, GPIO’s PIO2 PIO3 Ein / Aus-schalten.app inventor Bluetooth Beispiel blocks BLE HM-10

Download App: HM_10_GPIO_Steuerung_1

Download App Inventor 2 Projekt: HM_10_GPIO_Steuerung_1_Projekt

Sieht simpel aus. Nicht wahr. Allerdings war es nicht so einfach wegen einem Fehler in der BluetoothLE Extension (Komponente). Ich habe mehrere Stunden gebraucht um das Problem zu finden. Das Problem liegt daran das BluetoothLE Extension die Strings falsch bearbeitet. Die Sendet Strings mit einem “00”-Zeichen am ende. Dieses Zeichen wird allen Strings angehängt. Arduinos haben damit kein Problem. Im Terminals wird “00”-Zeichen nicht angezeigt. Allerdings HM-10 Modul nimmt die AT-commands mit “00”-Zeichen am ende nicht an.

Die Lösung: AT-commands Byteweise zu senden. Aber die Funktion  String to Char -Array oder String to Byte-Array gibt es bei App Inventor nicht. Pointers? Nein, auch nicht gehört.
Sie Werden in Quellcode  das AT-Command AT+PIO21 so vorfinden:
Mit Inventor BLE String Char Byte ProblemIch habe die Zahlen aus ASCII Tabelle entnommen. 65 steht für “A”

Bei manchen Geräten  muss extra für diese App Standortfreigabe gemacht werden , sonst  läuft die Bluetooth suche nicht. Dazu gehen Sie im Smartphone zu Einstellungen / Apps, finden das Programm “HM-10 Bluetooth control 1”, scrollen Sie bis zum Berechtigungen und erteilen Standortermittlung( warum auch immer, ohne geht’s nicht).

String to Byte Array in APP  Inventor für BluetoothLE

Ich habe es doch geschafft aus einem String ein list (Array) mit Bytes zu bauen

APP Inventor String to Char / Byte Array

Passwortgeschütztes Paaren

Es gibt aber ein Sicherheitsproblem. Mein Nachbar kann auch sein Handy mit einem HM-10 verbinden. Und wenn er AT-Befehle kennt, kann er mein Licht einschalten. Leider unterstützt BluetoothLE Extension keine Authenticated pairing (pairing password).
Aber es gibt einen Ausweg. Es gibt Möglichkeit HM-10 Modul so zu konfigurieren, das er nur mit einem Gerät mit bestimmten MAC sich verbinden lässt.

So finden Sie die Bluetooth Adresse eigenes  Android Gerätes:

Einstellungen / Telefoninfo / Status Bluetooth-Adresse C8:D7:B0:9C:87:77

Mit dem AT-command AT+AD können Sie die MAC- Whitelist erstellen : AT+AD1C8D7B09C8777, AT+AD2[MAC], AT+AD3[MAC]

AT+ALLO1 bewirkt das die Verbindung nur mit zugelassenen MAC-Adressen (Max. 3 Adressen)  aufgebaut wird. [ Ich musste feststellen dass, mit meinem Handy (Galaxy A3) das nicht funktioniert, aber mit meinem Tablet
(Galaxy Tab 4 10.1) geht alles super]

HM-10 Stromverbrauch reduzieren

Auf dem HM-10 Modulen sind Spannungsregler verbaut. Leider kann man nicht erkennen welche das sind. Die meiste Spannungsregler verbrauchen etwas Strom, auch wenn die unbelastet sind. Ich kenne einen Spannungsregler der sehr sparsam ist und ist sehr gut geeignet für  andauernde batteriebetrieb. Falls Sie HM-10 Modul mit mehr als 3,3 Volt betreiben wollen empfehle ich Ihnen diesen Spannungsregler HT7333 Eigenverbrauch 0,04mA. Mindestspannung ist 2,5V + 0,09V = 2,59V Maximale Spannung 12V

Problem mit HM-10 Board mit 6 Pins aus China

Als ich versucht habe HM-10 Modul in Modus 2 zu betreiben, gab es ein Problem.  Auf einmal hat Modul 35mA verbraucht, auch ohne Bluetooth Verbindung. Nach etwas Recherche habe ich herausgefunden das PIO4 mit + 3,3 Volt Stromversorgung verbunden ist, die Schuld daran hatte die Grundplatine, die wahrscheinlich fehlerhafte Layout hat. In Mode 2 schalten die GPIO s als Ausgänge mit 0 Zustand und bauen somit direkt ein Kurzschluss von 3,3 Volt auf Masse über GPIO. Ein Wunder dass mein Modul das überlebt hat. Nachdem ich die kleine Platine etwas angehoben habe und Lötverbindung gelöst habe, hat alles richtig funktioniert. Ich denke es ist besser direkt die kleine Platine ohne Adapter zu kaufen oder Adapter separat zu kaufen und überprüfen ob da alles okay ist.