项目概述
此 wiki 已更新:https://wiki.seeedstudio.com/cn/xiao_esp32s3_with_micropython/
CircuitPython 是 XIAO ESP32S3 的理想编程语言,因为它简化了物理计算项目。基于 Python,它具有初学者友好的语法,并包含用于访问传感器和显示器等硬件的模块。由于 CircuitPython 已经支持 ESP32S3 芯片,本项目尝试在 Seeed Studio XIAO ESP32S3 开发板上编译 CircuitPython。
XIAO ESP32S3 与 OLED 显示屏

硬件准备
我在这里使用 Seeed Studio XIAO ESPS3 和 Seeed Studio Grove OLED 显示屏 0.96 作为硬件。
软件准备
我使用 Thonny IDE 软件(Windows)和一些相关的库和文件。

开始使用
下载 XIAO ESP32S3 Circuitpython 固件
XIAO ESP32S3 Sense 的 Circuitpython 固件 9.1.1 和 9.20 Alpha
在 BootLoader 模式下将 XIAO ESP32S3 开发板连接到 PC
具体方法是:
-
步骤 1. 按住 XIAO ESP32S3 上的 BOOT 按钮不松开。
-
步骤 2. 保持按住 BOOT 按钮,然后通过数据线连接到计算机。连接到计算机后松开 BOOT 按钮。
-
步骤 3. 上传 Blink 程序来检查 XIAO ESP32S3 的运行情况。

打开 Thonny 并配置选项
- 运行 Thonny 后,导航到"Tools -> Options"并点击"Options"选择

- 选择"Interpreter"选项并点击"CircuitPython (generic)"选择

将 CircuitPython 固件刷写到 XIAO ESP32S3 开发板
- 在 Thonny 中点击"(esptool)"。它会提示您下载最新的 CircuitPython 固件并将其刷写到开发板。

- Thonny 中的"(esptool)"如下所示,首先选择正确的"Target port"。

- 选择 CircuitPython 系列为"ESP32-S3",并选择安装按钮旁边带有三条水平线的图标,以包含您下载的固件。 例如:(seeed_xiao_esp32s3_911.bin 或 seeed_xiao_esp32s3_920.bin)

- Thonny 将填充重置,您现在可以点击"Install"。

- 一段时间后显示"Done",窗口可以关闭。

- PC上会出现一个"CIRCUITPY"驱动器,这表明开发板已成功刷入固件。

将相关文件(库)添加到"CIRCUITPY"驱动器
将相关文件(库)中的所有文件复制到"CIRCUITPY"驱动器。

使用"Seeed Studio Grove OLED显示屏0.96"时,"adafruit_ssd1306.mpy"文件和"adafruit_framebuf.mpy"文件是必需的
adafruit_framebuf库使用名为font5x8.bin的字体文件来渲染文本。此文件需要在执行代码的环境中可访问。
编写代码(IIC)并上传以实现OLED显示
- 添加文件后,我现在可以使用命令import adafruit_ssd1306将adafruit_ssd1306库导入到代码中,环境现在已配置为驱动OLED显示屏。代码如下所示:
from board import *
from busio import I2C
import busio
import adafruit_ssd1306
i2c = I2C(IO6,IO5) # Initialize I2C communication using IO6 and IO5 pins
# Create a display object with 128x64 resolution and an I2C address of 0x3C
display = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3C)
# Clear the display
display.fill(0)
display.show()
# Write text on the display
display.text('SeeedStudio ESP32S3', 0, 0 , 1)
display.text('Code by CircuitPython!', 0, 20 , 2)
display.show()
- 点击"运行"按钮上传代码

- 最终结果

XIAO ESP32S3 Sense与圆形显示屏配合使用Sense摄像头
硬件准备
软件准备
- 为XIAO ESP32S3 Sense安装固件。
固件 |
---|
- 安装必要的模块和依赖项。
您始终可以使用Adafruit的工具circup来安装CircuitPython库。安装后,您只需输入以下命令即可安装任何库。
# install circup
pip install setuptools
pip install circup
pip install --upgrade circup
# install module to library
circup install gc9a01 adafruit_ticks
入门指南
安装所有必需的库后,只需将下面的代码输入到CIRCUITPY的code.py或main.py中,即可在圆形显示屏上查看摄像头画面。
import board
import busio
import displayio
import espcamera
import adafruit_ticks
import gc9a01
import struct
i2c = busio.I2C(board.SCL, board.SDA)
spi = busio.SPI(clock=board.SCK, MOSI=board.MOSI)
cam_i2c = busio.I2C(board.CAM_SCL, board.CAM_SDA)
tft_dc = board.D3
tft_cs = board.D1
tft_bl = board.D6
display_bus = displayio.FourWire(spi, command=tft_dc, chip_select=tft_cs)
display = gc9a01.GC9A01(display_bus, width=240, height=240, rotation=0)
# Appears that this example does not use Displayio at all
# print frame directly on display_bus to be faster
# so, rotation setting not works...
main = displayio.Group()
display.root_group = main
# Camera Init
cam = espcamera.Camera(
data_pins=board.CAM_DATA,
external_clock_pin=board.CAM_XCLK,
pixel_clock_pin=board.CAM_PCLK,
vsync_pin=board.CAM_VSYNC,
href_pin=board.CAM_HREF,
pixel_format=espcamera.PixelFormat.RGB565,
frame_size=espcamera.FrameSize.R240X240,
i2c=cam_i2c,
external_clock_frequency=20_000_000,
framebuffer_count=2,
grab_mode=espcamera.GrabMode.WHEN_EMPTY)
# Sending init bytes to display_bus
display_bus.send(36, struct.pack(">hh", 0, 239))
display_bus.send(42, struct.pack(">hh", 0, 239))
display_bus.send(43, struct.pack(">hh", 0, 80+239))
display.auto_refresh = False
t0 = adafruit_ticks.ticks_ms()
while True:
frame = cam.take(1)
if isinstance(frame, displayio.Bitmap):
display_bus.send(44, frame)
t1 = adafruit_ticks.ticks_ms()
fps = 1000 / adafruit_ticks.ticks_diff(t1, t0)
print(f"{fps:3.1f}fps") # typically runs at about 25fps
t0 = t1
更多信息
- 相关文件均来自组装的 Adafruit CircuitPython 库包,来源于 https://circuitpython.org/libraries,您可以找到所有支持使用 CircuitPython 的硬件文件。
- "font5x8.bin" 文件来自这里
- 用于圆形显示屏和摄像头的固件
✨ 贡献者项目
- 此项目由 Seeed Studio 贡献者项目支持。
- 感谢 Isaac 的努力,您的工作将被展示。
- 以及 Djair Guilherme。
技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。