Seeeduino XIAO – Arduino compatible

Together the Grove kit I received a mini board as well. I have been interested in this board, called Seeeduino XIAO, long time ago because it’s the smallest board I know and it includes USB-C!

I thought we may use this board in a big variety of projects because it is a tiny board with enough I/O pins, has a lot of memory, and is cheap.

 

Specifications

  • CPU: ARM Cortex-M0+ CPU(SAMD21G18) running at up to 48MHz
  • Storage:
    • 256 KB Flash
    • 32 KB SRAM
    • 0 KB EEPROM
  • 14 GPIO PINs:
    • 11 analog PINs
    • 11 digital PINs
    • 1 DAC output Pin
  • Interface:
    • 1 I2C interface
    • 1 UART interface
    • 1 SPI interface
  • Power supply and downloading interface: USB Type-C interface
  • LEDs: 1 user LED, 1 power LED, two LEDs for serial port downloading
  • Reset button: two reset button short connect to reset
  • Power Pads: For the battery power supply
  • Software compatibility: Compatible with Arduino IDE
  • Projection cover for protecting the circuit
  • Dimensions: 20 x 17.5 x 3.5 mm

Then, what can we do with this board? If we compare the main characteristic between an Arduino Pro Micro vs this board, we can see how both of them are quite similar except the working frequency and memory:

Arduino Pro MicroSeeeduino XIAO
Working voltage:5V3.3V
Microcontroller:ATmega32U4ARM Cortex-M0+ SAMD21G18
Frequency:16 MHz, 8 bits48 MHz, 32 bits
Cores:11
Program memory:32 KB256 KB
SRAM:2.5 KB32 KB
EEPROM:1 KB0 KB
GPIO PINs:1814
Digital PINs:1211
Analog PINs:9 (10 bits)11 (12 bits)
PWM:510
Interruptions:511
UART:1 1
SPI:1 1
I2C:11
DAC:01
USB:
MicroUSBUSB-C
 More infoMore info

I wanted to try as many thing as I could, but I don’t have any module (I don’ want to separate the Grove modules from the kit), so I decided to try some things that it’s possible to try only with the board.

 

Installation

First, if we want to program this board using the Arduino IDE, we will need to install a new board. It isn’t including in the official repository, I don’t know why, so we need to add it manually. It’s easy, we just need to copy this link:

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

Here (File > Preferences > Additional boards manager URL):

After that we will be able to search and install the board (Tools > Board > Boards Manager):

 

Examples

 

Blink

The typical blink code, the code is exactly the same than a normal Arduino.

 

Serial

The Serial code change a little bit because this board include a native USB, the meaning is that we have “two Serial connections”, the first one is connected to the USB and the second one is accessible by the I/O pins. We can use SerialUSB with the USB-C and Serial1  with another module connected there.

 

Human Interface Device

Another advantage for having a native USB is that we can use this module as Keyboard, Mouse or Gamepad.

 

FlashStorage

Finally, another thing that we can do is store some information and keep it after turning off the board. However, this board doesn’t include EEPROM, if we want to do that, we will need to use the FlashStorage library. It’s easier to use than the EEPROM library, but the memory will erase each time we write a sketch/code in the flash memory (this doesn’t happen with the EEPROM). So, if we use this memory to save the user configuration (maybe tipping it with a LCD menu), we will lose it when we update the code… in these cases I think is better use an external EEPROM module/chip.

 

Conclusion

It’s a good board, but I can’t think any reason to buy it instead of a ESP8266 or ESP32, both of them include good hardware and communications. Maybe if we don’t need these communications and we need a tiny board it can be good.

 

Good

  • Tiny board.
  • Power-full microcontroller.
  • A lot of memory to save the sketch and execute our code.
  • USB-C.
  • Their website includes an Eagle library to add this board like a component, perfect to embed it in a new design. There are the design Eagle files as well.

Normal

  • It doesn’t have EEPROM.
  • It doesn’t have reset button.

Bad

  • It doesn’t include any wireless communication like Bluetooth or WiFi.
  • The board can be frozen if our code is wrong, then we need to load the bootloader that will fix it… for doing that we need “touch” the bootloader reset button using a cable because the board doesn’t include a physical button. I think they could have put a micro switch (I didn’t have this problem yet).

Write your comment here