Taula de continguts:

Recupereu el mòdul Bluetooth HC-06 mal configurat: 4 passos
Recupereu el mòdul Bluetooth HC-06 mal configurat: 4 passos

Vídeo: Recupereu el mòdul Bluetooth HC-06 mal configurat: 4 passos

Vídeo: Recupereu el mòdul Bluetooth HC-06 mal configurat: 4 passos
Vídeo: Arduino Bluetooth LED Controller with Android HC-05 Bluetooth Module | MIT App Inventor 2024, De novembre
Anonim
Recupereu el mòdul Bluetooth HC-06 mal configurat
Recupereu el mòdul Bluetooth HC-06 mal configurat

Per pur maximalisme, vaig configurar el meu mòdul Bluetooth (esclau) HC-06 a una velocitat de baud d’1, 382, 400 baud amb la comanda AT + BAUDC. Des que Arduino es va connectar a ell, no va poder utilitzar el mòdul amb la biblioteca SoftwareSerial. Vaig intentar restaurar la velocitat de transmissió amb la sèrie de maquinari d'Arduino (pins 0 i 1) sense sort.

També vaig provar de Google el tema sense trobar una solució acceptable. Potser fer servir un port sèrie integrat en un ordinador podria haver estat una solució (amb un desplaçament lògic de 12V a 3V3), però el meu ordinador no té aquest port obsolet, així que vaig haver de trobar una altra solució.

Pas 1: què necessiteu

El que necessitareu
El que necessitareu
  • Placa Arudino / Genuino amb el MCU Atmel ATMEGA328P-PU per defecte (@ 16MHz).
  • Un mòdul Bluetooth HC-06 que escolta a 1, 382, 400 baud
  • IDE bàsic d’arduino de

Pas 2: la solució

La solució
La solució
La solució
La solució

Tingueu en compte que aquest instructiu i la solució es fan per a escenaris d'1, 382, 400 baud (AT + BAUDC). La solució no funcionarà per a cap altra velocitat de transmissió. Per tractar altres casos, consulteu els passos que comencen des del pas 3.

La solució és realment senzilla.

  1. Connecteu el pin VCC de l'HC-06 al pin 5V d'Arduino.
  2. Connecteu el pin GND de l'HC-06 al pin GND d'Arduino.
  3. Connecteu el pin RXD de l'HC-06 al pin 2 d'Arduino.
  4. Deixeu el pin TXD de l'HC-06 sense connectar (o connecteu-lo al pin 8).
  5. Pengeu un esbós hc06reset.ino.
  6. El programa configurarà HC-06 en mode 115, 200 baud (AT + BAUD8).
  7. Utilitzeu el mòdul HC-06 recuperat com abans.

Pas 3: darrere de les escenes …

Darrere les càmeres…
Darrere les càmeres…
Darrere les càmeres…
Darrere les càmeres…

La biblioteca SoftwareSerial que ve amb Arduino IDE és capaç de transmetre com a màxim 115, 200 bits / segon, de manera que no és prou ràpid per comunicar-se amb la velocitat desitjada d’1, 382, 400 baud. Tenint en compte que una placa Arduino per defecte funciona a 16 MHz, la taxa de bits màxima sense comprimir teòrica és de 16, 000, 000 bits / seg. Fins ara estem bé!

Segons la meva comprensió de SoftwareSerial.cpp, la comunicació de senyal es realitza establint un pin de sortida Alt (= 1) o Baix (= 0) pel que fa a un retard (que prové de la velocitat en bauds) entre els canvis.

  • El pin de sortida és elevat per defecte (significa que no hi ha dades)
  • es transmet un bit d'inici (que fa baixar el pin), llavors
  • 8 bits de dades transmeses de LSB a MSB, (+ 5V quan el bit 1 i 0 en cas contrari)
  • es transmet un bit de parada (que estira el pin cap amunt)

D'aquesta manera es transmet 1 byte mitjançant 10 bits.

El missatge que hem d’enviar és AT + BAUD8 (sense / n, / r al final). Aquesta ordre torna a configurar l'HC-06 a una velocitat de 115, 200 baud que poden ser manejades per les biblioteques habituals.

Per tal d’enviar bits amb velocitat d’1, 382, 400 bits / seg, per a cada bit tenim 1/1, 382, 400 segons de temps (aproximadament 723,38 ns) per a cada bit. Arduino funciona amb 16, 000, 000 Mhz, de manera que cada cicle dura 1/16, 000, 000 segons, és a dir, 62,5 ns per cicle.

Mitjançant el codi de muntatge AVR podem utilitzar l'ordre OUT per configurar el pin de sortida alt o baix i NOP per esperar exactament un cicle de CPU. Les dues ordres mengen exactament 1 cicle de CPU. D'aquesta manera, el temps de bit de 723,38 ns es pot cobrir d'11 a 12 instruccions d'arduino per bit transmès. Una cosa a tenir en compte: l'ordre OUT estableix tot un byte alhora, de manera que hem de seleccionar un PORTx on això no sigui un problema. Utilitzar ATMEGA328P-PU per exemple, PORTD (pins arduino 0-7) és perfecte per a aquesta condició. Després de configurar el bit, només ha de transcórrer el temps adequat que es fa entre 10 i 11 NOPs i ja està.

Podeu trobar els detalls del càlcul al fitxer Excel següent. Aquest fitxer va generar les instruccions necessàries per al programa. Només s’havien de fer algunes substitucions després d’enganxar el codi generat.

Pas 4: Possibilitats de lectura / millora addicionals

  • Potser es pot fer una biblioteca SoftwareSerial més ràpida mitjançant la tècnica descrita al pas anterior.
  • FedericoK2 ha creat una gran eina que genera el codi de recuperació HC-06 per a totes les velocitats de bits possibles. Accediu al lloc aquí: https://tools.krum.com.ar/save_your_hc-06/ Gràcies FedericoK2

Recomanat: