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通信实例的主要内容,如果未能解决你的问题,请参考以下文章