ESP32-S3-ETH

来自Waveshare Wiki
跳转至: 导航搜索
{{{name2}}}
{{{name3}}}
功能简介
特性 无特性,不解释
主控 ESP32-S3
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 I2C UART USB

产品介绍

产品简介

ESP32-S3-GEEK 是一款基于 ESP32-S3R8 设计的以太网开发板,具备出色的 Wi-Fi 和蓝牙无线连接功能,拥有更可靠且高效的有线以太网连接,且支持 PoE 供电 (仅 PoE 版本)。板载摄像头接口,兼容 OV2640、OV5640 等主流摄像头,方便进行图像和视频采集。开发板还预留了 Pico 兼容接口,支持部分树莓派 Pico 扩展板,并依托其丰富的生态和开源资源,用户可以快速灵活地进行二次开发,可广泛应用于物联网、图像采集、智能家居及人工智能项目。

产品特性

  • 基于 ESP32-S3R8 高性能芯片,配备 Xtensa 32 位 LX7 双核处理器,主频高达 240MHz
  • 集成 512KB SRAM 和 384KB ROM,内置 8MB PSRAM 和 16MB Flash
  • 支持 2.4GHz Wi-Fi 和 Bluetooth 5 (LE),内置天线,支持外接天线
  • 板载 W5500 以太网芯片,通过 SPI 接口扩展 10/100Mbps 网络连接
  • 支持外接 PoE 模块实现以太网供电功能 (符合 IEEE 802.3af 标准)
  • 板载摄像头接口,兼容 OV2640 和 OV5640 等主流摄像头,适用于图像和视频采集
  • 板载 USB Type-C 接口,支持供电、调试和固件下载,开发更便捷
  • 板载 Micro SD 卡槽,支持外接 SD 卡存储图片和文件
  • 板载 Pico 兼容接口,提供丰富的外设扩展,兼容性强

资源简介

ESP32-S3-ETH-details-intro.jpg

1、ESP32-S3R8
双核处理器,高达 240MHz 的运行频率

2、W25Q128
16MB Flash,用于储存程序和数据

3、W5500
网口芯片

4、H1102NLT
网络变压器

5、JW5060
稳压芯片

6、USB Type-C 接口
可用于下载程序和供电

7、以太网接口
RJ45 10/100M 自适应网口

8、PoE 接口
可外接 PoE 模块

9、摄像头接口
可兼容 OV2640/OV5640 等摄像头

10、IPEX 1 代天线接口
预留接口,须改焊电阻使能

11、陶瓷天线
默认使能,可改焊设置为 IPEX 外接天线

12、Micro SD 卡槽
13、BOOT 按键
14、ACT 指示灯
15、LINK 指示灯
16、RESET 按键

接口介绍

ESP32-S3-ETH-details-15.jpg

产品尺寸

ESP32-S3-ETH-details-size.jpg

使用说明

器件准备

  • ESP32-S3-ETH x1
  • PoE Module (B) x1
  • OV2640摄像头 x1
  • 16GB SD卡 x1
  • USB线 type A公口 转 Type C公口 x1

ESP32-S3-ETH-Test-prepare.jpg

在操作前,建议先浏览目录,快速了解文档结构。为顺利操作,请仔细阅读FAQ,提前了解可能的问题。文档中所有资料均提供超链接,方便下载。

Arduino开发

本章介绍 Arduino 环境搭建,包括 Arduino IDE、ESP32板管理、相关库的安装,程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。

环境搭建

下载和安装 Arduino IDE

  1. 点击访问Arduino官网,选择对应的系统和系统位数下载。
    Arduino-IDE-Download.jpg
  2. 运行安装程序,全部默认安装即可。
更多 Arduino IDE 使用说明,请见:Arduino 官方说明文档

