Inhaltsverzeichnis:
- Schritt 1: Was Sie brauchen
- Schritt 2: Die Lösung
- Schritt 3: Hinter den Kulissen…
- Schritt 4: Weiterführende Lektüre/Verbesserungsmöglichkeiten
Video: Wiederherstellen eines falsch konfigurierten HC-06 Bluetooth-Moduls - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Aus purem Maximalismus habe ich mein HC-06 Bluetooth (Slave) Modul mit dem AT+BAUDC Befehl auf eine Baudrate von 1.382.400 Baud konfiguriert. Seitdem das daran angeschlossene Arduino das Modul nicht mit der SoftwareSerial-Bibliothek verwenden konnte. Ich habe versucht, die Baudrate mit Arduinos serieller Hardware (Pins 0 und 1) ohne Glück wiederherzustellen.
Ich habe auch versucht, das Thema zu googeln, ohne eine passable Lösung zu finden. Vielleicht hätte die Verwendung des eingebauten seriellen Ports eines Computers eine Lösung sein können (mit 12V zu 3V3-Logikpegelverschiebung), aber mein Computer hat diesen veralteten Port nicht, also musste ich eine andere Lösung finden.
Schritt 1: Was Sie brauchen
- Arudino/Genuino-Board mit der standardmäßigen Atmel ATMEGA328P-PU-MCU (@16MHz).
- Ein HC-06 Bluetooth-Modul, das auf 1.382.400 Baud. hört
- Grundlegende Arduino-IDE von
Schritt 2: Die Lösung
Bitte beachten Sie, dass dieses Instructable und die Lösung für ein Szenario mit 1, 382, 400 Baud (AT + BAUDC) erstellt wurden. Für andere Baudraten funktioniert die Lösung nicht. Um andere Fälle zu behandeln, lesen Sie bitte die Schritte ab Schritt 3.
Die Lösung ist wirklich einfach.
- Verbinden Sie den VCC-Pin des HC-06 mit dem 5V-Pin von Arduino.
- Verbinden Sie den GND-Pin des HC-06 mit dem GND-Pin von Arduino.
- Verbinden Sie den RXD-Pin des HC-06 mit Pin 2 von Arduino.
- Lassen Sie den TXD-Pin des HC-06 unbeschaltet (oder verbinden Sie ihn mit Pin 8).
- Laden Sie die hc06reset.ino-Skizze hoch.
- Das Programm setzt den HC-06 in den 115, 200 Baud Modus (AT+BAUD8).
- Verwenden Sie Ihr wiederhergestelltes HC-06-Modul wie zuvor.
Schritt 3: Hinter den Kulissen…
Die mit Arduino IDE gelieferte SoftwareSerial-Bibliothek kann maximal 115.200 Bit/Sekunde übertragen, ist also nicht schnell genug, um mit der gewünschten Baudrate von 1.382.400 zu kommunizieren. Angesichts der Tatsache, dass ein Standard-Arduino-Board mit 16 MHz läuft, beträgt die theoretische unkomprimierte maximale Bitrate 16.000.000 Bit/s. Uns geht es soweit gut!
Basierend auf meinem Verständnis von SoftwareSerial.cpp erfolgt die seial-Kommunikation durch Setzen eines Ausgangspins auf High (=1) oder Low (=0) in Bezug auf eine Verzögerung (die von der Baudrate kommt) zwischen den Änderungen.
- Der Ausgangspin ist standardmäßig hoch (bedeutet keine Daten), dann
- ein Startbit wird übertragen (was den Pin auf Low zieht), dann
- 8 Bit Daten übertragen von LSB zu MSB, (+5V wenn Bit 1 und sonst 0) dann
- ein Stopbit wird übertragen (was den Pin hoch zieht)
Auf diese Weise wird 1 Byte mit 10 Bit übertragen.
Die Nachricht, die wir senden müssen, ist AT+BAUD8 (ohne \n, \r am Ende). Dieser Befehl setzt den HC-06 auf 115, 200 Baudrate zurück, die von regulären Bibliotheken verarbeitet werden kann.
Um Bits mit einer Geschwindigkeit von 1, 382, 400 Bit/s zu senden, haben wir für jedes Bit 1/1, 382, 400 Sekunden Zeit (das sind ungefähr 723,38 ns) für jedes Bit. Arduino läuft mit 16 000 000 Mhz, so dass jeder Zyklus 1/16 000 000 Sekunden dauert - das sind 62,5 ns pro Zyklus.
Mit dem AVR-Assembly-Code können wir den OUT-Befehl verwenden, um den Ausgangspin auf High oder Low zu setzen und NOP, um genau einen CPU-Zyklus zu warten. Beide Befehle verbrauchen genau 1 CPU-Zyklus. Auf diese Weise kann die Bitzeit von 723,38 ns durch 11 bis 12 Arduino-Befehle pro übertragenem Bit abgedeckt werden. Eines ist zu beachten: Der OUT-Befehl setzt ein ganzes Byte auf einmal, daher müssen wir einen PORTx auswählen, bei dem dies kein Problem darstellt. Die Verwendung von ATMEGA328P-PU zum Beispiel PORTD (Arduino Pins 0-7) ist für diese Bedingung perfekt. Nach dem Setzen des Bits muss nur noch die richtige Zeit verstreichen, die von 10 bis 11 NOPs erledigt wird und das war's.
Berechnungsdetails finden Sie in der folgenden Excel-Datei. Diese Datei generierte die erforderlichen Montageanweisungen für das Programm. Nach dem Einfügen des generierten Codes mussten nur wenige Ersetzungen vorgenommen werden.
Schritt 4: Weiterführende Lektüre/Verbesserungsmöglichkeiten
- Vielleicht kann eine schnellere SoftwareSerial-Bibliothek erstellt werden, indem die im vorherigen Schritt beschriebene Technik verwendet wird.
- FedericoK2 hat ein großartiges Tool entwickelt, das den HC-06-Wiederherstellungscode für jede mögliche Bitrate generiert. Greifen Sie hier auf die Website zu: https://tools.krum.com.ar/save_your_hc-06/ Danke FedericoK2
Empfohlen:
3D-Druck eines Roboters – wikiHow
Wie man einen Roboter in 3D druckt: Heute zeige ich Ihnen, wie Sie von einer in wenigen Minuten erstellten Skizze zu einem gut aussehenden professionellen Roboter gelangen, der druckfertig ist
Die Kurzanleitung zum Erstellen eines Videos mit Ihrem IPhone und Hochladen auf Facebook oder YouTube: 9 Schritte
Die Kurzanleitung zum Erstellen eines Videos mit Ihrem IPhone und Hochladen auf Facebook oder YouTube: Verwenden Sie diesen einfachen 5-Schritte-Prozess (Instructables lässt es wie mehr Schritte aussehen, als es tatsächlich ist), um Ihr erstes YouTube- oder Facebook-Video zu erstellen und hochzuladen - mit nur dein iPhone
Erstellen eines Blogs mit Blogger.com – wikiHow
Erstellen eines Blogs mit Blogger.com: Die folgenden Anweisungen zeigen Ihnen, wie Sie mit Blogger.com ein Blog erstellen. Sie benötigen eine Google-E-Mail-Adresse, um Blogger.com zu verwenden
Das Leuchten wiederherstellen (Macbook): 5 Schritte
Restore the Glow (Macbook): Ich habe vor kurzem (nun, vor über einem Jahr) von meinem treuen Apple Laptop von 10 Jahren auf ein glänzendes neues Macbook Pro aufgerüstet. Ich war insgesamt recht zufrieden damit. Aber eine Sache vermisse ich. Ich weiß, es klingt albern, aber ich mochte den leuchtenden Apple-Lo
So finden Sie die Stifte eines Waschmaschinenmotors – wikiHow
So finden Sie die Pins eines Waschmaschinenmotors: Finden Sie die Pins eines Waschmaschinenmotors mit Hilfe eines digitalen Multimeters. Wir benötigen ein Multimeter im Durchgangsprüfermodus und einen ähnlichen universellen Waschmaschinenmotor wie im Bild oben. Wir werden Beginnen Sie zunächst mit einer Sichtprüfung des