龙空技术网

实战microPython(10)-蓝牙模块的使用(上)

尹一格 77

前言:

现时大家对“安卓python蓝牙”大体比较讲究,看官们都需要剖析一些“安卓python蓝牙”的相关资讯。那么小编同时在网摘上搜集了一些有关“安卓python蓝牙””的相关文章,希望姐妹们能喜欢,大家快快来了解一下吧!

大家好,今天讲解蓝牙模块的使用,以及通过uPyBoard来操作蓝牙模块并实现手机和uPyboard互动。

正在学习和使用uPyBoard开发的小伙伴可能一直会有一种遗憾,就是uPyBoard虽然可以使用microPython开发,而且已经带有非常丰富的设备库,但是,却没有无线连接功能,尤其是对于时下最流行的手机控制一切的玩法,是不是就无能为力了呢?NO,我承认有些开发板天生具备无线功能,但没有一款板子可以包含所有你想到的功能。由于成本原因,功能越丰富的开发板价格越高,而且会有很多功能一直都没有机会使用到,这不免会造成浪费。因此,我们需要学会按照自身需要扩充开发板的功能就可以了。

那么,如何扩展功能呢?答案就是上次我们提到的通讯端口(接口),其中三大基础串行通讯端口:UART, SPI, I2C可以包含绝大多数的外扩功能模块。如之前已经接触过的,16路舵机驱动模块(I2C),OLED显示屏模块(SPI/I2C)等。而今天要扩展的蓝牙模块就需要使用上次讲过的UART串口来连接了。

当uPyBoard扩展了蓝牙模块后,就可以通过手机的蓝牙向uPyBoard板发送命令,uPyBoard接收到命令后执行相应的动作。当然,手机上必须要有相应的APP程序。

当前,最常见的蓝牙模块是HC-05和HC-06:

HC-05的蓝牙模块支持主/从模式,价格贵一些,HC-06的模块只支持从模式,价格稍微便宜些。所谓主模式和从模式,其实就是主模式可以主动搜索其他可见的蓝牙模块,并从中选取要连接的蓝牙设备,而从模式只能等待主模式的蓝牙设备连接。虽然好像主模式功能更好些,但是对于我们嵌入式的应用,在没有显示和输入的情况下,主模式是无法发挥其作用的,因此从模式才是最适合我们使用的工作模式,毕竟手机是可以在主模式下找到我们的设备并连接的。另外还有一点,HC-05模块本身默认为主模式,要想改变模式非常麻烦。综上所述,我这里推荐便宜又好用的HC-06蓝牙模块。大家要注意看上面两个模块的区别,或在购买前向店主问清楚。

HC-06模块只有从方式,因此,接口连接也极为简单:

只有4个引脚,RX,TX,GND,+5V,前两个,我想大家应该知道是UART串口的收发引脚。不知道的可以看之前的UART串口使用教程。后两个引脚就是电源引脚了,模块是5V供电。

我们依然使用上次的实验,实际上用蓝牙模块将上次实验中的HC340串口板替换掉即可:

蓝牙模块HC-06的配置:

蓝牙通讯是一种非常复杂的无线通讯协议,比之UART串口协议要复杂的多,因此,要想让多个蓝牙设备之间相互通讯其通讯参数也很多,同样的,必须要让大家都遵循同样一种规则发送和接收讯息,才能保证相互之间能够顺利的交流。

蓝牙模块的设置也是通过UART串口发特殊的命令来实现的,这套特殊的设置命令被称为AT指令集,这是一套被广泛应用于通讯设备的指令集,其特点是以字符"AT"为开头,以换行符为结尾的命令字符串。就像我们上次自定义的指令一样。这样的指令直接由蓝牙模块本身识别并处理,并不会通过蓝牙向外部传递。所以,我们在应用时自定义的指令要避免和AT指令集相混淆。

蓝牙模块本身由比较多的设置命令,但所幸的是作为从机的HC-06的设置指令非常简单,以下是HC-06的AT指令:

可以看到,HC-06的设置指令其实只有4条。HC-06使用UART串口和控制器通讯,默认波特率为9600bps(参见上次串口的使用教程)。如果想修改为其他速率,可使用相应的AT命令设置。

直接通过UART串口发"AT"命令,将收到"OK"作为回应,表明蓝牙模块和控制器的通讯正常。我们经常使用这条命令判断蓝牙模块的连接是否正确,且能否正常工作。

在无线连接方面,蓝牙需要一个识别名称,在主机端的搜索中,可以被发现并识别。默认是HC-06。

另一方面,无线连接时,也需要密码。蓝牙上称为PIN码,是4为数字,默认为1234。

手机APP准备:

在手机端,我们需要一个APP程序来发送自己定义的指令。这个程序应该由我们编制,但显然编制手机APP程序已然超出教程的范围。手机的软件开发,是更加复杂的系统规范,需要读者花费极大的耐心去学习。不过也由入门级和简单的实现方案,以后有时间给大家介绍吧。今天,我们先使用现成的蓝牙测试软件。这类软件不只一种,可以在安卓手机的应用商店中搜索,我这里用的是一个叫"蓝牙串口"的小程序,试了几个,觉得这个还可以。图标是这个样子的:

uPyBoard连接实验:

首先我们要先在microPython板这边将蓝牙模块HC-06连上,并能通过UART端口和其通讯,通过发送AT指令收到其回应,这样才能确定uPyBoard和蓝牙模块HC-06的连接是成功的。

安照前面的连接图,将蓝牙模块连接到uPyBaord板上。连线时一定要仔细,加电前反复确认。确认连接无误后,将uPyBoard连接到电脑,此时蓝牙模块HC-06也会上电,其上的LED灯快速闪动。

打开控制台软件HexTerminal,在下方的输入窗口复制粘贴如下代码:

看过上次教程(UART的使用)的朋友,应该能够看懂。初始化UART1后,通过UART1向HC-06发送了AT命令字串。并等待1秒后,去检查UART1收到的内容,我们可以从HexTarminal上面的窗口中看到已经收到回应的字符串:OK。截图如下:

这说明,uPyboard和HC-06模块的连接正确且能够正常通讯了。HC-06模块的作用就是将UART发来的所有非AT命令的内容通过蓝牙发送给与其配对的设备,而将蓝牙接收的内容通过UART发送给uPyBoard。

我们可以进一步测试其他AT指令,用来设置HC-06。不过,最常用的无非是检测蓝牙模块是否可用,修改蓝牙设备名称以及修改PIN码。下面我写了两个功能函数用来实现检测蓝牙模块是否可用和修改蓝牙名称,供大家参考:

isATBleOK()用来检测蓝牙模块是否连接正常且可用,依据的方法就是前面的直接发送AT指令并收到回应。所以,在系统上电后,使用蓝牙模块前需要调用此函数确认蓝牙模块的正常。否则后面的所有操作都是白瞎。

setATBleName()用来修改蓝牙设备名称,一般情况下不用修改,默认是HC-06。我这里测试修改为MyBLE了。实验结果如下:

第一个True是isATBleOK()返回的,表面HC-06可用。下面的OKsetname是setATBleName()返回的,说明设备名称修改成功。

(未完待续)

祝各位玩得愉快!请继续关注:创客DIY乐园(MakerDIY-Park),您的关注是我前进的动力。

标签: #安卓python蓝牙 #python连接蓝牙模块