安装 ESP32 开发板

  • ESP32相关主板在Arduino IDE使用,须先安装“ESP32 开发板”软件包。
  • 国内部分区域安装,可能会因网络因素无法“在线安装”,一般推荐“离线安装” 。
  • 安装“ESP32 开发板”软件包教程,详见:Arduino 板管理教程
  • ESP32-S3-ETH 开发板安装说明
板名称 板安装要求 版本号要求
ESP32-S3-ETH “离线”安装/“在线”安装 2.0.12 以下

安装库

  • 在安装 Arduino 库时,通常有两种方式可供选择:在线安装离线安装
    对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。
  • 库安装教程,详见:Arduino 库管理教程
  • ESP32-S3-ETH 库文件说明
库名称 说明 库安装要求
Adafruit_NeoPixel NeoPixel灯条控制库 “在线”或“离线”安装
ESP32-BLE-Keyboard ESP32蓝牙键盘库 “在线”或“离线”安装
ETHClass ESP32以太网库 “离线”安装

运行第一个 Arduino 程序

如果你刚入门学习ESP32和Arduino,还不知道如何创建、编译、烧录和运行Arduino ESP32程序,那么请展开看看,希望可以帮助到你!

新建工程

  • 运行Arduino IDE,选择 File -> New Sketch
    Arduino-ESP32-New-demo-01.jpg
  • 输入代码:
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("Hello, World!");
  delay(2000);
}
  • 保存代码工程,选择 File -> Save As...;在弹出的菜单选择保存工程路径,并输入工程名,如 Hello_World,点击保存
    Arduino-ESP32-New-demo-02.jpg

编译和烧录程序

  • 选择对应的开发板,以ESP32S3主板为例: Tools -> Board -> esp32 -> ESP32S3 Dev Module
    Arduino-ESP32-New-demo-03.jpg
  • 选择对应的端口,另外若ESP32S3主板只有USB口,须打开(Enable)USB CDC,如下图所示:
    Arduino-ESP32-New-demo-04.jpg
  • 编译并上传程序:
    Arduino-ESP32-New-demo-05.jpg
  • 打开串口监视窗口,程序每隔2秒会打印“Hello World!”,运行情况如下所示:
    Arduino-ESP32-New-demo-06.jpg

示例程序

  • ESP32-S3-ETH 示例程序
序号 示例程序 说明 依赖库
1 IO_Test 基础例程:GPIO引脚高低电平控制 -
2 RGB_LED 基础例程:GPIO引脚控制WS2812彩灯 Adafruit NeoPixel
3 SD_Card 基础例程:SD卡加载,读写操作 -
4 WiFi_AP 基础例程:设置为AP热点,允许其他WiFi设备接入联网
5 WiFi_STA 基础例程:设置为STA模式,可接入WiFi路由网络进行联网,并可实时控制GPIO口的电平输出
6 BLE_Keyboard 基础例程:蓝牙键盘功能演示 ESP32-BLE-Keyboard
7 ETH_Web_CAM 综合例程:通过以太网连接,实现网络摄像头功能 ETHClass
  • Arduino 工程设置:

ESP32-S3-ETH-Arduino-Demo-Setting3.jpg


IO_Test

【程序说明】


  • 该程序演示了如何使用ESP32-S3-ETH模块的多个GPIO引脚作为输出控制端口。程序会按顺序将每个GPIO引脚依次设置为高电平(打开)和低电平(关闭),每次状态变化间隔300毫秒。通过这种方式,可以观察到GPIO引脚的依次开关操作。

【硬件连接】


ESP32-S3-ETH GPIO引脚定义图
  • 使用USB线把板子接入电脑

ESP32-S3-ETH-HW-Connection-IO-TEST.jpg

【代码分析】


1.GPIO 引脚设置:程序首先定义了 25 个 GPIO 引脚,并在 setup() 函数中将它们初始化为输出模式。所有引脚在开始时都被设置为低电平(关闭状态)。

#define NUM_GPIO 25

// Define GPIO pins
const int gpio_pin[NUM_GPIO] = {21, 17, 16, 18, 15, 3, 2, 1, 0, 44, 43, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 47, 48};

