Skip to main content

项目概述

note

本文档由 AI 翻译。如您发现内容有误或有改进建议,欢迎通过页面下方的评论区,或在以下 Issue 页面中告诉我们:https://github.com/Seeed-Studio/wiki-documents/issues

此 Wiki 已更新至: https://wiki.seeedstudio.com/xiao_esp32s3_with_micropython/

CircuitPython 是一种非常适合 XIAO ESP32S3 的编程语言,因为它简化了物理计算项目。基于 Python,它具有对初学者友好的语法,并包含用于访问传感器和显示屏等硬件的模块。由于 CircuitPython 已经支持 ESP32S3 芯片,本项目尝试在 Seeed Studio XIAO ESP32S3 开发板上编译 CircuitPython。

搭载 OLED 显示屏的 XIAO ESP32S3

硬件准备

这里我使用了 Seeed Studio XIAO ESP32S3 和 Seeed Studio Grove OLED Display 0.96 作为硬件。

Seeed Studio XIAO ESP32S3Seeed Studio Grove OLED Display 0.96

软件准备

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

Thonny IDE相关文件(库)

入门指南

下载 XIAO ESP32S3 CircuitPython 固件

CircuitPython 固件 9.1.1 和 9.20 Alpha for XIAO ESP32S3 Sense

将 XIAO ESP32S3 开发板连接到 PC 并进入 BootLoader 模式

具体方法如下:

  • 步骤 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 Display 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) # 使用 IO6 和 IO5 引脚初始化 I2C 通信

# 创建一个分辨率为 128x64 且 I2C 地址为 0x3C 的显示对象
display = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3C)

# 清空显示屏
display.fill(0)
display.show()

# 在显示屏上写入文本
display.text('SeeedStudio ESP32S3', 0, 0 , 1)
display.text('Code by CircuitPython!', 0, 20 , 2)
display.show()
  1. 点击 "Run" 按钮上传代码。
  1. 最终效果:

XIAO ESP32S3 Sense 使用 XIAO 圆形显示屏和 Sense 摄像头

硬件准备

Seeed Studio XIAO ESP32S3 Sense适用于 XIAO 的圆形显示屏

软件准备

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

您可以使用 Adafruit 提供的工具 circup 安装 CircuitPython 库。安装后,只需输入命令即可安装任何库。

# 安装 circup
pip install setuptools
pip install circup
pip install --upgrade circup
# 将模块安装到库中
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)

# 该示例似乎完全不使用 Displayio
# 直接在 display_bus 上打印帧以提高速度
# 因此,旋转设置不起作用...

main = displayio.Group()
display.root_group = main

# 摄像头初始化
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)

# 向 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") # 通常运行速度约为 25fps
t0 = t1

更多内容

✨ 贡献者项目

技术支持与产品讨论

感谢您选择我们的产品!我们致力于为您提供各种支持,以确保您使用我们的产品时拥有顺畅的体验。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...