Google Chat: zj734465502@gmail.com
+86-0755-88291180
sales01@spotpear.com
dragon_manager@163.com
services01@spotpear.com
manager01@spotpear.com
WhatsApp:13246739196
ESP32-S3-GEEK is an Ethernet development board designed based on ESP32-S3R8. It has excellent Wi-Fi and Bluetooth wireless connection functions, has a more reliable and efficient wired Ethernet connection, and supports PoE power supply (PoE version only). The onboard camera interface is compatible with mainstream cameras such as OV2640 and OV5640, which is convenient for image and video capture. The development board also reserves a Pico-compatible interface, supporting some Raspberry Pi Pico expansion boards. Relying on its rich ecosystem and open-source resources, users can quickly and flexibly perform secondary development. It is widely applicable to Internet of Things, image acquisition, smart home, and artificial intelligence projects.
1. ESP32-S3R8 2. W25Q128 3. W5500 4. H1102NLT 5. JW5060 6. USB Type-C interface 7. Ethernet interface | 8. PoE interface 9. Camera interface 10. IPEX Gen 1 antenna interface 11. Ceramic antenna 12. TF card slot |
This chapter introduces setting up the Arduino environment, including the Arduino IDE, management of ESP32 boards, installation of related libraries, program compilation and downloading, as well as testing demos. It aims to help users master the development board and facilitate secondary development.
Library Name | Description | Library Installation Requirements |
---|---|---|
ESP32-BLE-Keyboard | ESP32 Bluetooth Keyboard Library | Install Online or Offline |
ETHClass | ESP32 Ethernet Library | Install Online or Offline |
Demo | Description | Dependency Library |
---|---|---|
IO_Test | Basic demo: GPIO pin high and low level control | - |
SD_Card | Basic demo: TF card loading, read and write operations | - |
WiFi_AP | Basic demo: Set as an AP hotspot to allow other WiFi devices to connect to the Internet | - |
WiFi_STA | Basic demo: Set to STA mode to access WiFi routing network for networking, and can control the level output of the GPIO port in real time | - |
BLE_Keyboard | Basic demo: Bluetooth keyboard function demonstration | ESP32-BLE-Keyboard |
ETH_Web_CAM | Comprehensive demo: Webcam function is implemented via Ethernet connection | ETHClass |
Demo description
Hardware connection
Code analysis
1. GPIO pin configuration: The demo first defines the 25 GPIO pins and initializes them into output mode in the setup()
function. All pins are set to low level (off state) at the beginning.
#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 control loop:
loop()
function, the demo will turn on each GPIO pin in turn (set to high) for a delay of 300 milliseconds, and then turn off the pin (set to low).3. Print Output: The demo outputs the status information of each GPIO pin through the USB port, indicating whether the pin is in a high voltage level (on) or a low voltage level (off) state.
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
}
Running Result
After the demo is flashed, the running result of the device is as follows:
Demo description
Hardware connection
SPI interface | ESP32-S3-ETH |
---|---|
CS (SS) | GPIO4 |
DI (MOSI) | GPIO6 |
DO (MISO) | GPIO5 |
SCK (SCLK) | GPIO7 |
Code analysis
1. setup()
SPI.begin()
and specify the pins used for TF card communication.SD.begin()
to try to mount the TF card, and output card size upon successful connection.writeFileToSD()
: Create and write to a file.listFilesOnSD()
: Scan and print all files in the root directory of the TF card.readFileFromSD()
: Opens and reads the contents of the waveshare.txt
file.2. writeFileToSD()
waveshare.txt
files and write the text "Hello world from Waveshare".
3. listFilesOnSD()
the openNextFile()
function to open each file in the directory in turn and print their names, and finally close the root directory file.4. readFileFromSD(const char *filePath)
waveshare.txt
.file.read()
to read the content byte by byte, output the content of the file through the serial port, and finally close the file.Running Result
After the demo is flashed, the running result of the device is as follows:
Demo description
Hardware connection
Code analysis
1. setup()
WiFi.softAP()
and specify the network name (SSID) as "ESP32-S3-ETH"
and the password as "88888888
".WiFi.onEvent()
to register a WiFi event handler that handles client connections and disconnections.2. formatMacAddress()
XX:XX:XX:XX:XX:XX:XX)
.3. WiFiEvent()
printDeviceIP()
to get and display the assigned IP address.4. printDeviceIP(const uint8_t* mac)
esp_wifi_ap_get_sta_list()
and tcpip_adapter_get_sta_list()
to get a list of connected devices.0.0.0.0
), the IP address is printed. Otherwise, it means that DHCP has not assigned an IP address.5. loop()
Running Result
After the demo is flashed, the running result of the device is as follows:
Demo description
Hardware connection
Code analysis
1. setup()
2. loop()
Running Result
After the demo is flashed, the running result of the device is as follows:
Demo description
Camera interface | 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 |
Network port interface | ESP32-S3-ETH GPIO |
---|---|
MISO | GPIO12 |
MOSI | GPIO11 |
SCLK | GPIO13 |
CS | GPIO14 |
RST | GPIO9 |
INT | GPIO10 |
The demo utilizes the ESP32-S3-ETH module for Ethernet connectivity and, in conjunction with a camera module, implements image acquisition and streaming. The demo will configure the camera pins and start the camera server, so that the user can access the camera content in real time via Ethernet. During initialization, the demo sets various parameters of the camera, including resolution, pixel format, etc., and monitors the status of the Ethernet connection through network events.
Hardware connection
Code analysis
1. setup()
2. startCameraServer()
3. Event handling function WiFiEvent(WiFiEvent_t event)
Running Result
Long press the BOOT button, press RESET at the same time, then release RESET, then release the BOOT button, at this time the module can enter the download mode, which can solve most of the problems that can not be downloaded.
As shown in the figure below, the default weld is a vertical 0R resistor. If you want to switch to an external antenna, you need to re-solder the 0R resistor to a horizontal position: