Bluetooth 使用HC05[STM32]连接ELM327 BT(不像看上去那么简单)

Bluetooth 使用HC05[STM32]连接ELM327 BT(不像看上去那么简单),bluetooth,at-command,stm32f4discovery,elm327,hc-05,Bluetooth,At Command,Stm32f4discovery,Elm327,Hc 05,我想使用HC-05通过蓝牙连接STM32F4和ELM327。我有一些特别的问题。每次我尝试使用“AT+链接”时,HC-05都会响应“失败” 硬件: STM32F411V+HC-05 iCar2 V327 BT v3.0 我已经做了: 我已经用商业应用程序、终端等测试过ELM327——它连接良好,运行良好 我已经测试过HC-05配置,与BT终端配合得很好 尝试使用AT命令的不同配置来获得Elm327和HC之间的自动连接-每次“失败” 这是我使用的代码的一部分: HAL_UART_Receive

我想使用HC-05通过蓝牙连接STM32F4和ELM327。我有一些特别的问题。每次我尝试使用“AT+链接”时,HC-05都会响应“失败”

硬件:

  • STM32F411V+HC-05
  • iCar2 V327 BT v3.0
我已经做了:

  • 我已经用商业应用程序、终端等测试过ELM327——它连接良好,运行良好
  • 我已经测试过HC-05配置,与BT终端配合得很好
  • 尝试使用AT命令的不同配置来获得Elm327和HC之间的自动连接-每次“失败”
  • 这是我使用的代码的一部分:

    HAL_UART_Receive_IT(&huart2, BufforMsg, 1);
    
      HAL_Delay(10000);
    
      HAL_UART_Transmit(&huart2, (uint8_t *)"AT+ORGL\r\n", strlen("AT+ORGL\r\n"), 100); //HC-05:OK
    
      HAL_Delay(1000);
    
      HAL_UART_Transmit(&huart2, (uint8_t *)"AT+NAME=MASTER\r\n", strlen("AT+NAME=MASTER\r\n"), 100); //HC-05:OK
    
      HAL_Delay(1000);
    
      HAL_UART_Transmit(&huart2, (uint8_t *)"AT+UART=9600,1,0\r\n", strlen("AT+UART=9600,1,0\r\n"), 100); //HC-05:OK
    
      HAL_Delay(1000);
    
      HAL_UART_Transmit(&huart2, (uint8_t *)"AT+RESET\r\n", strlen("AT+RESET\r\n"), 100); //HC-05:OK
    
      HAL_Delay(1000);
    
      HAL_UART_Transmit(&huart2, (uint8_t *)"AT+ROLE=1\r\n", strlen("AT+ROLE=1\r\n"), 100); //HC-05:OK
    
      HAL_Delay(1000);
    
      HAL_UART_Transmit(&huart2, (uint8_t *)"AT+PSWD=1234\r\n", strlen("AT+PSWD=1234\r\n"), 100); //HC-05:OK
    
      HAL_Delay(1000);
    
      HAL_UART_Transmit(&huart2, (uint8_t *)"AT+INIT\r\n", strlen("AT+INIT\r\n"), 100); //HC-05:OK
    
      HAL_Delay(10000);
    
      HAL_UART_Transmit(&huart2, (uint8_t *)"AT+RMAAD\r\n", strlen("AT+RMAAD\r\n"), 100); //HC-05:OK
    
      HAL_Delay(1000);
    
      HAL_UART_Transmit(&huart2, (uint8_t *)"AT+PAIR=86DC,B0,ABF7F1,20\r\n", strlen("AT+PAIR=86DC,B0,ABF7F1,20\r\n"), 100); //HC-05:OK
    
      HAL_Delay(21000);
    
      HAL_UART_Transmit(&huart2, (uint8_t *)"AT+BIND=86DC,B0,ABF7F1\r\n", strlen("AT+BIND=86DC,B0,ABF7F1\r\n"), 100); //HC-05:OK
    
      HAL_Delay(3000);
    
      HAL_UART_Transmit(&huart2, (uint8_t *)"AT+LINK=86DC,B0,ABF7F1\r\n", strlen("AT+LINK=86DC,B0,ABF7F1\r\n"), 100); //HC-05:FAIL + INQ: Mac Address
    
      HAL_Delay(3000);
    
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0 );
    
    我也尝试过这些命令的不同配置,但一直都是相同的->失败。 顺便说一句,我知道我设置了buadrate 9600,但在AT命令模式下这并不重要。 HC上的指示灯快速闪烁1s,然后缓慢闪烁(以及在连接模式下)2 s,但随后再次快速闪烁,然后再次缓慢闪烁,反复闪烁。我猜HC一直在试图连接Elm。 mac地址是正确的-我使用了几台MacAdress扫描仪,地址到处都是相似的。 ELM327每次连接时都需要密码(即使该设备与我的智能手机配对)。 我可能阅读了斯塔科夫和其他网站上的所有主题。我发现这些解决方案不起作用。
    有人知道怎么回事吗?

    以下是AT命令序列,以便使用HC-05成功连接到ELM327适配器:

     - AT+RESET
     - AT+ROLE=1
     - AT+CMODE=0
     - AT+INIT
     - AT+BIND=0011,22,334455 //Replace with MAC Address of ELM327
     - AT+PAIR=0011,22,334455,20 //Replace with MAC Address of ELM327, 20 is the timeout value
     - AT+LINK=0011,22,334455 //Replace with MAC Address of ELM327
    
    在尝试此连接时,还需要确保ELM327未连接到任何其他设备。您以前可能已连接到移动电话以使用终端应用程序进行测试。为了安全起见,请关闭手机的蓝牙

    还要确保这些AT命令之间有适当的等待时间

    如果您的ELM327在每次尝试连接时都需要密码,您也可以使用正在使用的AT+PSWD命令


    连接成功后,您可能还需要使用at命令在ELM327上执行配置,以设置ISO标准、打开/关闭回声等。

    您搜索过Arduino SS吗?根据此问题,您可能面临固件问题。您是指Arduino SlaveSelect吗?对不起,我指的是Arduino堆栈交换,我将再次发布链接