ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

听闻少年二字,当与平庸相斥。这篇文章主要讲述ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器相关的知识,希望能为你提供帮助。
【ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器】 
 

 
视频讲解


整体说明

这节演示一下使用APP配网绑定ESP8266然后和ESP8266实现远程温湿度采集和远程控制继电器
绑定方式:APUConfig
APUConfig是我自己取的名字,这种方式一开始是为了微信小程序配网绑定ESP8266而做
为了和微信小程序绑定方式做到统一,故我也用APP做了一款

测试功能

1.请按照第一节硬件介绍,下载单片机程序
< ignore_js_op>

ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



2.安装APP
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


3.请使用杜邦线连接如下:
PA3 -- TX
PA2 -- RX
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


4.当前拨动开关如下:
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


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

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



测试

1.打开APP,点击右上角菜单,选择添加设备 "APUConfig"
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


2.手机连接自家的路由器,输入自家路由器密码
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


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

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

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



4.点击 APP 绑定设备按钮
开始绑定设备

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



5.绑定成功以后,自动跳转到主页面,并添加了一个设备
设备显示的信息为ESP8266的MAC地址信息
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



6.点击设备进入设备控制页面
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


7.控制继电器吸合
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


8.控制继电器断开

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片

单片机程序

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


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

APP程序

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


① APUConfig 实现部分
② 操作手机数据库相关
③ 控制页面
④ MQTT通信封装
⑤ UDP通信封装
⑥ 扫描二维码相关
⑦ 连接WI-Fi热点包


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

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

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

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


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

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



串口1打印串口2发送的数据
在串口2调用发送数据的地方,把发送的数据插入串口1环形队列
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



提示

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

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

配网绑定

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

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

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



2.APP点击按钮以后,连接WI-Fi的热点,并发送路由器信息
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


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

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片




单片机通信控制

1.单片机执行 ConfigModuleNoBlock(); 连接MQTT服务器
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


提示:在执行获取ESP8266的MAC地址以后,MAC地址存储在 MQTTid 里面 XX:XX:XX:XX:XX:XX    (字符串形式)
在执行连接协议的时候,设置了发布的主题 device/XX:XX:XX:XX:XX:XX
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



2.连接上MQTT,订阅主题
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


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

4.接收处理消息

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


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

APP通信控制

1.点击相应的设备以后,把设备的MAC地址信息传递给控制页面
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



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

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



3.发送数据
< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片


4.接收数据

< ignore_js_op>
ESA2GJK1DH1K基础篇: APP使用APUConfig配网绑定ESP8266,实现远程温湿度显示和远程控制继电器

文章图片



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


结语

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

    推荐阅读