文章目录

  • ESP8266自动配网 – WiFiManager库使用说明
    • 1 WiFiManager库使用说明
      • 1.1 WiFi配置流程
      • 1.2 WiFi配置示例程序
        • 1.2.1 预备程序 – 清理ESP8266储存的WiFi连接信息
        • 1.2.2 WiFiManager网络配置示例程序
        • 1.2.3 WiFiManager网络配置测试
    • 2 WiFiManager库汉化和定制说明
      • 2.1 WiFiManager库的汉化说明
        • 2.2 定制修改WiFiManager库的WiFi设置页面

ESP8266自动配网 – WiFiManager库使用说明

在我们开发物联网项目时,经常需要为ESP8266设置WiFi。在以往的课程内容里,我们的设置WiFi的方法是通过修改程序中的内容来实现的。

但是假如我们做好了物联网制作后送给朋友,而朋友不知道如何写ESP8266程序.这种情况下该如何来让不懂编程的朋友也能设置ESP8266的WiFi连接呢?

我们可以利用一款非常好用的ESP8266第三方库:WiFiManager库。以下是该库的基本信息:
作者:tzapu,tablatronix
GitHub:https://github.com/tzapu/WiFiManager
网盘下载:https://lanzoui.com/ibBlTe9jaif
太极创客汉化版:https://github.com/taichi-maker/WiFiManager

1 WiFiManager库使用说明

1.1 WiFi配置流程

1.2 WiFi配置示例程序

1.2.1 预备程序 – 清理ESP8266储存的WiFi连接信息

ESP8266的WiFi设置是储存在它的闪存系统中的。因此在启动ESP8266并连接WiFi时,它都会尝试使用闪存系统中储存的信息来进行WiFi连接。

在开始讲解如何使用WiFiManager库来配置ESP8266的WiFi设置前,我们需要首先清除ESP8266的WiFi连接信息,这样才能看到WiFiManager库的工作效果。(如果ESP8266刚一启动就自动成功连接WiFi了,那么WiFiManager库是不会发挥作用的。)

我们可以使用以下示例程序清除ESP8266的闪存中所存储的WiFi连接信息。

在此程序的第27行位置,使用了wifiManager.resetSettings()来实现清除ESP8266的闪存中所存储的WiFi连接信息这一操作。

/**********************************************************************
项目名称/Project          : 零基础入门学用物联网
程序名称/Program name     : a0_reset
团队/Team                : 太极创客团队 / Taichi-Maker (www.taichi-maker.com)
作者/Author              : CYNO朔
日期/Date(YYYYMMDD)     : 20200703
程序目的/Purpose          :
清除ESP8266的闪存中所存储的WiFi连接信息。如需获取本示例程序的详细说明,请前往以下链接:
http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-tips/wifimanager/
-----------------------------------------------------------------------
其它说明 / Other Description:
本程序为太极创客团队制作的免费视频教程《零基础入门学用物联网 》中一部分。该教程系统的
向您讲述ESP8266的物联网应用相关的软件和硬件知识。以下是该教程目录页:
http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/
***********************************************************************/
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>         void setup() {Serial.begin(9600);       // 建立WiFiManager对象WiFiManager wifiManager;// 清除ESP8266所存储的WiFi连接信息以便测试WiFiManager工作效果wifiManager.resetSettings();Serial.println("ESP8266 WiFi Settings Cleared");
}void loop() {}

1.2.2 WiFiManager网络配置示例程序

以下示例程序使用了WiFiManager来实现WiFi网络配置。

