Arduino 开发
本章节包含以下部分,请按需阅读:
Arduino 入门教程
初次接触 Arduino ESP32 开发,想要快速上手?我们为您准备了一套通用的 入门教程。
- 第0节 认识 ESP32
- 第1节 安装和配置 Arduino IDE
- 第2节 Arduino 基础知识
- 第3节 数字输出/输入
- 第4节 模拟输入
- 第5节 脉冲宽度调制 (PWM)
- 第6节 串行通信 (UART)
- 第7节 I2C 通信
- 第8节 SPI 通信
- 第9节 Wi-Fi 基础用法
- 第10节 网页服务器
- 第11节 蓝牙 (Bluetooth)
- 第12节 LVGL 图形界面开发
- 第13节 综合项目
请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。
配置开发环境
1. 安装和配置 Arduino IDE
请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。
ESP32-S3-ETH 需要使用 2.0.12 或更高版本的 Arduino ESP32 开发板支持包。在开发板管理器中选择 "ESP32S3 Dev Module"。
2. 安装依赖库
示例程序包的 Arduino/libraries 目录包含所需的离线库。也可通过 Arduino IDE 的库管理器安装已收录的库。
| 库名称 | 用途 | 安装方式 |
|---|---|---|
| Adafruit_NeoPixel | 控制 WS2812 RGB LED | 在线或离线安装 |
| ESP32-BLE-Keyboard | 蓝牙键盘功能 | 在线或离线安装 |
| Ethernet | W5500 DHCP 和静态 IP 示例 | 离线安装 |
| Ethernet_Generic | W5500 DHCP 失败后使用静态 IP | 离线安装 |
| ETHClass2 | Arduino ESP32 2.x 下的以太网摄像头示例 | 离线安装 |
3. Arduino 工程参数
在"工具"菜单中选择以下参数:
- Board:
ESP32S3 Dev Module - USB CDC On Boot:
Enabled - CPU Frequency:
240MHz (WiFi) - Flash Size:
16MB (128Mb) - Partition Scheme:
Huge APP (3MB No OTA/1MB SPIFFS) - PSRAM:
OPI PSRAM - Upload Mode:
UART0 / Hardware CDC - Upload Speed:
921600 - USB Mode:
Hardware CDC and JTAG

示例程序
Arduino 示例程序位于示例程序包的 Arduino/examples 目录中。
| 示例程序 | 基础例程说明 | 依赖库 |
|---|---|---|
| 01_IO_Test | GPIO 引脚高低电平控制 | - |
| 02_RGB_LED | GPIO 引脚控制 WS2812 彩灯 | Adafruit NeoPixel |
| 03_SD_Card | SD 卡挂载和文件读写 | - |
| 04_BLE_Keyboard | 蓝牙键盘功能演示 | ESP32-BLE-Keyboard |
| 05_WiFi_AP | 设置 AP 热点并显示接入设备信息 | - |
| 06_WiFi_STA | 连接 Wi-Fi 网络并通过网页控制 GPIO18 | - |
| 07_WiFi_DHCP | 通过 Wi-Fi 使用 DHCP 获取 IP 地址 | - |
| 08_WIFI_StaticIP | 通过 Wi-Fi 使用静态 IP 地址 | - |
| 09_WIFI_Web_CAM | 通过 Wi-Fi 传输摄像头图像 | - |
| 10_ETH_DHCP | 通过以太网使用 DHCP 获取 IP 地址 | Ethernet |
| 11_ETH_StaticIP | 通过以太网使用静态 IP 地址 | Ethernet |
| 12_ETH_MAC_DHCP_StaticIP | 自定义 MAC 地址,DHCP 失败后使用静态 IP 地址 | Ethernet_Generic |
| 13_ETH_Web_CAM | 通过以太网传输摄像头图像 | ETHClass2(Arduino ESP32 2.x) |
01_IO_Test
本示例将 19 个可作为输出的 GPIO 依次设置为高电平和低电平,每次状态变化间隔 300 ms。串口监视器会同步显示当前 GPIO 编号和电平状态。
硬件连接
使用 USB 线连接开发板和计算机。可使用万用表测量引脚电压,也可串联 LED 与限流电阻观察电平变化。

关键配置
示例依次控制以下 GPIO:
const int gpio_pin[] = {
21, 17, 16, 18, 15, 3, 2, 1, 0, 44,
43, 38, 39, 40, 41, 42, 45, 47, 48
};

GPIO33 至 GPIO37 由板载功能占用,GPIO46 仅支持输入,因此不包含在输出测试序列中。其余部分 GPIO 与板载外设复用。测试 GPIO 输出前,请断开相关外设,避免总线冲突。
运行效果
串口监视器依次显示各 GPIO 的 HIGH 和 LOW 状态。ESP32-S3 的高电平约为 3.3 V,低电平约为 0 V。

02_RGB_LED
本示例通过 GPIO21 控制 WS2812 RGB LED,依次演示单色填充、彩虹渐变和剧院追逐效果。
硬件连接
使用 USB 线连接开发板和计算机。RGB LED 已连接至 GPIO21,无需外接线路。
运行效果
- 单色填充:依次显示红色、绿色和蓝色。
- 剧院追逐:显示白色、红色和蓝色的动态追逐效果。

