ESP32 S3 Development Board : PinOut, Features, Specifications, Interfacing, Datasheet & Its Applications ESP32 is an energy-efficient and low-cost microcontroller from Espressif Systems that incorporates both Bluetooth and Wi-Fi capabilities. This microcontroller is available in various versions, each with its distinct features and capabilities, including the ESP32-S, ESP32-C, and ESP32-H.In addition, there are also specific models, including the ESP32-WROVER and ESP32-WROOM-32c. In general, ESP32 is a very powerful microcontroller, but the ESP32-S3 chip builds on it by including more processing power, memory options, and AI/ML task support. So ESP32-S3 development board is suitable for designing projects that need AI/ML. This article elaborates on the ESP32-S3 microcontroller, its working, and applications. What is the ESP32 S3 Development Board? The ESP32-S3 is an advanced version of the ESP32 development board with a 32-bit dual-core MCU with incorporated Bluetooth 5 and Wi-Fi connectivity. These boards can be used to design wireless communication and IoT-based projects. It provides a platform to test & develop many projects before moving into mass production. ESP32-S3 boards use the required components to easily work by beginners and skilled developers. These development boards normally allow peripherals and different types of sensors to design any application. How does ESP32 S3 Work? The ESP32-S3 development board operates by executing firmware stored in its flash memory. Upon powering on, the board boots up and runs the firmware, which controls the operation of peripherals such as LEDs, motors, and sensors. Typically, developers write this firmware using the ESP-IDF or Arduino IDE in C++ or C. In addition, the ESP32-S3 board provides improved features and performance like powerful AI capabilities, and incorporates Bluetooth LE 5.0, to support both Bluetooth and Wi-Fi communication. Pin Configuration: The pin configuration of the ESP32 S3 development board includes the following. ESP32 S3 Development Board Pin Configuration SPI Flash & PSRAM GPIO pins from 26 to 32 are simply connected to the incorporated SPI flash & PSRAM. These are not exposed in this specific development board; however, if they are exposed on your board, keep away from using them: Capacitive touch GPIOs The ESP32-S3 board includes 14 capacitive touch GPIOs internally (GPIO 1 to GPIO 14), which can detect changes in everything that holds an electrical charge. In addition, they can also detect induced variations while touching the GPIO pin with a finger. These pins can be integrated easily into capacitive pads & change mechanical buttons to wake up the board from deep sleep. Those internal touch sensors can be connected to all these GPIOs: Analog to Digital Converter The ESP32 board includes 20 12-bit ADC input channels (ADC1_CH0 (GPIO 1) to ADC2_CH9 (GPIO 20)), used as ADC & particular channels: These ADC input channels can have a 12-bit resolution which means you can obtain analog readings ranges from 0 to 4095, where 0 corresponds to 0 V and 4095 corresponds to 3.3 V. Here, your channels resolution can also be set on the code & the ADC range. RTC GPIOs The GPIOs routed toward the RTC low-power subsystem can be utilized while the ESP32 board is in deep sleep. So these pins can be used to awaken the ESP32 board from deep sleep when the ULP coprocessor is running. The GPIOs can be utilized as an outside wake-up source, ranging from.RTC GPIO0 (GPIO0) to RTC_GPIO21 (GPIO21)). PWM The ESP32-S3 development board has an LED PWM controller through 8 PWM channels, which produce PWM signals with different properties. So all these PWM pins can perform as outputs. The parameters must be defined in the code to set a PWM signal, like Duty cycle, signal frequency, GPIO, and PWM channel. I2C The default ESP32 I2C pins, like GPIO 8 (SDA) and GPIO 9 (SCL), are used when ESP32-S3 is used with the Arduino IDE. SPI The ESP32 development board incorporates four SPI peripherals like SPI0, SPI1, SPI2 & SPI3). So, both SP0 & SP1 are internally used to communicate through the built-in flash memory, whereas SPI2 & SPI3 are used to communicate with other devices. Interrupts All GPIO pins in this development board can be configured as interrupts. UART Pins The ESP32-S3 development board supports several UART interfaces, which allow serial communication through different devices. The ESP32 board supports three UART interfaces based on the ESP32 board model: UART0, UART1 & UART2. These UARTs can also be mapped to any GPIO pin, like SPI and I2C. Strapping Pins The ESP32-S3 chip includes four strapping pins: GPIO 0, GPIO 3, GPIO 45, and GPIO 46, which can be used to place the ESP32 board into flashing mode or boot loader. But you must avoid using all these pins on your application. Enable (EN/RST) This is the 3.3V enable pin of the regulator, which is pulled up to connect to GND to disable the regulator. This pin can be used to restart your ESP32 development board. ESP32 S3 Features & Specifications: The features & specifications of the ESP32 S3 development board include the following. It has a 32-bit Dual-core Xtensa LX7 CPU Its CLK speed is up to 240 MHz. It has in-built support mainly for AI & ML vector instructions for machine learning & signal processing tasks. It has 512 KB of SRAM It has 4 MB of Flash. This board supports external SRAM & SPI flash. Wi-Fi is 802.11 b/g/n Wi-Fi @ 2.4 GHz band It supports Bluetooth 5.0 (LE) for low energy consumption & enhanced range. It has hardware security features. This board has up to 45 General Purpose Input/Output pins. Its capacitive touch pins can be utilized for touch sensing with several channels/ It’s PWM controls LEDs, motors, etc. This board has a 12-bit ADC, including 18 channels & DAC. It supports SPI, I2C & UART communication protocols. USB OTG allows the device to work as both a USB host & device. Its camera Interface is used to connect the external OV2640 camera. Its LCD interface is used to connect displays. Low power mode conserves battery energy. Its voltage input is 3.3V with onboard regulation. Its voltage regulators provide stable operation & efficient power distribution. This board is compatible with the Arduino IDE for easy integration and development. It can also support alternative programming environments like MicroPython & other frameworks: Its SD card interface supports connecting external SD cards. ESP32-S3 board can also have an AI accelerator for edge AI tasks. This board can also run direct machine learning models to make it perfect for smart devices through AI capabilities. Many ESP32-S3-based development boards provide various configurations, like the ESP32-S3 DevKitC. Its operating temperature ranges from -40°C to 85°C. Equivalents & Alternatives Equivalent ESP32 S3 development boards are; ESP32-S3-DEVKITC-1-N8R8, ESP32-S3-DevKitM-1 and ESP32-S3-DevKitC-1. Alternative ESP32 boards are: STM32 Series, Raspberry Pi Pico, Teensy, nRF5xxxx, Arduino Nano, and other ESP versions. ESP32 S3 Development Board Hardware The ESP32 S3 development board includes various hardware components, which are discussed below. ESP32 S3 Development Board Hardware ESP32-S3-WROOM-1/1U/2 The powerful low-energy with generic Wi-Fi and Bluetooth MCU modules like ESP32-S3-WROOM-1, WROOM-1U, and WROOM-2 have a rich set of peripherals. So these modules provide acceleration for signal processing workloads and neural network computing. ESP32-S3-WROOM-1U is available with an external antenna connector, whereas ESP32-S3-WROOM-1 & ESP32-S3-WROOM-2 boards have a PCB antenna. 5 V to 3.3 V Low-Dropout Regulator This is a power regulator that changes the voltage supply from 5 V to 3.3 V. Pin Headers The ESP32-S3 development includes 45 GPIO pins, which are frequently exposed throughout pin headers on development boards. These headers allow simple interfacing with exterior devices using breadboards or jumper wires. USB-to-UART Port A micro-USB port is used for power supply to the development board to use in flashing applications. In addition, it can also be used for communication using the chip through the on-board USB to UART Bridge. Boot Button The BOOT button is a physical feature on the development board that initiates firmware bootloader mode or upload mode. By pressing and holding this button while powering up or resetting the board, you enable it to receive new firmware from a computer. Reset Button This button is used to reset the system. USB Port The USB port on this board supplies power to the development board for programming and communication during flashing applications. It features a USB-to-UART bridge chip that facilitates serial communication with a computer. Additionally, a second USB port supports USB OTG (On-The-Go) functionality. So this allows the development board to act as a USB storage device, otherwise connect to additional USB devices. USB-to-UART Bridge This USB-to-UART bridge chip provides up to 3 Mbps transfer rates. RGB LED This is an addressable RGB LED that is driven by GPIO38. This light-emitting diode combines three colors to generate over 16 million shades of light. So this LED is used extensively in lighting systems, display screens, etc. 3.3 V Power ON LED The 3.3V power-on LED normally indicates that the development board is receiving power from the 3.3V supply to operate. So this LED is frequently integrated into the board’s circuitry directly and is powered through the 3.3V rail. This will turn ON whenever the power is provided to the board through USB. ESP32 S3 Vs Rp2040 The ESP32-S3 & RP2040 are both versatile and powerful microcontrollers, but they have some differences, which include the following. ESP32 S3 RP2040 ESP32-S3 provides built-in Bluetooth and Wi-Fi connectivity with a very powerful processor & more peripherals, RP2040 provides higher CLK speeds & more on-chip RAM. It uses a dual-core XTensa LX7 processor at 240MHz. It uses a dual-core ARM Cortex-M0+ with 133 MHz. On-chip RAM is 512KB On-chip RAM is 264 KB. It is applicable where complex processing & networking are required. It is suitable for projects where speed and power consumption are critical. Wireless connectivity is 2.4 GHz Wi-Fi & BLE (Bluetooth Low Energy). It supports a variety of wireless connectivity options through external devices or dedicated modules. It has 45 GPIO pins. It has 30 GPIO pins. Flash memory is 16MB/32 MB. Flash memory is 2 MB. It supports C/C++, Lua, MicroPython, and Arduino programming languages. It supports C/C++, MicroPython, and CircuitPython programming languages. Power consumption is between 23.88 mA & 107 mA Power consumption in dormant mode is 0.18mA & in sleep mode is 0.39mA. Micro Digital Desk CLK with XIAO ESP32 S3 Development Board The circuit for the micro digital desk clock with the XIAO ESP32-S3 board is illustrated below. This design incorporates the Seeed Studio XIAO ESP32-S3, NTP, and an OLED display to create a micro digital desk clock that connects to Wi-Fi and utilizes real-time data and time from NTP. Although this micro digital desk clock does not require an RTC module, it can still function effectively as an alarm clock. The required components to make this micro digital desk clock mainly include: XIAO ESP32 S3, LED, 0.96 Inch OLED display module, 3D printed case, breadboard, USB Type–C data cable, Arduino IDE, and jumper wires. Micro Digital Desk CLK with XIAO ESP32-S3 Board Connect the mentioned components as per the diagram shown above. So the interfacing of these components follows as; Connect the VCC pin of the OLED to the 3.3V/5V pin of the XIAO ESP32-S3 board. Connect the GND pin of the OLED to the GND pin of the XIAO ESP32-S3 board. Connect the SCL pin of the OLED to the SCL or A5 pin of the XIAO ESP32-S3 board. Connect the SDA pin of the OLED to the SDA or A4 pin of the XIAO ESP32-S3 board. Connect LED terminals to the battery pins of the XIAO ESP32-S3 board. Once the connections are made, ensure the connections above the breadboard according to the circuit diagram to test & connect the XIAO ESP32 S3 board through your laptop or PC. Code Upload the following code for the OLED display to ensure the OLED display is interfacing with the board. #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <WiFi.h> #include <NTPClient.h> #include <WiFiUdp.h> #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 #define SCREEN_ADDRESS 0x3C Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); const char *ssid = “ROBU_TEST”;//SET UP YOUR Wi-Fi NAME const char *password = “12345678”;//SET UP YOUR Wi-Fi PASSWORD WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP, “pool.ntp.org”); String weekDays[7] = {“Sun”, “Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”}; String months[12] = {“Jan”, “Feb”, “Mar”, “Apr”, “May”, “Jun”, “Jul”, “Aug”, “Sep”, “Oct”, “Nov”, “Dec”}; const int ledPin = D10; // Change this to your actual LED PIN on the Xiao ESP32 S3 const int buzzerPin = D9; // Change this to your actual buzzer PIN on the Xiao ESP32 S3 // Define the desired LED activation and deactivation times const int activateHour = 10; // Set your activation hour (in 24-hour format) const int activateMinute = 38; // Set your activation minute const int deactivateHour = 10; // Set your deactivation hour (in 24-hour format) const int deactivateMinute = 39; // Set your deactivation minute char intro[]= “GIVE THIS VIDEO A LIKE,IF YOU ENJOYED | ROBU.IN”; int x, minX; bool deviceActive = false; void wifiConnect() { display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.clearDisplay(); display.setCursor(0, 10); display.println(“WiFi”); display.setCursor(0, 30); display.println(“Connecting”); display.display(); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.clearDisplay(); display.setCursor(0, 10); display.println(“WiFi”); display.setCursor(0, 30); display.println(“Connected”); display.display(); delay(2000); } void clockDisplay() { timeClient.update(); int currentHour = timeClient.getHours(); int currentMinute = timeClient.getMinutes(); int currentSecond = timeClient.getSeconds(); String am_pm = (currentHour < 12) ? “AM” : “PM”; if (currentHour == 0) { currentHour = 12; // 12 AM } else if (currentHour > 12) { currentHour -= 12; } String weekDay = weekDays[timeClient.getDay()]; time_t epochTime = timeClient.getEpochTime(); struct tm *ptm = gmtime(&epochTime); int monthDay = ptm->tm_mday; int currentMonth = ptm->tm_mon + 1; String currentMonthName = months[currentMonth – 1]; int currentYear = ptm->tm_year + 1900; display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(18, 10); display.print(String(currentHour) + “:” + String(currentMinute) + ” ” + am_pm); display.setTextSize(2); display.setCursor(9, 33); display.println(String(weekDay) + “;” + String(monthDay) + “-” + String(currentMonthName));//+”-“+String(currentYear) display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(115, 0); display.print(currentSecond); } void textScroll() { display.setTextSize(1); display.setCursor(x,55); display.print(intro); x=x-1; if(x < minX) x = display.width(); } void deviceActivation(){ timeClient.update(); int currentHour = timeClient.getHours(); int currentMinute = timeClient.getMinutes(); if ((currentHour > activateHour || (currentHour == activateHour && currentMinute >= activateMinute)) && (currentHour < deactivateHour || (currentHour == deactivateHour && currentMinute < deactivateMinute))) { deviceActive = true; digitalWrite(ledPin, HIGH); // Activate LED } else { deviceActive = false; digitalWrite(ledPin, LOW); // Deactivate LED }} void setup() { display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS); display.clearDisplay(); display.display(); // Initialize and clear the display pinMode(ledPin, OUTPUT); // Initialize the LED pin pinMode(buzzerPin, OUTPUT); // Initialize the buzzer pin wifiConnect(); timeClient.begin(); timeClient.setTimeOffset(19800); display.setTextSize(2); display.setTextColor(WHITE); display.setTextWrap(false); x = display.width(); minX = -6 * strlen(intro); timeClient.update(); int currentHour = timeClient.getHours(); int currentMinute = timeClient.getMinutes(); if ((currentHour > activateHour || (currentHour == activateHour && currentMinute >= activateMinute)) && (currentHour < deactivateHour || (currentHour == deactivateHour && currentMinute < deactivateMinute))) { deviceActive = true; digitalWrite(ledPin, HIGH); // Activate LED }} void loop() { clockDisplay(); textScroll(); display.display(); deviceActivation(); static bool previousDeviceActive = false; if (deviceActive != previousDeviceActive) { previousDeviceActive = deviceActive; digitalWrite(buzzerPin, HIGH); // Activate Buzzer delay(1000); // Keep the buzzer on for 1 second digitalWrite(buzzerPin, LOW); // Deactivate Buzzer } } } Working After making the connections, upload the specified code to the XIAO ESP32 S3 development board. Ensure that your Wi-Fi connection is active and that you have entered the correct credentials in the code. If the XIAO ESP32 S3 board successfully connects to Wi-Fi or a hotspot, and both the connections and code are accurate, the OLED will activate, displaying the current time and date along with scrolling text. Additionally, the LED will function based on the setup time, allowing you to configure specific alarms. Advantages The advantages of the ESP32-S3 development board include the following. The ESP32-S3 development board has a dual-core Xtensa LX7 architecture, which provides improved processing power for multi-tasking and difficult tasks. This module supports both Bluetooth and Wi-Fi by enabling strong wireless communication for a variety of smart home and IoT applications. This board provides a wide range of peripherals like UART, GPIOs, I2C, SPI, and PWM for simple interaction through external devices and sensors. The ESP32-S3 board has support in the MCU for vector instructions, signal processing tasks, and accelerating neural network computing. It has a rich development ecosystem with libraries, tools with community support. It has integrated security features for data protection and secure communication. This board supports high-speed octal SPI flash & PSRAM with configurable data & instruction caches. Disadvantages The disadvantages of the ESP32-S3 development board include the following. Its power consumption is higher compared to other microcontrollers. The ADC on this board is not as robust as other microcontrollers, which affects the analog readings potentially. Its Real-Time Operating System and complex CPU architecture can make it hard to attain very accurate real-time control. Some GPIO pins on this board can have limited capabilities, like low current drive, which limits their use in some applications. The number of pins and their layout can be changed based on the board. ESP32 S3 Development Board Applications The applications of the ESP32-S3 development board include the following. The ESP32-S3 development board is perfect for creating environmental sensors, IoT devices, smart home devices, etc. Developers use this board in multimedia applications such as camera modules, smart displays, and audio/video streaming. AI leverages it for vector instructions and libraries, enabling the development of speech recognition, neural networks, and image recognition applications. Industries utilize this development board for data logging, remote monitoring, and PLC control applications. Manufacturers incorporate it into USB storage devices, multimedia devices, and Wi-Fi network cards. Smart medical devices, like wearable health monitors, use ESP32-S3 development boards to transmit and collect health data. Surveillance cameras and security devices rely on it to transmit and capture audio and video data. Multimedia devices, including Wi-Fi network cards, wireless storage, built-in displays, and touchscreen devices, benefit from its capabilities. Voice recognition-based applications, such as voice-activated devices and smart displays, also utilize this technology. Please refer to this link for the ESP32 S3 Development Board Datasheet. Thus, this is an overview of the ESP32-S3 development board, which provides a versatile and powerful platform for AI and IoT project development. These boards cater to both experienced developers and beginners, enabling them to design a wide range of embedded system projects. Specifically, this board targets AIoT applications, such as smart speakers and voice assistants. Here is a question for you: What is the ESP32 C3 board? Share This Post: Facebook Twitter Google+ LinkedIn Pinterest Post navigation ‹ Previous What is a Drone – Components, Function & Its Applications Related Content What is a Drone – Components, Function & Its Applications How LTE and 5G Are Powering the Next Generation of Drones Drone Technology Advancements : Swarm Technology, BVLOS, Quantum Navigation & Computing Drone Propeller : Working, Materials, Types, Sizes, Advantages, Disadvantages & Its Applications