• 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消息

    结语

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

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

    不要心慌,无需着急!

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

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

  • 相关阅读:
    [Android实例] 同一Activity的实例被多次重复创建
    js 只能输入数字和小数点的文本框改进版
    DDMS文件权限设置
    form search 带参数 提交
    Jquery-UI dialog与ZeroClipboard 冲突问题的解决
    ZeroClipboard实现跨浏览器复制
    WebSocket使用80端口的方法
    Leetcode题目:First Bad Version
    Leetcode题目:Longest Common Prefix
    Leetcode题目:Counting Bits
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/13378396.html
Copyright © 2020-2023  润新知