Documentation

ShillehTek Seeeduino XIAO SAMD21 Arduino Board Presoldered | ShillehTek Product Manual
Documentation / ShillehTek Seeeduino XIAO SAMD21 Arduino Board Presoldered | ShillehTek Product Manual

ShillehTek Seeeduino XIAO SAMD21 Arduino Board Presoldered | ShillehTek Product Manual

shillehtek

Overview

The Seeeduino XIAO is a thumb-sized Arduino-compatible development board built around the Microchip SAMD21G18 — a 32-bit ARM Cortex-M0+ running at 48 MHz. It packs 14 GPIO pins, hardware SPI/I2C/UART, 11 analog inputs, a true 10-bit DAC, and QTouch capacitive sensing into a board roughly the size of a thumbnail (20 x 17.5 mm). Headers come pre-soldered so you can drop it straight onto a breadboard.

Despite its size, the XIAO has 256 KB of Flash and 32 KB of SRAM — comfortably more than a classic Arduino Uno — and supports both the official Arduino IDE (via the Seeed SAMD board package) and CircuitPython. The USB Type-C connector handles flashing and serial monitoring directly through the SAMD21's native USB peripheral.

The XIAO is a great fit for compact wearables, USB HID devices (it can act as a keyboard or mouse), small sensor nodes, and any space-constrained project where an Uno is overkill. There's no on-board wireless, but the small footprint and low power consumption make it easy to pair with a separate radio module if you need it.

At a Glance

MCU
SAMD21G18 Cortex-M0+
Clock Speed
48 MHz
Logic Level
3.3V
Flash / SRAM
256 KB / 32 KB
GPIO Pins
14 (D0-D13)
USB Connector
USB Type-C

Specifications

Parameter Value
Microcontroller Microchip SAMD21G18 (32-bit ARM Cortex-M0+)
Clock Frequency 48 MHz
Flash Memory 256 KB
SRAM 32 KB
Operating Voltage 3.3V
Input Voltage (5V pin) 5V (USB-C or external)
GPIO Logic Level 3.3V (NOT 5V tolerant)
Digital I/O Pins 14 (D0-D13)
Analog Input (ADC) Channels 11 (12-bit)
Analog Output (DAC) 1 channel, 10-bit (D0)
PWM Output Available on most digital pins
Capacitive Touch (QTouch) Available on A0, A6, A7
Communication Interfaces I2C, SPI, UART, USB 2.0 (native)
USB Connector USB Type-C
Dimensions 20 x 17.5 mm
Headers Pre-soldered male pins

Pinout Diagram

Seeeduino XIAO SAMD21 pinout diagram showing D0-D13 digital pins, A0-A10 analog inputs, DAC on D0, SDA on D4, SCL on D5, TX on D6, RX on D7, MOSI on D10, MISO on D9, SCK on D8, QTouch pins on A0/A6/A7, 5V, 3V3, and GND

Wiring Guide

LED + Push Button Wiring

The classic "hello world" hardware test. Use a 220-330 ohm resistor in series with the LED to keep the current within the SAMD21's GPIO drive limit (typically ~7 mA per pin).

Component XIAO SAMD21 Pin Details
LED Anode (long leg) D2 Through 220 ohm resistor
LED Cathode (short leg) GND
Button Terminal 1 D3 Use INPUT_PULLUP in code
Button Terminal 2 GND
Info: The XIAO has on-board user LEDs as well: a built-in LED on pin LED_BUILTIN plus separate RX (PIN_LED_RXL) and TX (PIN_LED_TXL) indicators. They are useful for status feedback without external wiring.

I2C Sensor Wiring

The default I2C bus on the XIAO uses D4 (SDA) and D5 (SCL). Most 3.3V breakout boards (BME280, MPU6050, SSD1306, ADS1115, BH1750, etc.) work without any modifications.

Sensor Pin XIAO SAMD21 Pin Details
VCC 3V3 Use 3V3, not 5V
GND GND
SDA D4
SCL D5
Warning: The SAMD21 GPIO is 3.3V only and not 5V tolerant. Connecting a 5V I2C device directly can damage the chip and corrupt the bus. Use a logic level converter (TXS0108E, BSS138-based shifter, etc.) when interfacing with 5V devices.
Tip: If your sensor doesn't show up during an I2C scan, add 4.7k pull-up resistors from SDA and SCL to 3V3. Some bare modules omit them.

SPI Device Wiring

Hardware SPI uses D8 (SCK), D9 (MISO), and D10 (MOSI). Any free GPIO can be used as a chip select; D7 is a common default in examples.

SPI Device Pin XIAO SAMD21 Pin Details
VCC 3V3
GND GND
SCK D8 Clock
MISO D9 Master In, Slave Out
MOSI D10 Master Out, Slave In
CS / SS D7 (or any free GPIO) Chip Select
Tip: The SAMD21 supports SERCOM remapping if you need additional SPI buses. For most projects the default SPI object on D8/D9/D10 is all you need.

