Skip to main content

项目概述

此 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 作为硬件。

Seeed Studio XIAO ESP32S3Seeed Studio Grove OLED 显示屏 0.96

软件准备

我使用 Thonny IDE 软件(Windows)和一些相关的库和文件。

Thonny IDE相关文件(库)

开始使用

下载 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 并配置选项

  1. 运行 Thonny 后,导航到"Tools -> Options"并点击"Options"选择
  1. 选择"Interpreter"选项并点击"CircuitPython (generic)"选择

将 CircuitPython 固件刷写到 XIAO ESP32S3 开发板

  1. 在 Thonny 中点击"(esptool)"。它会提示您下载最新的 CircuitPython 固件并将其刷写到开发板。
  1. Thonny 中的"(esptool)"如下所示,首先选择正确的"Target port"。
  1. 选择 CircuitPython 系列为"ESP32-S3",并选择安装按钮旁边带有三条水平线的图标,以包含您下载的固件。 例如:(seeed_xiao_esp32s3_911.bin 或 seeed_xiao_esp32s3_920.bin)
  1. Thonny 将填充重置,您现在可以点击"Install"。
  1. 一段时间后显示"Done",窗口可以关闭。
  1. PC上会出现一个"CIRCUITPY"驱动器,这表明开发板已成功刷入固件。

将相关文件(库)添加到"CIRCUITPY"驱动器

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

note

使用"Seeed Studio Grove OLED显示屏0.96"时,"adafruit_ssd1306.mpy"文件和"adafruit_framebuf.mpy"文件是必需的

adafruit_framebuf库使用名为font5x8.bin的字体文件来渲染文本。此文件需要在执行代码的环境中可访问。

编写代码(IIC)并上传以实现OLED显示

  1. 添加文件后,我现在可以使用命令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()
  1. 点击"运行"按钮上传代码
  1. 最终结果

XIAO ESP32S3 Sense与圆形显示屏配合使用Sense摄像头

硬件准备

Seeed Studio XIAO ESP32S3 SenseRound Display for XIAO

软件准备

  1. 为XIAO ESP32S3 Sense安装固件。
  1. 安装必要的模块和依赖项。

您始终可以使用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

更多信息

✨ 贡献者项目

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...