引言
月初,收到了DFRobot的新产品 FireBeetle2-ESP32-C5 开发板,ESP32系列在开发者社区中有着广泛的应用,这是一款基于ESP32-C5芯片的高性能物联网开发板,可玩性极高,本文将探讨在MicroPython环境下的智能配网实现,在此抛砖引玉。
开箱啦
这块板子延续DFRobot的设计风格,很是精美,还配套了扩展IO板。
参数信息:
- 主频高达240MHz的RISC-V单核处理器
- 384KB SRAM + 320KB ROM + 4MB Flash
- 支持2.4GHz和5GHz双频Wi-Fi 6,乐鑫首款双频Wi-Fi 6芯片,速率最高可达150Mbps
- 支持Type-C、5V DC及太阳能充电,集成电池电量监测和3.3V可控电源输出、低功耗
- 蓝牙协议:Bluetooth 5、Bluetooth mesh,速率最高可达2 Mbps
IO资源
- 数字I/O x18
- LED PWM 控制器 6个通道
- SPI x1
- UART x3 (LP UART x1)
- I2C x2 (LP I2Cx1)
- I2S x1
- 红外收发器:发送通道 x5、接收通道 x5
- 1x 12 位 SAR ADC, 7个通道
- DMA 控制器,3个接收通道和3个发送通道
详细参数可以查看官方WIKI: https://wiki.dfrobot.com.cn/SKU_DFR1236_Firebeetle_2_ESP32_C5_Development_Board_IO_Expansion_Kit
环境搭建
笔者所用设备及工具如下
- 设备: MacBook Air M3 - MacOS 15.6.1 (24G90)
- 工具: PyCharm Pro + Tabby
- 环境: MicroPython + esptool
使用官方 esptool 工具,该工具基于 Python 开发,需要具备 Python 开发环境。
尤其需要注意的是本次评测的开发板ECO1,正式量产版本的是ECO2,因此烧录工具版本号最大支持esptool.py<=4.9.dev8,别问我为什么知道。
固件下载地址: https://wiki.dfrobot.com.cn/ESP32_MicroPython_Usage_Tutorial
注:烧录时建议从扩展板取下。
# 创建项目路径
mkdir suroy/wifi_manager
# 创建虚拟环境 (python版本需要>=3.7)
python3 -m venv venv
# 激活环境
source venv/bin/activate
# 安装依赖项
pip install
# 擦出flash
esptool.py erase_flash
# 烧录固件(记得修改设备名和文件路径)
# 串口设备名: /dev/cu.usbmodem101
# 固件文件路径: firmware_eco1.bin
esptool.py --chip esp32c5 -p /dev/cu.usbmodem101 -b 460800 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_size 4MB --flash_freq 80m --erase-all 0x2000 firmware_eco1.bin
WI-FI配网实现
设计思路
传统的物联网设备WiFi配网通常有以下几种方式:
- 硬编码配网:直接在代码中写入WiFi信息
- Serial配网:通过串口命令行配置
- SmartConfig:通过手机APP发送WiFi信息
- AP配网:设备创建热点,用户连接后配置
我选择实现AP配网方案,因为它用户体验好,不需要额外APP,且代码实现相对简单。
主要工作流程
一键配网流程
- 首次使用:设备自动进入AP模式
- 手机连接:连接到
SOUROY_AP热点(密码:88888888) - 访问配置页:浏览器访问 http://192.168.4.1
- 选择WiFi:从下拉列表选择要连接的网络
- 输入密码:输入WiFi密码
- 完成配网:设备自动保存配置并连接
注:若无响应,建议直接 reset 重试
快速应用到项目
开源地址: https://github.com/zsuroy/smartlink-mp
获取并上传驱动
# 克隆仓库 git clone https://github.com/zsuroy/smartlink-mp # 上传仓库中的 wifi_manager.py 文件到 esp32编写入口
import time from machine import Pin # ====WI-FI 配网==== from wifi_manager import WiFiManager wm = WiFiManager("SUROY_AP", "88888888") # 初始Wi-Fi热点配置 if not wm.connect(): led.off() print("配网完成...") # ====WI-FI 配网==== while True: led.on() time.sleep(0.5) led.off() time.sleep(0.5)
使用简单,仅需要 # ====WI-FI 配网==== 中的代码即可。
总结
智能配网方案常见于Arduino和基于IDF开发的版本,而本文基于MicroPython实现了一套轻量级易于集成的方案,解决了IoT开发中的一大痛点,但说实话,这只是打开了第一道门,后续还可以有许多的改进方面,在此抛砖引玉,给各位大佬足够的发挥空间。






Comments | NOTHING