查看: 2342|回复: 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的部分可以作参考。

  • TA的每日心情
    奋斗
    2019-1-25 22:57
  • 签到天数: 5 天

    [LV.2]偶尔看看I

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

    本版积分规则

    热门推荐

    有没人做过把arduino跟生物结合起来做课题的
    有没人做过把arduino跟生
    我想做一些这方面的有没有人做过可以稍微指点一下
    跪求,nano读两个软串口传感器,写入sd卡,一个读不到数
    跪求,nano读两个软串口传
    dfrobot的nano板,两个软串口连接攀藤pm2.5传感器和GPS ublox m8n,SPI连sd卡模块。
    Arduino2560/MegaPi与ROS机器人操作系统的连接
    Arduino2560/MegaPi与ROS
    大家好,我因为需要更多时间维系琐碎平凡的工作和生活,一段时间没有上Arduino论坛。
    atmegu328p开发板怎么做流水灯啊
    atmegu328p开发板怎么做流
    我是白小 求指点
    BuddyBlock 1.0.0 测试版发布,一款面向Arduino的图形化开发工...
    BuddyBlock 1.0.0 测试版
    BuddyBlock是一款面向Arduino图形化编程开发的集成开发工具,开发者可以通过积木模块
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表