野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12123|回复: 2

【分享】使用 HTTP 配置 ESP8266 连接 WIFI网络

[复制链接]
发表于 2017-6-26 11:40:16 | 显示全部楼层 |阅读模式
======================================前言======================================

麒麟座的官方例程里面,都是通过STM32用AT指令通过ESP8266的透传去连接Onenet服务器的,那么就存在一个需要ESP8266连接到wifi网络环境,才能跟Onenet平台建立连接。
而在官方例程里面,都是把wifi的SSID和PSW写死在程序里面,这样的话,如果万一要更换网络环境,就要重新更改代码里面的相应参数,再次编码并写入MCU里面,有点不方便,因此我就稍微更改了一下官方的代码,让其可以在不重编码的使用第三方APP的情况下更改连接网络的相关参数。

======================================涉及器件======================================

①麒麟座主板
②STM32核心板
③ESP8266
④AT24c02(EEPROM,已存在于麒麟座主板上,器件编号U6)

======================================逻辑原理======================================





======================================涉及库文件及代码======================================

主要库文件:
①Usart2.h
②Usart2.c
③esp8266.h
④esp8266.c
⑤stm32f10x.h
⑥stm32f10x2.c
⑦hal_i2c.h
⑧hal_i2c.c
⑨at24c02.h
⑩at24c02.c

代码:
代码方面我做了部分增添和修改,理论上可直接替换官方例程,除了某些为了删除不必要功能而注释掉的方法调用。

关键代码:
--------------------------Esp8266--------------------------


CWJAP尝试用已存在的SSID和PSW连接网络,如果成功就进入透传模式,如果失败就变更为AP模式,AP模式下的SSID为"Onenet-Config",开放连接,连接后的网关IP是 192.168.4.1















   




   




进入AP模式后,开始监听是否有客户端连接和 http 请求配置页面,在没有请求的时候,connect_id= -1,因此判断connect_id就可以知道有没有连接请求。在main当中不断进行检测。











--------------------------stm32f10x_it--------------------------

在STA模式下的时候,usart2的中断一直在收集数据流,当判断到有“+IPD”的时候,就表明有浏览器请求http连接,把连接号记录下来并保存到 connect_id,同时把配置页面的html代码填入发送变量。待下次esp8266_Echo检测到 connect 号的时候,就会把 html代码发送到该连接。


























填写完新的SSID 与 PSW后,点击 SUBMIT 提交,中断函数会再次截取获取到的参数,并提取新的SSID 和 PSW,在ESP8266_Echo里面把新的参数写入EEPROM,以便下次开机的时候读取。当写入完成后就会再次初始化8266并与平台建立连接。










===============================写在最后================================

这个方案是直接利用ESP8266的server模式,在没有成功连接wifi的时候,把自己变成一台html服务器,由STM32进行运算,因为html代码是由连接端的浏览器进行解析的,所以STM32+ESP8266只负责发送相应的html数据过去即可,最后接收回传数据并解析,写入EEPROM,即完成整个操作,但由于stm32的硬件I2C实在有点脆弱,尽可能整个包下载下来进行测试,然后根据实际需要去提取自己需要的部分,如有任何问题,欢迎留言交流O(∩_∩)O

===============================备注================================

2016-08-01    感谢 2648157436 朋友友情提醒,我原来文里的STA模式写错了,应为AP模式。特此改正。
2016-08-01    因为ESP8266本身会记录上次连接wifi的信息,所以其实可以不用eeprom去记录相应的信息的,但at24c02的部分可以作参考。
回复

使用道具 举报

发表于 2017-6-26 11:55:43 | 显示全部楼层
cool                 
回复 支持 反对

使用道具 举报

发表于 2017-6-30 09:05:33 | 显示全部楼层
这个办法超赞
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-27 23:30 , Processed in 0.041298 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表