ESP32-S3-ETH 使用教程


产品介绍

产品简介

ESP32-S3-ETH 是一款基于 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 兼容接口,提供丰富的外设扩展,兼容性强

资源简介


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 x1
  • PoE Module (B) x1
  • OV2640摄像头 x1
  • 16GB SD卡 x1
  • USB线 type A公口 转 Type C公口 x1


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

Arduino开发

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

环境搭建

下载和安装 Arduino IDE

  1. 点击访问Arduino官网,选择对应的系统和系统位数下载。

  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_NeoPixelNeoPixel灯条控制库“在线”或“离线”安装
ESP32-BLE-KeyboardESP32蓝牙键盘库“在线”或“离线”安装
ETHClassESP32以太网库“离线”安装

运行第一个 Arduino 程序

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

新建工程

  • 运行Arduino IDE,选择 File -> New Sketch

  • 输入代码:
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,点击保存

编译和烧录程序

  • 选择对应的开发板,以ESP32S3主板为例: Tools -> Board -> esp32 -> ESP32S3 Dev Module

  • 选择对应的端口,另外若ESP32S3主板只有USB口,须打开(Enable)USB CDC,如下图所示:

  • 编译并上传程序:

  • 打开串口监视窗口,程序每隔2秒会打印“Hello World!”,运行情况如下所示:

示例程序

  • ESP32-S3-ETH 示例程序
序号示例程序说明依赖库
1IO_Test基础例程:GPIO引脚高低电平控制-
2RGB_LED基础例程:GPIO引脚控制WS2812彩灯Adafruit NeoPixel
3SD_Card基础例程:SD卡加载,读写操作-
4BLE_Keyboard基础例程:蓝牙键盘功能演示ESP32-BLE-Keyboard
5WiFi_AP基础例程:设置为AP热点,允许其他WiFi设备接入联网
6WiFi_STA基础例程:设置为STA模式,可接入WiFi路由网络进行联网,并可实时控制GPIO口的电平输出
7WiFi_DHCP基础例程:通过WiFi连接,DHCP分配IP地址
8WiFi_staticIP基础例程:通过WiFi连接,静态分配IP地址
9ETH_DHCP基础例程:通过以太网连接,DHCP分配IP地址
10ETH_staticIP基础例程:通过以太网连接,静态分配IP地址
11ETH_MAC_DHCP_StaticIP基础例程:通过以太网连接,可自定义MAC地址,默认使用DHCP自动获取IP,若获取失败则直接使用默认设置好的静态IP地址
12WIFI_Web_CAM综合例程:通过WIFI连接,实现网络摄像头功能
13ETH_Web_CAM综合例程:通过以太网连接,实现网络摄像头功能
  • Arduino 工程设置:



折叠

IO_Test

【程序说明】


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

【硬件连接】


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


【代码分析】


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的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 以周期性闪烁的方式显示颜色


折叠

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线把板子接入电脑


【代码分析】


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上进行文件的读写操作,或用于存储传感器数据、日志信息等需要持久化存储的数据记录应用。

BLE_Keyboard

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

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设为中心节点,并监控连接设备的IP和MAC信息。
折叠

WIFI_STA

【程序说明】


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

【硬件连接】


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


【代码分析】


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地址

  2. 打开网页浏览器,输入对应的IP,可以实时控制GPIO18引脚的高低电平状态,且对应的串口监视窗口也会实时打印出H 或 L的返回状态值。

折叠

WIFI_DHCP

【程序说明】


该程序通过ESP32-S3-ETH模块使用WIFI连接,DHCP分配IP地址。

【代码分析】


1. WIFI网络配置:须把代码中的WIFI和密码对应改成自己环境中的WIFI路由器中的名称和密码。如果没有的话,可以手机创建一个同名的热点,供模块连接测试。

const char *ssid = "Waveshare";
const char *password = "88888888";

2. setup()

  • 功能: 初始化系统设置
  • 主要步骤:
    • 初始化串口通信(用于调试输出)。
    • 打印WIFI连接状态,根据网络配置,连接到WIFI网络。
    • 连接WIFI成功后,打印连接成功信息以及IP地址

【运行效果】


启动后,串口打印连接WIFI的状态以及分配的IP。 

折叠

WIFI_StaticIP

【程序说明】


该程序通过ESP32-S3-ETH模块使用WIFI连接,静态分配IP地址。

【代码分析】


1. WIFI网络配置:须把代码中的WIFI和密码对应改成自己环境中的WIFI路由器中的名称和密码。如果没有的话,可以手机创建一个同名的热点,供模块连接测试。

const char *ssid = "Waveshare";
const char *password = "88888888";

2. 固定IP配置

IPAddress local_ip(192, 168, 1, 100);       // 固定 IP 地址
IPAddress gateway(192, 168, 1, 1);          // 网关地址
IPAddress subnet(255, 255, 255, 0);         // 子网掩码
IPAddress dns(192, 168, 1, 1);              // DNS 服务器地址

3. setup()

  • 功能: 初始化系统设置
  • 主要步骤:
    • 初始化串口通信(用于调试输出)。
    • 设置为局域网模式,并配置静态IP地址
    • 根据网络配置,连接到WIFI网络。
    • 打印连接成功信息以及IP地址