03_SD_Card
本示例挂载 Micro SD 卡,在根目录创建 waveshare.txt,写入 Hello world from Waveshare,列出根目录文件并读取文件内容。
本示例默认仅支持 FAT32 文件系统,不支持 exFAT 或 NTFS。64 GB 及以上的 SDXC 存储卡通常默认采用 exFAT 格式,需要备份数据后重新格式化为 FAT32 才能使用。格式化会清除存储卡中的全部数据。
硬件连接
| SPI 信号 | ESP32-S3-ETH |
|---|---|
| CS (SS) | GPIO4 |
| DI (MOSI) | GPIO6 |
| DO (MISO) | GPIO5 |
| SCK (SCLK) | GPIO7 |
将 Micro SD 卡插入板载卡槽,再使用 USB 线连接开发板和计算机。

运行效果
串口监视器依次显示 SD 卡挂载结果、文件写入结果、根目录文件列表以及 waveshare.txt 的内容。

04_BLE_Keyboard
本示例将 ESP32-S3-ETH 模拟为 BLE 键盘。程序基于 ESP32-BLE-Keyboard 开源库。
运行效果
烧录程序后,在计算机或移动设备的蓝牙设置中搜索并连接开发板。连接完成后,开发板可发送示例按键或文本。
05_WiFi_AP
本示例将 ESP32-S3-ETH 配置为 Wi-Fi 接入点。接入点名称为 ESP32-S3-ETH,密码为 88888888。设备接入或断开时,串口监视器会显示设备的 MAC 地址和 DHCP 分配的 IP 地址。
运行效果
- 烧录程序并打开串口监视器。
- 使用计算机或移动设备连接
ESP32-S3-ETH热点。 - 检查串口监视器输出的设备 MAC 地址和 IP 地址。

06_WiFi_STA
本示例将开发板配置为 Wi-Fi 工作站,并启动 HTTP 服务器。浏览器页面可查看和切换 GPIO18 的输出状态。
关键配置
烧录前,将程序中的 SSID 和密码修改为当前网络的参数。
运行效果
- 开发板接入 Wi-Fi 后,串口监视器显示 IP 地址。
- 在浏览器中访问该 IP 地址。
- 通过页面中的链接切换 GPIO18 的高低电平;串口监视器同步显示
/H或/L。
如有条件,可参考下图串联一个 LED,实测查看 GPIO18 的电平状态,或者用万用表测量。






07_WiFi_DHCP
本示例连接指定的 Wi-Fi 网络,并通过 DHCP 自动获取 IP 地址。
关键配置
将以下参数修改为当前网络的 SSID 和密码:
const char *ssid = "Waveshare-AP";
const char *password = "88888888";
运行效果
串口监视器显示 Wi-Fi 连接状态和 DHCP 分配的 IP 地址。

08_WIFI_StaticIP
本示例使用静态 IP 地址连接指定的 Wi-Fi 网络。
关键配置
根据当前网络修改 SSID、密码、IP 地址、网关、子网掩码和 DNS:
IPAddress local_ip(192, 168, 196, 100);
IPAddress gateway(192, 168, 196, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 196, 1);
运行效果
串口监视器显示 Wi-Fi 连接状态和配置的静态 IP 地址。

09_WIFI_Web_CAM
本示例通过 Wi-Fi 建立摄像头服务器,在局域网中提供实时图像。
摄像头接口
| 摄像头信号 | ESP32-S3-ETH |
|---|---|
| ENABLE | GPIO8 |
| 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 |
关键配置
将程序中的 SSID 和密码修改为当前网络的参数。摄像头初始化成功后,程序会启动 HTTP 视频流服务器。
运行效果
串口监视器显示摄像头服务器地址。在同一局域网的浏览器中访问该地址,可查看实时图像。



10_ETH_DHCP
本示例初始化板载 W5500,以太网连接建立后通过 DHCP 获取 IP 地址。
以太网接口
| W5500 信号 | ESP32-S3-ETH |
|---|---|
| MISO | GPIO12 |
| MOSI | GPIO11 |
| SCLK | GPIO13 |
| CS | GPIO14 |
| RST | GPIO9 |
| INT | GPIO10 |
运行效果
连接网线并烧录程序。串口监视器显示以太网初始化状态和 DHCP 分配的 IP 地址。

11_ETH_StaticIP
本示例初始化板载 W5500,并使用程序中配置的静态 IP 地址接入以太网。
运行效果
连接网线并烧录程序。串口监视器显示以太网初始化状态和静态 IP 地址。

12_ETH_MAC_DHCP_StaticIP
本示例允许自定义 W5500 的 MAC 地址。程序优先通过 DHCP 获取 IP 地址;如果 DHCP 获取失败,则使用预设的静态 IP 地址,例如 192.168.1.177。
运行效果
连接网线并烧录程序。串口监视器显示最终采用的 IP 地址。

13_ETH_Web_CAM
本示例通过板载 W5500 建立摄像头服务器,在以太网中提供实时图像。摄像头和 W5500 的接口定义分别参见 09_WIFI_Web_CAM 和 10_ETH_DHCP。
如果不使用 PoE 供电,无需连接外置 PoE 模块,可通过 USB Type-C 接口供电。
运行效果
串口监视器显示以太网连接状态、MAC 地址、IP 地址、链路速度和摄像头服务器地址。在同一网络的浏览器中访问服务器地址,可查看实时图像。


文档反馈
如在使用过程中遇到问题,欢迎留言反馈。