zoukankan      html  css  js  c++  java
  • 04-STM32+ESP8266+AIR202基本控制篇-功能2-微信小程序使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制

     整体说明

    这节演示一下使用微信小程序配网绑定ESP8266然后和ESP8266实现远程温湿度采集和远程控制继电器
    绑定方式:APUConfig
    APUConfig是我自己取的名字,这种方式一开始就是为了微信小程序配网绑定ESP8266而做解决大家苦恼的微信小程序如何配网绑定ESP8266问题

    测试功能

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



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

    <ignore_js_op>




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


    3.请使用杜邦线连接如下:
    PA3 -- TX
    PA2 -- RX









    4.当前拨动开关如下:


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






    测试
    1.点击小程序下方的添加设备按钮




    2.选择添加Wi-Fi设备


    3.输入路由器密码(注:Wi-Fi名称自动获取,也可自己填写)


    4.长按开发板上面的 pb5引脚大约3S

    直至图示上面的指示灯快闪




    5.点击小程序上的 "绑定设备"按钮,开始搜索设备,绑定成功,将自动跳转到主页面,显示绑定的Wi-Fi设备

     
    5.1 正在尝试连接Wi-Fi模块的热点
     
     
    5.2 连接上热点,正在和模块通信
    5.3 成功绑定设备
       <ignore_js_op>




    6.点击设备进入设备控制页面
    <ignore_js_op>


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




    8.控制继电器断开
    <ignore_js_op>


    <ignore_js_op>




    单片机程序



    ① 控制模块以非阻塞方式连接MQTT服务器
    ② 配置ESP8266功能,当前只使用了里面的复位和APUConfig
    ③ MQTT消息处理封装包




    微信小程序
    <ignore_js_op>


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

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

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

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

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


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



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



    提示

    设备发布的主题:device/ESP8266的MAC地址
    设备订阅的主题:user/ESP8266的MAC地址

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

    配网绑定

    APUConfig原理:
    ESP8266模块打开固定热点,打开UDP通信
    手机APP连接ESP8266模块的热点,然后通过UDP把路由器信息发给模块.

    1.单片机按钮长按3S左右执行APUConfig








    2.微信小程序点击按钮以后,连接WI-Fi的热点,并发送路由器信息

    <ignore_js_op>

    <ignore_js_op>

    3.接收到模块返回的MAC地址信息,携带着信息跳转到主页面

    <ignore_js_op>




    单片机通信控制

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


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



    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地址信息传递给控制页面

    <ignore_js_op>


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

    <ignore_js_op>


    3.发送数据
    <ignore_js_op>

    4.接收数据

    <ignore_js_op>


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


    结语

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

  • 相关阅读:
    NBUT 1120 Reimu's Teleport (线段树)
    NBUT 1119 Patchouli's Books (STL应用)
    NBUT 1118 Marisa's Affair (排序统计,水)
    NBUT 1117 Kotiya's Incantation(字符输入处理)
    NBUT 1115 Cirno's Trick (水)
    NBUT 1114 Alice's Puppets(排序统计,水)
    188 Best Time to Buy and Sell Stock IV 买卖股票的最佳时机 IV
    187 Repeated DNA Sequences 重复的DNA序列
    179 Largest Number 把数组排成最大的数
    174 Dungeon Game 地下城游戏
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/13194081.html
Copyright © 2011-2022 走看看