查看: 1498|回复: 4

[项目] 用图形化编程实现手机app通过蓝牙HC-05模块与Arduinor主控板...

[复制链接]
用图形化编程实现手机app通过
蓝牙HC-05模块与Arduino主控板多字节交互通信
        这段时间宅在家里有充足的时间学习,上个月学习了手机app通过Easy Iot物联网控制Arduino硬件,这个月又从零开始学习了手机app通过蓝牙模块控制Arduino硬件。一开始学习了Forgotten版主“[Mind+]使用图形化编程实现主控板与手机蓝牙App Inventor通讯”的帖子,但其中用的蓝牙模块是BLE-Link蓝牙模块搭配xbee io扩展板,这两个模块需100多块,对于抠门的我来说有点小贵,于是我选用了便宜点的HC-05蓝牙模块。在此分享一下我的制作过程。
        项目名称:用图形化编程实现手机app通过蓝牙HC-05模块与Arduinor主控板多字节交互通信
        项目功能:(1)可用手机app给Arduino主控板发送不多于3个字节的数字、字母或单个汉字,Arduino主控板根据接收到的信息控制灯的亮灭和风扇的启停;(2)Arduino在收到手机发来的信息后,能将信息返回给手机app显示;(3)手机app查看Arduino模拟端口的温度传感器实时读数。
        准备事项
        硬件:Arduino主控板×1
        面包板×1
        杜邦线若干
        HC-05蓝牙模块×1
        USB转TTL模块×1
        安卓手机×1
        LED灯×1
        风扇模块×1
        继电器模块×1
        模拟温度传感器×1
        软件:Mind+(调试蓝牙模块,给Arduino编程)
        App Inventor 2(编写安卓手机APP,网址:https://app.wxbit.com)
        制作过程
        一、编写安卓手机APP
        1、打开App Inventor 2在线编程平台,https://app.wxbit.com,用QQ账号授权登录(图1)。App Inventor是一款采用拖拽操作的可视化编程工具,主要用于构建运行在安卓平台上的移动应用。它提供了基于Web的图形化的用户界面设计工具,可以设计应用的外观,然后,再像玩拼图游戏一样,将“块”语言拼在一起,来定义应用的行为。
图0.png
图1:登录App Inventor2在线编程平台
        2、用App Inventor 2编写App程序。
        如果你还不会使用App Inventor 2编程,那就不用自己编程了,App我已写好,你只要把文件hc05.aia导入即可(图2)。链接:https://pan.baidu.com/s/1sqJhHTT9hgaGkR9-ezxPcg ,提取码:ma3e
图2.png
图2:导入hc05.aia文件

图4.png

图3:手机APP程序
        3、将项目生成APK,并通过扫描二维码,将APK文件下载到你的安卓手机(图4),然后安装APP,打开手机的蓝牙开关,再打开App就能使用了。
图3.png
图4:生成APK并通过扫描二维码将应用下载到手机
图5.png
图5:手机APP界面

        二、蓝牙HC-05模块的设置与调试
        1、HC-05蓝牙模块与USB转TTL串口模块的连接。蓝牙模块与USB转TTL模块的接线情况就是VCC-VCC(取5v),GND-GND,RXD-TXD,TXD-RXD(图6)。
图6.jpg
图6 :HC-05蓝牙模块与USB转TTL串口模块的连接

        2、利用Mind+的串口监视器对HC-05蓝牙模块进行调试。
        (1)将连接好的TTL模块插入电脑USB插口,打开Mind+软件,选上传模式,点击“连接设备”,选择蓝牙模块对应的端口,打开串口监视器,波特率选择9600(图7)。
图7.png
图7:打开Mind+串口监视器
        (2)蓝牙模块的调试。
        HC-05蓝牙串口通讯模块具有两种工作模式:命令响应工作模式和自动连接工作模式,我们需要先在命令响应工作模式下对HC-05蓝牙模块进行设置。模块上电,未配对情况下就是AT模式,在每次发送AT指令时需要先按下蓝牙模块上的小按键,发送完毕后松开按键。依次发送以下四条指令:
        AT               //返回OK,表示执行AT指令正常,可以继续发送以下指令,如没有反应或返回ERROR:(0),请重新设置比特率和回车加换行。
        AT+ROLE=0        //返回OK,设置蓝牙模块为从模式
        AT+NAME=hc05     //返回OK,设置蓝牙模块名称为hc05
        AT+PSWD=1234     //返回OK,设置蓝牙配对码为1234
        执行完以上操作,蓝牙模块就设置完毕,可以和手机App相互通信了。
图8.png
图8:给蓝牙模块发送AT指令
        (3)将手机和蓝牙模块配对,并测试通信状况
        从电脑上拨出USB转TTL模块,然后重新插入给蓝牙模块上电,这时蓝牙模块进入自动连接工作模式。点击手机的设置按钮,开启蓝牙,手机就会自动搜索周围的蓝牙设备,等待约一两分钟后,在不常用类型设备中可以看到“hc05”,点击“hc05”在弹出的对话框中输入“1234”进行配对,然后“hc05”就会出现在已配对设备中(图9)。
        配对成功后,打开手机APP,点击“已配对设备”会出现已配对设备的地址和名称列表,选择hc05,手机和蓝牙模块就连接成功了。在手机app界面的文本输入框中输入任意数字、字母或汉字,点“发送”,在Mind+的串口监视器中就会显示手机端发来的信息。同时在Mind+的串口发送信息框中输入任意数字、字母或汉字,点“发送”,在手机app界面上也会显示电脑端发来的信息(图10)。这时手机和蓝牙的通信成功。
图9.jpg
图9:手机与hc05蓝牙模块进行配对
图10.png
图10:手机与hc05蓝牙模块通信测试
        三、给Arduino硬件编写程序
        1、连接硬件(图11)。面包板的正负极分别接Arduino的5V和GND管脚;hc05蓝牙模块的VCC、GND分别接在面包板的正负极,TX、RX分别接Arduino的2、3号引脚(不能接0、1引脚,否则会影响程序的上传);模拟温度传感器的VCC、GND分别接在面包板的正负极,AO接Arduino的模拟端口A0引脚;LED灯GND接面包板负极,VCC接Arduino的7号引脚;风扇模块的负极接接面包板负极,正极接继电器的no端口,继电器的DC+、DC-分别接面包板的正负极,IN接Arduino5号引脚,com接面包板正极(因Arduino数字引脚的输出电流无法直接驱动风扇模块,所以风扇模块需要从Arduino的5V和GND管脚直接取电,然后用继电器控制)。
图11.jpg
图11:硬件连接
        2、给Arduino编程(图12)。
        串口通信是在单根数据线上将数据一位一位地依次传送。发送过程中,每发送完一个字数据,再发送下一个,依次把所有数据发送完毕,发送的频率与比特率有关,比特率越大发送的越快。接收数据时,每次从单根数据线上一位一位地依次接收,如果间隔10us没收到数据,接收端就认为本次数据接收完毕,接收完毕后需要把本次收到的一个个单字节数据整理成一个完整的数据。
        变量与列表说明
        接收数据:保存软串口收到的表示单个字节的十进制编码。
        接收内容:用ACSLL字符转换命令将软串口收到的表示单字节的十进编码转换成正常的单个字符。
        接收字节数:记录软串口完成一次信息接收所收到的字节总数,接收字节数与合并内容列表的项数相关联。
        完整内容:将本次接收到的一个个单字节字符整理成一个完整字符串。
        内容列表:将接收的单字节数据依次保存在列表中,接收完毕后将列表中的内容合并赋值给变量完整内容。
Arduino与手机app蓝牙通信.png
file:///C:\Users\bjl\AppData\Local\Temp\ksohtml1772\wps13.jpg图12:Arduino完整程序
        3、开始使用
        把程序上传到Arduino后,打开mind+串口监视器,开启手机蓝牙,打开APP,点击“已配对设备”,在设备列表中选择“hc05”,手机与蓝牙连接成功。这时在输入框中输入不多于3字节的数字、字母或单个汉字,然后点“发送”,在mind+串口监视器中就能看到发来的信息,同时App页面也会收到返回的信息。
发送“开”,风扇转动,发送“关”风扇停止;发送“亮”,LED灯发光,发送“灭”,LED灯熄灭;发送“看”,Arduino就发来A0端口模拟温度传感器的温度值。
        以上都是自己在网上看帖子一步步琢磨出来的,不具备专业知识,所以专业术语可能有误。还请大家多多指正。

gada888  版主

发表于 2020-3-27 09:57:50

继续努力
回复

使用道具 举报

不教学生的教师  初级技师
 楼主|

发表于 2020-3-27 21:48:26


谢谢鼓励,下一步学习用app调用百度人工智能API,让arduino更智能。
回复

使用道具 举报

Friday1  见习技师

发表于 2020-4-10 17:43:30

是不是必须用TTL模块才能在mind+里配置蓝牙名和密码啊?我可以在ide里设置蓝牙,但是mind+串口监视器里输入at点发送,没反应
回复

使用道具 举报

瞎鼓捣  初级技师

发表于 2020-4-10 21:38:50

是的用USB转TTL串口模块来调试蓝牙,发送AT指令时必需按住蓝牙模块上的小按键才行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail