第21课 软件串口与蓝牙通信

我是潘,曾经是个工程师。这是为 Ardui.Co 制作的 “Arduino 公开课” 系列的入门教程。本课将介绍软件串口和蓝牙通信。有任何疑问请在评论区提出,我会逐一回答。

串口是应用最广泛的通信协议,可以实现高速传输(相对单片机来说),而且只需要两个线 RX 和 TX 即可。但串口也有缺点,每个串口只能实现一组通信, 而 Arduino Uno 只提供了一个串口(D0 – RX、D1 -TX),并且是和 USB 转换模块共用的。换句话说,如果 USB 端在使用, 就无法再接其他串口设备,比如,我们这次要介绍的 CC2541 蓝牙模块。

幸好,Arduino 官方提供了软件串口的库,可以将任意两个数字端口,模拟成串口。软件串口库不需要下载,IDE 已经集成,打开“菜单 -> 项目 -> 加载库 -> SoftwareSerial “即可加载。

使用软件串口前,先介绍一下 HM10 蓝牙模块。该模块采用德州仪器 CC2541 蓝牙4.0芯片,主从一体机,采用串口通信。另外,不建议使用老旧的HC5、HC6等,因为此类模块基于老旧的蓝牙2.1协议,耗电较大、很多新特性都不支持,而且也不便宜。

这个模块需要转焊,但也可以购买已经带底座的模块,更省事。我们只要4跟连接线:
3.3V 连接 3.3V(最高不超过7V);
GND 连接 GND;
TX 连接 D8;
RX 连接 D9;

往Arduino 写入程序:

这程序在理解上毫无难度。

此时,我们还需要在手机上下载一个蓝牙串口控制器,Arduino 设备推荐 ”BLE蓝牙串口“,iOS 推荐LightBlue,均为免费软件。最后打开PC 串口监视器和手机的蓝牙串口APP,就可以双向通信了。

顺便介绍一下 iOS 上 LightBlue 的使用。连接蓝牙模块后,我们把界面拉到最底部,找到UUID的选项点击进入,打开”Listen for nobiantifications“,此时才能监听蓝牙的串口数据。同时,要把右上角的Hex(十六进制),改为String(字符串)。

现在要结合 DHT11 温湿度传感器,在手机上显示实时温度。同时,不用软件串口了,让蓝牙模块直接使用 Uno 的硬件串口(D0、D1即硬件串口):

这其实就是第9课的程序简化版。

程序上传完毕后,拔掉USB,否则会产生冲突。蓝牙模块的 TX 接 D0,RX 接 D1,并使用 Uno 的外界电源口供电,打开手机蓝牙串口,看到湿度温度在刷新:

利用蓝牙通信,我们终于可以脱离PC大屏幕了,手机就能实现人机互动。

Leave a Reply

Your email address will not be published. Required fields are marked *