Los problemas encontrados por el módulo Bluetooth HC-05 y las soluciones y la realización de la comunicación con teléfonos móviles.

1. Depuración del módulo Bluetooth: para resolver el problema de que no se puede configurar el comando AT

Conexión entre el módulo USB a TTL y el módulo Bluetooth HC-05:

Los dos módulos comparten el suelo y los dos módulos comparten VCC (VCC es 5V); el RX del módulo Bluetooth está conectado al TX del módulo de conversión y el TX del módulo Bluetooth está conectado al RX de la conversión módulo. Como se muestra en la figura siguiente: En
Inserte la descripción de la imagen aquí
este momento, conecte el módulo de conversión a la computadora y luego use el asistente de depuración del puerto serie para depurar el módulo Bluetooth.

1) Pregunta 1: No se encuentra ningún puerto serie

En primer lugar, debemos intentar configurar el comando AT, pero al conectarse al puerto serie, puede encontrar el siguiente problema: no se busca el puerto serie, pero después de asegurar la conexión correcta, se ha encendido correctamente, pero no se ha buscado ningún puerto serie. El motivo puede ser que el controlador no esté instalado
Inserte la descripción de la imagen aquí

Método 1: descargue el controlador en línea

Busque un controlador en Internet, instálelo y vuelva a intentarlo
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Método 2: actualice el controlador usted mismo

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Es necesario reiniciar después de que se complete la instalación del controlador

  • Comparado

Antes de
Inserte la descripción de la imagen aquí
instalar el controlador Después de instalar el controlador
Inserte la descripción de la imagen aquí

2) Pregunta 2: No se pudo abrir el puerto serie-PL2303HXA ha sido descontinuado desde 2012, comuníquese con el proveedor

Luego de instalar exitosamente el controlador, ocurrió otro problema. Puede ver que el puerto serial puede ser identificado, pero no se abre y no se puede usar normalmente.
Inserte la descripción de la imagen aquí
Aún falla. Ahora tenemos que resolver el problema de descontinuación - "PL2303HXA ha sido descontinuado desde 2012, comuníquese con el proveedor "

Solución

Enlace de referencia La
solución es la siguiente:
Enlace: https://pan.baidu.com/s/1jw1nsLGd23CagQ_dbkqu0w
Código de extracción: vc0c
Descargue el controlador aquí y descomprímalo,
Inserte la descripción de la imagen aquí
luego instale el controlador,
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
luego haga clic derecho para actualizar el controlador
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
y haga clic en Siguiente para
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
completar

Prueba en serie

Abra el puerto serie para probarlo, se
Inserte la descripción de la imagen aquí
puede emparejar normalmente y luego continúe depurando el módulo Bluetooth
Inserte la descripción de la imagen aquí

3) Depuración del módulo Bluetooth

El módulo de comunicación serie Bluetooth HC-05 tiene dos modos de trabajo: modo de trabajo de respuesta de comando y modo de trabajo de conexión automática. En el modo de trabajo de conexión automática, el módulo se puede dividir en tres roles de trabajo: maestro, esclavo y bucle invertido.

  • Cuando el módulo está en el modo de conexión automática, se conectará automáticamente de acuerdo con la transmisión de datos preestablecida;
  • Cuando el módulo está en el modo de respuesta de comando, se pueden ejecutar comandos AT El usuario puede enviar varios comandos AT al módulo para establecer parámetros de control o emitir comandos de control para el módulo.
    ¿Cómo ingresar al modo de respuesta al comando?

Hay dos formas de ingresar al modo de respuesta de comando:

  • Cuando el módulo está encendido, está en modo AT cuando no está emparejado, y la velocidad en baudios es la velocidad en baudios del módulo en sí, por defecto: 9600, PIO11 debe configurarse en alto una vez al enviar un comando AT;
  • Después de que PIO11 esté configurado en nivel alto, encienda el módulo nuevamente. En este momento, el módulo ingresa al modo AT, la velocidad en baudios se fija en 38400 y los comandos AT se pueden enviar directamente.
    ¿Qué es PIO11 alto una vez?

