ESP32-S3-GEEK 是一款基于 ESP32-S3R8 设计的以太网开发板,具备出色的 Wi-Fi 和蓝牙无线连接功能,拥有更可靠且高效的有线以太网连接,且支持 PoE 供电 (仅 PoE 版本)。板载摄像头接口,兼容 OV2640、OV5640 等主流摄像头,方便进行图像和视频采集。开发板还预留了 Pico 兼容接口,支持部分树莓派 Pico 扩展板,并依托其丰富的生态和开源资源,用户可以快速灵活地进行二次开发,可广泛应用于物联网、图像采集、智能家居及人工智能项目。
1、ESP32-S3R8 2、W25Q128 3、W5500 4、H1102NLT 5、JW5060 6、USB Type-C 接口 7、以太网接口 | 8、PoE 接口 9、摄像头接口 10、IPEX 1 代天线接口 11、陶瓷天线 12、Micro SD 卡槽 |
本章介绍 Arduino 环境搭建,包括 Arduino IDE、ESP32板管理、相关库的安装,程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。
打开首选项在 File->Preferences 下 Settings 界面的 Additional boards manager URLs 处填写下面链接后保存
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
库名称 | 说明 | 库安装要求 |
---|---|---|
ESP32-BLE-Keyboard | ESP32蓝牙键盘库 | “在线”或“离线”安装 |
ETHClass | ESP32以太网库 | “在线”或“离线”安装 |
序号 | 示例程序 | 说明 | 依赖库 |
---|---|---|---|
1 | IO_Test | 基础例程:GPIO引脚高低电平控制 | - |
2 | SD_Card | 基础例程:SD卡加载,读写操作 | - |
3 | WiFi_AP | 基础例程:设置为AP热点,允许其他WiFi设备接入联网 | |
4 | WiFi_STA | 基础例程:设置为STA模式,可接入WiFi路由网络进行联网,并可实时控制GPIO口的电平输出 | |
5 | BLE_Keyboard | 基础例程:蓝牙键盘功能演示 | ESP32-BLE-Keyboard |
6 | ETH_Web_CAM | 综合例程:通过以太网连接,实现网络摄像头功能 | ETHClass |
【程序说明】
【硬件连接】
【代码分析】
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
}
【运行效果】
程序烧录完成后,设备的运行效果如下:
【程序说明】
【硬件连接】
SPI接口 | ESP32-S3-ETH |
---|---|
CS (SS) | GPIO4 |
DI (MOSI) | GPIO6 |
DO (MISO) | GPIO5 |
SCK (SCLK) | GPIO7 |
【代码分析】
1. setup()
SPI.begin()
初始化ESP32的SPI总线,指定用于SD卡通信的引脚。SD.begin()
尝试挂载SD卡,成功时输出卡的大小。writeFileToSD()
:创建并写入文件。listFilesOnSD()
:扫描并打印SD卡根目录下的所有文件。readFileFromSD()
:打开并读取 waveshare.txt
文件的内容。2. writeFileToSD()
waveshare.txt
文件,并写入文本 "Hello world from Waveshare"
。3. listFilesOnSD()
openNextFile()
函数依次打开目录中的每个文件并打印它们的名称,最后关闭根目录文件。4. readFileFromSD(const char *filePath)
waveshare.txt
。file.read()
逐字节读取内容,并通过串口输出文件的内容,最后关闭文件。【运行效果】
程序烧录完成后,设备的运行效果如下:
【程序说明】
【硬件连接】
【代码分析】
1. setup()
WiFi.softAP()
设置 AP,指定网络名称(SSID)为"ESP32-S3-ETH
",密码为"88888888
"。WiFi.onEvent()
注册 WiFi 事件处理程序,用于处理客户端连接和断开连接。2. formatMacAddress()
XX:XX:XX:XX:XX:XX
)。3. WiFiEvent()
printDeviceIP()
获取并显示分配的 IP 地址。4. printDeviceIP(const uint8_t* mac)
esp_wifi_ap_get_sta_list()
和 tcpip_adapter_get_sta_list()
获取连接设备列表。0.0.0.0
),则打印 IP 地址。否则,表示 DHCP 尚未分配 IP 地址。5. loop()
【运行效果】
程序烧录完成后,设备的运行效果如下:
【程序说明】
【硬件连接】
【代码分析】
1. setup()
2. loop()
【运行效果】
程序烧录完成,设备的运行效果如下:
【程序说明】
摄像头接口 | 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模块使用以太网连接,并结合摄像头模块实现图像采集和流式传输。程序将配置摄像头引脚并启动摄像头服务器,使用户可以通过以太网实时访问摄像头的拍摄内容。初始化过程中,程序会设置摄像头的各种参数,包括分辨率、像素格式等,并通过网络事件监控以太网连接的状态。
【硬件连接】
【代码分析】
1. setup()
2. startCameraServer()
3. 事件处理函数 WiFiEvent(WiFiEvent_t event)
【运行效果】
可长按BOOT按键,同时按下RESET,然后松开RESET,再松开BOOT按键,此时模块可进入下载模式,可解决大部分无法下载的问题。
如下图所示,默认焊接的是垂直0R的电阻,若要切换为外部天线,则须把该0R电阻改焊为水平的位置:
周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841