4-1使用 WiFiManager 库

到目前为止,用于连接ESP8266和Wi-Fi网络的SSID和密码已经使用以下代码在项目中进行了硬编码:

const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

要停止使用硬编码值,我们需要首先在 AP 模式下启动 ESP8266,并将用户公开为由 ESP8266 内部托管的Web服务器提供服务的 Web 界面。

我们将学习如何使用 WiFiManager 库来公开一个配置网页;我们将获取数据并像我们在前一章中所做的那样将其保存到 SPIFFS,并使用它以站模式启动我们的模块并连接到MQTT服务器。
如果您没有在第1章“ ESP8266入门 ”中安装 WiFiManager 库,您可以现在做,转到 Sketch | Include Library | 管理库并搜索 wif imanager,如以下屏幕截图所示:

安装 WiFiManager 库


安装库后,让我们看看如何使用它来设置 Wi-Fi网络 和 Wi-Fi密码。
使用以下代码看看它的样子以及如何使用WiFiManager:

#include "FS.h"
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>

如果您需要清除 SPIFFS中 先前保存的值,可以将 init_esp 设置为true以清除先前存储的Wi-Fi凭证并格式化SPIFFS。当您想要将ESP8266模块移动到不同的WiFi网络时,可能就是这种情况。刷新代码后,setup()函数将格式化SPIFFS。然后将值更改回false,这样每次ESP8266启动时都不会格式化闪存:

boolean init_esp = false;
void setup()
{
  Serial.begin(115200); delay(10);
  if(init_esp)
  {
    SPIFFS.format();
    WiFi.disconnect();
  }

实例化 wifiManager 对象。这将在访问点模式下启动ESP,并将一个强制门户网站重定向到配置网页:

  WiFiManager wifiManager;

将到期超时设置为240秒:

  wifiManager.setConfigPortalTimeout(240);
  if(!wifiManager.autoConnect("ESP_AP", "changeit"))
  {
    Serial.println(F("Failed to connect. Reset and try again. . ."));
    delay(3000);
    //重置并重试
    ESP.reset();
    delay(5000);
  }

在我们从网络浏览器中选择Wi-Fi网络和密码后,我们现在连接到Wi-Fi网络:

  //如果你到这里,你已经连接到WiFi
  Serial.println(F("Connected to Wifi."));
  Serial.print(F("My IP:"));
  Serial.println(WiFi.localIP());
}

void loop() {
  //为loop()添加你的代码
}

使用此代码编译并刷新ESP8266后,请拿起手机并查找周围的Wi-Fi网络。您将看到名为 ESP_ AP 的网络。连接到它,输入密码changeit,然后单击登录到网络。如果您没有看到此消息,请转到您的Web浏览器并尝试访问任何链接或在地址栏中输入 192. 168.4.1。您将被重定向到此页面:

WiFiManager 主截屏

 

在此页面中,您将看到已定义的访问点名称,ESP_AP和四个按钮,这些按钮在以下列表中进行了说明:

  • 配置WiFi:扫描周围的Wi-Fi网络,它将显示它们的列表及其信号功率。如果您有多个Wi-Fi网络,您可以选择功率最大的网络,如以下屏幕截图所示:
扫描的配置

 

  • 配置WiFi(无扫描):如果您的Wi-Fi网络具有隐藏的SSID或您的Wi-Fi网络未联机,则可以输入网络名称和密码,跳过扫描功能,如以下屏幕截图所示:
不扫描的配置
  • 信息:如以下屏幕截图所示,此页面将读取ESP82 66的接入点或电台模式的芯片ID,MAC地址,以及闪存大小和闪存ID等闪存详细信息:
Information about ESP and flash
  • 复位:按下复位按钮将复位ESP8266芯片。在ESP启动后,在Arduino IDE的串行控制台中,您将看到有关WiFiManager的一些调试信息。如果需要更多信息,请在项目中添加以下行:
wifiManager.setDebugOutput(false);
  • 在此行之后:
WiFiManager wifiManager;

选择Wi-Fi网络并引入密码后,串口控制台的输出将显示 ESP 已连接至 Wi-Fi ;它将显示路由器分配的IP地址,如下面的屏幕截图所示:

提示:您可以添加连接到GPIO的硬件按钮,当按下按钮时,可以删除Wi-Fi凭据,可以格式化闪存或删除闪存中的一些文件;所以,如果要更改Wi-Fi网络或Wi-Fi密码,你不必强制闪存一次工程项目。

发布了252 篇原创文章 · 获赞 74 · 访问量 21万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览