2. GPIO 控制循环

  • loop() 函数中,程序会依次将每个 GPIO 引脚打开(设置为高电平),延时300毫秒,然后再关断引脚(设置为低电平)。
  • 这个过程会不断重复。

3. 打印输出:程序通过 USB 口输出每个 GPIO 引脚的状态信息,提示该引脚是处于高电平(开启)还是低电平(关闭)状态。

void loop() {
  // Turn on each GPIO one by one
  for (current_gpio = 0; current_gpio < NUM_GPIO; current_gpio++) {
      digitalWrite(gpio_pin[current_gpio], HIGH); // Set GPIO pin to HIGH (turn on)
      printf("GPIO %d set to HIGH.\n", gpio_pin[current_gpio]); // Print GPIO state
      delay(300); // Delay for 300ms
  }

  // Turn off each GPIO one by one
  for (current_gpio = 0; current_gpio < NUM_GPIO; current_gpio++) {
      digitalWrite(gpio_pin[current_gpio], LOW); // Set GPIO pin to LOW (turn off)
      printf("GPIO %d set to LOW.\n", gpio_pin[current_gpio]); // Print GPIO state
      delay(300); // Delay for 300ms
  }
想了解更多关于Arduino ESP32库关于GPIO相关的使用?可访问:Arduino ESP32 库 GPIO 使用

【运行效果】


程序烧录完成后,设备的运行效果如下:

  • ESP32-S3-ETH 将依次控制 25 个 GPIO 引脚。程序会在每个 GPIO 引脚上切换高电平(HIGH)和低电平(LOW)状态,并将状态变化通过 USB 输出至监视窗口。
    输出的低电平为 0V,高电平为当前板子的工作电压。由于 ESP32-S3 的工作电压为 3.3V,因此高电平为 3.3V。
  • 打开 Arduino IDE 的串口监视窗口,可以观察到各个 GPIO 引脚的状态切换,如下图所示:
    GPIO流水灯实验参考例图

    ESP32-S3-ETH-IO-TEST.jpg
使用场景:适用于学习和测试ESP32-S3的GPIO引脚控制。用户可以使用万用表检测各个 GPIO 引脚的电压高低,或者通过连接 LED 和电阻,进行简单的流水灯测试。

RGB_LED

【程序说明】


该程序使用GPIO21引脚控制一颗 WS2812 RGB LED,展示多种灯光效果,包括单色填充(Color Wipe)、彩虹渐变(Rainbow)和剧院追逐效果(Theater Chase)。

【硬件连接】


使用USB线把板子接入电脑

【代码分析】


1.GPIO 引脚设置:程序首先定义了 RGB LED控制引脚为 GPIO 引脚,并在 **`setup` 函数**中,

  • 初始化 NeoPixel RGB LED:
    • 使用 `strip.begin()` 开启 LED 控制功能。
    • 设置 LED 亮度为 50%,通过 `strip.setBrightness(50)` 实现。
    • 调用 `strip.show()` 将 LED 初始化为熄灭状态。
    • 设置额外指示灯(LED1)的输出模式,并通过 `digitalWrite(LED1, HIGH)` 点亮指示灯
#define PIN 21           // Pin connected to WS2812 RGB LED
#define LED1 -1          // GPIO for an additional LED (optional)

Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  #if defined (__AVR_ATtiny85__)
    if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
  #endif

  strip.begin();
  strip.setBrightness(50);
  strip.show();

  pinMode(LED1, OUTPUT);
  digitalWrite(LED1, HIGH);  // Turn on the additional LED
}

【运行效果】


  • 单色填充:RGB LED 依次显示红、绿、蓝三种颜色,每种颜色持续一段时间
  • 剧院追逐:白色、红色和蓝色的动态追逐效果,LED 以周期性闪烁的方式显示颜色

ESP32-S3-ETH-RGB-LED.jpg