/**********************************************************************
项目名称/Project          : 零基础入门学用物联网
程序名称/Program name     : a_basic
团队/Team                : 太极创客团队 / Taichi-Maker (www.taichi-maker.com)
作者/Author              : CYNO朔
日期/Date(YYYYMMDD)     : 20200703
程序目的/Purpose          :
利用WiFiManager库实现最基本的WiFi配置工作
如需获取本示例程序的详细说明,请前往以下链接:
http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-tips/wifimanager/
-----------------------------------------------------------------------
其它说明 / Other Description:
本程序为太极创客团队制作的免费视频教程《零基础入门学用物联网 》中一部分。该教程系统的
向您讲述ESP8266的物联网应用相关的软件和硬件知识。以下是该教程目录页:
http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/
***********************************************************************/
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>         void setup() {Serial.begin(9600);       // 建立WiFiManager对象WiFiManager wifiManager;// 自动连接WiFi。以下语句的参数是连接ESP8266时的WiFi名称wifiManager.autoConnect("AutoConnectAP");// 如果您希望该WiFi添加密码,可以使用以下语句:// wifiManager.autoConnect("AutoConnectAP", "12345678");// 以上语句中的12345678是连接AutoConnectAP的密码// WiFi连接成功后将通过串口监视器输出连接成功信息 Serial.println(""); Serial.print("ESP8266 Connected to ");Serial.println(WiFi.SSID());              // WiFi名称Serial.print("IP address:\t");Serial.println(WiFi.localIP());           // IP
}void loop() {}

1.2.3 WiFiManager网络配置测试

/**********************************************************************
项目名称/Project          : 零基础入门学用物联网
程序名称/Program name     : b_2_wifimanger_example
团队/Team                : 太极创客团队 / Taichi-Maker (www.taichi-maker.com)
作者/Author              : CYNO朔
日期/Date(YYYYMMDD)     : 2020703
程序目的/Purpose          :
测试WiFiManager库所配置的ESP8266的确可以连接到互联网,并从互联网上的网络服务器获取信息。
如需获取本示例程序的详细说明,请前往以下链接:
http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-tips/wifimanager/
-----------------------------------------------------------------------
其它说明 / Other Description:
本程序为太极创客团队制作的免费视频教程《零基础入门学用物联网 》中一部分。该教程系统的
向您讲述ESP8266的物联网应用相关的软件和硬件知识。以下是该教程目录页:
http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/
***********************************************************************/
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h> // 测试HTTP请求用的URL。注意网址前面必须添加"http://"
#define URL "http://www.example.com"void setup() {//初始化串口设置Serial.begin(9600);// 建立WiFiManager对象WiFiManager wifiManager;// 自动连接WiFi。以下语句的参数是连接ESP8266时的WiFi名称wifiManager.autoConnect("AutoConnectAP");Serial.print("WiFi Connected!");httpClientRequest();
}void loop() {}// 发送HTTP请求并且将服务器响应通过串口输出
void httpClientRequest(){//重点1 创建 HTTPClient 对象HTTPClient httpClient;//重点2 通过begin函数配置请求地址。此处也可以不使用端口号和PATH而单纯的httpClient.begin(URL); Serial.print("URL: "); Serial.println(URL);//重点3 通过GET函数启动连接并发送HTTP请求int httpCode = httpClient.GET();Serial.print("Send GET request to URL: ");Serial.println(URL);//重点4. 如果服务器响应HTTP_CODE_OK(200)则从服务器获取响应体信息并通过串口输出//如果服务器不响应HTTP_CODE_OK(200)则将服务器响应状态码通过串口输出if (httpCode == HTTP_CODE_OK) {// 使用getString函数获取服务器响应体内容String responsePayload = httpClient.getString();Serial.println("Server Response Payload: ");Serial.println(responsePayload);} else {Serial.println("Server Respose Code:");Serial.println(httpCode);}//重点5. 关闭ESP8266与服务器连接httpClient.end();
}

2 WiFiManager库汉化和定制说明

2.1 WiFiManager库的汉化说明

WiFiManager库的WiFi设置页面是英文的,假如您想要使用此汉化后的WiFiManager库,可以通过以下链接进行下载:

WiFiManager库(太极创客汉化版):https://github.com/taichi-maker/WiFiManager

以下是WiFiManager库汉化后的界面效果:

2.2 定制修改WiFiManager库的WiFi设置页面

假如您想要自己定制WiFiManager库的WiFi设置页面,可以修改库文件中的“WiFiManager.h”。该文件开始部分,有一系列字符串数组,如下所示:

const char HTTP_HEADER[] PROGMEM          = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/><title>{v}</title>";
const char HTTP_STYLE[] PROGMEM           = "<style>.c{text-align: center;} div,input{padding:5px;font-size:1em;} input{width:95%;} body{text-align: center;font-family:verdana;} button{border:0;border-radius:0.3rem;background-color:#1fa3ec;color:#fff;line-height:2.4rem;font-size:1.2rem;width:100%;} .q{float: right;width: 64px;text-align: right;} .l{background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAALVBMVEX///8EBwfBwsLw8PAzNjaCg4NTVVUjJiZDRUUUFxdiZGSho6OSk5Pg4eFydHTCjaf3AAAAZElEQVQ4je2NSw7AIAhEBamKn97/uMXEGBvozkWb9C2Zx4xzWykBhFAeYp9gkLyZE0zIMno9n4g19hmdY39scwqVkOXaxph0ZCXQcqxSpgQpONa59wkRDOL93eAXvimwlbPbwwVAegLS1HGfZAAAAABJRU5ErkJggg==\") no-repeat left center;background-size: 1em;}</style>";
const char HTTP_SCRIPT[] PROGMEM          = "<script>function c(l){document.getElementById('s').value=l.innerText||l.textContent;document.getElementById('p').focus();}</script>";
const char HTTP_HEADER_END[] PROGMEM        = "</head><body><div style='text-align:left;display:inline-block;min-width:260px;'>";
const char HTTP_PORTAL_OPTIONS[] PROGMEM  = "<form action=\"/wifi\" method=\"get\"><button>Configure WiFi</button></form><br/><form action=\"/0wifi\" method=\"get\"><button>Configure WiFi (No Scan)</button></form><br/><form action=\"/i\" method=\"get\"><button>Info</button></form><br/><form action=\"/r\" method=\"post\"><button>Reset</button></form>";
const char HTTP_ITEM[] PROGMEM            = "<div><a href='#p' οnclick='c(this)'>{v}</a>&nbsp;<span class='q {i}'>{r}%</span></div>";
const char HTTP_FORM_START[] PROGMEM      = "<form method='get' action='wifisave'><input id='s' name='s' length=32 placeholder='SSID'><br/><input id='p' name='p' length=64 type='password' placeholder='password'><br/>";
const char HTTP_FORM_PARAM[] PROGMEM      = "<br/><input id='{i}' name='{n}' maxlength={l} placeholder='{p}' value='{v}' {c}>";
const char HTTP_FORM_END[] PROGMEM        = "<br/><button type='submit'>save</button></form>";
const char HTTP_SCAN_LINK[] PROGMEM       = "<br/><div class=\"c\"><a href=\"/wifi\">Scan</a></div>";
const char HTTP_SAVED[] PROGMEM           = "<div>Credentials Saved<br />Trying to connect ESP to network.<br />If it fails reconnect to AP to try again</div>";
const char HTTP_END[] PROGMEM             = "</div></body></html>";

以上这一系列文字信息定义了WiFi配置页面的内容。通过调整以上内容,我们可以修改Wifi配置页面的外观样式和信息。举例来说,假如您希望修改连接页面的按钮文字,那么可以将以上程序中const char HTTP_PORTAL_OPTIONS[]修改为以下内容:

const char HTTP_PORTAL_OPTIONS[] PROGMEM  = "<form action=\"/wifi\" method=\"get\"><button>配置WiFi</button></form><br/><form action=\"/0wifi\" method=\"get\"><button>配置W

这一修改将会把WiFi配置页面的按键内容改为中文。也就是在这届内容前面部分您所看到的WiFi配置页面效果。

内容来自 -----> 太极创客
详情可见太极创客官网,内有Arduino、ESP32等详细教程
http://www.taichi-maker.com