【运行效果】


启动后,串口打印连接WIFI的状态以及分配的IP。


折叠

WIFI_Web_CAM

【程序说明】


摄像头控制引脚说明
摄像头接口ESP32-S3-ETH GPIO
VSYNCGPIO1
HREFGPIO2
XCLKGPIO3
PCLKGPIO39
SIOD (SDA)GPIO48
SIOC (SCL)GPIO47
D7GPIO18
D6GPIO15
D5GPIO38
D4GPIO40
D3GPIO42
D2GPIO46
D1GPIO45
D0GPIO41

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

【硬件连接】


  • 参考下图连接好硬件,摄像头采用DVP接口连接,引脚定义详见右图。


【代码分析】
1. WIFI网络配置:须把代码中的WIFI和密码对应改成自己环境中的WIFI路由器中的名称和密码。如果没有的话,可以手机创建一个同名的热点,供模块连接测试。

const char *ssid = "Waveshare";
const char *password = "88888888";

2. startCameraServer()

  • 用于启动基于 Web 的摄像头视频流服务器。这个函数会创建一个 HTTP 服务器,接收客户端请求并返回摄像头捕获的图像或视频流,使用户能通过网络访问摄像头数据。
想了解更多关于 Arduino ESP32 库的 CameraWebServer的功能?可访问:Arduino ESP32 库 CameraWebServer 使用

【运行效果】


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


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

ETH_DHCP

【程序说明】


网口控制引脚说明
网口接口ESP32-S3-ETH GPIO
MISOGPIO12
MOSIGPIO11
SCLKGPIO13
CSGPIO14
RSTGPIO9
INTGPIO10

该程序通过ESP32-S3-ETH模块使用以太网连接,DHCP分配IP地址。

【硬件连接】


  • 参考下图连接好硬件,如下图所示


【代码分析】


1. setup()

  • 功能: 初始化系统设置
  • 主要步骤:
    • 初始化串口通信(用于调试输出)。
    • 初始化SPI总线,配置以太网通信模块引脚。
    • 初始化以太网模块,使用DHCP获取IP地址,如果失败就停止程序,成功则继续。
    • 打印获取到的IP地址。

【运行效果】


启动后,ESP32-S3会初始化以太网,打印DHCP分配的IP地址。

折叠

ETH_StaticIP

【程序说明】


该程序通过ESP32-S3-ETH模块使用以太网连接,静态分配IP地址。

【硬件连接】


  • 参考下图连接好硬件,如下图所示


【代码分析】


1. setup()

  • 功能: 初始化系统设置
  • 主要步骤:
    • 初始化串口通信(用于调试输出)。
    • 初始化SPI总线,配置以太网通信模块引脚。
    • 初始化以太网模块,进行静态IP配置,如果IP地址配置失败就停止程序,成功则继续。
    • 打印获取到的IP地址。

【运行效果】


启动后,ESP32-S3会初始化以太网,打印静态分配的IP地址。 

折叠

ETH_MAC_DHCP_StaticIP

【程序说明】


该程序通过ESP32-S3-ETH模块通过 DHCP 自动获取 IP 地址;若 DHCP 获取失败,则回退使用一个预设的 静态 IP 地址。随后,将最终分配到的 IP 地址打印到串口控制台,方便调试与联网验证。

【硬件连接】


  • 参考下图连接好硬件,如下图所示


【代码分析】


1. setup()

  • 功能: 初始化系统设置
  • 主要步骤:
    • 初始化串口通信(用于调试输出)。
    • 初始化SPI总线,配置以太网通信模块引脚。
    • 初始化以太网模块,首先尝试通过 DHCP 获取 IP 地址;如果失败,使用用户预设的静态 IP 地址(如 192.168.1.177)进行初始化。
    • 打印获取到的IP地址。

【运行效果】


启动后,ESP32-S3会初始化以太网,打印静态分配的IP地址。

折叠

ETH_Web_CAM

【程序说明】


摄像头控制引脚说明
摄像头接口ESP32-S3-ETH GPIO
VSYNCGPIO1
HREFGPIO2
XCLKGPIO3
PCLKGPIO39
SIOD (SDA)GPIO48
SIOC (SCL)GPIO47
D7GPIO18
D6GPIO15
D5GPIO38
D4GPIO40
D3GPIO42
D2GPIO46
D1GPIO45
D0GPIO41
网口控制引脚说明
网口接口ESP32-S3-ETH GPIO
MISOGPIO12
MOSIGPIO11
SCLKGPIO13
CSGPIO14
RSTGPIO9
INTGPIO10

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

【硬件连接】


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


【代码分析】
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的低成本网络摄像头应用、远程图像采集应用,或用于监控、图像识别和智能家居等物联网应用场景。

Flash固件的烧录与擦除


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

资料

原理图

示例程序

数据手册

ESP32-S3

其他器件

软件工具

Arduino

调试工具

其他资料链接

FAQ

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


GPIO33~GPIO37已经被内部占用,无法使用


支持,但仅支持1线SD模式,需要在menuconfig里配置引脚,如下图所示: 


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



技术支持

周一-周五(9:30-6:30)周六(9:30-5:30)

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841