Tabla de contenido:

Recuperar el módulo Bluetooth HC-06 mal configurado: 4 pasos
Recuperar el módulo Bluetooth HC-06 mal configurado: 4 pasos

Video: Recuperar el módulo Bluetooth HC-06 mal configurado: 4 pasos

Video: Recuperar el módulo Bluetooth HC-06 mal configurado: 4 pasos
Video: Solución al problema del módulo decodificador Bluetooth MP3 2024, Noviembre
Anonim
Recuperar el módulo Bluetooth HC-06 mal configurado
Recuperar el módulo Bluetooth HC-06 mal configurado

Por puro maximalismo, configuré mi módulo HC-06 Bluetooth (esclavo) a una velocidad en baudios de 1, 382, 400 baudios con el comando AT + BAUDC. Desde que Arduino se conectó a él, no pudo usar el módulo con la biblioteca SoftwareSerial. Intenté restaurar la velocidad en baudios con la serie de hardware de Arduino (pines 0 y 1) sin suerte.

También intenté buscar en Google el tema sin encontrar una solución aceptable. Tal vez usar el puerto serie integrado de una computadora podría haber sido una solución (con cambio de nivel lógico de 12V a 3V3), pero mi computadora no tiene este puerto obsoleto, así que tuve que encontrar otra solución.

Paso 1: lo que necesitará

Que necesitarás
Que necesitarás
  • Placa Arudino / Genuino con el MCU Atmel ATMEGA328P-PU predeterminado (@ 16MHz).
  • Un módulo Bluetooth HC-06 escuchando a 1, 382, 400 baudios
  • IDE básico de arduino de

Paso 2: la solución

La solución
La solución
La solución
La solución

Tenga en cuenta que este Instructable y la solución está hecha para un escenario de 1, 382, 400 baudios (AT + BAUDC). La solución no funcionará para otras velocidades en baudios. Para manejar otros casos, consulte los pasos a partir del Paso 3.

La solución es realmente sencilla.

  1. Conecte el pin VCC del HC-06 al pin 5V de Arduino.
  2. Conecte el pin GND del HC-06 al pin GND de Arduino.
  3. Conecte el pin RXD del HC-06 al pin 2 de Arduino.
  4. Deje el pin TXD del HC-06 desconectado (o conéctelo al pin 8).
  5. Sube el boceto de hc06reset.ino.
  6. El programa establecerá el HC-06 en modo 115, 200 baudios (AT + BAUD8).
  7. Utilice su módulo HC-06 recuperado como antes.

Paso 3: Detrás de escena …

Entre bastidores…
Entre bastidores…
Entre bastidores…
Entre bastidores…

La biblioteca SoftwareSerial que viene con Arduino IDE es capaz de transmitir como máximo 115, 200 bits / segundo, por lo que no es lo suficientemente rápido para comunicarse en la velocidad deseada de 1, 382, 400 baudios. Dado que una placa Arduino predeterminada se ejecuta en 16MHz, la tasa de bits máxima teórica sin comprimir es de 16, 000, 000 bits / seg. ¡Estamos bien hasta ahora!

Según mi comprensión de SoftwareSerial.cpp, la comunicación seial se realiza configurando un pin de salida Alto (= 1) o Bajo (= 0) con respecto a un retraso (que proviene de la velocidad en baudios) entre los cambios.

  • El pin de salida es alto por defecto (significa que no hay datos), luego
  • se transmite un bit de inicio (que baja el pin), luego
  • 8 bits de datos transmitidos de LSB a MSB, (+ 5V cuando el bit 1 y 0 en caso contrario) luego
  • se transmite un bit de parada (que tira del pin hacia arriba)

De esta forma se transmite 1 byte utilizando 10 bits.

El mensaje que tenemos que enviar es AT + BAUD8 (sin / n, / r al final). Este comando configura el HC-06 de nuevo a 115, 200 baudios que pueden ser manejados por bibliotecas regulares.

Para enviar bits con una velocidad de 1, 382, 400 bits / seg, para cada bit tenemos 1/1, 382, 400 segundos de tiempo (eso es aproximadamente 723.38 ns) para cada bit. Arduino funciona a 16, 000, 000 Mhz, por lo que cada ciclo dura 1/16, 000, 000 segundos, es decir, 62,5 ns por ciclo.

Usando el código ensamblador AVR podemos usar el comando OUT para establecer el pin de salida alto o bajo y NOP para esperar exactamente un ciclo de CPU. Ambos comandos consumen exactamente 1 ciclo de CPU. De esta manera, el tiempo de bits de 723,38 ns puede cubrirse con 11 a 12 instrucciones arduino por bit transmitido. Una cosa a considerar: el comando OUT establece un byte completo a la vez, por lo que tenemos que seleccionar un PORTx donde esto no sea un problema. El uso de ATMEGA328P-PU, por ejemplo, PORTD (pines arduino 0-7) es perfecto para esta condición. Después de configurar el bit, solo debe transcurrir el tiempo adecuado, que se realiza entre 10 y 11 NOP y eso es todo.

Puede encontrar detalles de cálculo en el archivo de Excel a continuación. Este archivo generó las instrucciones de montaje necesarias para el programa. Solo se tuvieron que hacer algunos reemplazos después de pegar el código generado.

Paso 4: Posibilidades de lectura / mejora adicionales

  • Quizás se pueda crear una biblioteca SoftwareSerial más rápida utilizando la técnica descrita en el paso anterior.
  • FedericoK2 creó una gran herramienta que genera el código de recuperación HC-06 para cada tasa de bits posible. Accede al sitio aquí: https://tools.krum.com.ar/save_your_hc-06/ Gracias FedericoK2

Recomendado: