The team over at Seeed Studio has seemingly jumped aboard the hype train surrounding Espressif’s ESP32 MCUs. Their first foray way rather shy, testing the waters with an ESP32-C3-based XIAO board. Skipping the ESP32-S2, the team went straight for the ESP32-S3 with their newest member of the XIAO family, putting ample power into a minuscule board. With two 32-bit Xtensa LX7 MCU cores clocked at 240 MHz, this tiny board is ready for countless IoT and automation projects. We’d like to thank Seeed Studio for providing us with a XIAO ESP32S3 Sense kit for this review and Malina314, a Belgrade-based supplier for providing us with the Expansion Board Base for XIAO.
Hardware
This isn’t the first time we’ve seen the ESP32-S3, as numerous other low-cost boards use it (e.g. Banana Pi’s Leaf-S3, Centi-S3 and PicoW-S3; LilyGo’s T-HMI and T-embed). In fact, we’ve seen the exact ESP32-S3R8 configuration used on the XIAO in many of these. The S3R8 comes packaged with 8 MB of PSRAM. The board also features 8 MB of flash storage, which together with the MCU lies underneath a protective metal RF shield.
The Seeed XIAO measures just 21 by 17.5 mm — even Waveshare’s absolutely tiny RP2040-Zero gains a few millimeters in each direction. The size is one of the XIAO’s strongest suits, asserting it as a logical pick for projects where every inch counts.
Maybe even more impressively, the XIAO ESP32S3 packs a 2.4 GHz Wi-Fi and BLE 5.0 module. The included wireless antenna has a rated 100 m range. Awesome for a development kit that weighs just 15 g.
The board also features some standard IO, which includes a USB-C connector for programming and supplying power to the board, two microscopically tiny buttons (one for resetting and one for getting the board into bootloader mode), two LEDs, a U.FL antenna connector, 14 GPIO pins (these can be used as general purpose digital or analog IO, but also as SPI, UART or I2C comms pins) and a board-to-board connector. The board also features some pads on the bottom which are used by certain expansion accessories for data and power transfer.
The board-to-board connector is primarily used for connecting the Sense board, which can be bought separately or as part of the “XIAO ESP32S3 Sense” kit. This expansion adds a 2 MP OV2640 camera module (which can be exchanged for a 5 MP OV5640 one), a tiny SMT microphone and an SD card slot (which supports up to 32 GB cards) to the mix, greatly expanding the system’s utility.
The ESP32-S3R8 is relatively power efficient, drawing only 0.45 W. With the camera module enabled the system averages 0.7 W, but can reach a peak power draw of 1.7 W while the shutter fires. During continuous recording, especially with the higher-end OV5640 module, the camera does require a heatsink.
If you’re planning to run the board on battery power, it’s worth setting aside a few dollars for quality 3.7 V lithium-ion cells. The system has circuitry for charging these, and mounting is as simple as soldering two cables to pads labeled ‘+’ and ‘-’ on the XIAO’s underside.
Seeed didn’t leave its postmark-sized ESP32-S3 development board without its share of accessories. Being the latest entry in a long line of XIAO boards, there’s already a decent amount of options. This includes a CAN Bus breakout board, an ePaper breakout board, a Grove Base board (which offers eight grove connectors), a round display, a 6×10 RGB LED matrix board and the newest addition to the family: a 24 GHz mmWave sensor.
For $49, Seed offers the XIAO Starter Kit. Included are one of the XIAO development boards (based on the RP2040, SAMD21, nFR52840, ESP32-C3, and, of course, the ESP32-S3), nine Grove modules and the Expansion Board Base for XIAO board (mind you, this isn’t the aforementioned Grove Base board). This expansion board also retails separately for 16.5 USD — and we wholeheartedly recommend it to everyone looking to dip their toes into the XIAO ecosystem. The board features an OLED screen, four Grove connectors, a buzzer, a Li-ion battery connector, an RTC coin battery slot, SD card slot, two (this time normal-sized) buttons, a power switch as well as some extended GPIO.
By snapping the XIAO onto this base, you get a fully-fledged little ESP32-S3 development kit which not only has more IO and peripherals, but also quality-of-life improvements. The larger buttons are much easier to operate, the power switch lets you turn off the system while still connected to power, and the battery connector facilitates battery-powered projects without the need for soldering.
Finally, we’d like to reflect on the general hardware quality. All of these are gorgeous! With nicely polished edges and a lovely silkscreen job, these bite-sized bits of hardware feel impart a sense of quality. Well done, Seeed.
Software
The XIAO ESP32-S3 is easiest to program using the Arduino IDE, libraries and board definitions for which can be easily downloaded from Seeed’s website. We feel like there’s no real need to go into detail here, as using the XIAO is essentially the same as using an Arduino board — and since Seeed has excellent documentation available on their Wiki pages. This is something that deserves praise, as we’ve often run into systems with promising hardware let down by a total lack of documentation and support. In fact, Seeed’s products are always well-documented, this being one of the company’s strongest suits. And stuff simply works — it’s plug and play and intuitive enough even for total beginners.
As a little demo, here’s a simple bit of code which measures atmospheric pressure and temperature using a BME280 sensor. The results are displayed on the Expansion Board Base’s OLED panel.
#include <Arduino.h> #include <U8x8lib.h> #include <Wire.h> #include "Seeed_BME280.h" U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display BME280 bme280; void setup(void) { u8x8.begin(); u8x8.setFlipMode(1); u8x8.setFont(u8x8_font_chroma48medium8_r); u8x8.setCursor(0, 0); u8x8.print("XIAO ESP32S3"); u8x8.setCursor(5, 6); u8x8.print("Mehatronika"); Serial.begin(9600); if(!bme280.init()){ u8x8.setCursor(0, 3); u8x8.print("Device error!"); } } void loop(void) { float pressure; float temperature; u8x8.setCursor(0, 3); u8x8.print("Pres:"); u8x8.print(pressure = bme280.getPressure()); u8x8.print("Pa"); u8x8.setCursor(0, 4); u8x8.print("Temp:"); u8x8.print(temperature = bme280.getTemperature()); u8x8.print("C"); }
If you’re designing an embedded system which relies on real-time processing, an RTOS is a must. The XIAO ESP32S3 supports Zephyr OS, which is an RTOS tailored towards multi-threading, precise interrupt handling, memory efficiency and power management. Visual Studio Code is the IDE of choice here, and all software libraries can be easily found online.
For Python lovers, this XIAO board also offers built-in firmware and software libraries for CircuitPython and MicroPython. Our recommendation here is Thonny, as it just works, but full IDEs like PyCharm or even Visual Studio Code can offer useful debugging tools.
Conclusion
The XIAO ESP32S3 is a compact and capable development kit with wireless connectivity and numerous available peripherals. Its tiny size and unnoticeable weight make it suitable for projects where space constraints rule out most other boards on the market. Excellent documentation and support for widely used development toolchains make it an excellent choice for beginners and seasoned makers alike. Going for just $7.5, the XIAO ESP32S3 makes for an excellent IoT tool, but also an invaluable bit of educational STEM gear.
- NVIDIA Announces Project GR00T - 03/21/2024
- Staying in Sync: NVIDIA Combines Digital Twins With Real-Time AI for Industrial Automation - 03/21/2024
- Radxa Rock 5A review - 03/05/2024