SD_Card

【程序说明】


  • 该程序演示了如何在ESP32-S3-ETH模块上操作SD卡,包括初始化SD卡创建和写入文件列出目录中的文件以及读取文件内容。程序将创建一个名为`waveshare.txt`的文件,写入"Hello world from Waveshare"这段文字,并列出SD卡根目录中的所有文件信息,最后读取`waveshare.txt`文件内容并打印到串口监视器上。

【硬件连接】


SD卡控制引脚说明
SPI接口 ESP32-S3-ETH
CS (SS) GPIO4
DI (MOSI) GPIO6
DO (MISO) GPIO5
SCK (SCLK) GPIO7
  • 板子装上SD卡(推荐用16GB以下的闪迪SD卡),使用USB线把板子接入电脑

ESP32-S3-ETH-HW-SD Card.jpg

【代码分析】


1. setup()

  • 初始化串口通信和SD卡。
  • 通过 SPI.begin() 初始化ESP32的SPI总线,指定用于SD卡通信的引脚。
  • 调用 SD.begin() 尝试挂载SD卡,成功时输出卡的大小。
  • 调用三个核心功能:
    • writeFileToSD():创建并写入文件。
    • listFilesOnSD():扫描并打印SD卡根目录下的所有文件。
    • readFileFromSD():打开并读取 waveshare.txt 文件的内容。

2. writeFileToSD()

  • 主要功能是创建或打开 waveshare.txt 文件,并写入文本 "Hello world from Waveshare"
  • 在完成文件写入后,文件被关闭以确保写入操作正确完成。

3. listFilesOnSD()

  • 扫描SD卡根目录中的所有文件,并将文件名通过串口输出。
  • 使用 openNextFile() 函数依次打开目录中的每个文件并打印它们的名称,最后关闭根目录文件。

4. readFileFromSD(const char *filePath)

  • 打开并读取指定路径的文件,这里是 waveshare.txt
  • 如果文件存在,使用 file.read() 逐字节读取内容,并通过串口输出文件的内容,最后关闭文件。
想了解更多关于Arduino ESP32库关于SD卡相关的使用?可访问:Arduino ESP32 库 SD 使用

【运行效果】


程序烧录完成后,设备的运行效果如下:

  • 首先挂载SD卡,然后创建和写入文件,再扫描并列出SD卡的根目录文件,最后打开并读取一个特定文件的内容。
    ESP32-S3-ETH-SD Card-Running.jpg
使用场景:适用于学习和演示如何在ESP32上进行文件的读写操作,或用于存储传感器数据、日志信息等需要持久化存储的数据记录应用。

WIFI_AP

【程序说明】


  • 该程序将ESP32-S3-ETH配置为WiFi接入点(AP模式),允许其他设备连接到该WiFi网络。连接设备的MAC地址分配的IP地址将会在串口监视器上打印出来。通过此程序可以了解如何使用ESP32作为接入点并动态监控连接到接入点的设备信息。

【硬件连接】


  • 使用 USB 线将板子连接到电脑。

【代码分析】


1. setup()

  • 初始化串口通信并配置 ESP32 为 WiFi 接入点(AP)。
  • 使用 WiFi.softAP() 设置 AP,指定网络名称(SSID)为"ESP32-S3-ETH",密码为"88888888"。
  • 使用 WiFi.onEvent() 注册 WiFi 事件处理程序,用于处理客户端连接和断开连接。
  • 在串口上打印确认信息,指示 AP 初始化成功。

2. formatMacAddress()

  • 将 MAC 地址从字节数组格式转换为可读的字符串格式(如 XX:XX:XX:XX:XX:XX)。
  • 用于在串口上显示连接设备的 MAC 地址。

3. WiFiEvent()

  • 处理 WiFi 事件,例如客户端连接和断开连接。
  • 当设备连接时:
    • 打印该设备的 MAC 地址。
    • 添加短暂延迟(500 毫秒)以确保 DHCP 有时间分配 IP 地址。
    • 调用 printDeviceIP() 获取并显示分配的 IP 地址。
  • 当设备断开连接时,打印断开连接信息。

