网络链接里添加无线网络连接服务器,【分享】使用 HTTP 配置 ESP8266 连接 WIFI网络...

本帖最后由 熊掌五十块 于 2017-6-26 11:34 编辑

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

麒麟座的官方例程里面,都是通过STM32用AT指令通过ESP8266的透传去连接Onenet服务器的,那么就存在一个需要ESP8266连接到wifi网络环境,才能跟Onenet平台建立连接。

而在官方例程里面,都是把wifi的SSID和PSW写死在程序里面,这样的话,如果万一要更换网络环境,就要重新更改代码里面的相应参数,再次编码并写入MCU里面,有点不方便,因此我就稍微更改了一下官方的代码,让其可以在不重编码的使用第三方APP的情况下更改连接网络的相关参数。

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

①麒麟座主板

②STM32核心板

③ESP8266

④AT24c02(EEPROM,已存在于麒麟座主板上,器件编号U6)

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

thread-46594-1-1.html

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

主要库文件:

①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

thread-46594-1-1.html

thread-46594-1-1.html

thread-46594-1-1.html

thread-46594-1-1.html

thread-46594-1-1.html

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

thread-46594-1-1.html

thread-46594-1-1.html

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

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

thread-46594-1-1.html

thread-46594-1-1.html

thread-46594-1-1.html

thread-46594-1-1.html

thread-46594-1-1.html

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

thread-46594-1-1.html

thread-46594-1-1.html

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

这个方案是直接利用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的部分可以作参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将ESP8266连接无线网络并将其IP地址设置为192.168.4.1,您需要编写Arduino代码来控制ESP8266。 以下是一些步骤: 1. 首先,您需要使用ESP8266WiFi库来连接无线网络。您可以使用以下代码: ```c #include <ESP8266WiFi.h> const char* ssid = "YourSSID"; // 无线网络名称 const char* password = "YourPassword"; // 无线网络密码 void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("WiFi connected"); } void loop() { // Your code here } ``` 在此代码中,您需要将`YourSSID`和`YourPassword`替换为您的无线网络名称和密码。 `setup()`函数将ESP8266连接无线网络,并在串行监视器上输出连接状态。 2. 接下来,您需要将ESP8266的IP地址设置为192.168.4.1。您可以使用以下代码: ```c #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> const char* ssid = "YourSSID"; // 无线网络名称 const char* password = "YourPassword"; // 无线网络密码 IPAddress ip(192, 168, 4, 1); IPAddress gateway(192, 168, 4, 1); IPAddress subnet(255, 255, 255, 0); ESP8266WebServer server(80); void handleRoot() { server.send(200, "text/plain", "Hello, world!"); } void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("WiFi connected"); WiFi.softAPConfig(ip, gateway, subnet); WiFi.softAP(ssid, password); Serial.print("SoftAP IP address: "); Serial.println(WiFi.softAPIP()); server.on("/", handleRoot); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient(); } ``` 在此代码中,除了连接无线网络外,我们还使用`WiFi.softAPConfig()`将ESP8266的IP地址设置为192.168.4.1。我们还在串行监视器上输出了该地址。我们还使用ESP8266WebServer库创建了一个HTTP服务器,并在根路由上处理了请求。 请注意,当ESP8266连接无线网络时,它将无法同时作为访问点进行操作。因此,在此代码中,我们使用了`WiFi.softAP()`函数将其配置为访问点,并使用`WiFi.softAPIP()`函数输出其IP地址。 希望这可以帮助您开始将ESP8266连接无线网络并将其IP地址设置为192.168.4.1。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值