ESP32-S3环境搭建及快速入门

32 阅读7分钟

CH343(重要)

ESP32-S3 WROOM 使用 CH343 芯片下载代码。因此,在使用前,需要在电脑上安装 CH343 驱动程序。

检查 CH343 是否已安装

  1. 使用 USB 数据线将电脑和 ESP32-S3 WROOM 连接起来。

image.png

  1. 打开“设备管理器”,如果电脑已安装 CH343,可以看到“USB-Enhanced-SERIAL CH343 (COMx)”。

image.png

安装 CH343

  1. 首先,下载 CH343 驱动程序,点击www.wch-ic.com/search?t=al…根据操作系统下载相应的驱动程序。

image.png

  1. 双击“CH343SER.EXE”。

image.png

  1. 点击“安装”,等待安装完成。

image.png

  1. 安装成功。关闭所有接口。

image.png

编程软件

Thonny 是一个免费的开源软件平台,它体积小巧、界面简洁、操作简单且功能丰富,是 Python 初学者的理想 IDE。

Thonny 支持多种操作系统,包括 Windows、Mac OS、Linux。

下载 Thonny

Thonny 官方网站:thonny.org

Thonny 的开源代码库:github.com/thonny/thon…

请按照官方网站的说明安装 Thonny,或点击以下链接下载安装。

(请根据操作系统选择合适的选项。)

操作系统下载链接/方法
Windowsgithub.com/thonny/thon…
Mac OSgithub.com/thonny/thon…

image.png

勾选“创建桌面图标”,即可在桌面上生成快捷方式,方便稍后打开 Thonny。

image.png

当看到如下所示的界面时,Thonny 就已成功安装。

image.png

Thonny 的基本配置

点击Thonny的桌面图标,即可看到如下界面:

image.png

烧录 Micropython 固件

要在 ESP32S3 上运行 Python 程序,需要先将固件烧录到 ESP32-S3 中。

下载Micropython固件

microPython 官方网站:micropython.org/

ESP32S3 的 microPython 固件列表网页:micropython.org/download/ES…

image.png

烧录 Micropython 固件(重要)

使用 USB 数据线将电脑和 ESP32-S3 连接起来。

image.png

输入“python window.py”。Micropython固件将自动烧录到ESP32S3中。

import os
import sys
import time

os.system("python esptool/esptool.py --chip esp32s3  erase_flash")

os.system("python esptool/esptool.py --chip esp32s3 --baud 2000000 write_flash -z 0 ESP32_GENERIC_S3-SPIRAM_OCT-20250809-v1.26.0.bin")

image.png

完成后的效果如图所示。

image.png

测试代码

测试 Shell 命令

确保 ESP32S3 已烧录固件并通过数据线连接到计算机。运行 Thonny。点击“运行”并选择“配置解释器”。

image.png

按照下图进行配置。注意,不同系统的 USB 增强型串口端口号可能不同,请根据实际情况选择。配置完成后,点击“确定”。

image.png

配置完成后,每次打开 Thonny 时,它都会与 ESP32S3 通信。界面如下所示。

image.png

在“Shell”中输入“print(123)”,然后按回车键。

image.png

在线运行

ESP32-S3 在线运行时需要连接到计算机。用户可以使用 Thonny 编写和调试程序。

  1. 打开 Thonny 并点击“打开…”。
  2. 在新弹出的窗口中,单击“这台电脑”。

image.png

在新对话框中,选择“HelloWorld.py”。

点击“运行当前脚本”执行程序,“ Hello World ”将在“ Shell ”中打印出来。

image.png

离线运行(重要)

ESP32-S3 复位后,首先运行根目录下的 boot.py 文件,然后运行 main.py 文件,最后进入“Shell”界面。因此,为了使 ESP32-S3 在复位后能够执行用户编写的程序,需要在 boot.py 文件中添加一个引导程序来执行用户的代码。

双击boot.py,用于使“MicroPython设备”中的程序能够离线运行。

#!/opt/bin/lv_micropython
import uos as os
import uerrno as errno
iter = os.ilistdir()
IS_DIR = 0x4000
IS_REGULAR = 0x8000

while True:
    try:
        entry = next(iter)
        filename = entry[0]
        file_type = entry[1]
        if filename == 'boot.py':
            continue
        else:
            print("===============================")
            print(filename,end="")
            if file_type == IS_DIR:
                print(", File is a directory")
                print("===============================")
            else:
                print("\n===============================")
                #print("Contents:")
                #with open(filename) as f:
                #   for line in enumerate(f):
                #       print("{}".format(line[1]),end="")
                #print("")
                exec(open(filename).read(),globals())
    except StopIteration:
        break

