STM32+ESP8266+AIR202/302基本控制篇-114-功能测试-APP扫码绑定Air302(NB-IOT),并通过MQTT和Air302(NB-IOT)实现远程通信控制

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 

说明

1.随着2G基站撤销和不再维护,对于低速,小数据量场合的通信由另一个GPRS模组代替(NB-IOT)

NB-IOT模块和GPRS模块使用起来是一样的,都需要插手机卡(需要NB专用卡).NB-IOT是作为移动网络的一个单独的分支.

如果您的设备传输的数据量不是很大,传输速率也没有严格的要求,直接用NB-IOT模块即可.传输速度低就代表耗电少.低功耗!

如果您的设备传输的数据量挺大,而且希望传输速度快,那么还是选用2G/3G/4G模块.

 

 

 

2.开发板板载的NB-IOT是合宙的Air302模组

这节演示一下使用APP扫码绑定NB-IOT,然后通过MQTT服务器实现远程温湿度采集和远程控制继电器

 

 

 

测试功能

1.请按照第一节硬件介绍,下载单片机程序

 

2.安装APP


 


3.请使用杜邦线连接如下:(安装手机卡(NB卡,我使用的移动的NB卡),天线)
(STM32)A3 --- TX(NB-IOT)
(STM32)A2 --- RX(NB-IOT)


 

 

 

4.当前拨动开关如下:

 

5.提醒
串口1在程序里面作为了日志打印输出口
用户可以打开串口调试助手观察日志

 

 

测试

1.打开APP,点击右上角菜单,选择添加设备 扫一扫

 

 

 

 

 

 

 

 

2.扫描成功以后,自动跳转到主页面,并添加了一个设备

 

设备显示的信息为NB-IOT的IMEI

 

 

3.点击设备进入设备控制页面

 

 

 

 

4.控制继电器

 

 

 

 

 

 

 

单片机程序

1.如果用户搭建好了MQTT服务器,可以修改下面的参数连接自己的服务器

注:假设服务器的IP地址是 47.92.31.46,则unsigned char IP[55]="47.92.31.46";

ClientID默认使用芯片的唯一码,用户不需要填写.

 

 

2.程序主要概况

 

 

 

① 控制模块以非阻塞方式连接MQTT服务器
② MQTT消息处理封装包

 

2.和NB-IOT通信

单片机使用串口2和NB-IOT用AT指令通信

串口1作为日志输出口

所有的串口采用环形队列缓存管理,利用空闲中断检测接收完一条数据以后再去处理.

由于NB-IOT模块发送数据有间断问题,为保证接收完一条数据

在空闲中断的基础上增加了额外的20Ms空闲检测

 

 

 

 

 

 

 

3.我封装的MQTT库为回调函数形式

 

 

 

 

 

4.MQTT服务器实际上就是一个TCP服务器

然后在TCP的基础上增加的协议.

所以一开始连接TCP服务器

连接服务器是使用的我写的 ConfigModuleNoBlock小框架

 

 

 

 

 

 

 

 

 

提示:

case 3 是获取模组的IMEI号,就是模组上面的二维码

用IMEI作为了MQTT的ClientID

 

连接上TCP服务器(MQTT服务器)完成以后,发送连接MQTT协议

执行上面的case9 的 FunctionParseConnectMqtt 函数

在FunctionParseConnectMqttAck 函数里面处理返回的消息.

 

5.发送连接MQTT协议

 

 

 

提示:设备发布的主题在此地方组合   device/模组IMEI

 

注意一件事情: 字符串转16进制表示的字符串

模组的发送数据需要先把所有的数据转换程序16进制,然后再发!

模组内部程序就做成了这样!!!确实有点麻烦,需要先转一下!!!

 

6.连接成功以后执行MQTT连接回调

 

 

 

 

7.在连接回调函数里面订阅主题

订阅的主题:user/设备的IMEI

 

 

 

 

8.接收处理消息

模组发过来的是把数据转成16进制字符串以后的信息,需要转换为实际的数据

然后让mqtt_read_function 处理各种MQTT消息.

如果返回的是普通通信数据,则调用回调函数处理

 

 

 

 

 

 

 

 

9.发送数据

 

 

 

 

 

APP程序

1.如果用户搭建好了MQTT服务器,可以修改下面的参数连接自己的服务器

 

 

 

2.程序主要概况

 

 

 

 

① APUConfig 实现部分
② 操作手机数据库相关
③ 控制页面
④ MQTT通信封装
⑤ UDP通信封装
⑥ 扫描二维码相关
⑦ 连接WI-Fi热点包

 

2.扫码绑定

APP程序使用的google的二维码扫码程序
扫描到二维码(设备的IMEI号)以后执行以下程序(携带着扫码信息传给主页面)

 

 

 

3.主页面把数据插入数据库

 

 

 

 

4.点击相应的设备以后,把设备的IMEI传递给控制页面

 

 

 

 

 

 

 

5.启动两个定时器,订阅主题和查询设备继电器状态

 

 

 

 

 

 

 

 

 

 

3.用户点击按钮,发送继电器开关指令

 

 

 

4.接收数据

 

 

 

 

 

结语

这一节使用了NB-IOT模组连接自己的MQTT服务器,并实现远程通信控制.

实际上NB-IOT也属于GPRS,只不过是面向低速低数据量的场合.

用户需要注意必须使用专门的NB卡

这节只是大致概括下程序,为已经有基础的人提供学习思路
如果没有基础,请按部就班的接着学习

 

posted on 2020-09-17 20:40  广源时代  阅读(1014)  评论(0编辑  收藏  举报

导航

支付宝 QQ群