Hay un pequeño botón en el módulo Bluetooth, presione una vez para configurar PIO11 alto una vez. Es decir, el primer método debe presionarse cada vez que se envía el comando AT; y el segundo método es encender durante la pulsación larga, y luego ya no hay necesidad de administrarlo, simplemente envíe el comando AT directamente .

Cabe señalar que los dos métodos para ingresar al modo de trabajo de respuesta de comando utilizan diferentes velocidades de transmisión. Se recomienda utilizar el segundo método.

¿Cómo diferenciar en el modo de respuesta de comando?

Hay una luz en el módulo Bluetooth. Cuando la luz parpadea rápidamente, está en el modo de conexión automática; cuando la luz parpadea lentamente, es el modo de trabajo de respuesta de comando. Cuando la luz parpadea lentamente dos veces, es el modo de conexión normal con el teléfono móvil.
Inserte la descripción de la imagen aquí

4) comando AT

Después de ingresar al modo de respuesta de comando, puede usar el asistente de depuración del puerto serie para realizar la depuración de Bluetooth.

En primer lugar, los comandos AT no distinguen entre mayúsculas y minúsculas y todos terminan con retorno de carro y salto de línea. A continuación se describen los comandos AT más utilizados:
Inserte la descripción de la imagen aquí
Para los comandos AT, hay algunos puntos a tener en cuenta:

  • AT + NAME ?: Obtener el nombre del dispositivo Existe una alta posibilidad de que este comando AT no sea devuelto, porque he visto muchos ejemplos ..., pero otros comandos no son un problema, simplemente configure el nombre del dispositivo directamente;
  • AT + UART ?: Obtener los parámetros del puerto serie Hay tres parámetros del puerto serie, velocidad en baudios, bit de parada y bit de verificación. Su valor es el siguiente:

Inserte la descripción de la imagen aquí
El valor predeterminado es: 9600, 0, 0.

Configure los parámetros de Bluetooth
Inserte la descripción de la imagen aquí
Verifique el resultado de la configuración, la configuración es exitosa, el
Inserte la descripción de la imagen aquí
comando AT específico establece la investigación científica verifique el manual de datos, puede enviar un mensaje privado o un comentario si lo necesita

2. La transmisión entre el teléfono móvil y el módulo Bluetooth: resuelve el problema de no poder conectarse

Conecte directamente el módulo Bluetooth con el módulo de conversión y luego conéctelo a la computadora, el módulo Bluetooth ingresa directamente al modo de trabajo de conexión automática.

En este momento, el teléfono abre la aplicación de depuración del puerto serie Bluetooth y la usa para conectarse al módulo Bluetooth.

En circunstancias normales, primero empareje el teléfono móvil y luego ingrese directamente la cadena en la aplicación de depuración del puerto serie Bluetooth, y se puede recibir con éxito en el puerto serie de la computadora.

Pero cuando estaba probando, pude emparejar esta vez, pero no pude conectarme normalmente.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

1) Escenario 1: El problema de los teléfonos móviles

Bluetooth se puede emparejar, pero no se puede conectar

Intenté conectar un teléfono móvil con una computadora y otros teléfonos móviles, y descubrí que ninguno de ellos era posible,
pero el uso de otro teléfono móvil Huawei se puede emparejar con éxito con la computadora. (El emparejamiento del teléfono Xiaomi falló, pero el teléfono Huawei se emparejó con éxito) Se
Inserte la descripción de la imagen aquí
puede ver que es el problema de emparejamiento Bluetooth de mi teléfono Xiaomi.

Luego utilicé el teléfono móvil de Huawei para realizar pruebas y descubrí que el teléfono móvil de Huawei no se podía emparejar con el módulo Bluetooth. Llegué a la conclusión de que no tiene nada que ver con el teléfono móvil. Debería ser que el módulo Bluetooth necesita algún otro ajustes que se van a buscar.

2) Supuesto 2: El problema de configuración del módulo Bluetooth

