1. ESP32-S3网络配置实战:静态IP与服务器IP修改指南
在物联网设备开发中,网络配置是基础但至关重要的环节。ESP32-S3作为乐鑫推出的高性能Wi-Fi+蓝牙双模芯片,广泛应用于各类IoT场景。今天要分享的是一个实际项目中遇到的典型案例:如何通过串口命令动态修改ESP32-S3的本地静态IP和目标服务器IP地址,同时保持配置断电不丢失。
这个方案的典型应用场景包括:
- 工业现场需要频繁更换设备IP的调试环境
- 需要灵活切换测试服务器和生产服务器的开发阶段
- 部署后可能变更网络架构的长期运行设备
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心设计思路解析
2.1 整体架构设计
本方案采用三层配置管理结构:
- 默认参数层:编译时确定的初始值,作为最后的fallback
- EEPROM存储层:保存最近一次的有效配置
- 运行时变量层:当前实际使用的配置值
这种设计既保证了首次上电时有合理默认值,又能记住用户的自定义设置,同时支持运行时的临时修改。
2.2 关键技术选型
-
配置存储:选用EEPROM而非Flash,因为:
- 配置数据量小(约150字节)
- 需要频繁修改(EEPROM擦写寿命通常10万次)
- 实现简单,无需考虑Flash的扇区管理
-
网络配置:
- 同时支持DHCP和静态IP两种模式
- 静态IP需要配置四要素:IP、网关、子网掩码、DNS(本示例中DNS使用网关)
-
命令协议:采用简单的键值对格式,例如:
ssid=Test pass=12345678 ip=192.168.1.100 port=8888 lip=192.168.1.99 gw=192.168.1.1 mask=255.255.255.0 dhcp=0
3. 关键代码实现详解
3.1 网络配置存储结构
cpp复制struct __attribute__((packed)) cfg {
char ip[16]; // 服务器IP
char ssid[32]; // WiFi SSID
char pass[64]; // WiFi密码
int port;
