05-STM32+W5500+AIR202基本控制篇-功能4-Android和微信小程序扫描二维码绑定GPRS,并通过MQTT实现485,422通信和继电器控制(Android)

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

功能说明

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

功能演示

1.根据第一节的硬件介绍下载本节的单片机程序

 

2.程序文件hex路径

3.按照下面方式短接通信端口

  PA9 PA10  连接ch340(串口模块)  用于Debug日志打印

  PB10  PB11连接485/422   (485/422通信)

  PA2  PA3 连接GPRS模块串口1  (和GPRS模块通信)

4.插入手机卡(移动/联通), 接上天线

5.连接485/422通信模块(任选一种即可,下面说明两种接线方式)

485连接方式:

422连接方式:

6,打开串口调试助手,分别监控STM32串口1和485/422的数据

单片机串口1监听配置

485/422通信口串口配置

7.确认设备正常工作

查看Debug调试输出,如果订阅成功则设备正常工作

如果设备没有工作起来,请检查手机卡是否松动,手机卡只支持移动和联通

尽量选择移动的手机卡!

8.安装手机APP

注:安装上一节手机APP!

注:安装上一节手机APP!

注:安装上一节手机APP!

9.点击右上角菜单选择扫一扫

10.扫描GPRS设备上的二维码

11.扫描成功以后将在主页添加一个GPRS设备

12.点击GPRS设备进入控制页面

13. 控制两路继电器

 

单片机程序说明

1.关于Android和GPRS模块MQTT通信

首先用户需要知道MQTT就是一个TCP服务器,在后面的章节有单独一章介绍MQTT服务器

用户当前只需要知道MQTT服务器就是一个TCP服务器,然后按照MQTT协议发送数据,MQTT服务器便会自动中转数据

单片机程序使用串口2发送AT指令控制GPRS模块连接MQTT服务器

GPRS连接MQTT以后

订阅的主题:user/GPRS模块的IMEI号

发布的主题:device/GPRS模块的IMEI号

如果想让android和GPRS之间实现通信

android需要

订阅: device/GPRS模块的IMEI号

发布: user/GPRS模块的IMEI号

所以只要android获取到W5500的GPRS模块的IMEI号即可!

GPRS模块上面的二维码就是其IMEI号

2.控制模块以TCP透传方式连接MQTT服务器

控制指令采用 ConfigModuleNoBlock 框架

获取IMEI号用于后期的订阅和发布主题; 连接TCP服务器(MQTT本身就是一个TCP服务器); 发送MQTT连接协议

连接成功,调用连接回调

3.主函数一开始注册了连接回调,订阅成功,接收消息回调等函数

在连接回调里面订阅主题

 

4.发送消息

5.接收处理消息

 Android 程序

 1.点击扫一扫,跳转到扫码页面

2.在回调里面获取扫码结果

3.在MainActivity 的 onNewIntent 函数里面获取传递过来的数据

4.点击跳转的时候,把扫描数据传递给控制页面

5.控制页面获取数据,并订阅主题

6.发布MQTT消息

7.接收处理MQTT消息

结语

对于初学者而言,此节代码测试一下通信即可,后面的章节会有详细的说明教程

会让用户彻底明白一切的一切是怎么来的!

不要心慌,无需着急!

详细的说明教程过后还会有专门的移植使用教程.

用户可以迅速的移植到自己的项目中使用.

原文地址:https://www.cnblogs.com/yangfengwu/p/13378396.html