【分享】使用 HTTP 配置 ESP8266 连接 WIFI网络-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15467|回复: 1

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

[复制链接]
发表于 2017-6-26 11:31 | 显示全部楼层 |阅读模式
本帖最后由 熊掌五十块 于 2017-6-26 11:34 编辑

======================================前言======================================

麒麟座的官方例程里面,都是通过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的部分可以作参考。

发表于 2019-1-7 09:56 | 显示全部楼层
这么长的文章没有人回复是因为大家来这里不是看谁介绍东西,而是学习。
居然你标题打得是分享,那你的源代码呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-9-20 13:31 , Processed in 0.072330 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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