1. 前言
欢迎使用ESP32进行WiFi配网!本教程将带领您轻松掌握两种不同的配网方法:一种是通过Web服务器在浏览器中手动输入WiFi信息;另一种则是利用BLE(低功耗蓝牙)进行无线配网。只需按照以下步骤操作,您就能顺利将ESP32连接到家庭WiFi网络,并且下次启动可以自动连接之前连过的wifi。
2. 先决条件
这一次还是采用Arduino编程就会轻松许多开发。这样就可以愉快进行【ESP32 配网教程】
在继续此项目之前,请确保检查以下先决条件。我们将使用 Arduino IDE 对 ESP32/ESP8266 开发板进行编程,因此在继续本教程之前,请确保已在 Arduino IDE 中安装这些开发板。此外,为了实现ESP32S3与SNR9816TTS模块的串口通信,请确保您已经安装了WebServer
和WiFi
库。
2.1 环境配置
-
Arduino IDE:下载并安装 Arduino IDE;
-
ESP32 开发板库:在 Arduino IDE 中添加 ESP32 支持;
参考博客:【esp32c3配置arduino IDE教程】
为安装过程留出一些时间,具体时间可能因您的互联网连接而异。
2.2 所需零件
要学习本教程,您需要1个ESP32S3 Sense,或者随便一个esp32。
名称 | 端口 | 功能 | 购买地址 |
---|---|---|---|
ESP32S3 Sense | TXGPIO01 RXGPIO02 | 主控 | 官方地址 |
中文版 SNR9816TTS | TXRX RXTX | TTS模块 | 淘宝地址 |
3.3 硬件连接步骤
目前这是我使用的ESP32S3官方硬件(小小的身材有大大的力量)只需要35元加摄像头麦克风79元,后期我会整理相关专栏进行Arduino系统学习。有需要可以购买xiao开发板,SeeedXIAO ESP32S3 Sense硬件购买地址:https://s.click.taobao.com/lekazrt,ESP32S3 Sense直接连接电脑
3. Web热点手动配网
Web热点手动配网是通过esp32生成一个热点AP,用户连接后在配网网页中输入要连接的热点信息,检查无误后发送连接,下次启动可以自动连接之前连过的wifi。
3.1. 准备工作
首先,确保您的ESP32开发板已正确连接至电脑,并在Arduino IDE中安装好所需的库(如WiFi.h
、WebServer.h
)。将教程提供的第一份代码复制粘贴到IDE中。
main.c
#include <WiFi.h>#include <WebServer.h>#include "smartconfig.h"void setup() { Serial.begin(115200); if (!AutoConfig()) { smartConfig(); }}void loop() { WiFiClient client; const char* host = "www.baidu.com"; const int httpPort = 80; Serial.print("Connecting to "); Serial.println(host); if (!client.connect(host, httpPort)) { Serial.println("Connection failed"); return; } Serial.println("Connected to server successfully"); client.stop(); delay(5000);}123456789101112131415161718192021222324252627282930
smartconfig.h
#include <WebServer.h>#include <WiFi.h>const char *ssid = "ESP32-AP";const char *password = ""; // 设置为空字符串表示没有密码WebServer server(2024);void handleRoot() { server.send(200, "text/html", "<h1>ESP32 WiFi配网</h1><p>请输入您的WiFi名称和密码</p><form action='/connect' method='post'><label for='ssid'>WiFi名称:</label><input type='text' id='ssid' name='ssid'><br><label for='password'>WiFi密码:</label><input type='password' id='password' name='password'><br><input type='submit' value='连接'></form>");}void handleConnect() { String ssid = server.arg("ssid"); String password = server.arg("password"); if (ssid != "" && password != "") { uint8_t count = 0; WiFi.begin(ssid.c_str(), password.c_str()); while (WiFi.status() != WL_CONNECTED) { count++; Serial.println("Connecting to WiFi..."); server.send(200, "text/html", "<h1>连接中...</h1><p>请稍候,ESP32 正在连接到您的WiFi网络。</p>"); if (count >= 60) { Serial.printf("\r\n-- wifi connect fail! --"); server.send(400, "text/html", "<h1>错误</h1><p>请输入WiFi名称和密码。</p>"); ESP.restart(); // 执行软件重启 } delay(200); } Serial.println("Connected to WiFi"); server.send(200, "text/html", "<h1>连接成功</h1><p>请断开网络。</p>"); }}void smartConfig() { // WiFi.mode(WIFI_AP); WiFi.softAP(ssid, password); IPAddress IP = IPAddress(192, 168, 33, 33); IPAddress gateway(192, 168, 33, 1); IPAddress subnet(255, 255, 255, 0); WiFi.softAPConfig(IP, gateway, subnet); server.on("/", HTTP_GET, handleRoot); server.on("/connect", HTTP_POST, handleConnect); server.begin(); Serial.println("WiFi热点已启动"); while (WiFi.status() != WL_CONNECTED) { server.handleClient(); }}//自动配网函数,成功配对以后设备会记忆密码,通电自动连接bool AutoConfig() { WiFi.mode(WIFI_AP_STA); WiFi.begin(); //如果觉得时间太长可改 for (int i = 0; i < 20; i++) { int wstatus = WiFi.status(); if (wstatus == WL_CONNECTED) { Serial.println("WIFI SmartConfig Success"); Serial.printf("SSID:%s", WiFi.SSID().c_str()); Serial.printf(", PSW:%s\r\n", WiFi.psk().c_str()); Serial.print("LocalIP:"); Serial.print(WiFi.localIP()); Serial.print(" ,GateIP:"); Serial.println(WiFi.gatewayIP()); return true; } else { Serial.print("WIFI AutoConfig Waiting......"); Serial.println(wstatus); delay(1000); } } Serial.println("WIFI AutoConfig Faild!"); return false;}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
3.2. 编译上传程序
在Arduino IDE中选择正确的ESP32开发板型号和端口,点击“上传”按钮将程序烧录至ESP32。
3.3. 进行手动配网
-
连接ESP32热点:打开手机或电脑的WiFi设置,找到名为“ESP32-AP”的热点并连接(初始密码通常为空)。
-
访问配网页面:在浏览器中输入
http://192.168.33.33:2024
,访问ESP32提供的配网页面。
填写WiFi信息:在页面上分别输入您家庭WiFi的名称(SSID)和密码,然后点击“连接”按钮。 -
确认配网结果:如果配网成功,浏览器将显示“连接成功,请断开网络”。这时,请断开与ESP32热点的连接,让ESP32自动连接到您的家庭WiFi。
注意:wifi和密码不能是中文并且不能太长,合起来不能超过20字符
4. BLE无线配网
BLE无线配网是通过esp32通过开启一个低功耗蓝牙模式,用户采用蓝牙调试app连接后输入要连接的热点信息,检查无误后发送连接,下次启动可以自动连接之前连过的wifi。
4.1. 准备工作**
确保ESP32开发板已连接至电脑,且Arduino IDE已安装所需库(如WiFi.h
、WebServer.h
、BLEDevice.h
等)。将教程提供的第二份代码复制粘贴到IDE中。
4.2. 编译上传程序
在Arduino IDE中选择正确的ESP32开发板型号和端口,点击“上传”按钮将程序烧录至ESP32。
4.3. 使用手机APP进行无线配网
-
连接ESP32 BLE设备:打开支持BLE功能的手机,安装并打开一个蓝牙调试的APP(如自开发APP或第三方智能家居APP)。在APP中搜索并连接名为“ESP32 BLE”的设备。
-
输入WiFi信息:在APP中依次填入您家庭WiFi的名称(SSID)和密码
iQOO:12345678
,然后点击“发送”或类似按钮,将信息通过BLE发送至ESP32。 -
确认配网结果:ESP32接收到WiFi信息后,将尝试连接指定的WiFi网络。连接成功后,ESP32会通过BLE发送“ success”消息给APP。
-
5. 总结
现在,我们在本教程中,您已学会如何使用Web服务器手动配网或利用BLE无线配网为ESP32连接家庭WiFi。从而实现对外部世界进行感知,充分认识这个有机与无机的环境,后期会持续分享esp32跑freertos实用案列科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。
如果你有任何问题,可以通过下面的二维码加入鹏鹏小分队,期待与你思维的碰撞
评论(0)
您还未登录,请登录后发表或查看评论