zoukankan      html  css  js  c++  java
  • 06-STM32+ESP8266+AIR202基本控制篇-功能4-微信小程序扫码绑定GPRS,并通过MQTT和Air202实现远程通信控制(兼容SIM800)

     整体说明

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

    测试功能

    1.请按照第一节硬件介绍,下载单片机程序
    注:这节的单片机程序和上一节一样
    注:这节的单片机程序和上一节一样
    注:这节的单片机程序和上一节一样
    <ignore_js_op>


    2.安装微信小程序
    微信小程序已经发布,用户可使用微信扫描安装






    如果有微信小程序经验,可源码安装


    3.请使用杜邦线连接如下:
    白线 A3 --- TX
    黑线 A2 --- RX












    4.当前拨动开关如下:


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






    测试

    1.打开微信小程序,添加设备
    <ignore_js_op>

    <ignore_js_op>

    <ignore_js_op>

    2.扫描成功以后,自动跳转到主页面,并添加了一个设备
    设备显示的信息为GPRS的IMEI

    <ignore_js_op>


    3.控制继电器吸合
    <ignore_js_op>



    4.控制继电器断开

    <ignore_js_op>



    单片机程序



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

    微信小程序



    ① APUConfig 程序
    ② 控制页面
    ③ 主页
    ④ 本人封装的mqtt包
    ⑤ mqtt底层包


    单片机程序通信运行处理思路

    程序使用串口2和GPRS模块通信
    串口1作为日志输出口

    串口1接收数据采用缓存管理+空闲中断
    串口1发送数据采用环形队列+中断发送

    串口2接收数据采用缓存管理+空闲中断
    串口2发送数据采用中断发送


    串口1打印串口2接收的数据
    判断串口2接收的数据以后,直接把数据插入串口1环形队列



    串口1打印串口2发送的数据
    在串口2调用发送数据的地方,把发送的数据插入串口1环形队列



    提示

    设备发布的主题:device/GPRS的IMEI号(模块二维码信息)
    设备订阅的主题:user/GPRS的IMEI号(模块二维码信息)

    如果是初学者,看后面的文章即可明白上面的意思!

    微信小程序扫码绑定

    <ignore_js_op>

    扫码得到IMEI号以后携带着信息跳转到主页面.

    单片机通信控制

    1.单片机执行 ConfigModuleNoBlock(); 连接MQTT服务器


    提示:在执行获取GPRS的IMEI以后,IMEI存储在 MQTTid 里面 XXXXXXXXXXXXXXX  (字符串形式)
    在执行连接协议的时候,设置了发布的主题 device/XXXXXXXXXXXXXXX




    2.连接上MQTT,订阅主题


    3.发布消息,
    mqtt_publish(mqtt_t *mqtt,unsigned char* topic,unsigned char* date, int data_length, int qos, int retain, MqttCallback PublishedCb);

    4.接收处理消息



    5.提示
    在执行完连接MQTT以后,后期所有的消息全部用缓存进行了管理
    本MQTT包是本人封装的,支持消息等级0,1,2处理,支持掉线重连.

    微信小程序通信控制

    1.点击相应的设备以后,把设备的MAC地址信息传递给控制页面




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




    3.发送数据


    4.接收数据




    5.提示
    MQTT底层包封装了回调函数
    内部支持断线重连,用户只需要调用回调函数使用即可.

    结语

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

  • 相关阅读:
    django 2.2, celery 4.3,出现 kombu.exceptions.EncodeError: cannot serialize '_io.BufferedReader' object 的分析解决
    python 算法
    zabbix--api学习之路--get_hostgroup获取
    zabbix-api学习之路--auth获取
    短链(ShortURL)的Java实现
    几种I/O模型功能和性能对比
    JMeter压测Rest请求
    git如何设置账号密码
    TCP和UDP之间的区别和联系
    Java BigDecimal和double
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/13194148.html
Copyright © 2011-2022 走看看