HM-10 Bluetooth 4.0 Funkmodul
Das HM-10 ist ein V4.0 BLE Bluetooth Kommunikationsmodul. Der Chipsatz ist ein
CC2541 von Texas Instruments.
Es eignet sich gut wenn man eine UART-Verbindung drahtlos erweitern oder Geräte per Smartphone kontrollieren möchte.
Das Modul wird auch häufig auf einer Adapterplatine montiert angeboten. Die Bezeichungen sind dabei nicht konsistent,
u.a. werden die Namen AT-09, MLT-BT05, HM-10, JDY-08 oder CC2541 verwendet.
Diese Adapter-Version ist recht praktisch zum Experimentieren. Die wichtigsten Anschlüsse des Moduls sind auf Kontaktstifte
herausgeführt und es ist ein 3V-Spannungsregler mit Verpolschutz enthalten. Aber Vorsicht, die Signalleitungen sind nicht
abgesichert und vertragen maximal 3.3V! Wenn man sie mit einem 5V-Prozessorsystem verbindet überleben sie das nur
zufällig. Hier muss unbedingt eine aktive Pegelanpassung oder ein Spannungsteiler verwendet werden.
Die Unterstützung des BLE-4.0 Standards bedeutet gleichzeitig das BT-2.0 classic nicht unterstützt wird.
Kontakt!
Die elektrische Verbindung des Moduls läuft über eine UART-Schnittstelle. Ein simpler USB-UART-Umsetzer (virtueller COM-PORT)
ist zur Verbindung mit einem PC ausreichend.
Wenn das Modul mit einer BLE-Gegenstelle gekoppelt ist werden die UART-Daten über Bluetooth verschickt oder empfangen. Dieser
Mode nennt sich "data mode".
Wenn keine Verbindung besteht dann ist das Modul im "command mode". In diesem Mode kann das Modul über
sog. "AT"-Befehle konfiguriert und gesteuert werden.
Mit einem Terminal-Programm kann man einen ersten Kontakt herstellen (9600,8,1,N) und einige Einstellungen auslesen.
AT -> OK, das Modul hat den Befehl erkannt und antwortet
AT+VERR? -> HMSoft V710, die Version der Firmware
AT+NAME? -> DSD TECH, der Name des Moduls im Netzwerk
AT+PASS? -> 123456, das akutelle Passwort
Eine Liste aller vorhandenen Befehle findet sich z.B. im
Blog von Martyn Currey.
Eine umfassende Anleitung zum Verbinden mit einem iPhone liegt auf
der Webseite von HANGAR42.
Ein allgemeineres Tutorial ist im
MarkerPortal.
AT+TYPE3 aktiviert die Passworteingabe beim Pairing. Das scheint beim iPhone aus Sicherheitsgründen
notwendig zu sein.
Eine passende iPhone-App ist z.B.
BLE Serial tiny.
Die Kopplung über Bluetooth mit einem PC ist in der Windows-Welt leider etwas schwierig und holperig weil die 4.0 BLE
Unterstützung nicht ab Werk vorhanden ist. Der im alten BT-2.0 Standard übliche virtuelle COM-Port ist für den 4.0 Standard
nicht verfügbar. Das ist bei Linux oder iOS besser gelösst.
Clone und Clone von Clonen
Der ursprüngliche Anbieter des HM-10 scheint
Jinan Huamao Technology
gewesen zu sein. Auf der Webseite ist die aktuellste Version der Firmware (V710) zu finden. Sie funktioniert am besten und
sollte bevorzugt werden.
Wie bei "solchen" Sachen üblich gibt es eine grosse Anzahl von Kopien und Nachbauten. Die sehen auf den ersten Blick identisch
aus, funktionieren aber nicht immer. Übersichten und Erklärungen sind beispielhaft auf den folgenden Webseiten zu finden:
Arik Yavilevich's Blog 1
Arik Yavilevich's Blog 2
Arik Yavilevich's Blog 3
Martyn Currey 1
Martyn Currey 2
PD5DJ.
Einige Module werden als "HM-10 kompatibel" oder auch unter dem Namen CC41 angeboten. Typischwerweise fehlt bei ihnen
der 32KHz-Quarz (manchmal ist der aber wohl im Chip enthalten). Es soll teilweise möglich sein auf diese Clone die neueste Huamao-Software
aufzuspielen.
Bei meinem Clone-Exemplar hatte ich kein Glück. Das Modul ist wahrscheinlich von der Firma
Bolutek
Das bestückte IC ist mit "CC2541" bestempelt. Aber ich habe den Verdacht dass es sich um ein CC2540
handelt weil keine Variante der CC2541-Firmware lauffähig war. Somit war kein Update auf eine aktuelle Version möglich.
Die Software meldete sich mit der Version "v6.3" und dem Namen "BT05". Mein zweites Exemplar, von einem "ordentlichen
Versender, war dann ein originales oder tatsächlich kompatibles Exemplar.
Wer die (vermutliche) Variante und den Status seines Moduls wissen möchte kann den folgenden
Arduino Sketch
ausprobieren. Er sendet verschiedene AT-Befehle und schätzt an Hand der Antworten um was es sich handelt.
Firmware Update
Es wird generell empfohlen vorab die aktuellste Firmware in das Modul zu flashen. Es fehlen sonst eventuell wichtige
Bluetooth Funktionen oder Security Features die in aktuellen Smartphones verwendet werden.
Das Update kann über 2 unterschiedliche Wege erfolgen:
- 1. Über den normalen UART-Port mit einem Bootloader
- 2. Über den Debug-Port mit einem speziellen Programmer
Firmware Update per Bootloader
Diese Methode funktioniert nur wenn die SW des Moduls bereits einen Bootloader enthält! Das ist üblicherweise der
Fall bei einem "originalen" HM-10 ab der SW-Version V508.
Huamao hat
dieses Dokument erstellt
in dem die notwendigen Schritte beschrieben werden. Alle benötigten Dateien und Programme sind in den Upgrade-Paketen enthalten, z.B. in
HM-10 HMSoft CC2541 V710 firmware upgrade file.
Im
Download-Bereich von Huamao
finden sich auch noch andere (ältere) Versionen und zugehörige Anleitungen.
An Hardware wird eine UART-Verbindung zum PC benötigt, genau wie weiter oben bereits beschrieben:
Zur Initialisierung des Updatevorgangs muss dem Modul das folgende AT-Kommando gesendet werden:
AT+SBLUP
Das Modul antwortet mit:
OK+SBLUP
Danach die Terminalverbindung beenden (den COM-Port freigeben) und das Updateprogramm HMSoft.exe
starten. Die neue Firmware und den COM-Port auswählen auswählen und die Übertragung mit "Load Image" starten.
Nach wenigen Minuten ist alles erledigt und das ist Modul einsatzbereit :)
Diese Methode scheint recht stabil zu funktionieren. Auf meinem Win10-System konnte ich bisher alle (3 Stück)
Module problemlos upgraden.
Im Netz zirkulieren diverse Anleitungen die den Vorgang detailliert beschreiben, z.B.
dieser Link. Und auch
alternative Lösungen die z.B. einen Arduino als USB-UART-Schnittstelle einsetzen. Auch hier sollte man daran denken das
der Arduino auf 5V-Basis läuft (das HM-10 arbeitet mit 3V) und im Zweifel mindestens einen 1K-Widerstand in die
Signalleitungen einschleifen (als poor-man's Pegelanpassung).
Firmware Update per Debug-Port und CCLoader
Diese Methode programmiert das Flash direkt über den Debug-Port. Dafür wird ein spezieller HW-Programmer benötigt wie er z.B.
im CC2541-Development-Kit von TI enthalten ist.
Erfreulicherweise hat sich aber die Firma "RedBearLab" diesem Problem gewidmet
und
den CCLoader entwickelt und im GitHub veröffentlicht. Die Idee dahinter:
Ein Arduino-Uno wird durch spezielle Software zu einem HW-Programmer für den CC2541 gemacht. Auf dem PC läuft eine dazu passende
Steuersoftware die über einen COM-Port alles kontrolliert und das Programmieren steuert.
Der Aufwand bei dieser Programmiermethode ist beträchtlich und enthält viele potentielle Fehlerquellen. Bereits
das Kontaktieren der 3 Signale des Debug-Ports erfordert viel Löterfahrung. Hinzu kommen noch 2 Programme die
"irgendwann" von "irgendwem" zusammengebaut wurden.. Aber es ist der einzige Weg für Module die keinen Bootloader
enthalten.
Die Firmware für den Arduino steht als
Arduino-Sketch
zur Verfügung. Entsprechend benötigt man eine installierte Arduino-Programmierumgebung um sie aufzuspielen. Im
Sketch steckt leider auch direkt ein Fehlerchen das zum ersten Frust führen kann. Der Arduino bleibt typischwerweise
wegen Timingproblemen in einer Endlosschleife hängen. Ein wenig zusätzlicher Code kann das aber schnell lösen:
Der zweite SW-Teil ist die Windows-Kontroll-Software. Sie liegt im GitHub im
Windows-Verzeichnis
(falls man einen Windows-PC verwendet..). Es ist eine sehr simple "Commandline"-Software der beim Aufrufen einige
Parameter übergeben werden müssen.
- COM-Port Nummer
- Dateiname der zu schreibenden Daten, muss zwingend im BIN-Format sein
- 0 oder 1, abhängig ob ein Leonardo-Board verwendet wird (1) oder nicht (0) (wegen abweichender Port-Belegung)
Der Aufruf erfolgt in einem Command-Fenster. Alle Dateien sollten im selben Verzeichnis liegen und am besten
verzichtet man auch auf Leerzeichen in den Dateinamen. Wenn alles korrekt läuft dann erhält man die folgende Ausgabe:
Der Update-Prozess wird auch in vielen Internet-Beiträgen erläutert. Hier 2 Beispiele:
Update Anleitung Link 1.
Update Anleitung Link 2.
Wie bereits erwähnt hatte ich mit meinen "Clones" kein Glück beim Update. Schlimmer noch, auch die ursprüngliche
Firmware ist weg und nirgends verfügbar. Die Module sind damit Elektronik-Schrott :/