Arduino 与 Android 蓝牙集成:构建无线项目
组件与物料
| Arduino UNO | ×1 |
| HC-06 蓝牙模块 | ×1 |
| LED(通用) | ×1 |
应用与在线服务
- Arduino IDE
- MIT App Inventor 2
项目简介
蓝牙无疑是一个非常优秀的无线局域(和个人)网络技术。在当今日常生活中,我们常见手机、音响、相机等设备通过著名的“蓝色小灯”互联。
在物联网和自动化领域,通过手机蓝牙远程控制非常普遍,这主要得益于两个关键因素:
- 简单的 Android 应用开发平台(如 MIT App Inventor 2)
- 价格低廉的蓝牙模块(如 HC-06)
本教程将展示如何通过移动设备控制 Arduino 的输出,从而驱动机器人、控制家庭灯光等。
步骤 1:蓝牙模块与 Arduino 连接
市面上常见的有“主从一体”的 BT 3.0 模块 HC-05,以及“从机”模式的 HC-06。较新的 HC-08 和 HC-10 支持蓝牙 4.0(BLE)。BLE 模块是唯一能连接 iPhone 的,因为苹果不支持 BT 3.0。
本项目使用广泛且廉价的 HC-06(再见 iPhone,Android 称王!)。HC-06 由 5V 供电,可直接连接 Arduino UNO。其 Tx 和 Rx 引脚可直连 UNO,无需像 ESP8266 那样分压。通常 HC-06 连接到 Arduino 的 0 和 1 引脚(硬件串口 Serial 0):
- HC06-Tx → Arduino 引脚 0 (Rx)
- HC06-Rx → Arduino 引脚 1 (Tx)
使用硬件串口时,上传程序期间 HC-06 不能物理连接在 0、1 引脚,因为 USB 也占用该串口。若项目不占用太多 GPIO,可用 SoftwareSerial 库在引脚 10、11(Tx、Rx)建立软串口,本教程采用此方案。
步骤 2:测试与配置 HC-06
编写简单代码测试、编程和初始化 HC-06:
#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11); // RX, TX
String command = ""; // 存储蓝牙设备响应
void setup() {
Serial.begin(9600);
Serial.println("Type AT commands");
BT.begin(9600); // HC-06 默认波特率
}
void loop() {
if (BT.available()) {
while (BT.available()) {
delay(10);
char c = BT.read();
command += c;
}
Serial.println(command);
command = "";
}
if (Serial.available()) {
delay(10);
BT.write(Serial.read());
}
}
程序上传后,通过串口监视器进行基本测试:
- 发送 “AT”,模块应回复 “OK”
- 查询固件版本:“AT+VERSION”,如返回 “linvorV1.8”
- 设置模块名称:“AT+NAMEMJRoBot_BT_HC06”,模块回复 “OKsetname”(无法查询已设名称)
HC-06 默认配对密码为 1234,可用 AT+PINxxxx 修改(xxxx 为 4 位数字)。
步骤 3:Android 设备配置
模块连接 UNO 并运行后,引入 Android 设备。Google Play 上有许多可用 App,本教程使用笔者基于 MIT App Inventor 2 开发的免费 App:“MJRoBot BT Digital Analog Voice Control”。该 App 通过按钮或语音发送数字命令,并通过滑块发送 0-255 的模拟值控制 PWM 设备(如舵机)。
- 下载安装 App
- 在 Android 设置中搜索并配对 HC-06(输入 PIN 1234 或自定义密码),仅需一次
- 启动 App,后续会自动连接
- 选择模块名称(含 HC-06 后缀)
App 显示 “CONNECTED” 表示配对成功。测试按钮,观察串口监视器接收到的数据,如按下 4 个设备的 ON/OFF 按钮,会收到:
dev1on dev1off dev2on dev2off dev3on dev3off dev4on dev4off
步骤 4:控制 Arduino 输出
按图搭建电路,用 App 控制 LED 亮灭及亮度(PWM)。连接对应关系:
- Device 1: “dev1on/dev1off” → 红色 LED → UNO 引脚 3 (PWM)
- Device 2: “dev2on/dev2off” → 黄色 LED → UNO 引脚 5 (PWM)
- Device 3: “dev3on/dev3off” → 绿色 LED → UNO 引脚 6 (PWM)
- Device 4: “dev4on/dev4off” → 蓝色 LED → UNO 引脚 9 (PWM)
滑块控制时,先发送字符标识再发送 0-255 数值:
- Dev A0: “r/0-255” → 红色 LED → 引脚 3
- Dev A1: “y/0-255” → 黄色 LED → 引脚 5
- Dev A2: “g/0-255” → 绿色 LED → 引脚 6
- Dev A3: “b/0-255” → 蓝色 LED → 引脚 9
完整 Arduino 代码见附件(FA44NBUIL8LGGAY.ino)。
步骤 5:语音控制 IoT 设备
语音控制是当前趋势。Android 设备原生支持语音识别,笔者开发的 App 增加了一个按钮,让 Android “聆听”指令并以文本形式发送给 Arduino。代码负责解析接收到的字符串。例如收到 “Connect TV” 指令,绿色 LED(设备 3)点亮(实际可接继电器控制电视)。
需将代码中的指令字符串改为你的语言(笔者用葡萄牙语)。建议使用简短词句,确保与 Google 语音识别返回结果完全匹配。.aia 文件可直接在 MIT App Inventor 2 中运行。
步骤 6:总结
通过本教程,你可以体会到蓝牙/Android/Arduino 控制“事物”的巨大潜力。希望项目能帮助更多人探索电子、机器人和 IoT 的精彩世界!更多项目请访问我的博客:MJRoBot.org
来自世界南端的问候!下期教程见!谢谢!Marcelo
制造工艺
- 蓝牙控制树莓派机器人:语音反馈功能构建指南
- 使用 Arduino Uno 轻松编程 Atmel AT89 系列单片机——分步指南
- 基于 Arduino、1Sheeld 与红外控制的万能安卓遥控器
- Android 手势遥控车:Raspberry Pi + Arduino 101 + 电机扩展板,I2T 协同控制
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- 语音控制家电:Google Assistant + 蓝牙 + Arduino UNO
- Arduino UNO + WiFi 盾板:串口实时推送温度到网页绘图
- Intel Curie 加速度计驱动的体感触发灯光系统
- 手机APP无线控制Arduino LED:WiFi/Ethernet + Evothings Studio跨平台开发
- Arduino + 继电器 + 安卓 App 远程控制灯泡
- 通过专用 Android App 蓝牙控制 Arduino 机械臂
- 蓝牙控制 8×8 LED 点阵滚动显示:Arduino Nano + MAX7219