资讯详情

资讯详情

ESP32 WiFi连接与IP地址获取教程

1. 项目概述ESP32 WiFi连接与IP地址打印这个实验将带你用Arduino IDE完成ESP32的基础WiFi连接功能并通过串口监视器打印获取到的IP地址。作为物联网开发中最基础的Hello World级项目它能帮你快速验证开发环境配置是否正确同时掌握ESP32连接WiFi网络的核心流程。我经常建议新手从这个实验开始ESP32的学习因为它只需基础硬件ESP32开发板数据线包含完整的网络连接流程通过串口输出直观反馈连接状态代码结构简单但包含关键要素为后续Web服务器、MQTT等应用打下基础2. 硬件准备与环境搭建2.1 所需硬件清单ESP32开发板推荐ESP32-DevKitCMicro USB数据线电脑Windows/Mac/Linux均可注意某些ESP32开发板需要手动安装USB转串口芯片驱动如CH340若设备管理器中出现未知设备需先安装对应驱动。2.2 软件环境配置安装Arduino IDE从官网下载最新版本(建议2.3.x)添加ESP32支持文件→首选项→附加开发板管理器网址添加https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json工具→开发板→开发板管理器→搜索esp32→安装选择开发板型号工具→开发板→ESP32 Arduino→选择ESP32 Dev Module端口选择对应的COM口插入ESP32后出现3. 核心代码解析3.1 完整代码实现#include WiFi.h const char* ssid Your_WiFi_SSID; // 替换为你的WiFi名称 const char* password Your_WiFi_Pass; // 替换为你的WiFi密码 void setup() { Serial.begin(115200); delay(1000); // 等待串口初始化 WiFi.begin(ssid, password); Serial.println(\nConnecting to WiFi...); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(\nConnected to WiFi!); Serial.print(IP Address: ); Serial.println(WiFi.localIP()); } void loop() { // 保持连接状态 if (WiFi.status() ! WL_CONNECTED) { Serial.println(WiFi disconnected!); ESP.restart(); } delay(3000); }3.2 关键代码段解析WiFi库引入#include WiFi.hESP32-Arduino核心库已内置WiFi支持无需额外安装。连接初始化WiFi.begin(ssid, password);启动STA模式连接指定WiFi需确保2.4GHz网络ESP32不支持5GHz非企业级加密网络如WPA2-Personal连接状态检测while (WiFi.status() ! WL_CONNECTED)WiFi.status()返回连接状态常见返回值WL_CONNECTED连接成功WL_NO_SSID_AVAILSSID不可用WL_CONNECT_FAILED密码错误WL_IDLE_STATUS正在处理IP地址获取WiFi.localIP()返回ESP32在局域网内的IPv4地址格式为IPAddress对象。4. 实操步骤详解4.1 代码上传流程复制完整代码到Arduino IDE修改ssid和password为你的WiFi凭证点击验证编译代码CtrlR连接开发板选择正确端口点击上传CtrlU注意上传时需按住BOOT按钮部分型号需要直到出现Hard resetting...提示。4.2 串口监视器使用上传完成后打开串口监视器CtrlShiftM设置波特率为115200观察输出日志Connecting to WiFi... .... Connected to WiFi! IP Address: 192.168.1.1004.3 常见问题排查无法连接WiFi检查SSID/密码是否正确确保路由器未开启MAC过滤尝试重置路由器IP地址显示0.0.0.0检查路由器DHCP服务是否开启确认WiFi.status()返回WL_CONNECTED频繁断开连接添加外接电源USB供电可能不足调整代码中的重连机制5. 进阶应用方向5.1 添加重连机制void reconnectWiFi() { if (WiFi.status() WL_CONNECTED) return; Serial.println(Reconnecting...); WiFi.disconnect(); WiFi.begin(ssid, password); int retries 0; while (WiFi.status() ! WL_CONNECTED retries 10) { delay(500); Serial.print(.); retries; } if (WiFi.status() WL_CONNECTED) { Serial.println(\nReconnected!); } else { Serial.println(\nFailed to reconnect); } }5.2 多网络配置const char* ssids[] {Home_WiFi, Office_WiFi}; const char* passwords[] {home123, office456}; void connectMultiWiFi() { for (int i 0; i 2; i) { WiFi.begin(ssids[i], passwords[i]); Serial.printf(Trying %s...\n, ssids[i]); int retry 0; while (retry 10 WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); retry; } if (WiFi.status() WL_CONNECTED) break; } }5.3 信号强度检测void checkRSSI() { long rssi WiFi.RSSI(); Serial.print(Signal strength: ); Serial.print(rssi); Serial.println( dBm); if (rssi -50) { Serial.println(Excellent signal); } else if (rssi -60) { Serial.println(Good signal); } else if (rssi -70) { Serial.println(Fair signal); } else { Serial.println(Weak signal); } }6. 项目优化建议6.1 添加LED状态指示#define WIFI_LED 2 // ESP32内置LED通常接GPIO2 void setup() { pinMode(WIFI_LED, OUTPUT); // ...其他初始化代码 } void loop() { if (WiFi.status() WL_CONNECTED) { digitalWrite(WIFI_LED, HIGH); } else { digitalWrite(WIFI_LED, LOW); } // ...其他代码 }6.2 保存WiFi配置使用Preferences库保存网络配置#include Preferences.h Preferences prefs; void saveWiFiConfig() { prefs.begin(wifi-config); prefs.putString(ssid, ssid); prefs.putString(password, password); prefs.end(); } void loadWiFiConfig() { prefs.begin(wifi-config); ssid prefs.getString(ssid, ); password prefs.getString(password, ); prefs.end(); }6.3 添加Web配置界面结合WebServer库创建配网页面#include WebServer.h WebServer server(80); void handleRoot() { String html form action/save SSID: input typetext namessidbr Password: input typepassword namepassbr input typesubmit valueSave /form; server.send(200, text/html, html); } void handleSave() { ssid server.arg(ssid); password server.arg(pass); server.send(200, text/plain, Credentials saved); WiFi.begin(ssid.c_str(), password.c_str()); }7. 实际应用案例7.1 智能家居设备通过IP地址实现手机APP控制定时任务设置状态监控7.2 工业传感器节点定时上报数据到服务器远程配置采集参数固件OTA升级7.3 教学演示系统网络通信原理展示IoT开发入门教学协议分析实验经验分享在实际项目中建议将WiFi连接模块封装成独立类方便不同项目复用。同时添加配网超时、低功耗模式等生产级功能。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →