Android通过蓝牙HC06与Arduino通信实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android通过蓝牙HC06与Arduino通信实例相关的知识,希望对你有一定的参考价值。

参考技术A 串口硬件的发送和接收表示序列位的电脉冲数据。每个字节信息由各种组合的"0"和"1"构成。
我们向arduino发送数据通常有两种方式,一种是通过串口监视器,一种是通过Serial.print。
串口打印(Serail.print)信息不能拼接字符串或变量,这是个很大的缺陷,可以用springf来实现,如:

使用 Arduino UNO 配置和配对 2 个 HC-06 蓝牙模块作为主从模块

【中文标题】使用 Arduino UNO 配置和配对 2 个 HC-06 蓝牙模块作为主从模块【英文标题】:Configuring and pairing 2 HC-06 Bluetooth modules as Master and Slave using Arduino UNO 【发布时间】:2018-08-20 12:43:58 【问题描述】:

我一直在尝试在两个 HC-06 蓝牙模块之间建立连接。配对已完成。两个模块正在通信。我的目标是从一个模块发送一封信并从另一个模块接收确认。主模块的代码如下。

#include <SoftwareSerial.h>
SoftwareSerial BTserial(2,3); // RX, TX

char c;
char s[]="Matched";
int t[]="NotMatched";

void setup() 

    // start the serial communication with the computer
    Serial.begin(9600);
    Serial.println("Arduino with HC-06 is ready");
     // start communication with the HC-06 using 38400
    BTserial.begin(38400);  
    Serial.println("Bluetooth serial started at 38400");


void loop()
  
   // Read from HC-06 and send to Arduino Serial Monitor
   if (BTserial.available())
     
        c=(BTserial.read()); 
    if (c=='a')
      
      Serial.write(s);
      
    else 
      
      Serial.write(t);  
      
    

    // Read from Arduino Serial Monitor and send to HC-06
    if (Serial.available())
    
        c =  Serial.read();
        Serial.write(c);   
        BTserial.write(c); 
    

类似的代码用于从模块。除了代码中的“其他”部分之外,一切都运行正常。我收到确认以及 else 部分被打印两次的代码的 if 和 else 部分,即“匹配不匹配不匹配”在收到字符“a”时打印,“不匹配不匹配不匹配”打印时打印它接收除 'a' 以外的任何内容。您能否就可能出现的问题给我一些建议。

【问题讨论】:

【参考方案1】:

您是否打印了您正在阅读的字符?

我遇到了类似的问题,我发现蓝牙正在接收垃圾字符。原因是HC-06模块的标准波特率是9600,所以如果你改变:

BTserial.begin(38400);

BTserial.begin(9600);

在master和slave中,它都可以工作。

【讨论】:

以上是关于Android通过蓝牙HC06与Arduino通信实例的主要内容,如果未能解决你的问题,请参考以下文章

无法通过蓝牙将Arduino Uno连接到Blynk

Android蓝牙串口通信控制Arduino全彩呼吸灯

使用 Arduino UNO 配置和配对 2 个 HC-06 蓝牙模块作为主从模块

Arduino蓝牙模块HC-06错误

unity在安卓手机上使用蓝牙连接arduino蓝牙模块

arduino的fc114蓝牙模块与iphone怎么配对