大家有没有想过用安卓手机来控制自己的机械机器人,或者为机器人设计一个自定义的遥控器?在这个教程中,我们将一起学习一款常用于上述场景及许多其他情况的蓝牙模块——HC-05。我们将深入理解HC-05模块的连接原理、工作机制,以及如何将其与自定义的安卓应用进行对接。
基础知识
在电子和通信领域,无线通信正在迅速取代有线连接。HC-05模块的设计初衷就是为了替代电缆连接,它使用串行通信与电子设备进行通信。通常,它通过短距离无线连接连接手机等小型设备以交换文件。它使用2.45GHz频段,数据传输速率最高可达1Mbps,有效范围约为10米。
HC-05模块可以在4-6V的电源电压下工作。它支持9600、19200、38400、57600等多种波特率。最重要的是,它可以在主从模式下工作,这意味着它既可以发送数据也可以从外部源接收数据。
!imageHC-05模块
引脚说明
**Enable - 该引脚用于设置数据模式或AT命令模式(置高电平)。**
**VCC - 连接到+5V电源。**
**Ground - 连接到供电系统的地。**
**Tx (Transmitter) - 该引脚串行发送接收到的数据。**
**Rx (Receiver) - 用于通过蓝牙串行广播数据。**
**State - 用于检查蓝牙是否正常工作。**
工作模式
HC-05蓝牙模块可以使用两种工作模式:命令模式和数据模式。
#### 命令模式
在命令模式下,我们可以通过AT命令与蓝牙模块通信,用于配置模块的各种设置和参数,例如获取固件信息、更改波特率、更改模块名称,还可以将其设置为主机或从机。
关于HC-05模块的一个重点是,它可以在通信对中被配置为主机或从机。为了选择其中一种模式,我们需要激活命令模式并发送相应的AT命令。
#### 数据模式
在数据模式下,该模块用于与其他蓝牙设备进行通信,即数据传输发生在此模式下。
使用微控制器对HC-05进行编程
代码的技术规格:
- 使用Arduino-Uno作为微控制器。
- 名称:HC-05
- 密码:1234(或0000)
- 类型:从机
- 模式:数据模式
- 波特率:9600,8位数据位,无奇偶校验,1位停止位
C
CODEBLOCK_afe5ea93
HC-05与Android应用对接
现在,让我们开发一个小型的安卓应用程序来演示蓝牙模块与安卓应用的连接。我们将使用Android Studio来完成这项工作,并在微控制器上使用上述C代码。
算法:
在Android Studio上创建一个空项目
创建一个包含所有可用蓝牙设备的ListView。
获取HC-05模块的名称和MAC地址。
打开与HC-05模块的连接。
以字节形式向模块发送数据指令。
代码解析
#### 1. 在ListView中获取所有蓝牙设备
这段代码用于MainActivity(即主活动),列表将显示在这里,之后当设备被选中时,控制界面将出现以发出指令。
Java
“
// 初始化蓝牙适配器
private BluetoothAdapter BluetoothAdap = null;
private Set Devices;
// 位于活动的Oncreate方法中
BluetoothAdap = BluetoothAdapter.getDefaultAdapter();
// 用设备填充列表的方法
private void pairedDevices()
{
Devices = BluetoothAdap.getBondedDevices();
ArrayList list = new ArrayList();
if (Devices.size() > 0) {
for (BluetoothDevice bt : Devices) {
// 将所有可用设备添加到列表中
list.add(bt.getName() + "
" + bt.getAddress());
}
}
else {
// 如果未找到设备
Toast.makeText(getApplicationContext(), "No Paired Bluetooth Devices Found.", Toast