Después de verificar la información, se encontró que el módulo Bluetooth debe configurarse como esclavo para ser buscado, y luego hice algunos intentos. Primero, verifiqué el conjunto de comandos AT (proporcionado por Punctual Atom) para
Inserte la descripción de la imagen aquí
escribir el comando AT en configúrelo, y ok indica que la configuración se ha realizado correctamente.
Inserte la descripción de la imagen aquí
De hecho, la consulta está configurada en modo esclavo,
Inserte la descripción de la imagen aquí
pero el resultado aún falla.
Inserte la descripción de la imagen aquí
Esto muestra que el modo bluetooth que configuré no es incorrecto 1, debería haber otros problemas

3) Supuesto 3: Problema de cableado

Para este problema, creo que es imposible, porque puedo configurar los comandos AT normalmente

4) Supuesto 4: El problema del asistente de depuración en serie

Reemplace constantemente el asistente de depuración de Bluetooth, el nombre se llama puerto serie Bluetooth y luego se puede conectar correctamente.
Inserte la descripción de la imagen aquí
Puede enviar información entre el teléfono móvil y el puerto serie.
Inserte la descripción de la imagen aquí
Finalmente, si se resuelve con éxito, el problema radica en el Asistente de depuración serial La conclusión es que, si puede emparejar normalmente, pero no puede conectarse normalmente, cambie su teléfono móvil o asistente de depuración serial, porque los problemas de compatibilidad con Bluetooth hacen que el emparejamiento sea más problemático.

Si necesita la apk del asistente de depuración en serie del teléfono móvil, puede enviar un mensaje privado o comentar

3. STM8 MCU controlado por teléfono móvil Bluetooth

Los dos ejemplos anteriores son relativamente simples, este ejemplo involucrará el contenido del programa.

Función de realización: el teléfono móvil envía un mensaje a la MCU STM8 a través de Bluetooth, y el STM8 devuelve el mensaje al teléfono móvil sin cambios después de recibir el mensaje. Por supuesto, si ha dominado este ejemplo, también puede modificarlo para que el teléfono móvil envíe un mensaje específico, y luego el microcontrolador STM8 realice la acción correspondiente. Por ejemplo: LED de iluminación, etc., motores de arranque, etc.
Inserte la descripción de la imagen aquí
El principio es: el teléfono móvil se transmite al HC-05 a través de Bluetooth, y luego se comunica con el STM8 a través del puerto serie; y antes, generalmente se comunica con el STM8 a través del puerto serie de la computadora a través del cable USB al Puerto serial. Básicamente, no hay diferencia.
En este momento, debe tener una comprensión más profunda de la oración al principio de este artículo: Para decirlo sin rodeos, es solo un dispositivo Bluetooth a serie. Solo necesita saber cómo programar y usar el puerto serie , y puede realizar la llamada transmisión transparente. Todo lo relacionado con Bluetooth está encapsulado y no es necesario tocarlo.

Sabiendo que es solo una comunicación de puerto serie simple, entonces el código es fácil de implementar

La interfaz de control de la aplicación móvil está diseñada de la siguiente manera:
Inserte la descripción de la imagen aquí

Código de referencia

/****************************************************************/
//接收单字符函数UART1_ReceiveByte(),无形参data,有返回值,返回接收到的数据
//采用查询的方法实现
/****************************************************************/
u8 UART1_ReceiveByte(void)
{
 // printf("进入UART1_ReceiveByte函数...\r\n");
  
  u8 UART1_RX_BUF;                //定义接收数据暂存变量
  while (!(UART1_SR & 0x20));    //等待接收标志
  UART1_SR&=0xDF;                //清零接收标志位RXNE
  UART1_RX_BUF=UART1_DR;         //取回接收到的数据
 // printf("取回接收到的数据\r\n");
  
  return  UART1_RX_BUF;         //返回暂存变量中的数据给调用者
}