4. printDeviceIP(const uint8_t* mac)

  • 根据 MAC 地址检索并打印已连接设备的 IP 地址。
  • 使用 ESP-IDF 函数 esp_wifi_ap_get_sta_list()tcpip_adapter_get_sta_list() 获取连接设备列表。
  • 遍历设备列表,比较 MAC 地址以识别目标设备。
  • 如果 IP 地址有效(非 0.0.0.0),则打印 IP 地址。否则,表示 DHCP 尚未分配 IP 地址。

5. loop()

  • 包含一个小延迟以保持 CPU 空闲,防止不必要的负载。
  • 主循环中没有其他操作。
想了解更多关于 Arduino ESP32 库的 WiFi的功能?可访问:Arduino ESP32 库 WiFi 使用

【运行效果】


程序烧录完成后,设备的运行效果如下:

ESP32-S3-ETH WiFi热点
  1. ESP32-S3-ETH模块会启动一个WiFi接入点,网络名称为 "ESP32-S3-ETH"。
  2. 设备连接到该接入点后,其MAC地址和分配的IP地址会被打印到串口监视器上。
  3. 当设备断开连接时,也会在串口上输出断开消息。
    ESP32-S3-ETH-WIFI-AP-Running.png
使用场景:适用于物联网应用中的本地网络创建和设备管理。通过接入点模式将ESP32设为中心节点,并监控连接设备的IP和MAC信息。

WIFI_STA

【程序说明】


  • 该程序将ESP32-S3模块配置为WiFi工作站(STA模式)并搭建一个Web服务器,通过Web页面控制连接到GPIO18的LED。用户可以在网页上查看当前LED状态(LED ON 或 LED OFF)并切换LED的开关状态。每次LED状态变化时,状态信息会在网页和串口监视器上显示。

【硬件连接】


WIFI控制GPIO18输出高低电平
  • 使用 USB 线将板子连接到电脑。
有条件的同学,可以参考右图串上一个LED灯,实测查看GPIO18的高低电平状态,或者用万用表测量。

ESP32-S3-ETH-HW-Connection-IO-TEST.jpg

【代码分析】


1. setup()

  • 功能: 初始化系统设置,包括串口通信、GPIO配置、WiFi连接和Web服务器启动。
  • 主要步骤:
    • 初始化串口通信(用于调试输出)。
    • 设置GPIO18为输出,并确保LED初始状态为关闭。
    • 连接到WiFi网络并在串口监视器上打印IP地址。
    • 启动Web服务器,等待客户端连接。

2. loop()

  • 功能: 处理客户端连接和HTTP请求,根据请求内容切换LED状态,并生成HTML页面显示当前LED状态。
  • 主要步骤:
    • 检查是否有新客户端连接,读取HTTP请求内容。
    • 根据请求路径 "/H" 或 "/L" 来控制GPIO18的高低电平,切换LED状态。
    • 生成包含当前LED状态和切换链接的HTML页面,返回给客户端。
    • 关闭与客户端的连接,等待下一个连接请求。
想了解更多关于 Arduino ESP32 库的 WiFi的功能?可访问:Arduino ESP32 库 WiFi 使用

【运行效果】


程序烧录完成,设备的运行效果如下:

  1. 模块连接上网络后,监视窗口会打印出模块的IP地址
    ESP32-S3-ETH-WIFI STA-running.jpg
  2. 打开网页浏览器,输入对应的IP,可以实时控制GPIO18引脚的高低电平状态,且对应的串口监视窗口也会实时打印出H 或 L的返回状态值。

BLE_Keyboard

详见开源程序:ESP32-BLE-Keyboard

ETH_Web_CAM

【程序说明】


