是一种常见的做法,它允许ESP8266在重新启动后自动连接到特定的WiFi网络,而无需每次都手动输入凭据。EEPROM是一种可编程的非易失性存储器,可以在断电后保持数据的存储。
ESP8266是一款低成本、低功耗的Wi-Fi模块,广泛应用于物联网设备和嵌入式系统中。它具有内置的EEPROM,可以用来存储WiFi凭据。
以下是将WiFi凭据保存到ESP8266上的EEPROM的步骤:
以下是一个示例代码:
#include <ESP8266WiFi.h>
#include <EEPROM.h>
// 定义WiFi凭据
const char* ssid = "YourWiFiSSID";
const char* password = "YourWiFiPassword";
// 定义EEPROM地址
#define SSID_ADDRESS 0
#define PASSWORD_ADDRESS 32
void setup() {
// 初始化串口
Serial.begin(115200);
// 初始化EEPROM
EEPROM.begin(512);
// 读取WiFi凭据
String savedSSID = "";
String savedPassword = "";
for (int i = 0; i < 32; ++i) {
savedSSID += char(EEPROM.read(SSID_ADDRESS + i));
savedPassword += char(EEPROM.read(PASSWORD_ADDRESS + i));
}
// 连接到WiFi网络
if (savedSSID.length() > 0 && savedPassword.length() > 0) {
WiFi.begin(savedSSID.c_str(), savedPassword.c_str());
Serial.println("Connecting to WiFi...");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConnected to WiFi");
} else {
// 进入配置模式
configureWiFi();
}
}
void loop() {
// 主循环
}
void configureWiFi() {
// 配置模式
Serial.println("WiFi credentials not found. Entering configuration mode.");
// 读取新的WiFi凭据
String newSSID = "";
String newPassword = "";
Serial.print("Enter WiFi SSID: ");
while (newSSID.length() == 0) {
newSSID = Serial.readString();
newSSID.trim();
}
Serial.print("Enter WiFi password: ");
while (newPassword.length() == 0) {
newPassword = Serial.readString();
newPassword.trim();
}
// 保存新的WiFi凭据到EEPROM
for (int i = 0; i < newSSID.length(); ++i) {
EEPROM.write(SSID_ADDRESS + i, newSSID[i]);
}
for (int i = 0; i < newPassword.length(); ++i) {
EEPROM.write(PASSWORD_ADDRESS + i, newPassword[i]);
}
EEPROM.commit();
// 重启ESP8266
ESP.restart();
}
这个示例代码会首先尝试从EEPROM中读取已保存的WiFi凭据并连接到WiFi网络。如果未保存WiFi凭据或连接失败,将进入配置模式,允许用户手动输入WiFi凭据,并保存到EEPROM中。在配置模式下,用户需要通过串口监视器输入WiFi的SSID和密码。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云