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

news2025/1/18 6:30:33

文章目录

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring(十)- Spring Bean的基本注解

文章目录一、Spring Bean的基本注解一、Spring Bean的基本注解 Spring除了xml配置文件进行配置之外&#xff0c;还可以使用注解方式进行配置&#xff0c;注解方式慢慢成为xml配置的替代方案。我们有了xml开发的经验&#xff0c;学习注解开发就方便了许多&#xff0c;注解开发更…

调节自噬的小分子化合物

自噬? 生物体需要通过不断合成和降解物质来维持自身的内稳态&#xff08;Homeostasis&#xff09;。细胞内物质的降解主要通过两种途径进行&#xff1a;泛素化蛋白酶体途径&#xff08;Ubiquitin-proteasome system, UPS&#xff09;和自噬溶酶体途径&#xff08;Autophagy-ly…

06 数组

本文仅作为个人笔记 数组 数组的引入 import java.util.Scanner; public class TestArray01{public static void main(String[] args){//功能&#xff1a;键盘录入是个学生的成绩&#xff0c;求和&#xff0c;求平均数&#xff1a;//定义一个求和的变量&#xff1a;int sum …

GoF之代理模式

GoF之代理模式 1、 对代理模式的理解 生活场景1&#xff1a;牛村的牛二看上了隔壁村小花&#xff0c;牛二不好意思直接找小花&#xff0c;于是牛二找来了媒婆王妈妈。这里面就有一个非常典型的代理模式。牛二不能和小花直接对接&#xff0c;只能找一个中间人。其中王妈妈是代…

Linux | 磁盘结构 | 文件系统认识 | inode | 软硬链接

文章目录磁盘物理结构的认识磁盘的分区inode和文件数据之间的映射文件名和inode之间的映射文件知道自己的inode号吗&#xff1f;文件的软硬链接硬链接数磁盘物理结构的认识 &#xff08;图片来自于网络&#xff09;一个磁盘由许多盘片构成&#xff0c;每个盘片上有着许多磁道&a…

SAP Table function 执行报错 code CX_SQL_EXCEPTION feature not supported 该如何分析

我的知识星球里有朋友提问&#xff1a; 我的场景是cds 调用 table function, table function 调用 amdp 然后报错: code:CX_SQL_EXCEPTION message: feature not supported.Contains predicates only supported when table function is unfolded? 请问这个是什么意思&#xf…

使用分贝的波动大小将声音数据降维成字符

🍿*★,*:.☆欢迎您/$:*.★* 🍿 目录 背景 正文 总结 背景描述

【高速数字化仪应用案例系列】虹科数字化仪在大型物理实验领域的应用

大型物理实验应用 了解物质和自然力量的使命推动着在物理学科领域进行更大&#xff0c;更复杂的实验。为了做到这一点&#xff0c;科学家和工程师正在建造比以往更大&#xff0c;更强大&#xff0c;更灵敏的机器和仪器。例如&#xff0c;天文学家正在使用不断膨胀的电磁波谱部…

【序列召回推荐】(task1)NeuralCF(学习匹配函数)

note&#xff1a; 和协同过滤矩阵分解的区别&#xff1a;NeuralCF 用一个多层的神经网络替代掉了原来简单的点积操作&#xff0c;另外user隐向量和item隐向量在进入MLP前需要concat拼接&#xff0c;其实就是两个矩阵在水平位置上拼接而已。这样就可以让用户和物品隐向量之间进…

5 分钟教你搭建「视频动作分类」系统

写在前面 在之前的文章中&#xff0c;我们已经搭建过「以文搜图」、「以图搜图」等搜索服务&#xff0c;而今天这篇文章&#xff0c;将要教会你如何搭建一个「视频动作分类」的 AI 系统&#xff01; 例如&#xff0c;我们只需放上一张“婴儿吃胡萝卜”的视频&#xff0c;这个…

代码随想录57——动态规划:647回文子串、516最长回文子序列

文章目录1.647回文子串1.1.题目1.2.解答2.516最长回文子序列2.1.题目2.2.解答1.647回文子串 参考&#xff1a;代码随想录&#xff0c;647回文子串&#xff1b;力扣题目链接 1.1.题目 1.2.解答 动规五部曲&#xff1a; 1.确定dp数组&#xff08;dp table&#xff09;以及下标…

如何优雅的使用 IDEA Debug 进行调试

如何优雅的使用 IDEA Debug 进行调试 Debug 是我们在开发过程中经常会使用到的一种排查问题的手段&#xff0c;我们用它来定位分析异常的出现&#xff0c;以及程序在运行中参数的变化。 IDEA 本身具有很强的调试功能&#xff0c;掌握 IDEA 的一些 Debug 技巧&#xff0c;对我们…

【JS】原生js实现矩形框的绘制/拖动/拉伸

1、要点及功能描述 通过js监听mouse事件来实现矩形框的绘制&#xff0c;再通过区分点击的是边角还是其他位置来实现矩形框的拉伸和拖动&#xff0c;并且在拖动和拉伸时&#xff0c;都做了边界限制&#xff0c;当拉伸或拖动 到边界时&#xff0c;就不能继续拉伸拖动了。当然在相…

7个实用有效的shopify运营策略,跨境电商卖家必知

关键词&#xff1a;shopify运营、跨境电商卖家 您的Shopify 在线商店是使用当今最好的平台之一构建的。2022 年第二季度&#xff0c;Shopify 在美国电子商务平台中占据最大市场份额&#xff0c;约占美国所有在线业务的 32%。 这也意味着电子商务品牌之间的竞争比以往任何时候都…

【图像融合】基于matlab DSIFT多聚焦图像融合【含Matlab源码 2224期】

⛄一、SIFT配准简介 1 算法概述 在实时系统中&#xff0c;算法的输入为相机数据流&#xff0c;当前输入的图像与上一张相似度很高时应不参与融合&#xff0c;由于在体视显微镜下序列图像存在较大程度的偏移&#xff0c;所以融合前还需要进行图像配准&#xff0c;配准完成后再进…

安杰思提交注册:预计2022年度收入不低于3.5亿元,同比增长15%

11月16日&#xff0c;杭州安杰思医学科技股份有限公司&#xff08;下称“安杰思”&#xff09;在上海证券交易所科创板提交招股书&#xff08;注册稿&#xff09;。据贝多财经了解&#xff0c;安杰思于2022年6月24日在科创板递交上市申请材料&#xff0c;2022年11月7日获得上市…

面试--线程池的执行流程和拒绝策略有哪些?

一. 执行流程 聊到线程池就一定会聊到线程池的执行流程, 也就是当有一个任务进入线程池之后, 线程池是如何执行的? 想要真正的了解线程池的执行流程&#xff0c;就得先从线程池的执行方法 execute() 说起, execute() 实现源码如下: public void execute(Runnable command)…

2.10.2版本的青龙升级2.10.13及2.11.3版本的教程

重要提醒&#xff1a; 这个教程仅限使用我下面这个命令搭建的青龙面板使用 docker run -dit \--name QL \--hostname QL \--restart always \-p 5700:5700 \-v $PWD/QL/config:/ql/config \-v $PWD/QL/log:/ql/log \-v $PWD/QL/db:/ql/db \-v $PWD/QL/scripts:/ql/scripts \-…

【消息队列笔记】chp3-如何确保消息不丢失

一、检测消息是否丢失 我们要保证消息的可靠交付&#xff0c;首先就要知道消息是否丢失了。如何做到这一点呢&#xff1f; 对于IT基础设施比较完善的公司&#xff0c;可以使用分布式链路追踪系统来追踪每一条消息。如果没有这样的系统&#xff0c;可以使用消息的有序性来验证…

圆角矩形不是圆:圆角的画法和二阶连续性

本文中的所有重要图片都会给出基于Matplotlib的Python绘制代码以供参考 引言 如果在百度搜索圆角矩形的画法&#xff0c;那么多数结果都会告诉你&#xff0c;就是把一个普通矩形的拐角换成相切的 14\frac{1}{4}41​ 圆弧&#xff0c;就像 引文1 和 引文2 说的那样。然而&#x…