摄像头控制引脚说明
摄像头接口 ESP32-S3-ETH GPIO
VSYNC GPIO1
HREF GPIO2
XCLK GPIO3
PCLK GPIO39
SIOD (SDA) GPIO48
SIOC (SCL) GPIO47
D7 GPIO18
D6 GPIO15
D5 GPIO38
D4 GPIO40
D3 GPIO42
D2 GPIO46
D1 GPIO45
D0 GPIO41
网口控制引脚说明
网口接口 ESP32-S3-ETH GPIO
MISO GPIO12
MOSI GPIO11
SCLK GPIO13
CS GPIO14
RST GPIO9
INT GPIO10

该程序通过ESP32-S3-ETH模块使用以太网连接,并结合摄像头模块实现图像采集和流式传输。程序将配置摄像头引脚并启动摄像头服务器,使用户可以通过以太网实时访问摄像头的拍摄内容。初始化过程中,程序会设置摄像头的各种参数,包括分辨率、像素格式等,并通过网络事件监控以太网连接的状态。

【硬件连接】


  • 参考下图连接好硬件,(如果不需要PoE供电,则无须接PoE模块)

ESP32-S3-ETH-details-12.jpg

【代码分析】
1. setup()

  • 功能: 配置串口调试并初始化以太网连接,设置摄像头控制引脚。
  • 通过条件编译,根据不同的ESP32配置方式启动以太网:
    • SPI方式: 在非ESP32设备上,使用 `ETH.beginSPI()` 启动以太网。
  • 等待以太网连接成功后,配置摄像头参数,并启动摄像头服务器以供外部访问。
  • 摄像头配置: 通过 `camera_config_t` 结构体配置摄像头的各种参数,包括:
    • 图像分辨率、格式(JPEG或RGB565)、XCLK频率、帧缓冲等。
    • 如果检测到PSRAM,将使用较高的JPEG质量和帧缓存设置,以提升图像质量。

2. startCameraServer()

  • 启动摄像头服务器,使用户可以通过网络访问摄像头的拍摄内容。

3. 事件处理函数 WiFiEvent(WiFiEvent_t event)

  • 功能: 用于监控以太网连接状态并在事件发生时输出调试信息。
    • 连接事件: 当以太网启动、连接或断开时,会输出状态信息。
    • 获得IP地址事件: 当成功获得IP地址时,打印设备的MAC地址、IPv4地址、全双工状态、链路速度和网关IP地址。
想了解更多关于 Arduino ESP32 库的 CameraWebServer的功能?可访问:Arduino ESP32 库 CameraWebServer 使用

【运行效果】


  1. 启动后,ESP32-S3会初始化以太网并输出连接状态。
  2. 摄像头成功初始化后,服务器将开始提供实时图像传输服务,用户可以通过以太网连接到摄像头服务器,查看实时视频。
  3. 若连接断开或摄像头初始化失败,程序会在串口监视器上输出相关错误信息。

ESP32-S3-ETH-Demo-ETH WEB CAM-running.jpg

使用场景:适用于实现基于ESP32-S3的低成本网络摄像头应用、远程图像采集应用,或用于监控、图像识别和智能家居等物联网应用场景。

Flash固件的烧录与擦除


  • 当前示例程序有提供测试固件,可通过直接烧录测试固件来测试板载设备功能正常与否

资料

原理图

示例程序

数据手册

ESP32-S3

其他器件

软件工具

Arduino

调试工具

其他资料链接

FAQ

可长按BOOT按键,同时按下RESET,然后松开RESET,再松开BOOT按键,此时模块可进入下载模式,可解决大部分无法下载的问题。


如下图所示,默认焊接的是垂直0R的电阻,若要切换为外部天线,则须把该0R电阻改焊为水平的位置:
ESP32-S3-ETH-Antena-Switch.png


技术支持


联系人:林工
EMAIL:services@waveshare.net
电话:0755-83040712
QQ:3004506335
微信:扫下方二维码添加
Lxw.jpg

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证