/****************************************************************/
//初始化函数UART1_Init(),无形参和返回值
/****************************************************************/
void UART1_Init(void)
{
  //1.设定通信数据位数,此处设定为8位数据位,无校验位
  UART1_CR1 = 0x00;
  //**************************************************
  //展开UART1_CR1赋值二进制数值为:0000 0000 
  //含义:R8=0;    接收数据位不存在第9位
  //      T8=0;    发送数据位不存在第9位
  //      UARTD=0; 使能UART功能
  //      M=0;     一个起始位,8个数据位,n个停止位
  //                n取决于UART1_CR3中的STOP[1:0]位
  //      WAKE=0;   UART被空闲总线唤醒
  //      PCEN=0: (UART模式)奇偶校验控制被禁止
  //      PS=0;    偶校验(校验功能未启用)
  //      PIEN=0;  校验中断被禁止
  //*************************************************
  //2.设定通信停止位位数,此处设定为1位停止位
  UART1_CR3 = 0x00;
  //**************************************************
  //展开UART1_CR3赋值二进制数值为:0000 0000 
  //含义:保留位=0;必须保持清零
  //      LINEN=0;LIN模式被禁止
  //      STOP=00;配置为“00”,1个停止位
  //      CLKEN、CPOL、CPHA、LBCL这几位在UART3上不存在
  //*************************************************
  //3.配置通信波特率参数,此处配置为9600bps(16MHz频率下)
  UART1_BRR2 = 0x03;
  UART1_BRR1 = 0x68;
  //4.使能发送和接收功能
//  UART1_CR2 = 0x0C;
  UART1_CR2 = 0x2C;
  //**************************************************
  //展开UART1_CR2赋值二进制数值为:0010 1100 
  //含义:TIEN=0;发送中断被禁止
  //     TCIEN=0;发送中断完成被禁止
  //      RIEN=1;接收中断开启
  //      ILIEN=0;IDLE中断被禁止
  //      TEN=1;发送功能使能
  //      REN=1;接收功能使能
  //      RWU=0;(UART模式)正常工作模式
  //      PIEN=0;未发送断开字符
  //*************************************************
}


/****************************************************************/
//发送字符重定向函数putchar(),有形参ch,有返回值
/****************************************************************/
int putchar(int ch) 
{  
  UART3_SendByte((u8)ch);
 // UART1_SendByte((u8)ch);//将Printf内容发往串口
  return (ch); 
}

//接收中断服务函数
//**************************中断函数区域**************************
#pragma vector =  UART1_R_RXNE_vector         //0x14
__interrupt void UART1_RX_IRQHandler(void)
{ 
  
  if(UART1_SR&0x20){     //若UART1确实接收到了数据
     UART1_SR&=0xDF;       //清零接收标志位RXNE
  }
  cmd=UART1_DR;         //取回串口数据
  
 //  printf("进入中断服务函数...\r\n");
//   cmd = UART1_ReceiveString(1);
  
      switch(cmd)           //判断串口接收命令值
      {
        case 'a':
            Motor_TurnLeft();                   //左转
            break;
        case 'd':
            Motor_TurnRight();                  //右转
            break;
        case 'w':
            Motor_GoForward();                  //直走
            break;
        case 's':                               
            Motor_GetBack();                    //后退
            break;
        case 'p':                       
            Motor_BeParking();                  //停车
            break;
        case 'n':    //功能二:实现跟随模式              
            //printf("模式二:实现跟随模式   \r\n");
            LED1 = 1;  //熄灯
            Motor_BeParking();
            InfraredFollow_Module();
            break;
        case 'b':    //功能三:实现避障模式
            //printf("模式三:实现避障模式   \r\n");
            LED1 = 1;  //熄灯
            Motor_BeParking();
            InfraredAvoidance_Module();
            break
        default:
            printf("【ERROR】,没有此功能\r\n");
            break;
      }

}

Para consultas sobre números de vector de interrupción, consulte aquí: Tabla de vectores de interrupción IAR y escritura de la función de servicio de interrupción

Posibles problemas

Después de configurar algunos botones a través del teléfono móvil, es posible que vea que la función de interrupción se llamará dos veces en el asistente de depuración en serie de la computadora y la ejecución se repetirá.Sin
Inserte la descripción de la imagen aquí
embargo, cambié un asistente de depuración en serie y no hay problema. ..Es realmente un dolor de cabeza
Inserte la descripción de la imagen aquí

Enlace de referencia: [Módulos comunes] El módulo de comunicación en serie Bluetooth HC-05 utiliza una explicación detallada (ejemplo: control de Bluetooth del teléfono móvil, microcomputadora de un solo chip STM32)

Supongo que te gusta

Origin blog.csdn.net/weixin_44751294/article/details/111588963
Recomendado
Clasificación