Über den Beitrag
Über Bluetooth, Arduino und die HC-05 und HC-06 Bluetooth Module ist schon ausgesprochen viel geschrieben worden. Trotzdem hat es mich ziemlich viel Zeit gekostet mir diese Bauteile voll zu erschließen, da die Informationen, die ich benötigt habe, z. T. in vielen verschiedenen Beiträgen verteilt waren. Hier nun der Versuch alles an einem Ort zu vereinigen. Folgende Themen möchte ich in diesem Beitrag behandeln:
- Bluetooth vs. 433 MHz Funk
- gängige Bluetooth Module
- Schaltplan zum Ansteuern der Module
- Einrichten der Bluetooth Module mittels AT Kommandos über:
- Arduino IDE
- Putty
- DSD Tech Tool
- Pairing von Bluetooth Modulen miteinander
- Stromverbrauch und Reichweite
Welche Möglichkeiten sich über das Smartphone ergeben, werde ich wegen des Umfangs dieses Themas in einem separaten Beitrag später behandeln.
Bluetooth vs. 433 MHz Funk
Für die kabellose Übertragung gibt es eine Reihe verschiedener Techniken. Neben Bluetooth kommen vor allem W-LAN, Infrarot und die (433 MHz) Funktechnik in Frage. Für die Kommunikation von Arduino zu Arduino wird man am ehesten zur 433 MHz Technik oder Bluetooth greifen. Dabei hat die 433 MHz Technik den Vorteil einer höheren Reichweite und die Module sind etwas günstiger zu haben. Es gibt durchaus auch Bluetooth Technik mit höherer Reichweite, aber die Standard Module sind eher auf Entfernungen von 10-20 Metern ausgelegt. Die Vorteile der Bluetooth Technik sind aus meiner Sicht die exklusiveren Verbindungen (d.h. man kann die Kopplung auf ein bestimmtes Modul beschränken) und vor allem die Möglichkeit mit Smartphones zu kommunizieren. Wer sich mehr mit den Details der Bluetooth Technik an sich beschäftigen möchte, der kann das z.B. auf Wikipedia tun.
Gängige Bluetooth Module
In der Welt der Microcontroller haben sich vor allem die HC-05 und HC-06 Bluetooth Module etabliert. Sie sind für ca. 8 Euro bei Amazon oder Online Elektronikshops erhältlich. Neben HC-05 und HC-06 trifft man noch auf HC-08 und HM-10 Module. Letztere sind auch für IOS Betriebssysteme geeignet. Die HC-08 Module, die ich mir mal gekauft habe, konnte ich zwar über AT-Kommandos programmieren, aber weder mit meinem Android Smartphone noch untereinander koppeln. Insofern kann ich diese Teile nach meiner Erfahrung nicht empfehlen.
Die hier behandelten HC-05 und HC-06 Bluetooth Module (siehe Bild unten) sind im Grunde genommen Module von Modulen. Das jeweilige „Tochtermodul“ ist das grüne Teil auf dem blauen „Muttermodul“. Sucht man für HC-05 und HC-06 Bluetooth Module nach Datenblättern, beziehen sich diese meistens auf die „Tochtermodule“. Die Muttermodule nehmen einem Einiges an Verkabelungsarbeit ab, aber auch an Flexibilität.
Es gibt nicht das eine HC-05 oder HC-06 Modul, sondern verschiedene Versionen, die sich in der Handhabung leicht unterscheiden können. In einigen Beiträgen werden Module beschrieben, die noch einen „KEY“ Pin haben, mir sind diese aber noch nicht zwischen die Finger gekommen.
HC-05 und HC-06 Bluetooth Module programmieren
Die Schaltung
Bevor man HC-05 und HC-06 Bluetooth Module für die Kommunikation verwenden kann, muss man gegebenenfalls einige Einstellungen über die sogenannten „AT-Befehle“ vornehmen. Dafür gibt es unterschiedliche Methoden. Zunächst möchte ich zeigen wie man das mittels Arduino bewerkstelligt.
3.3 Volt Beschränkung am RX-Pin
Die HC-05 und HC-06 Bluetooth Module werden seriell über ihren RX- und TX-Pin angesprochen. Die Stromversorgung der Module kann 3.6 bis 6 Volt betragen. Der RX-Pin hingegen ist eigentlich nur für 3.3 Volt ausgelegt. In meiner Schaltung weiter unten habe ich das mit einem Spannungsteiler gelöst. Alternativ kann man auch einen Level Konverter nehmen (gibt’s für < 1 Euro). Oder man nimmt einen Arduino Due oder arbeitet mit den „nackten“ Microcontrollern und lässt alles mit 3.3 Volt laufen (braucht dann aber noch > 3.6 V an VCC). Aber ganz ehrlich, normalerweise ignoriere ich die Forderung einfach und arbeite mit 5 Volt. Und mir ist noch kein Modul kaputtgegangen.
Die Schaltung ist für die HC-05 und HC-06 Bluetooth Module identisch. Der „State-“ und der „Enable-Pin“ am HC -05 bleiben unangeschlossen. Als Beispiel habe ich hier einen Arduino Nano verwendet. Pin 10 und Pin 11 des Arduinos sind mittels Software Serial als RX bzw. TX eingestellt.
Einstellung des HC-06 Moduls mittels AT-Kommandos
Vorbereitung
Ich beginne mit dem HC-06, da dieses etwas leichter einzustellen ist als das HC-05 Modul. Zunächst wird dazu der folgende Sketch auf den Arduino hochgeladen.
#include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); void setup() { Serial.begin(9600); Serial.println("Los geht's"); mySerial.begin(9600); //38400 für hc-05 } void loop() { // run over and over if (mySerial.available()) { Serial.write(mySerial.read()); } if (Serial.available()) { mySerial.write(Serial.read()); } }
Spätestens dann wird das HC-06 Modul entsprechend der oben abgebildeten Schaltung mit dem Arduino verbunden. Wenn das Modul mit Spannung versorgt wird, sollte eine rote LED relativ hektisch blinken (mehrfach pro Sekunde). Es gibt Versionen, die zusätzlich eine blaue LED haben (z.B hc01.comV2.0) und eben diejenigen ohne (z.B. linvorV1.8).
Dann kann man über den seriellen Monitor die Einstellungen an den Modulen mit den AT-Kommandos vornehmen. Wichtig ist, dass am seriellen Monitor die Baudrate 9600 und „Kein Zeilenende“ eingestellt ist. Außerdem ist zu beachten, dass das HC-06 Modul im gepairten Zustand nicht mit AT-Befehlen ansprechbar ist, also wenn eine Bluetooth Verbindung besteht.
AT-Kommandos für den HC-06
Als ersten Test kann man dem Modul ein einfaches „AT“ senden. Als Antwort erhält man ein freundliches „OK“. Sendet man weitere „AT“-Kommandos so erkennt man, dass alle Antworten ohne Leerzeichen oder Zeilensprung aneinandergehängt werden.
Dann möchte man vielleicht den Namen des Moduls ändern. Soll es zum Beispiel Karl-Heinz heißen, so sendet man ein
AT+NAMEKarl-Heinz
–> Antwort: OKsetname
Für die Änderung des Pins sendet man ein
AT+PIN<dein vierstelliger PIN>
–> Antwort: OKsetPIN
Voreingestellt ist eine Baudrate (Datenübertragungsrate) von 9600. Will man diese ändern, kann man das über den folgenden Schlüssel ändern:
Zur Einstellung einer Baudrate von beispielsweise 9600 lautet der Befehl:
AT+BAUD4
–> Antwort: OK9600
Aber VORSICHT – es könnte sein, dass man nicht mehr zurück kann wenn man eine zu hohe Baudrate wählt. So kann z. B. ein PC nur eine Baudrate von maximal 115200 liefern. Hat man eine höhere Baudrate auf HC-06 eingestellt, kann man dem guten Stück nicht mehr mitteilen, dass man eine niedrigere Rate möchte. Einen Hardware Reset gibt es auch nicht. Das kann das HC-05 Modul besser.
Eine wichtige Einstellung ist die Rolle des Moduls, nämlich entweder Master („M“) oder Slave („S“). Hier die Einstellung als Slave:
AT+ROLE=S
–> Antwort: OK+ROLE:S
Wer die blaue LED aktivieren- oder deaktivieren möchte, kann das über das folgende Kommando tun:
AT+LED1
–> Antwort: LED ON / AT+LED0
–> Antwort: LED OFF
Die Version seines HC-06 Moduls erhält man mit dem Befehl:
AT+VERSION
–> Antwort: hc01.comV2.0 (Beispiel)
Schließlich kann man noch – auch wenn das die meisten nicht benötigen werden – das Paritätsbit einstellen. Das ist entweder „N“ für no check, „O“ für ODD (ungerade) oder „E“ für EVEN (gerade), z. B.:
AT+PN
–> Antwort: OK None
Einstellung des HC-05 Moduls mittels AT-Kommandos
Vorbereitung
Das HC-05 Modul wird entsprechend der oben abgebildeten Schaltung mit dem Arduino verbunden. Der Sketch für die Kommunikation mittels AT Kommandos muss leicht abgeändert werden, da der HC-05 im AT-Modus immer die Baudrate 38400 hat. Entsprechend ist in Zeile 7 die 9600 durch eine 38400 zu ersetzen. Der Vorteil ggü. dem HC-06 ist, dass man sich nicht durch eine unglückliche Baudratenwahl ausschließen kann. Ein weiterer Unterschied ist, dass der HC-05 erst vom Pairingmodus in den AT-Modus gebracht werden muss, indem man die Stromversorgung trennt und den kleinen Taster oberhalb der Pinleiste gedrückt hält während man die Stromversorgung wieder herstellt. Dann kann man den Taster loslassen. Den erfolgreichen Wechsel in den AT-Modus erkennt man daran, dass aus dem hektischen Blinken der roten LED ein langsames Blinken im 2 Sekundentakt wird.
Zweiter AT-Modus
Aber leider ist die Sache noch ein wenig komplizierter, da es zwei AT-Modi gibt. Es gibt AT-Kommandos, die man nur im zweiten Modus ausführen kann. Dazu gehört z.B. das Kommando für die Abfrage des Namens. Den zweiten Modus erreicht man, indem man den Taster dauerhaft gedrückt hält – was natürlich denkbar unhandlich ist. Alternativ legt man HIGH an den PIN 34 des Tochtermoduls. Dazu kann man ein Kabel anlöten (s. u.) oder man benutzt eine Miniklemme.
Ich habe auch HC-05 Module bei denen man in den zweiten AT Modus geht, wenn man den Pin „EN“ auf HIGH setzt. Bei anderen HC-05 Modulen bringt das hingegen nichts. Dort wiederum kann der Pin „EN“ genutzt werden um das Modul auszuschalten indem man ihn auf „LOW“ setzt. Ziemliches Durcheinander – ich kann nichts dafür! Probiert es aus mit Euren Modulen. Die gute Nachricht ist, dass man die Befehle aus dem zweiten AT-Modus normalerweise nicht vermisst. Den Namen des Moduls beispielsweise kann man auch im ersten Modus ändern, man kann ihn nur nicht abfragen.
Umsetzung
Hat man alles verkabelt, den Sketch hochgeladen und den HC-05 in den AT-Modus gebracht, kann man ihn über den seriellen Monitor mit AT-Kommandos programmieren. Dabei stellt man dort die Baudrate auf 9600 (nicht 38400!) und „Sowohl NL als auch CR“ ein. Zum Testen kann man wieder ein „AT“ senden und erhält wieder ein freundliches „OK“ als Antwort. Im Gegensatz zum HC-06 wird jede Antwort in einer neuen Zeile ausgegeben. Außerdem ist der Befehlssatz größer, die Schreibweise etwas anders und der HC-05 ist gesprächiger. So kann man alle Einstellungen auch abfragen. Ein gewisser Komfort sind auch die Error Codes, die bei fehlerhaften Eingaben zurückgemeldet werden. Eine Liste der Error Codes findet sich weiter unten.
AT-Kommandos für das HC-05 Modul
Kommen wir zu den wichtigsten AT-Kommandos. Der Pin heißt hier Password und wird wie folgt eingestellt:
AT+PSWD=<deine 4stellige PIN>
–> Antwort: OK
Da die Antwort außer bei Abfragen immer „OK“ lautet, lasse ich diese Angabe von nun an weg. Der Pin wird folgendermaßen abgefragt:
AT+PSWD?
–> Antwort: +PSWD:<deine 4stellige Pin>
Die Rolle (Master=1 oder Slave=0 oder Slave-Loop=2) des Moduls stellt man so ein:
AT+ROLE=<0, 1 oder 2>
–> Abfrage: AT+ROLE?
Im Slave-Loop Modus werden alle per Bluetooth empfangenen Daten wieder zurückgeschickt.
Die Baudrate wird zusammen mit dem Paritätsbit und dem Stoppbit eingestellt, die ich beide auf „0“ lassen würde. Das Kommando für eine Baudrate von 38400 sieht dann so aus:
AT+UART=38400,0,0
–> Abfrage: AT+UART?
Beim HC-05 gibt es verschiedene Connection Modes (CMODEs). Im CMODE 0 (Default) koppelt sich das Modul nur dem Bluetooth Gerät das die BIND Bluetooth Adresse besitzt (Erklärung folgt). Im CMODE 1 hingegen koppelt sich der HC-05 mit jedem verfügbaren Gerät, vorausgesetzt (unter anderem) der HC-05 ist als Master und das Partnergerät als Slave eingestellt.
AT+CMODE=<0 oder 1>
–> Abfrage: AT+CMODE?
Ist die BIND Adresse beispielsweise 12:23:34:45:56:67 bzw. 1223:34:4556 in der NAP:UAP:LAP (non-significant, upper, lower address part) Schreibweise, erhält man bei Abfrage:
AT+BIND?
–> Antwort: +BIND:1223:34:455667
Eingestellt werden kann die BIND Adresse folgermaßen:
AT+BIND=1223,34,455667
Die eigene Adresse wird abgefragt mit:
AT+ADDR?
Zum Schluss noch ein sehr sinnvolles Kommando, nämlich für das Zurücksetzen des Moduls auf Werkseinstellungen:
AT+ORGL
Weitere AT-Kommandos und Fehlercodes findet Ihr hier:
Und eine gute Beschreibung zu den Kommandos findet man hier.
Alternative Methoden zum Einstellen der HC-05 und HC-06 Bluetooth Module
Mit Arduino ohne SoftwareSerial Sketch
Dazu den BareMinimum Sketch aus den Beispielen hochladen, RX am Modul an RX (Pin 0) am Arduino, TX am Modul an TX (Pin 1) am Arduino. Dabei ist im Serial Monitor für den HC-06 die eingestellte Baudrate zu wählen, beim HC-05 immer die Baudrate 38400. Der HC-05 ist natürlich auch hier in den AT-Modus zu bringen. Das schreibe ich jetzt nicht mehr jedesmal dazu.
Ohne Arduino, mit Arduino IDE und USB-zu-TTL Adapter
USB-zu-TTL Adapter sind für wenige Euros erhältlich. Nimmt man ein Modell bei dem man die Spannung auf 3.3 Volt regeln kann, so braucht man auch keinen Spannungsteiler o.ä. mehr am RX Eingang.
Hier ist die Verkabelung wieder „über Kreuz“, also RX an TX und TX an RX. Dann den Adapter an den PC anschließen und den entsprechenden Port in der Arduino IDE wählen. Die richtige Baudrate und das richtige „Zeilenmanagement“ einstellen und das war’s. Einen Sketch braucht man nicht.
Mit USB-zu-TTL Adapter und Putty
Wenn man die beliebte Terminal Software Putty verwendet, muss man zunächst die richtigen Einstellungen vornehmen.
Beim HC-05 wird die Antwort permanent ausgegeben, was sich mit einem „Enter“ stoppen lässt.
Es gibt natürlich auch viele andere, ähnliche Programme wie Putty. Ich habe z.B. USR-TCP232 Test probiert und das funktionierte auch.
Mit USB-zu-TTL Adapter und dem DSD TECH Tool
Mit dem DSD-TECH Tool lassen sich nur wenige Einstellungen vornehmen, aber dafür muss man sich nicht mit AT-Kommandos herumschlagen.
HC-05 und HC-06 Bluetooth Module miteinander pairen
Im letzten großen Abschnitt will ich zeigen, wie man die Bluetooth Module miteinander koppelt (paired) um z.B. zwei Arduinos miteinander kommunizieren zu lassen. Ich habe bei den folgenden Versuchen ein Modul mit einem Arduino UNO angesteuert und das andere mit einem Arduino Nano. Die Schaltung ist prinzipiell dieselbe wie die oben abgebildete.
Noch interessanter ist eigentlich, dass man über Bluetooth seinen Arduino auch bequem mit einem Smartphones ansprechen kann. Da das aber diesen ohnehin schon langen Beitrag endgültig sprengen würde, hebe ich mir das Thema für einen separaten Beitrag auf.
HC-06 mit HC-06 pairen
HC-06 Module zu pairen ist denkbar einfach. Man muss lediglich das eine Modul als Master und das andere als Slave einstellen und beide Module müssen denselben PIN haben. Und beide Module müssen natürlich dieselbe Baudrate eingestellt haben. Nachdem man die Einstellungen vorgenommen hat, muss man die Module evtl. noch einmal kurz vom Strom trennen. Dann aber sollten sie innerhalb weniger Sekunden pairen, was man daran erkennt, dass die rote und die blaue LED (sofern letztere vorhanden ist) auf den Modulen durchgehend leuchten.
„Ping-Pong“ Testsketch
Mit dem folgenden Sketch kann man die Verbindung testen und „Ping-Pong“ spielen. Im Setup wird ein Gruß losgeschickt. Je nachdem, welcher Arduino zuerst gestartet wurde, läuft der eine Gruß ins Leere, der andere wird von der Gegenseite empfangen. Dieses hier ist die Version für den UNO. Auf den Nano spielt man dann eine Version mit einem Gruß an den UNO. Und dann geht es munter hin und her. Wird eine Nachricht empfangen, so wird diese am seriellen Monitor ausgegeben und die eigene Grußnachricht verschickt.
#include <SoftwareSerial.h> SoftwareSerial hc_06(10, 11); String sendMsg = "Hallo HC-06 am Nano"; String receiveMsg = ""; void setup() { Serial.begin(9600); Serial.println("Los geht's"); hc_06.begin(9600); hc_06.print(sendMsg); } void loop() { if (hc_06.available()) { receiveMsg = hc_06.readString(); Serial.println(receiveMsg); delay(1000); hc_06.print(sendMsg); } }
HC-05 mit HC-05 pairen
Zwei HC-05 Module zu pairen ist ein bisschen komplizierter, da es verschiedene Möglichkeiten gibt. Beide Module müssen natürlich wieder dieselbe Baudrate eingestellt haben. Zudem sollten beide Module denselben PIN (hier: PSWD) haben. Ich habe das Pairing teilweise auch ohne denselben PIN hinbekommen, allerdings kann ich nicht mit Bestimmtheit sagen, welchen Regeln das folgte. Die Einstellungen werden im AT-Modus vorgenommen, das Pairing erfolgt im Pairing Modus. Wenn man das Modul mit Spannung versorgt ist man automatisch im Pairing Modus.
Pairing im Connection Mode 1
HC-05 Modul Nr. 1:
- CMODE: egal, ROLE=0 (Slave), PSWD wie Modul Nr. 2
HC-05 Modul Nr. 2:
- CMODE: 1, ROLE=1 (Master), PSWD wie Modul Nr. 1
Hat man diese Einstellungen gewählt und bringt beide Module in den Pairing Modus, sollten nach ein paar Sekunden die LEDs beider Module im Gleichtakt blinken. Sie tun das ca. alle zwei Sekunden mit einem kurzen Doppelblinken. Dann kann man die Verbindung mit dem o. a. Sketch testen.
Pairing im Connection Mode 0
HC-05 Modul Nr. 1:
- CMODE: egal, ROLE=0 (Slave), PSWD wie Modul Nr. 2
HC-05 Modul Nr. 2:
- CMODE: 0, ROLE=1 (Master), PSWD wie Modul Nr. 1
Im Connection Mode 0 muss das Master Modul als BIND Adresse die Adresse des Slave Moduls haben. Es gibt zwei Möglichkeiten das zu bewerkstelligen.
- Man liest die Adresse des Slave Moduls aus und trägt sie im Master Modul ein (so wie weiter oben beschrieben).
- Man paired die Module zunächst im Connection Mode 1. Dadurch wird automatisch die richtige BIND Adresse eingetragen, denn das ist automatisch die letzte verbundene Adresse. Dann wechselt man im Master Modul auf Connection Mode 0 und friert damit die BIND Adresse sozusagen ein.
Durch den Connection Mode 0 kann man sicher gehen, dass sich das Master Modul wirklich nur mit einem bestimmten Modul verbindet.
HC-05 mit HC-06 pairen
Das ist – Gott sei Dank – wieder einfach. Man muss nur sehr aufpassen, dass man nicht durcheinander kommt mit den verschiedenen AT-Befehlen, Baud Raten (sie müssen natürlich abgestimmt sein), usw.
HC-06 Modul:
- ROLE=S (Slave), PIN wie PSWD des HC-05
HC-05 Modul:
- CMODE: 1, ROLE=1 (Master), PSWD wie Modul Nr. 1
Stromverbrauch und Reichweite
Ich habe sowohl für den HC-05 als auch für den HC-06 einen Stromverbrauch von ca. 4 mA gemessen. Dieser ging beim Senden kurzfristig auf 40 mA hoch. Diese Bluetooth Module sind gut geeignet für die Datenübertragung innerhalb eines Raums. Im Nachbarzimmer hatte ich bei offener Tür nur noch teilweise Empfang. Ich würde schätzen, dass auf freier Strecke 15, vielleicht 20 m möglich sind, aber nicht mehr.
Hallo zusammen,
kann mir jemand weiterhelfen!
Ich bin gerade dabei mit dem HC05 zu arbeiten.
Hier möchte ich lediglich die Baudrate verändern. Würde immer schnell und einfach mit dem TTL und dem DSD-TECH Tool gehen.
Unter dem Link des DSD-TECH Tool kann man aber leider kein Tool finden!
Wo kann ich das downloaden?
VG
Jens
Hallo Jens,
leider ändern sich einige Links mit der Zeit und ich kann bei 120 Beiträgen nicht alle regelmäßig überprüfen. Deswegen bin ich dankbar für jeden Hinweis. Das Tool gibt es immer noch, und ich werde den Link aktualisieren.
Du brauchst allerdings auch nur DSD-TECT Tool in Google einzugeben und bekommst als ersten Treffer das DSD-TECH Tool. 🙂
https://www.deshide.com/News-detail.html?newsid=266596&_t=1663300315
VG, Wolfgang
Grüße dich.
Kein Problem. Das iss neunmal so daß sich das von Zeit zu Zeit ändert…..
Danke dir aber für den neuen Link.
VG Jens
Hallo Wolfgang,
nach über einem Jahr melde ich mich wieder. Nun, das Leben zwang mich leider zu einer „Pause“,
ich recht lange krank war und daher nichts machen konnte.
Du bist hoffentlich wohl auf?
Ich hatte Dir damals zu dem Beitrag „DCF-77 Funkuhr“ geschrieben. Vielleicht erinnerst Du Dich.
Nun habe ich die Funkuhr erstmal auf Eis gelegt, denn das von mir verwendete OLED Display
ist nicht gut, da es schnell an Leuchtkraft verliert. Evtl. wird aus der Uhr mal eine „Berlin Uhr“…
Heute geht es um das HC-05 Bluetooth Modul.
Seit geschlagenen 5 Tagen sitze ich daran, bekam aber erst jetzt eben einen Erfolg.
Nachdem ich das Modul umbenennen, eine neue PIN vergeben, u.s.w. konnte,
wollte die Verbindung mit „Softserial“ zu einem Arduino Nano Clon partout nicht
funktionieren.
Im AT Modus hat das Modul, wie Du es sagst, 38400 Baud.
Der Nano steht auf 9600 Baud.
Im Normalbetrieb hingegen deutete alles immer auf „falsche Baudrate“ hin.
Im Bluetoooth Modus MUSS (!) man, meinen Tests nach, zwingend 9600 Baud benutzen.
Ich habe versucht, auch 38400 Baud (und andere) einzustellen (z.B. AT+BAUD=6), aber damit
konnte der Arduino scheinbar nichts anfengen, denn ich bekam nur „Hiroglyphen“.
Altägyptisch sieht zwar schön aus, ist aber zum Steuern denkbar „ungeeignet“.
Das lässt mich vermuten, dass das Modul im BT Modus IMMER FIX 9600 Baud macht oder
AT+BAUD=xxx bei meinem Mudul nicht funktioniert (Ich bekomme jedcoh „OK“ anzegeigt).
Vielleicht habe ich in Deinen Beiträgen zum Thema „Bluetooth“ auch etwas übersehen…
Auf jeden Fall möchte ich noch anmerken, dass der „State“ Ausgag eine LED antreiben kann,
die bei erfolgreicher Bluetooth Verbindung brennt.
Der Hinweis zum „MIT APP Inventor“ ist hervorragend. APPs zu erstellen ist damit um einiges
einfacher, als mit „Android Studio“, kann aber dafür auch nicht ganz so viel. Das Editirenen in
(fast) Echtzeit macht wirklich Spaß. Man kommt auf alle Fälle sehr schnell zum Ziel.
Danke für diesen Tipp.
Ich habe aerdings noch nicht herausgefunden, wie man eine abreißende BT Verbindung
erkennenkann, bzw. wenn das Handy wieder in Reichweite ist. Damit würde ich nämlich
gerne etwas schalten.
Auch wäre die BT Auswahlliste ohne MAC Adressen etws übersichtlicher. Die Namen
würde mir völlig reichen. Weißt Du, wie man das macht?
Liebe Grüße,
Andreas.
Hallo, es tut mir leid zu hören, dass es dir nicht gut ging. Schön, dass du wieder „an Bord“ bist! Die Gesundheit lernt man erst so richtig zu schätzen, wenn man krank ist. Und danke der Nachfrage, mir geht es Gott sei Dank gut.
Wg. der Baudrate: beim HC-05 verstellt man sie mit AT+UART. Vielleicht ist das das Problem? Ansonsten muss man noch drauf achten, dass die Serial-Baudrate zum seriellen Monitor passt und die Baudrate von SoftwareSerial zur Einstellung im HC-05. Vielleicht schaust du noch einmal.
Wie man die MAC-Adressen nicht anzeigt kann ich dir leider nicht sagen.
Und wegen des Verbindungsstatus: es ist einfach, das Abreißen oder die Wiederherstellung auf der Arduinoseite festzustellen. Dazu kannst du ja das State-Signal auswerten. Wie man das auf der Smartphoneseite mir App-Inventor auswertet, kann ich dir nicht sagen. Die andere Herausforderung ist, das automatische Wiederverbinden auf der Smartphoneseite sicherzustellen. Vielleicht geht das mit der App „Bluetooth Auto Connect“.
Du kannst dich ja mal melden, ob du es hinbekommen hast.
Bleib gesund!
VG, Wolfgang
> Die Gesundheit lernt man erst so richtig zu schätzen, wenn man krank ist.
Das kann ich nur bestätigen.
> Wg. der Baudrate: beim HC-05>verstellt man sie mit AT+UART.
Das schau ich mir nochmal genauer an. Ich dachte, das sei „AT-BAUD“.
> Wie man die MAC-Adressen nicht anzeigt kann ich dir leider nicht sagen.
Ich versuche jetzt gerade die Liste so zu bauen, dass MAC Adressen (Also das Muster) heruasgefiltert wird. Mal sehen, ob es gelingt.
> Und wegen des Verbindungsstatus: es ist einfach, das Abreißen oder die
> Wiederherstellung auf der Arduinoseite festzustellen.
Hahahaaa 2 Dumme, ein Gedanke. Das kam mir auch dann in den Sinn.
So werde ich es probieren.
> Wie man das auf der Smartphoneseite mir App-Inventor auswertet…
Ich werde mal versuchen, solange STATE High ist, alle n mS ein „*“ zu senden.
Auf dem Handy lasse ich nen Timer laufen, der, wenn ein „*“ kommt, einen Zahler zurücksetzt. Läuft der Zähler über, besteht keine Verbindung mehr.
So weit die Therorie…
Wie es praktich klappt, schreibe ich dann hier.
> Vielleicht geht das mit der App „Bluetooth Auto Connect“.
Lieben Danke für den Tipp. Diese App kannte ich bislang noch nicht.
> Du kannst dich ja mal melden, ob du es hinbekommen hast.
Das werde ich machen.
BTW noch eine Frage:
Weißt Du, ob/wie man die zuletzt verbundene BT Adresse speichert (für eine Auto Reconnect Funktion)? Ich habe einige APP Inventor Beispiele getestet, die das machen sollen, was aber bislang erfolglos war.
> Bleib gesund!
Dito, Du ebenso.
Andreas.
Sehr klar!
Hallöchen, halloooo,
das mit der Baudrate war tatsä
chlich mein Verständnisfehler. Inzwischen läuft das Modul zuverlässig am Arduino und auch die Verbindung zum Handy geht erstklassig bis zu 115200 Baud. 115200 Baud führt jedoch bei mir auf dem Tisch manchmal zu Fehlern.
Meine Frage wäre jetzt, weil ich „Master/Slave“ noch nicht so ganz verstehe, wie ich mit 2 Handys zugleich auf den Arduino zugreifen kann?
Meine Idee ist, das HC-05 zum „MASTER“ zu machen, um dann gleichzeitig mit 2 Handys darauf zugreifen zu können.
Ich habe es mal auf „MASTER“ gesetzt und konnte mich dann nicht mehr mit meinem Handy verbinden?! Stutz…
Muss ich vielleicht „AT+CMODE“ auf 1 setzen oder mit „BIND“ was machen?
Daher stelle ich Dir diese Frage, bevor ich totalen Schrott mache (und mir diesen Blödsinn dann evtl. auch noch merke).
Das ganze soll eine Lichtsteuerung werden, die die Anwesenheit mehrerer mit dem HC-05 gepairter Handys erkennt, sich dann automatisch verbindet (falls nötig) und das Licht einschaltet.
Also „Wenn Handy(s) im BT-Range sind, dann Licht an“ und „wenn kein Handy im Range, Licht aus“. Dazu muss ich nicht einmal eine Verbindung aufbauen und etwas senden/empfangen, sondern zyklisch die gepairten Geräte „abklappern“. So jedenfalls meine Idee.
Nun las ich aber im Netz z.T. für mich widersprüchliche Angaben, die besagten, dass das gehen nur soll, wenn die Handys „Dual Audio“ könnten.
Meine Handys können das wohl, denn ich kann z.B. mehrere BT Kopfhörer mit einem Handy verbinden und mit mehreren Leuten den Ton des Handys hören, oder umgekehrt.
Andere Stimmen sagten wieder, dass sich das HC-05 gleichzeitig nur mit einem Gerät verbinden kann. Da blicke ich nicht so ganz durch.
Vielleicht kannst Du ja etwas Licht ins Dunkle bringen (wie treffend).
Es grüßt freundlich
Andreas
Hallo Andreas,
wie man ein Smartphone als BT Slave konfiguriert und ob das überhaupt geht, kann ich dir nicht sagen. Ich denke eher nicht, lasse mich aber gerne eines Besseren belehren, wenn jemand anderes damit entsprechende Erfahrung hat. Spontan kann ich dir also keine Lösung anbieten. Vielleicht fällt mir ja noch etwas ein, wenn ich eine Nacht darüber schlafe.
VG, Wolfgang
Hallo Wolfgang,
Vorab danke ich Dir herzlich für die immer wieder sehr gelungene und informative Beiträge.
Ich habe mit einem ESP32 an der Bluetooth Funktion experimentiert und musste feststellen, dass ein minimaler Sketch rund 80% vom Speicher einnimmt. Wenn ich jedoch den gleichen Sketch (mit den nötigen Anpassungen) mit einem Arduino 328 und HC-05 Modul mache, dann werden keine 15% vom Speicher benötigt. Irgendwie geht mir da die Rechnung nicht auf, da der ESP32 mehr Speicher für den Sketch zur Verfügung hätte.
Ist Dir das Problem auch bekannt? Habe im Internet nichts vernünftiges gefunden.
Liebe Grüsse aus der Zentralschweiz
Matthias
Hallo Matthias,
ja, es ist schon erstaunlich, was die BluetoothSerial Bibliothek an Speicher belegt. Wenn man googelt, findet man an einigen Stellen etwas dazu, z.B. hier:
https://forum.arduino.cc/t/why-does-this-little-program-occupy-80-storage-in-my-esp32-any-solutions/1189291
In Kurzform: Bluetooth ist ziemlich komplex und braucht halt viel Speicher. Bei Verwendung der BT-Module ist das alles auf die Module ausgelagert. Du verwendest in dem Fall ja nur SoftwareSerial.
VG, Wolfgang
Hallo Wolfgang.
Vielen Dank für die Rückmeldung. So sehe ich mich gezwungen, ein HC-05 Modul zu verwenden und die Bluetooth Funktion vom ESP32 zu ignorieren.
Viele Grüsse
Matthias
Hallo Matthias,
Wenn dir die verbliebenen 15 % Speicher nicht ausreichen, dann kannst du in der Arduino IDE unter Werkzeuge – Partition Scheme die Einstellung „Huge APP (3MB No OTA/1MB SPIFFS)“ auswählen, dann erhöhst du den Programmspeicher von 1310720 Bytes auf 3145728 Bytes, also mehr als doppelt so viel.
VG, Wolfgang
Perfekt! Vielen Dank!
Jetzt muss der ESP32 nur noch machen, was beim PS4-Controller gedrückt wird und dann ist meine Game-Box fertig 🙂
Hallo Wolfgang,
erstmal vielen Dank für diesen hilfreichen und informativen Beitrag. Ich hatte eine Frage zur Umsetzung ohne den SoftwareSerial Sketch: Wo finde ich den BareMinimum Sketch. Es steht ja „in den Beispielen“ aber wo ist das denn?
Vielen Dank für die Hilfe schonmal.
Liebe Grüße
Daniel
Hi, damit sind die Beispielsketche in der Arduino IDE gemeint: Datei – Beispiele – Basics – Bare minimum o. ä. .
Der Bare Minimum Sketch enthält ein leeres void setup(){} und ein leeres void loop(){}, sonst nichts. VG, Wolfgang
Damkeschön! Jetzt stoße ich beim SoftwareSerial sketch leider auf das Problem, dass ich als Output kein OK o.ä. erhalte, sondern xx��x…
Woran kann das liegen?
Diese Symbole sind meistens ein Indikator dafür, dass die Baudraten der kommunizierenden Bauteile nicht übereinstimmen.
Hi Daniel,
„Bare Minimum Sketch“ meint, dass Du in der Arduino IDE „Datei Neu“ anklickst bzw . CTRL+N.
Dann erhältst Du den Sketch:
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
Das dann einfach auf deinen ARDUINO raufladen…
Hallo Zusammen,
Info:
Es gibt eine neue Version von den Modulen, zu erkennen an dem oberen Chip auf der Platine der ist um einiges kleiner. Die Version wird oft mit HC05 – New bezeichnet (AT+VERSION? ==> VERSION:2.0-20100601)
Zum Problem: das Modul kann nicht wie gewohnt im AT- Modus angesprochen werden bzw. arbeitet fehlerhaft.
Die Lösung: die Serielle Baud Rate „Serial.begin(9600);“ von 9600 auf 19200 umstellen dann klappt die AT Verbindung wieder wie gewohnt.
@Wolfgang , bei Interesse kann ich Dir gerne ein Bild von dem Modul zuschicken.
Gruß
Achim
Hallo Achim,
vielen Dank, solche Hinweise sind sehr hilfreich! Das Bild hätte ich gerne (wolfgang.ewald@wolles-elektronikkiste.de). Und hast du auch eine Bezugsquelle?
VG, Wolfgang
Hallo Wolfgang,
Die Module habe ich von Aliexpress (2,25€), bin gerade noch am Testen, es scheint dass die „Neue“ Version nicht unbedingt besser ist. Ab einer Baud Rate von > 19200 gibt es Übertragungsfehler mit 19200 läuft es.
Bild ist unterwegs………
Gruß
Achim
Hallo,
ich dachte für den AT-Mode sei eine Baudrate von 38400 zwingend?
Dachte ich auch, zumindest für den AT Modus. Aber es kann natürlich sein, dass neuere Modelle mit neuer Firmware andere Eigenschaften haben.
Hallo Wolfgang,
Mein HC-05 am Arduino R3 erlaubt keine Kommunikation mit dem Smartphone per App (ArduinoBlueControl). Bei erstmaliger USB-Verbindung blinkt die LED am Modul schnell, die App meldet dann auch „Verbindung hergestellt“, auf AT Kommandos oder gar Voice Kommandos kommt keine Antwort. Nach „resetten“ (Resetknopf oberhalb Pinleiste und verbinden) blinkt die LED im 2 Sekundentakt, über USB kann dann aber noch nicht einmal eine Verbindung hergestellt werden.
Spielt die Baudrate eine Rolle? Ich kann sie in der App nicht einstellen…..
Danke für Antworten! Beste Grüße.
Jürgen
Hallo Jürgen, welche App meinst du? Diese hier: https://play.google.com/store/apps/details?id=com.helektrika.bluecontrol ?
Wenn ich mir den Code anschaue, den man dazu auf den Arduino uploaden soll, dann scheint der auch keine AT-Kommandos zu interpretieren. Aber sag mir mal erstenmal ob wir über dieselbe App reden.
Ansonsten empfehle ich auch meinen Beitrag:
https://wolles-elektronikkiste.de/arduino-mit-dem-smartphone-steuern
VG, Wolfgang
Hallo Wolfgang,
danke für Deine schnelle Rückmeldung!
– Die App ist die von Dir oben verlinkte.
– Der HC-05 ist „nackt“ am Uno R3 angeschlossen, ohne Spannungsteiler.
– TX an RX, RX an TX, sowie 3.3V und GND angeschlossen.
– Andruino IDE meldet Uno am Port verbunden.
– Zum Testen habe ich nun Deinen Sketch (s.o.) verwendet.
– Baudrate auf 38400. Kompilieren und Upload problemlos wie immer.
– Dann HC-0.5 aufs Dreadboard gesteckt. Modul blinkt schnell.
– Nach Reset während Anschluss des USB-Kabels blinkt LED im ca. 2-Sekundentakt.
Gruß.
Jürgen
Hallo Jürgen,
ich habe mir das jetzt noch einmal angeschaut, einschließlich des ersten Kommentars. Du kannst keine AT-Kommandos über die App schicken. Genauer gesagt: kannst du schon, aber dann haben sie keine Wirkung. Entweder ist das Modul im AT-Modus und dann kannst du es mit AT-Befehlen über den seriellen Monitor einstellen, oder es ist im Verbindungsmodus und dann kannst du über die App Nachrichten schicken. Vergiss erst einmal die App. Nimm den software_serial_hc_06.ino Sketch, stelle dort Serial.begin(9600) ein und die die Baudrate 9600 im seriellen Monitor. Du kannst auch andere Baudraten einstellen, aber diese beiden Baudraten müssen übereinstimmen. Stelle mySerial.begin(38400) ein. Das ist essentiell. Bringe das HC-05 Modul in den AT-Modus. Tippe AT in den seriellen Monitor ein. Bekommst du ein OK? Wenn ja, dann würde ich mal die Rolle überprüfen (soll 0 = Slave sein), und Paritäts- und Stoppbit sollten auch 0 sein.
Dann gehst du aus dem AT-Modus (einmal Stromversogung kappen) und startest den seriellen Monitor noch einmal neu. Dann rufst die App auf und verbindest dich mit dem HC-05. Das Modul sollte alle zwei Sekunden ein Doppelblinken zeigen. Mit der Konsole kann zumindest ich dann Nachrichten senden. Wenn ich auf den Joystick gehe, dann sehe ich im seriellen Monitor solche Nachrichten: {„x“:0,“y“:0,“a“:0,“f“:0,“b“:0}. Übertragung funktioniert also.
Wenn das bei dir nicht geht, dann sage mir genau anwelcher Stelle.
Ich habe mal den Beispielsketch ausprobiert (https://github.com/Helektrika/BlueControl/blob/master/BlueControl.ino), aber da fehlt die ArduinoJson.h. Da war auch seit 2018 keiner mehr dran. Und das Video zur App (siehe App Beschreibung auf GooglePlay) ist nicht mehr verfügbar. Mir scheint der Autor der App hat die Lust verloren.
VG, Wolfgang
Lieber Wolfgang,
auweia, da hast Du eine Weile am PC verbracht! Herzlichen Dank für diese ausführliche Antwort. Ich mache mich daran und werde Dir Rückmeldung geben. Bis bald.
VG Jürgen
Lieber Wolfgang,
ich habe den von Dir genannten Sketch übernommen und ebenso die Schaltung (s.o.). Baudraten (9600) wie empfohlen, auch mySerial.begin (38400) gesetzt. Ich bekomme über den seriellen Monitor auch nach Trennung der Stromverbindung keine Rückmeldung.
Nach BT Verbindung über die App zeigt die LED ein Doppelblinken. Mehr geht nicht.
Ich fahre fort mit meinem Projekt (Steuerung von Weichen mittels IR Sensor und Stepmotor) und verbinde die Aktoren und Sensoren per Hardware statt über BT. Manchmal löst sich der Knoten irgendwann von selbst … es sei denn Du weißt (bitte ohne viel Aufwand) spontan eine Lösung.
Danke für Deine Mühe!
Beste Grüße. Jürgen
Viele Fehlermöglichkeiten gibt es eigentlich nicht. Wenn:
– der Sketch so eingestellt ist wie beschrieben,
– der serielle Monitor auf Baud 9600 eingestellt ist und auf „Sowohl NL als auch CR“,
– die Verkabelung korrekt ist (Pin 10 –> TX, Pin 11 –> RX),
– und man den Knopf auf dem HC05 drückt während man die Stromversorgung aktiviert,
dann muss es eigentlich gehen. Es sei denn:
– das HC05 Modul ist defekt oder man hat dir was falsches verkauft
– ein Kabel ist kaputt (ist mir schon passiert)
Mehr fällt mir nicht ein. Du kannst mir auch dein Modul zuschicken und ich schaue es mir an.
VG, Wolfgang
Lieber Wolfgang,
nochmals danke für Deine Mühe. Toller Service!
Ich habe alle Optionen sorgfältig durchgespielt. Es will nicht! Alle Sensoren und Aktoren laufen problemfrei, nur das HC05 nicht, auch nicht mit alternativen Schaltungen und Sketches. Ich werde einmal ein neues bestellen. Wer weiß, vielleicht habe ich es ja beim ersten Anschließen schon „zerschossen“?
Dann lass uns jetzt den Faden hier schließen.
Beste Grüße.
Jürgen
Hallo Wolfgang…
Vielen Dank für die Mühe die Du Dir immer mit Deinem Tutorials machst.
Ich versuche gerade einen ESP32 mit einem HC-05 zu koppeln, habe aber leider noch keine passende Tutorials gefunden. Hast Du Dich schon mal damit erfolgreich beschäfftigt?
Viele Grüße
Klaus-Dieter
Hi, schau mal in diese Diskussion. Da ist ein Link zu einer Lösung drin. Hat wohl gewisse Einschränkungen, aber sollte funktionieren. Selber probiert habe ich es nicht.
VG, Wolfgang
Hi Wolfgang, sorry ich kann den Link nicht finden. Welche Diskussion meinst Du ??
Da hab ich glatt vergessen, den Link reinzukopieren….
https://www.arduinoforum.de/arduino-Thread-ESP32-und-HC05
Hallo,
vielen Dank für die tolle Seite. Ich habe einen BT-05 umprogrammiert soweit so gut allerdings bleibt ein Problem:
Ich kann über AT+PSWD? das Passwort auslesen aber nicht ändern mit AT+PSWD= xxxx ich habe leerzeichen vorn versucht usw. kein Erfolg.
Haben Sie eine Idee?
Vielen Dank im Vorraus!
Hallo,
ist ja komisch. Vielleicht eine spezielle Firmware? Mit AT+VERSION erhalte ich „2.0-20100601“. Welche Version haben Sie? Vielleicht setzen Sie das Passwort mal in Anführungsstriche? Bei mir geht beides, also mit und ohne Anführungsstriche.
VG, Wolfgang
Vielen Dank,
die version ist 3.0-20170601 es hat jetzt mit AT+PSWD=“xxxx“ funktioniert.
Guten Rutsch aus der Pfalz
Theo
Hallo,
ich habe
HC-05 Bluetooth
installiert, die Software // SerialIn_SerialOut_004 geladen, — vor dem Anschluß der Spannung den Botton gedrückt und gehalten, die LED leuchtet 2 Sekunden und 2 Sekunden ist sie aus. Das ist der AT Modus. Im seriellen Monitor gebe ich AT und Enter ein. Es erscheint aber nicht das “ o.k.“ im Monitor. Habe ich etwas falsch gemacht?
Hallo, was ist die Software „SerialIn_SerialOut_004“? Für den HC-05 ist der im Beitrag abgedruckte SoftwareSerial Sketch zu nehmen (software_serial_hc_06.ino). Wichtig ist allerdings die Baudrate auf 38400 abzuändern, also mySerial.begin(38400). Die Baudrate für Serial bleibt bei 9600. Die Baudraten für Serial und im Serial Monitor müssen gleich sein. Dann sollte es eigentlich gehen. Darüber hinaus kann man eigentlich nicht viel verkehrt machen, außer vielleicht noch RX und TV vertauschen.
Viel Erfolg!
VG, Wolfgang
Danke, ———- ich checke nochmal, Habe den Code von az-delivery benutzt, dort steht „SerialIn_SerialOut_004“ und an 5 V angeschlossen am Nano. Werde aber nochmal alles durchgehen und dann Deine Software hochladen.
Hallo Wolfgang,
in meiner Liste mit Links zum Thema Elektronik/Mikrocontroller gibt es eine Rubrik mit der Bezeichnung Fundgrube. Da steht Deine Seite ganz oben 🙂
Was mich in diesem Beitrag gewundert hat, ist die Verwendung des BT-Terminals. Meiner Meinung nach funktioniert das mit Putty besser, weil Putty nicht zwischen Ein- und Ausgabe-Fenster unterscheidet und man so einfacher ein CLI verwenden kann.
Etwas umständlich ist nur das Herausfinden des entsprechenden COM-Ports. Den Port findet man bei Windows 10 unter Bluetooth/Weitere Bluetooth Optionen/COM-Anschlüsse. Dort gibt es dann „HC-05“ und „HC-05 `SPP Dev`“. Davor stehen die zugehörigen COM-Anschlüsse und dieses SPP Dev ist das was man nutzen kann. Den COM-Anschluss kann man dann einfach im Putty (oder einer anderen Terminal-Software) verwenden.
Bei mir gibt es praktisch kein Projekt ohne CLI als „Wartungszugang“ und über BT ist das in vielen Fällen noch einfacher, weil man keine Anschlüsse aus dem Gehäuse rausführen muss.
Viele Grüße
Jörg
Hi Jörg, erstmal danke für das Feedback! Das DSD Tech Tool habe ich nur zusätzlich erwähnt, da man sich dort nicht mit der Syntax der AT-Befehle beschäftigen muss. Also zum schnellen Einstellen vielleicht eine Alternative. Grundsätzlich würde ich auch eher Putty bevorzugen. Deswegen habe ich ja auch beide Wege vorgestellt. VG, Wolfgang
Hallo Wolfgang, ich habe unter den falschen Artikel gepostet 🙁
Ich bezog mich auf: https://wolles-elektronikkiste.de/arduino-mit-dem-smartphone-steuern
Und hier meinte ich dieses BT-Terminal aus dem Windows Store.
Es ging mir nicht um die Konfiguration der Adapter per Putty, sondern um die Verwendung des HC-05 als serielles Terminal mittels SoftwareSerial. Sozusagen als textmenubasierte Funkfernsteuerung im Terminal. Geht natürlich auch mit diesen seriellen Adaptern aber dann eben mit Kabel.
Viele Grüße, Jörg
Stimmt schon, Putty ist besser. Das Schweizer Taschenmesser sozusagen. Aber vielleicht auch ein bisschen abschreckend für weniger Erfahrene.
Mal eine Frage meiner Seits,
Hätte man ggf die Möglichkeit, den AT – Button auf den State bzw Enabled Pin zu legen?
Frage dahingehend, da ich den AT – Modus gerne bei Bedarf über einen ATtinyx5 umschalten möchte, wärend ich mit meinem Handy verbunden bin und via Selbstgeschriebener App daten auf das Gerät via Bluetooth schreibe.
Sprich…
Neue Config via Bluetooth in den AVR schicken, AVR schaltet in den AT Modus, schreibt die neue Config rein und schaltet den AT wieder ab und vergleicht die Config.
Grüße aus Lübeck VJ VamLykTan
Hallo, da müsste ich selbst erstmal rumprobieren. Was hinzukommt ist, dass sich die Module, die ich ausprobiert habe, auch nicht alle gleich verhalten. Um per Programm in den AT-Modus umzuschalten, könnte man vielleicht die Stromversorgung mit einem Transistor ein- und ausschalten und das Knopfdrücken umgehen, indem man den AT-Knopf auch mit einem Transistor überbrückt.
Hallo Grüße nach Wegberg.
Ja so klein ist die Welt!!
Gruß Gerd
Hallo ja ich bin es wieder der mit der alten Bluet.Version auf dem Handy!!!!
Zunächst mal Super das du uns an deinem Wissen teilhaben lässt!!!!
Möchte jetzt da es mit dem HC-05 Modul geklappt hat eine bidirektionalen Verbindung
zwischen zwei Unos+ Hc-05 1-2 Led“s und 2 Tastern aufbauen das heißt ich schalte vom 1. Uno
auf dem 2.Uno die Led“s an+aus + umgekehrt.
Von einer Richtung Uno+HC-05 Modul (im AT Master Mode) zum Slave Mode habe ich schon was gefunden.
Aber müsste ich nach dem Senden des Uno mit HC-05 im Master Mode diesen dann in den Slave Mode
bringen.
Da reichen meine Kenntnisse leider nicht aus.
Habt ihr irgeneine weiterführende Info für mich.
Gruß Gerd
Aus dem schönen Schwalmtal NRW
Hallo Gerd,
die Kommunikation sollte in beide Richtungen funktionieren. Du musst also nicht umschalten. Ein Slave kann auch dem Master etwas mitteilen. Hier ist Beispiel (hab auf die Schnelle nur was Englisches gefunden): https://howtomechatronics.com/tutorials/arduino/how-to-configure-pair-two-hc-05-bluetooth-module-master-slave-commands/
Wir sind ja fast Nachbarn! Schöne Grüße von Wegberg nach Schwalmtal! Ohne Corona könnten wir das von Angesicht zu Angesicht besprechen. Vielleicht wird es ja bald besser, dann können wir das nachholen.
VG, Wolfgang
Zum Vergleich mit 433 MHz:
Richtig ist, dass 433 oder 868 bessere Rechweiten liefern, locker 100m selbst bei etwas Bebauung,
Aber diese frequenzen sind nicht für heftige Nutzung zulässig, strenge Regeln für Nuzungsdauer, einige Sekunden/Stunde abhängig von der Sendeleistung. Sonst setzt man alle Thermometer, Hausautomation etc ausser Gefecht!
Danke für den Hinweis!
Zur Assembler-Programmierung:
Wenn Du die UART im Arduino benutzt sieht das Programm aus wie in C,
oder hast Du um die Uart frei zu lassen einen anderen Pin bitweise selbst getaktet?
Zur Programmierung der Module habe ich die SoftwareSerial Funktion genommen, damit die UART frei bleibt für die Ausgabe am PC und für das Uploaden der Programme. Alles als „Fertigkost“ eingebunden, d.h. ich habe mich nicht darum gekümmert, wie die Simulation der seriellen Verbindung im Detail funktioniert.
Hallo,
seit mehreren Tagen versuche ich das Modul HC-08 in AT-Modus zu bringen, ohne Erfolg.
Zu keinem Zeitpunkt ist eine Bluetooth-Kommunikation im Gang. Das Modul war bei mir noch nie gepaart.
UART: 9600, 8N1 (LSB first)
Egal ob direkt nach der Power ON, oder später. Ob mit EN High oder Low.
Antwort auf ein AT-Kommando (ohne \r\n) ist immer „ERROR\r\n“.
Nur wenn ich ein Kommando mit „\r\n“ oder auch einen beliebigen String z.B.: „Hallo\r\n“ über UART schicke, dann kommt „OK\r\n“ zurück.
Aber auf „AT+VERSION\r\n“ kommt nur „OK\r\n“. M.E. das Modul kriege ich nicht in AT-Modus.
In deinem Beitrag „hc-05-und-hc-06-bluetooth-module“ habe ich u.a. folgendes gelesen:
„Die HC-08 Module, die ich mir gekauft habe, konnte ich zwar über AT-Kommandos programmieren, aber …“
Könntest Du erklären wie DU es geschafft hast?
Für Deine Antwort bedanke ich mich im Voraus
Roman
Hallo Roman, wie ich im Beitrag schrieb, habe ich die Teile auch noch nicht gepaart bekommen. Wenn der HC-08 auf AT mit OK antwortet, dann ist er im AT Modus, sonst würde er gar nicht antworten oder nur ein Error von sich geben. Viel weiter bin ich dann auch nicht gekommen. Und mangels einer BT Verbindung habe ich den HC-08 dann frustriert beiseite gelegt und nichts mehr damit gemacht. Deswegen empfehle ich sie auch nicht. Hier ist noch ein Youtube Video, vielleicht hilft das weiter:
https://www.youtube.com/watch?v=iocL2Pq1UCA
Ich habe nochmal geschaut. Also ich bekomme auch z.B. auf AT+VERSION eine Antwort (MLT-BT05-V4.0). Aber wie gesagt, ich komme dann nicht wirklich weiter. Ich habe auch die Einstellung mit Line Feed und Carriage Return.
alles gut erklärt, danke…
eine frage hätte ich noch:
ich müsste den HC05 aus einem lipoakku mit 3,7V versorgen. Über den VCC-pin klappt es nicht. Ich dachte, ich könnte – statt der versorgung über den VCC pin die 3,7V über den anschlus 12 direkt an dem brick machen? Die anderen drei pins normal belegen (RX,TX,GND). Geht das?
gruss
georg
Hallo Georg,
das Gute an deiner Anfrage ist, dass ich noch einen Fehler in meinem Artikel bemerkt habe. Offiziell sollte man eine Versorgungsspannung zwischen 3.6 und 6 Volt nehmen und nicht zwischen 3.3 und 6 Volt wie ich schrieb. Mit 3.7 Volt sollte es eigentlich funktionieren. Ist aber im Grenzbereich für den Spannungswandler auf dem Modul. Und ja, man sollte den Wandler eigentlich umgehen können und direkt an das Hauptmodul gehen können. Ich habe es allerdings nicht ausprobiert. Einen Versuch ist es Wert. VG, Wolfgang
hallo Wolfgang,
erstmal ein gutes neues jahr, hauptsächlich ein gesundes…
bevor ich anfange zu löten ein paar theoretische überlegungen:
– der HC05 läuft an einem USB/TTL adapter tadellos
– der akku (angegeben 3,7V / 2000mAh) bringt im leerlauf, also ohne last, 4.1V
– beim einschalten mit angeschlossenem HC05 bricht offensichtlich die spannung zusammen, weil der HC05 viel strom zieht
– wenn ich den spannungswandler mit der direkten einspeisung am pin 12 überbrücke, leuchtet wahrscheinlich z.b. auch die LED nicht, heisst, ich weiss nie ob die automatische verbindung zum slave stattgefunden hat…
gibt es andere möglichkeiten die spannung aus dem akku beim einschalten zu stabilieren? Ich hab da mal was von einem kondensator paralell zum akku was gelesen?
Hallo, dir auch ein schönes, frohes und gesundes 2021!
4.1 Volt sind vielleicht schon etwas grenzwertig bei 3.3 Volt Sollspannung. Da würde ich vielleicht auch nicht mehr an den Pin 12 gehen. Ein Kondensator ist auf jeden Fall eine gute Idee um die Spannung beim Einschalten zu stabilisieren. Ich würde mal 10 MikroF zwischen VCC und Gnd probieren. Du könntest auch einen Step-up Konverter nehmen um die Spannung auf 5 V zu bringen. Allerdings irgendwie absurd die Spannung erst hochzubringen um sie dann mit dem Konverter auf dem Board wieder herunterzubringen. Das mit dem Kondensator ist ja schnell ausprobiert. VG,Wolfgang
Hallo !
Danke erstmal für die ausführliche Anleitung !
Da ich Assembler-Programmierer bin, fehlen dazu natürlich noch ein paar kleine Infos, welche ich im Netz bisher nicht gefunden habe.
Per Oszilloskop habe ich den Datenfluss des HC-05 mal ausgelesen und alles analysiert.
Also… für Maschinensprach-Programmierer ist das Satzende „/r/n“ nichts Anderes, als die Zeichen (6) und (3) im ASCII-Zeichensatz.
Daher wird nach jedem Befehlssatz h“B0″ und h“50″ mitgesendet.
Ausgenommen vom ersten Startbit eines Satzes, welches mit einer „0“ beginnt, sind alle zweiten Startbits (also alle Wortenden) mit einem binären „10“ unterbrochen.
Info am Rande: UART-Befehle werden umgekehrt übertragen, daher nicht mit dem Bit 7 beginnend, sondern mit dem ersten Bit.
Ein vollständiger AT-Befehl sieht daher wie folgt aus:
0 10000010 10 00101010 10 10110000 10 01010000 [A,T,(6),(3)]
Also ein Start-Bit“0″, dann ein „A“, ein zweites Startbit „10“, ein „T“, ein zweites Startbit „10“, ein „(6)“ aus dem ASCII-Code, ein zweites Startbit „10“, und ein „(3)“ aus dem ASCII-Code. Danach wird die Leitung direkt wieder auf „1“ gezogen, also kein Extra-Stopbit.
Ist leider im Netz so nicht zu finden, deswegen gebe ich hier mal meinen Schmarrn so drauf 🙂
Hoffe, es bringt auch Jemanden etwas.
Danke nochmal für die Erklärung der Module !!!
LG… Chrisi
Hallo Chrisi,
vielen Dank, ich bin mir ziemlich sicher, dass es schon einige Leute auf der Welt gab die genau die Information gesucht und nicht gefunden haben. Vielleicht wir dann hier jemand fündig.
Was ich noch suche, ist eine verständliche Einführung in das Bluetooth Profil HID (Human Interface Device), das von vielen Bluetooth Geräten verwendet wird. Dafür braucht man dann andere Module oder muss eine andere Firmware flashen. Nur Wenn da jemand etwas hätte, wäre ich dankbar.
Mit Assembler habe ich mich bisher sehr wenig beschäftigt, habe aber großen Respekt vor Leuten, die sich damit auskennen!
LG, Wolfgang
3.3V Beschränkung des RX Pins. Ich habe es so gelöst: vom Arduino (5V) einen 1k Widerstand und parallel zum RX Eingang eine blaue/weiße LED. Die LED hat einen Spannungsdrop von ca 3.2 Volt. Gleichzeitig hab ich die optische Rückmeldung für RX.
Schöne Idee!
Hallo Wolfgang,
ich bin bei der Suche nach HC05/06-Problemen auf diese Seite gestoßen. Sehr informativ, danke.
Vielleicht kannst Du mir bei folgendem Problem helfen: Ich habe hier diverse HC05 und 06 rumliegen und keiner tut, was er soll. Ich möchte damit einen kleinen Roboter steuern (OttO-DiY).
Manche Module werden vom Handy garnicht gefunden, andere werden angezeigt, aber die Verbindung wird verweigert oder es heißt „kann nicht mit xx kommunizieren“ o.ä. Ich bin völlig ratlos und schon etwas verzweifelt. Getestet mit Samsung-J5, Redmi-6A (Android 8.1), Cubot Magic (Android 7). Nichts funktioniert.
Hast Du einen Tip für mich?
Gruß, Hajo.
Hallo Hajo, Fehlersuche auf die Ferne ist nicht ganz so einfach. Als Erstes würde ich bei den Einstellungen in den Modulen suchen. Da würde ich empfehlen, die Teile mittels AT-Befehlen auf Werkseinstellungen zurückzusetzen. Dann könntest Du auch mal schauen, ob die Verbinndung per PC klappt. Wenn mir noch was weiteres einfällt, melde ich mich. Grüße, Wolfgang
Hallo Wolfgang, es ist alles sehr mysteriös.
Ich habe nach Deiner hervorragenden Anleitung die Module getestet, d.h. alle Daten abgefragt. Alles war richtig. Die zwei HC-06 wollen nicht, Namen „linvorV1.8“ und „SHC-06-20190901“.
Aber einer der HC-05 spielt plötzlich mit. Die OttO-DiY-App läuft, ich kann den OttO steuern und die Verbindung bleibt stabil.
Es hatte vor einiger Zeit auch mal mit einem HC-06 funktioniert, aber die Verbindung brach immer nach einigen Kommandos ab. Jetzt mit dem HC-05 scheint es endlich zu klappen. Jetzt kann ich weiterbauen.
Ich habe zwar nichts verändert, es muss Dein magischer Einfluß gewesen sein…
Danke. Gruß, Hajo.
Hallo Hajo, erstmal schön, dass es zumindest mit einem Modul klappt. Das freut mich. Aber es hinterlässt natürlich einen schalen Beigeschmack, wenn man nicht weiß wieso. Vielleicht kommt ja noch die Erleuchtung. VG, Wolfgang
Erstmal vorab: Unglaublich informativer und ausführlicher Beitrag. Danke dafür. Ich arbeite schon länger mit diesen Modulen, und muss aber trotzdem immer wieder nachschauen, wie und wo ich nun die Baudrate etc einstellen kann/muss. Dafür ist es sehr hilfreich, wenn es nur eine Quelle gibt.
Außer meiner Dankesrede habe ich aber noch eine Frage: Kennst du eventuell auch Bluetooth-Module, die DTR / RTS mit dabei haben? So könnte man Arduinos/ESPs über Bluetooth programmieren, da ich hier ja den Reset kurz Low ziehen muss.
Gruß Till
Hi Till, vielen Dank für die Dankesrede! Leider kann ich mit den Teilen, die suchst nicht dienen. Ich kenne nur die Standardmodule. Aber ein interessanter Gedanke, Arduinos und ESPs „fernzuprgrammieren“. Schöne Grüße, Wolle
Hallo Wolfgang,
hast Du die Anregung von Gerd, eine Point to Multipiont-Verbindung zu testen, schon mal ins Visier genommen? Dieses Thema interessiert mich auch brennend.
Gruß Eckard
Hallo Eckard, offen gestanden noch nicht. Ich habe schlicht immer zu viel anderes vor. Ich verspreche lieber nichts mehr…
Hallo Gerd, danke für die Anregung. Das habe ich tatsächlich noch nicht ausprobiert. Erscheint aber sehr sinnvoll. Kommt auf meine To-Do Liste!
Hallo Wolfgang,
zunächst besten Dank für den informativen Beitrag. Ich hoffe es hilft vielen Lesern!
Hast Du schon eine Point-to-Multipoint-Verbindung getestet?
Nach Spezifikation ist BT Ist dazu ja prinzipiell in der Lage, die Datenblätter schweigen sich jedoch meist darüber aus.
Eine Anwendung wäre z.B. mehrere Sensoren an einem Empfänger anzuschließen.
Viele Grüße
Gerd