zoukankan      html  css  js  c++  java
  • STM32+ESP8266+AIR202/302基本控制篇-112-功能测试-APP使用SmartConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制

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

    测试准备

    1.自行下载单片机程序

    2.安装手机APP

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



    4.当前拨动开关如下:




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

    测试

    1.打开APP,选择右上角的绑定设备(SmartConfig)

    2.手机连接家里的路由器,输入路由器密码

    3.长按开发板上面的PB5按钮大约 3S,直至指示灯快闪

    4.点击APP上的绑定设备按钮

      

    5. 搜索成功,主页面会添加一个设备,然后点击这个设备,进入控制页面

     

    6.控制继电器

      

    单片机程序

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

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

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

    2.程序主要概况

    ① 控制模块以非阻塞方式连接MQTT服务器
    ② 配置ESP8266功能,当前只使用了里面的复位和APUConfig
    ③ MQTT消息处理封装包(缓存管理,支持消息等级0,1,2)

    APP程序

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

    2.程序主要概况

    1.SmartConfig绑定设备部分

    2.本地数据库存储

    3.控制页面

    4.MQTT封装的java程序

    5.扫描二维码相关

    6.SmartConfig 包

    单片机程序运行处理思路

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

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

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


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

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

    提示

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

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

    配网绑定

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

    2.APP点击按钮以后,执行SmartConfig

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

    4.程序里面的其它地方只是为了检测提取手机连接的路由器名称

    android 6.0以后的版本需要打开GPS才能获取路由器名称!

    单片机通信控制

    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处理,支持掉线重连.

    APP通信控制

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




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








    3.发送数据


    4.接收数据

     




    5.提示
    MQTT底层包内部使用的单例模式+回填函数形式
    内部支持断线重连,用户只需要调用回调函数使用即可.

    结语

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

  • 相关阅读:
    取多列数据的最大值、最小值sql
    java中实现时间差的计算
    数据更新sql
    自连接的用法sql
    获取第一条,最后一条数据sql
    复制表结构 表数据sql
    用 ORDER BY 生成“排序”列sql
    表之间的数据匹配(生成交叉表)sql
    SIP呼叫流程
    如何在WindowsPhone Bing Map控件中显示必应中国中文地图、谷歌中国中文地图。
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/13857238.html
Copyright © 2011-2022 走看看