image.png

如果希望编写的程序离线运行,需要将 boot.py 文件以及代码上传到“MicroPython 设备”,然后按下 ESP32S3 的复位键。选择boot.py,右键单击并选择“上传到根目录(/)”。

同样地,将“HelloWorld.py”上传到“MicroPython 设备”。

image.png

按下重置键,在下图所示的方框中,您可以看到代码已执行。

image.png

Thonny Common 操作

将代码上传到 ESP32S3

每次 ESP32-S3 重启时,如果根目录中存在 boot.py 文件,它将首先执行此代码。

选择Blink.py,右键单击鼠标并选择“上传到/”,将代码上传到ESP32S3的根目录。

from time import sleep_ms
from machine import Pin

led=Pin(2,Pin.OUT) #create LED object from pin2,Set Pin2 to output
try:
    while True:
        led.value(1)        #Set led turn on
        sleep_ms(1000)
        led.value(0)        #Set led turn off
        sleep_ms(1000)
except:
    pass

将代码下载到计算机

在“MicroPython 设备”中选择“boot.py”,右键单击选择“下载到…”将代码下载到计算机。

image.png

从 ESP32S3 的根目录中删除文件

在“MicroPython 设备”中选择“boot.py”,右键单击它并选择“删除”以从 ESP32S3 的根目录中删除“boot.py”。

从计算机目录中删除文件

右键单击它并选择“移到回收站”将其删除。

image.png

创建并保存代码

点击“文件”->“新建”创建并编写代码。

image.png

点击菜单栏上的“保存”。可以将代码保存到计算机或 ESP32S3 中。

image.png

选择“MicroPython 设备”,在新弹出的窗口中输入“main.py”,然后单击“确定”。

image.png

可以看到代码已上传到 ESP32S3。

image.png

断开并重新连接 USB 电缆,可以看到 LED 灯亮一秒钟,然后熄灭一秒钟,如此循环往复。

image.png

退出离线模式

如果要退出离线操作模式,可以在 shell 中同时按下 Ctrl+C,让 ESP32-S3 退出离线操作模式。

image.png

GPIO相关说明

ESP32S3 有四个跳线引脚:GPIO0、GPIO45、GPIO46、GPIO3。

当芯片的系统复位(上电复位、RTC 看门狗复位、欠压复位)解除后,连接引脚会采样电平并将其存储在锁存器中,值为“0”或“1”,并保持该值直到芯片断电或关闭。

每个跳线引脚都连接到内部上拉/下拉电阻。当连接到高阻抗外部电路或未连接外部电路时,跳线引脚的默认输入电平将由内部弱上拉/下拉电阻决定。要改变跳线引脚的电平,用户可以连接外部上拉/下拉电阻,或者在ESP32-S3上电复位解除时,使用主机MCU的GPIO来控制跳线引脚的电平。

释放复位时,连接引脚的功能与普通引脚相同。

以下是上电时这四个跳线引脚的默认配置及其在相应配置下的功能。

image.png

PSRAM 引脚

ESP32-S3 WROOM 开发板上的模块采用 ESP32-S3R8 芯片,并配备 8MB 外部 Flash。使用 OPI PSRAM 时,请注意 ESP32-S3 WROOM 开发板上的 GPIO35-GPIO37 引脚不能用于其他用途。不使用 OPI PSRAM 时,开发板上的 GPIO35-GPIO37 引脚可用作普通 GPIO。

image.png

SD卡引脚

ESP32-S3 WROOM 开发板背面集成了一个 SD 卡插槽。可以使用 ESP32-S3 WROOM 的 GPIO38-GPIO40 引脚来驱动 SD 卡。

USB引脚

在 Micropython 中,GPIO19 和 GPIO20 用于 ESP32S3 的 USB 功能,因此不能用作其他功能!

摄像头引脚

使用 ESP32-S3 WROOM 的摄像头时,请检查其引脚。带下划线编号的引脚用于摄像头功能,如果想使用其他功能,请避免使用这些引脚。

CAM_PinGPIO引脚
SIODGPIO4
SIOCGPIO5
CSI_VYSNCGPIO6
CSI_HREFGPIO7
CSI_Y9GPIO16
XCLKGPIO15
CSI_Y8GPIO17
CSI_Y7GPIO18
CSI_PCLKGPIO13
CSI_Y6GPIO12
CSI_Y2GPIO11
CSI_Y5GPIO10
CSI_Y3GPIO9
CSI_Y4GPIO8