This week, the group assignment was to start comparing different types of microcontrollers. In the lab, we have 2 that we use a lot, the Seeed Xiao RP2040 and we also use the Arduino UNO board. We found interesting to test with both these kinds of architectures because one is basically a stand alone chip with ports, cheap and very potent and robust, and the other is a already developed commercial board that has most of the operations covered and is way bigger because of everything built on top of the main processor which is the ATMEGA328P. So here we go:
Since we mostly need to understand how a stand alone chip works and most of the Fab examples are shown with it, we chose to explain how the Seeed XIAO RP2040 works, but to make the comparison more visible and to understand the uses of both better, here is a little table with the specifications of the XIAO along the UNO that was given to me by chatGPT:
Specification | SEEED Xiao RP2040 | Arduino UNO |
---|---|---|
Microcontroller | Raspberry Pi RP2040 | ATmega328P |
Processor | Dual ARM Cortex-M0+ | AVR (8-bit) |
Clock Speed | 133 MHz | 16 MHz |
SRAM | 264 KB | 2 KB |
Flash Memory | 2 MB | 32 KB (0.5 KB used by bootloader) |
Digital I/O Pins | 11 | 14 (6 can be used as PWM outputs) |
PWM Outputs | 4 (shared with digital I/O) | 6 (shared with digital I/O) |
Analog Input Pins | 4 | 6 |
USB | USB-C | USB-B |
Debug Interface | SWD | ICSP (In-Circuit Serial Programming) header |
Operating Voltage | 3.3V | 5V |
Input Voltage | 5V (via USB-C) | 7-12V (recommended), 6-20V (limit) |
Current Consumption | ~ 44.6 mA (running at 133 MHz) | ~ 50 mA |
Dimensions | 21 x 17.5 mm | 68.6 x 53.4 m |
Weight | 1.7 g | 25 g |
One of the most important things to note is that although the Xiao chip can work with an input of 5V, the operation is in 3.3V, which basically means that all the peripherals need to also work with those voltages or have tweaks made to work properly.
Here are also a picture of the Pins and what they are used for respectively, this is very important information to have when you are about to program:
So, based on all the information and some usage done in the lab beforehand, we can see that both of them are very good for very different reasons.
While the Arduino UNO is a very nice board to start learning with, because of the ease to use, extended support and tutorials and also the huge community and already made peripherals that are adapted to the technology, it may fall short for bigger projects, since its memory and RAM are not very big. We can make most simple DIY projects with it. It’s also more convenient if you want to use many components together, because it has more PIOs than the XIAO.
The XIAO is way more robust, since it has way more processing power and memory and flash, thanks to the Dual ARM Cortex-M0+ processor, it is also a lot faster when you compare the 16MHz clock of the Arduino UNO and the 133MHz that this has. It can be used for many bigger projects that require a lot of the thinking to be done inside the micro, it is a great starter for machine learning mini projects. It is still easy to use, but since it is quite small, the PIOs are less available and the entry level to use it is a tiny bit harder. You have to build the space for it to connect with already made peripherals, and also you have to solder it since it is only a chip, not a board
The bigger difference between both architectures is the connections that can be made. As stated before, the Arduino already comes with the ports ready to be used with connections made on the board, with the XIAO you have to create what you need around it for your usage. This is a big difference and it is what makes the Arduino entry level, and the XIAO for more experienced people.
The way you connect the micros to the computer is also something to note, while the Arduino UNO has a USB-B connector, which is not too common to find, the XIAO comes with an USB-C connection that allows the user to grab the cable they also use for their phones and all.
Regarding programming, this is another place where the XIAO is a better contender, since it is more robust it can work with many different Development Environments, like MicroPython, CiruitPython, PlatformIO, and even the Arduino IDE. It can take many different languages too, like python, c++, etc.
This is not the case for the Arduino UNO, the small processor it has doesn’t really allow for the chip to be programmed with many different languages, although there are some people that have worked around it to make different environments for it even in Block coding. Most of the programming below is always C++. Which means that the main software to program it is its proprietary one, the Arduino IDE.