【ESP32_8266_WiFi (十三)】ESP8266自动配网 – WiFiManager库使用说明相关推荐

  1. Arduino+ESP8266自动配网并上传温湿度、光照强度到OneNET

    前言:     从接触ESP8266到现在有一段时间了,也感受到ESP8266的强大,其高性价比给极客者们带来了极大的福音.之前用ESP8266改装了一部遥控车,使其能用手机控制,手机app是用易安卓 ...

  2. ESP8266 web配网微信小程序配网 全平台配网库 arduino 傻瓜式通用库

    wifi_link_tool esp8266通用配网库 (arduino) 库地址:点击进入GitHub 这是一个为esp8266设计的通用配网库 该库免费提供 使用请注明出处 允许毕业设计使用本库 ...

  3. ESP8266开发、ESP8266连接阿里云物联网、天猫精灵控制esp8266、esp8266一键配网、智能家居

    ESP8266开发.ESP8266连接阿里云物联网.天猫精灵控制esp8266.esp8266一键配网.智能家居 项目介绍 最近会 将arduino IDE开发ESP8266中一些值得记录得部分写下来 ...

  4. 【Arduino自动配网+微信Airkiss配网】

    Arduino自动配网+微信Airkiss配网 一.Arduino自动配网 当密码输入正确时 当密码输入错误时 自动配网的代码 二.Arduino微信Airkiss配网. 关注安信可公众号选择微信配网 ...

  5. 用手机软件给ESP8266一键配网

    ESP8266在连接路由器时,可以直接在程序中输入路由器的SSID和密码,那么当位置变了以后怎么办?这篇博客我们就来谈谈如何用手机给ESP8266一件配网.在Arduino中新建一个文件,输入以下代码 ...

  6. 学习太极创客 — ESP8226 (十一)用 WiFiManager 库配网

    视频链接:https://www.bilibili.com/video/BV1L7411c7jw?p=21&spm_id_from=333.880.my_history.page.click& ...

  7. ESP8266用EspTouch一键配网,断网自动恢复连接

    自动配网的实现 利用Arduino IDE自带的自动联网函数smartConfig() bool AutoConfig() {WiFi.begin();//如果觉得时间太长可改for (int i = ...

  8. ESP8266 Blinker 小爱同学 本地控制 手机配网 四路开关 物联网 arduino编程详细注释

    作为一名注册12年CSDN的电脑爱好者,没有从事喜欢的IT行业还是颇有那么一丝丝的想念. 通过一段时间的arduino编程和ESP8266学习,参考示例程序等,完善了自己的一份小爱同学四开关控制的程序 ...

  9. 如何给esp8266 配网?

    玩ESP8266也有一段时间了,发一篇博客记录一下ESP8266配网的方法,也希望能给大家提供一点帮助,我使用的是Arduino的开发环境. 1. 固定在程序里 首先是测试时我们经常将自己家的WIFI ...

最新文章

  1. fork() || fork() || fork() 与 fork() fork() fork()
  2. 敏捷产品Backlog需求管理
  3. springMVC对异常处理的支持
  4. [转]免费邮件服务器hMailServer搭配SpamAssassin过滤垃圾邮件:安装和设置
  5. 贴一段数组动态扩容的代码
  6. 《MySQL数据技术与实验指导》jxgl数据库的创建和插入
  7. 2019.04.24笔记
  8. js动态添加控件服务器响应,JS实现动态给标签控件添加事件的方法示例
  9. nvidia-rapids︱cuGraph(NetworkX-like)关系图模型
  10. sobel算子_边缘检测算法4.-教你动手实现kirsch和robinson算子
  11. [转]Angular引入第三方库
  12. 选项不属于HTML语言特点,Web前端开发初级模拟测试卷一(2)
  13. 【题解】守望者的逃离
  14. html圈小猫小游戏
  15. IT负载率与数据中心规模——孙长青
  16. 系列:关于TXT的文件格式
  17. Uptime Kuma一款开源监控工具
  18. 未来五年,物联网三大技术发展趋势!
  19. 拒绝低效的知识管理,从选择一款好的知识库工具开始
  20. 人脸检测:经典的VJ人脸检测器(类Harr特征,积分图加速法,级联的Adaboost强分类器)

热门文章

  1. kube-scheduler
  2. 吴秀波新片《情圣2》正式撤档 片方:来日再见
  3. 俩台虚拟机,一台有网,一台没网
  4. 自动驾驶|苹果证实已收购自动驾驶初创公司Drive.ai 价格尚未披露
  5. Eclipse oxygen 版本汉化教程
  6. 网站建设在网页界面设计中该如何做到简约
  7. 方格1010+颠覆经典俄罗斯方块逻辑玩法的手游
  8. 手机上流行的各类谜语
  9. Maven_生成项目站点报告
  10. 使用Geth设置基于权利证明POA的以太网私有网络