Les problèmes rencontrés par le module Bluetooth HC-05 et les solutions et la réalisation de la communication avec les téléphones mobiles

1. Débogage du module Bluetooth-pour résoudre le problème que la commande AT ne peut pas être définie

Connexion entre le module USB vers TTL et le module Bluetooth HC-05:

Les deux modules partagent la masse et les deux modules partagent le VCC (VCC est 5V); le RX du module Bluetooth est connecté au TX du module de conversion, et le TX du module Bluetooth est connecté au RX de la conversion module. Comme indiqué dans la figure ci-dessous: À
Insérez la description de l'image ici
ce stade, connectez le module de conversion à l'ordinateur, puis utilisez l'assistant de débogage du port série pour déboguer le module Bluetooth.

1) Question 1: aucun port série n'est trouvé

Tout d'abord, nous devons essayer de définir la commande AT, mais lors de la connexion au port série, vous pouvez rencontrer le problème suivant: le port série n'est pas recherché, mais après avoir vérifié la connexion correcte, il a été correctement mis sous tension, mais aucun port série n’a été recherché. La raison peut être que le pilote n’est pas installé
Insérez la description de l'image ici

Méthode 1: Téléchargez le pilote en ligne

Recherchez un pilote sur Internet, puis installez-le et réessayez
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

Méthode 2: mettez à jour le pilote vous-même

Insérez la description de l'image ici
Insérez la description de l'image ici
Besoin de redémarrer une fois l'installation du pilote terminée

  • Par rapport

Avant d'
Insérez la description de l'image ici
installer le pilote Après avoir installé le pilote
Insérez la description de l'image ici

2) Question 2: Impossible d'ouvrir le port série-PL2303HXA a été interrompu depuis 2012, veuillez contacter le fournisseur

Une fois le pilote installé, un autre problème s'est produit. Vous pouvez voir que le port série peut être identifié, mais il ne s'ouvre pas et ne peut pas être utilisé normalement. Il
Insérez la description de l'image ici
échoue toujours. Nous devons maintenant résoudre le problème de l'arrêt - "PL2303HXA a été discontinué depuis 2012, veuillez contacter le fournisseur "

Solution

Lien de référence La
solution est la suivante:
Lien: https://pan.baidu.com/s/1jw1nsLGd23CagQ_dbkqu0w
Code d'extraction: vc0c
Téléchargez le pilote ici et décompressez-le,
Insérez la description de l'image ici
puis installez le pilote,
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
puis faites un clic droit pour mettre à jour le pilote
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
et cliquez sur Suivant pour
Insérez la description de l'image ici
Insérez la description de l'image ici
terminer

Test série

Ouvrez le port série pour le tester, il
Insérez la description de l'image ici
peut être couplé normalement, puis continuez à déboguer le module Bluetooth
Insérez la description de l'image ici

3) Débogage du module Bluetooth

Le module de communication série Bluetooth HC-05 a deux modes de fonctionnement: le mode de fonctionnement de réponse à la commande et le mode de fonctionnement de connexion automatique. Dans le mode de fonctionnement de la connexion automatique, le module peut être divisé en trois rôles de travail: maître, esclave et bouclage.

  • Lorsque le module est en mode de connexion automatique, il se connecte automatiquement en fonction de la transmission de données prédéfinie;
  • Lorsque le module est en mode réponse de commande, des commandes AT peuvent être exécutées. L'utilisateur peut envoyer diverses commandes AT au module pour définir les paramètres de contrôle ou émettre des commandes de contrôle pour le module.
    Comment entrer dans le mode de réponse aux commandes?

Il existe deux façons d'accéder au mode de réponse à la commande:

  • Lorsque le module est mis sous tension, il est en mode AT lorsqu'il n'est pas appairé, et le débit en bauds est le débit en bauds du module lui-même, par défaut: 9600, PIO11 doit être mis à l'état haut une fois lors de l'envoi d'une commande AT;
  • Une fois que PIO11 est réglé sur le niveau haut, remettez le module sous tension. À ce moment, le module entre en mode AT, la vitesse de transmission est fixée à 38400 et les commandes AT peuvent être envoyées directement.
    Qu'est-ce que PIO11 est élevé une fois?

Il y a un petit bouton dans le module Bluetooth, appuyez une fois pour régler PIO11 haut une fois. C'est-à-dire que la première méthode doit être appuyée à chaque fois que la commande AT est envoyée; et la deuxième méthode consiste à allumer pendant la pression longue, puis il n'est plus nécessaire de la gérer, il suffit d'envoyer la commande AT directement .

Il est à noter que les deux méthodes pour entrer dans le mode de fonctionnement de la réponse à la commande utilisent des vitesses de transmission différentes. Il est recommandé d'utiliser la deuxième méthode.

Comment se différencier dans le mode de réponse aux commandes?

Il y a un voyant sur le module Bluetooth. Lorsque le voyant clignote rapidement, il est en mode de connexion automatique; lorsque le voyant clignote lentement, c'est le mode de fonctionnement de réponse de commande. Lorsque le voyant clignote lentement deux fois, c'est le mode de connexion normal avec le téléphone portable.
Insérez la description de l'image ici

4) commande AT

Après être entré dans le mode de réponse aux commandes, vous pouvez utiliser l'assistant de débogage du port série pour effectuer le débogage Bluetooth.

Tout d'abord, les commandes AT ne sont pas sensibles à la casse et se terminent toutes par un retour chariot et un saut de ligne. Ce qui suit décrit les commandes AT couramment utilisées:
Insérez la description de l'image ici
Pour les commandes AT, il y a quelques points à noter:

  • AT + NAME?: Récupère le nom du périphérique. Il y a de fortes chances que cette commande AT ne soit pas renvoyée, car j'ai vu de nombreux exemples ..., mais d'autres commandes ne posent aucun problème, il suffit de définir le nom du périphérique directement;
  • AT + UART?: Obtenez les paramètres du port série. Il existe trois paramètres du port série, la vitesse de transmission, le bit d'arrêt et le bit de contrôle. Sa valeur est la suivante:

Insérez la description de l'image ici
La valeur par défaut est: 9600, 0, 0.

Définir les paramètres Bluetooth
Insérez la description de l'image ici
Vérifiez le résultat du réglage, le réglage est réussi, la
Insérez la description de l'image ici
recherche scientifique spécifique du jeu de commandes AT, vérifiez le manuel de données, vous pouvez un message privé ou un commentaire si vous en avez besoin

2. La transmission entre le téléphone portable et le module Bluetooth-résout le problème de ne pas pouvoir se connecter

Connectez directement le module Bluetooth avec le module de conversion, puis connectez-le à l'ordinateur, le module Bluetooth entre directement en mode de fonctionnement de la connexion automatique.

À ce stade, le téléphone ouvre l'application de débogage du port série Bluetooth et l'utilise pour se connecter au module Bluetooth.

Dans des circonstances normales, commencez par coupler le téléphone mobile, puis entrez directement la chaîne dans l'application de débogage du port série Bluetooth, et elle peut être reçue avec succès sur le port série de l'ordinateur.

Mais lorsque je faisais des tests, je pouvais coupler cette fois, mais je ne pouvais pas me connecter normalement.
Insérez la description de l'image ici
Insérez la description de l'image ici

1) Scénario 1: Le problème des téléphones portables

Bluetooth peut être couplé, mais ne peut pas être connecté

J'ai essayé de connecter un téléphone mobile à un ordinateur et à d'autres téléphones mobiles et j'ai constaté qu'aucun d'entre eux n'était possible,
mais l'utilisation d'un autre téléphone mobile Huawei peut être couplée avec l'ordinateur. (Le couplage du téléphone Xiaomi a échoué, mais le téléphone Huawei a été couplé avec succès) On
Insérez la description de l'image ici
peut voir que c'est le problème de couplage Bluetooth de mon téléphone Xiaomi.

Ensuite, j'ai utilisé le téléphone mobile de Huawei pour des tests, et j'ai constaté que le téléphone mobile de Huawei ne pouvait pas être couplé avec le module Bluetooth. Je suis arrivé à la conclusion que cela n'a rien à voir avec le téléphone mobile. Il devrait être que le module Bluetooth a besoin d'un autre paramètres à rechercher.

2) Hypothèse 2: Le problème de configuration du module Bluetooth

Après avoir vérifié les informations, il a été constaté que le module Bluetooth doit être défini comme esclave pour être recherché, puis j'ai fait quelques tentatives. J'ai d'abord vérifié le jeu de commandes AT (fourni par Punctual Atom) pour
Insérez la description de l'image ici
écrire la commande AT dans réglez-le, et ok indique que le réglage a réussi.
Insérez la description de l'image ici
La requête est en effet en mode esclave,
Insérez la description de l'image ici
mais le résultat échoue toujours.
Insérez la description de l'image ici
Cela montre que le mode Bluetooth que j'ai défini n'est pas faux 1, cela devrait être d'autres problèmes

3) Hypothèse 3: problème de câblage

Pour ce problème, je pense que c'est impossible, car je peux configurer les commandes AT normalement

4) Hypothèse 4: Le problème de l'assistant de débogage série

Remplacez constamment l'assistant de débogage Bluetooth, le nom s'appelle le port série Bluetooth, puis il peut être connecté avec succès.
Insérez la description de l'image ici
Vous pouvez envoyer des informations entre le téléphone mobile et le port série.
Insérez la description de l'image ici
Enfin, s'il est résolu avec succès, le problème réside dans le assistant de débogage série. La conclusion est que, si vous pouvez coupler normalement, mais que vous ne pouvez pas vous connecter normalement, changez votre téléphone mobile ou votre assistant de débogage série, car les problèmes de compatibilité Bluetooth rendent le couplage plus difficile.

Si vous avez besoin de l'apk de l'assistant de débogage série du téléphone mobile, vous pouvez envoyer un message privé ou commenter

3. STM8 MCU contrôlé par téléphone portable Bluetooth

Les deux exemples précédents sont relativement simples, cet exemple impliquera le contenu du programme.

Fonction de réalisation: le téléphone mobile envoie un message au MCU STM8 via Bluetooth, et le STM8 renvoie le message au téléphone mobile inchangé après avoir reçu le message. Bien sûr, si vous maîtrisez cet exemple, vous pouvez également le modifier pour que le téléphone mobile envoie un message spécifique, puis le microcontrôleur STM8 effectue l'action correspondante. Par exemple: éclairage des LED, etc., démarrage des moteurs, etc.
Insérez la description de l'image ici
Le principe est le suivant: le téléphone mobile est transmis au HC-05 via Bluetooth, puis communique avec le STM8 via le port série; et avant, il communique généralement avec le STM8 via le port série de l'ordinateur via le câble USB vers le port série. Il n'y a essentiellement aucune différence.
À ce stade, vous devriez avoir une compréhension plus approfondie de la phrase au début de cet article: Pour dire les choses franchement, il ne s'agit que d'un périphérique Bluetooth vers série. Il vous suffit de savoir comment programmer et utiliser le port série , et vous pouvez réaliser la soi-disant transmission transparente. Tout ce qui concerne Bluetooth est encapsulé et il n'est pas nécessaire de le toucher.

Sachant qu'il ne s'agit que d'une simple communication par port série, le code est facile à implémenter

L'interface de contrôle de l'application mobile est conçue comme suit:
Insérez la description de l'image ici

Code de référence

/****************************************************************/
//接收单字符函数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;
      }

}

Pour toute question sur les nombres de vecteurs d'interruption, veuillez vérifier ici: Table des vecteurs d'interruption IAR et écriture de la fonction de service d'interruption

Problèmes possibles

Après avoir défini certains boutons via le téléphone mobile, vous pouvez voir que la fonction d'interruption sera appelée deux fois sur l'assistant de débogage série de l'ordinateur, et l'exécution sera répétée.
Insérez la description de l'image ici
Cependant, j'ai changé un assistant de débogage série et il n'y a pas de problème. .. c'est vraiment un mal de tête
Insérez la description de l'image ici

Lien de référence: [Modules communs] Le module de communication série Bluetooth HC-05 utilise une explication détaillée (exemple: téléphone portable, contrôle Bluetooth, micro-ordinateur à puce unique STM32)

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44751294/article/details/111588963
conseillé
Classement