| 本帖最后由 无垠的广袤 于 2025-9-27 10:19 编辑 
 【FireBeetle 2 ESP32-C5】 介绍、固件上传、工程测试
 
 本文介绍了 FireBeetle 2 ESP32-C5 IO 套装的相关信息,包括参数特点、资源分布、原理图及产品应用等,并结合固件上传流程实现 MicroPython 开发,通过一系列工程测试展示了该开发板的强大性能和多场景应用。 介绍
 
 FireBeetle 2 ESP32-C5 IO套装包括两部分:Firebeetle 2 ESP32-C5 开发板和其专用的IO扩展底板。 IO扩展板方便快速连接各种传感器外设,让Firebeetle 2 ESP32-C5开发板到手即用,无需焊接。 FireBeetle 2 ESP32-C5 是一款搭载乐鑫 ESP32-C5 模组的低功耗 IoT 开发板,面向智能家居和广泛物联网场景,集高性能计算、多协议支持与智能电源管理于一体,为各种部署需求提供高可靠性、高灵活性与长续航的解决方案。提供 双频 Wi-Fi 6 连接(2.4 和 5 GHz) 以及蓝牙 5、Thread 和 Zigbee,便于无缝集成到智能家居平台 Home Assistant 等开源系统。FireBeetle 2 ESP32-C5 IO 扩展套件是一个先进的开发平台,将强大的 FireBeetle 2 ESP32-C5  与专用的 IO 扩展扩展板相结合。它专为下一代物联网应用而设计,提供尖端的无线性能、全面的协议支持和强大的电源灵活性。该开发套件具有太阳能充电功能的智能电源管理系统和 23 μA 的超低深度睡眠电流。可定制 Home Assistant 传感器节点、通过 MQTT 报告的太阳能户外显示器,甚至是多协议 Zigbee/Thread 网关。 
 外观参数
 资源板载资源分布扩展板分布处理器:RISC-V单核处理器时钟频率:240 MHz内存:384 KB电子模块: 320 KB闪存:4 MBLP SRAM:16 KB 
 引脚功能应用
 主控Matter 智能设备离网气象站多协议物联网网关原型互动艺术和可穿戴设备 
 
 ESP32-C5 是行业首款支持 2.4&5 GHz 双频 Wi-Fi 6、Bluetooth 5 (LE) 和 IEEE 802.15.4 (Zigbee, Thread) 连接性能的 RISC-V MCU,专为需要高效无线传输的物联网应用设计。 芯片搭载 RISC-V 32 位单核处理器,主频高达 240 MHz,内置 384 KB SRAM、320 KB ROM。它拥有 29 个可编程 GPIO,支持所有常用外围设备,并保证高连接可靠性和优越的安全功能。 原理图供电主控电池管理DC-DC引脚固件上传
 
 这里介绍使用 MicroPython 开发的方式,需上传 ESP32-C5 对应的二进制 *.bin 固件至开发板; 
 工程测试使用命令行烧录固件 
 电脑安装 Python 软件,终端命令行输入指令 pip3 install esptool==4.9.dev3 安装 esptool 烧录工具;终端打开固件所在文件夹,执行指令 esptool --chip esp32c5 -b 921600 --before default_reset --after hard_reset write_flash 0x2000 FireBeetle_2_ESP32-C5.bin  
 
 包括 GPIO、UART、IIC、SPI、WiFi、Bluetooth 等基本功能测试。 Blink
 Thonny IDE 新建文件,添加如下代码并运行 
 复制代码import time
from machine import Pin 
led=Pin(15,Pin.OUT)
while True:
 
 led.value(1)
 time.sleep(0.2)
 led.value(0)
 time.sleep(0.2)
 
 
 
 板载 LED 闪烁;UART 串口 这里通过串口连接雷达模块,实现串口接收雷达数据并终端打印的效果。硬件连接[td] 
 | ESP32-C5 | Radar module | Note |  | 3.3V | VCC | Power |  | GND | GND | Ground |  | TXD | RXD | Transmit data |  | RXD | TXD | Receive data | 
 
 Thonny IDE 新建文件,添加如下代码并运行 
 复制代码from machine import UART, Pin
import time
uart = UART(1, baudrate=115200, tx=Pin(11), rx=Pin(12))
print("Serial Monitor Started")
while True:
    if uart.any():
        data = uart.readline()
        if data:
            text = data.decode('utf-8')
            print(text, end='')
    
    time.sleep_ms(10)
 
 
 
 终端打印 UART 串口接收到的雷达距离数据;IIC 通信 
 这里通过驱动 IIC 协议 OLED 显示进行 IIC 测试。 硬件连接[td]
 
 | ESP32-C5 | OLED | Note |  | GND | GND | Ground |  | 3.3V | VCC | Power |  | SCL (Pin10) | SCL | Serial clock |  | SDA (Pin9) | SDA | Serial data | 
 
 Thonny IDE 新建文件,添加如下代码并运行 
 复制代码from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
