FireBeetle2-ESP32-C5基于MicroPython的WI-FI配网使用


引言

月初,收到了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配网通常有以下几种方式:

  1. 硬编码配网:直接在代码中写入WiFi信息
  2. Serial配网:通过串口命令行配置
  3. SmartConfig:通过手机APP发送WiFi信息
  4. AP配网:设备创建热点,用户连接后配置

我选择实现AP配网方案,因为它用户体验好,不需要额外APP,且代码实现相对简单。

主要工作流程

一键配网流程

  1. 首次使用:设备自动进入AP模式
  2. 手机连接:连接到 SOUROY_AP 热点(密码:88888888
  3. 访问配置页:浏览器访问 http://192.168.4.1
  4. 选择WiFi:从下拉列表选择要连接的网络
  5. 输入密码:输入WiFi密码
  6. 完成配网:设备自动保存配置并连接

注:若无响应,建议直接 reset 重试

快速应用到项目

开源地址: https://github.com/zsuroy/smartlink-mp

  1. 获取并上传驱动

    # 克隆仓库
    git clone https://github.com/zsuroy/smartlink-mp
    
    # 上传仓库中的 wifi_manager.py 文件到 esp32
  2. 编写入口

    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开发中的一大痛点,但说实话,这只是打开了第一道门,后续还可以有许多的改进方面,在此抛砖引玉,给各位大佬足够的发挥空间。

声明:Grows towards sunlight |版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - FireBeetle2-ESP32-C5基于MicroPython的WI-FI配网使用


Grows towards sunlight and Carpe Diem