UART / Serial Wiring

The hardware UART (Serial1) uses D6 (TX) and D7 (RX). This is independent from the USB serial console (Serial), so you can talk to a peripheral and watch debug output simultaneously.

External Device XIAO SAMD21 Pin Details
TX (out from device) D7 (RX) Cross-wire: their TX to your RX
RX (in to device) D6 (TX) Cross-wire: your TX to their RX
VCC 3V3 or 5V Match the device's voltage
GND GND Common ground required
Warning: If you power a 5V UART peripheral from the 5V pin, its TX line will swing to 5V and damage the SAMD21 RX pin. Use a logic level shifter or a resistive divider on the device's TX before it reaches D7.

Code Examples

Arduino IDE - Blink the Built-in LED

xiao_blink.ino
// Seeeduino XIAO SAMD21 - Built-in LED blink
// Install: Boards Manager -> "Seeed SAMD Boards" by Seeed Studio
// Select Board: "Seeeduino XIAO"

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // LED is active LOW
  delay(500);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(500);
}

Arduino IDE - DAC Sine Wave

xiao_dac_sine.ino
// Seeeduino XIAO SAMD21 - Generate a sine wave on the DAC (D0 / A0)
// The SAMD21 has a true 10-bit DAC (0-1023 maps to 0-3.3V)

#include <math.h>

const int dacPin = A0;   // D0 / A0 is the DAC output
const int samples = 100;
int wave[samples];

void setup() {
  analogWriteResolution(10);   // 10-bit DAC
  for (int i = 0; i < samples; i++) {
    wave[i] = int(512.0 + 511.0 * sin(2.0 * M_PI * i / samples));
  }
}

void loop() {
  for (int i = 0; i < samples; i++) {
    analogWrite(dacPin, wave[i]);
    delayMicroseconds(50);
  }
}

Arduino IDE - USB HID Keyboard

xiao_usb_keyboard.ino
// Seeeduino XIAO SAMD21 - Send keystrokes over native USB HID
// Wire a button between D3 and GND

#include <Keyboard.h>

const int buttonPin = 3;   // D3
bool lastState = HIGH;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  Keyboard.begin();
}

void loop() {
  bool state = digitalRead(buttonPin);
  if (state == LOW && lastState == HIGH) {
    Keyboard.print("Hello from XIAO!");
    Keyboard.write(KEY_RETURN);
    delay(50);   // simple debounce
  }
  lastState = state;
}

CircuitPython - Read Capacitive Touch (QTouch)

code.py
# Seeeduino XIAO SAMD21 - Capacitive touch on A0
# Drop CircuitPython for "Seeed XIAO" onto the board, then save this as code.py

import board
import touchio
import time

touch = touchio.TouchIn(board.A0)

while True:
    if touch.value:
        print("Touched! raw =", touch.raw_value)
    else:
        print("idle    raw =", touch.raw_value)
    time.sleep(0.1)

Frequently Asked Questions

Which board do I select in the Arduino IDE?
Open File > Preferences and add the Seeed package URL: https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json. Then in Boards Manager, install "Seeed SAMD Boards" by Seeed Studio. Pick "Seeeduino XIAO" from Tools > Board > Seeed SAMD.
Are the GPIO pins 5V tolerant?
No. The SAMD21 GPIO pins operate at 3.3V and are not 5V tolerant. Connecting a 5V signal directly can damage the chip. Use a logic level converter when interfacing with 5V devices, or scale the signal with a voltage divider on input-only lines.
How do I put the XIAO into bootloader mode if it stops accepting uploads?
Short the RST pads on the back of the board twice quickly. The on-board LED will pulse and the board will appear as a USB drive named "Arduino" or "XIAO". You can then upload normally, or drag a UF2 file onto the drive (for CircuitPython).
Can the XIAO act as a keyboard or mouse?
Yes. The SAMD21's native USB peripheral supports HID. In the Arduino IDE you can use the built-in Keyboard and Mouse libraries to type or move the cursor on a connected computer. CircuitPython has the equivalent adafruit_hid library.
Does the XIAO have a built-in DAC?
Yes — pin A0 (D0) is connected to the SAMD21's true 10-bit DAC. Use analogWriteResolution(10) followed by analogWrite(A0, value) in Arduino, where value is 0-1023, to output a corresponding 0-3.3V analog voltage. This is great for audio playback and waveform generation.
How much current can I draw from the 3V3 pin?
The on-board LDO regulator can supply up to about 700 mA total under good thermal conditions, but in practice 200-300 mA is a safer planning figure once you account for the SAMD21's own consumption. For high-current peripherals, use a separate regulator.
Does the XIAO have Wi-Fi or Bluetooth?
No. This original SAMD21 XIAO is wired-only. If you need wireless on the same form factor, look at the XIAO ESP32-C3, XIAO ESP32-S3, XIAO ESP32-C6, or XIAO nRF52840 boards. They all share the same footprint.