i2c = I2C(0,sda=Pin(9), scl=Pin(10), freq=400000)
devices = i2c.scan()
try:
    oled = SSD1306_I2C(128, 64, i2c,addr=devices[0])
    oled.text("hello world", 0, 0)
    oled.show()
except Exception as err:
    print(f"Unable to initialize oled: {err}")
 
 
 
 OLED 显示文字信息SPI 通信 
 这里通过驱动 SPI 协议 OLED 显示进行 SPI 测试。 硬件连接[td]
 
 | ESP32-C5 | SPI OLED | Note |  | GND | GND | Ground |  | 3.3V | VCC | Power |  | SCK (Pin23) | SCK | Serial Clock |  | MOSI (Pin24) | MOSI | Master Output Slave Input |  | RES (Pin3) | RES | Reset |  | DC (Pin2) | DC | Data |  | CS (Pin4) | CS | Chip Select | 
 
 Thonny IDE 新建文件,添加如下代码并运行 
 复制代码from machine import Pin, SPI
import ssd1306 # 导入OLED驱动模块
import time
# 初始化SPI接口
spi = SPI(1, baudrate=10000000, polarity=0, phase=0, sck=Pin(23), mosi=Pin(24), miso=None)
# 初始化控制引脚
dc = Pin(2, Pin.OUT)
res = Pin(3, Pin.OUT)
cs = Pin(4, Pin.OUT)
# 初始化OLED对象
oled = ssd1306.SSD1306_SPI(128, 64, spi, dc, res, cs)
# 显示内容
oled.text("Hello, World!", 0, 0, 1)
oled.text("RP2350", 0, 16, 1)
oled.show()
 
 
 
 显示效果WiFi 连接 
 Thonny IDE 新建文件,添加如下代码并运行 
 复制代码import network
import time
SSID = 'xxx'
PASSWORD = 'xxx'
def connect_wifi():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('正在连接WiFi...', end='')
        wlan.connect(SSID, PASSWORD)
        while not wlan.isconnected():
            print('.', end='')
            time.sleep(1)
    print('\n网络信息:', wlan.ifconfig())
connect_wifi()
 
 
 
 终端打印 WiFi 连接信息以及获取到的 ip 地址;蓝牙连接 
 Thonny IDE 新建文件,添加如下代码并运行 
 复制代码from machine import Pin
import bluetooth, struct
_IRQ_CENTRAL_CONNECT    = 1
_IRQ_CENTRAL_DISCONNECT = 2
_IRQ_GATTS_WRITE        = 3
UART_UUID = bluetooth.UUID("6E400001-B5A3-F393-E0A9-E50E24DCCA9E")
UART_TX   = bluetooth.UUID("6E400003-B5A3-F393-E0A9-E50E24DCCA9E")
UART_RX   = bluetooth.UUID("6E400002-B5A3-F393-E0A9-E50E24DCCA9E")
ble = bluetooth.BLE()
ble.active(True)
def bt_irq(event, data):
    if event == _IRQ_CENTRAL_CONNECT:
        print("BT connected")
    elif event == _IRQ_CENTRAL_DISCONNECT:
        print("BT disconnected")
        _advertise()
    elif event == _IRQ_GATTS_WRITE:
        _, attr_handle = data
        msg = ble.gatts_read(attr_handle)
        print("recv:", msg)
def _advertise():
    ble.gap_advertise(100, adv_data=_adv_payload())
def _adv_payload():
    # payload
    name = b"ESP32-C5 BLE"
    return bytearray((2, 0x01, 0x06, 1 + len(name), 0x09)) + name
ble.irq(bt_irq)
ble.gatts_register_services(((UART_UUID, ((UART_TX, bluetooth.FLAG_NOTIFY),
                                          (UART_RX, bluetooth.FLAG_WRITE)),),))
_advertise()
 
 
 
 打开手机蓝牙,扫描周围设备,发现并连接 ESP32-C5 BLE 设备;离线运行 
 要使 MicroPython 脚本脱离电脑也可以运行,需要将 MicroPython 脚本保存到 MicroPython 设备,并命名为main.py ,复位即可自动运行程序; 总结
 
 本文介绍了 FireBeetle 2 ESP32-C5 IO 套装的相关信息,包括参数特点、资源分布、原理图及产品应用等,并结合固件上传流程实现 MicroPython 开发,通过一系列工程测试展示了该开发板的强大性能和多场景应用,为相关产品的开发设计和快速应用提供了参考。 
 
 
 |