Beyond Arduino: Choosing Boards for your Project
For projects requiring greater complexity, or more specific features than is possible with an Arduino (particularly: anything requiring image processing, handling multiple peripherals, multithreading) you might want to explore some of the other boards (both microcontroller- and single-board-computers) that we have at the CCI. Below is a short guide to choosing boards in different scenarios + more details about resources for getting started with different boards. This guide assumes you are already familiar with Arduino, but are encountering its limitations (or curious about other approaches).
I just need more pins -- Arduino Mega
I need something cheap I can buy 20 of and run using Arduino IDE -- It used to be cheaper to buy boards -- right now probably the best option is probably to use . You can also buy supercheap Arduino clones on ebay but do be wary that you might end up with some dud boards.
I need something smaller/wearable -- Arduino Nano BLE is a good bet, or the ESP32 if you prefer to use Wifi
I need multiple boards to do wireless communication -- don't do peer-to-peer communication with Bluetooth it will make you very sad! Try using packet radio instead
I need to do longer range networking than Bluetooth -- you could consider packet radio, or
I need to do multithreading/fast operations -- consider the
I need to connect to an external server --
I want to program using CircuitPython -- (this is a cool thing to want to do for lots of reasons) -- the RP2040 and many of the Adafruit Feather Boards. For a full list of boards that currently support CircuitPython, see Adafruit's Download Guide.
I need to do image processing / run a printer / use a camera -- This is where you start wanting to get into using a Raspberry Pi. If size is an issue / you want to do something quite classic, you might want to consider a purpose-built computer vision board like the OpenMV (be warned though -- they can be quite inflexible and it's difficult to generate your own models for these).
I need to do machine learning -- The larger Raspberry Pi boards are on the edge of doing stuff, you can also use a purpose built board like the Nvidia series (but depending on what you're doing, it might well be more cost effective just to use a Pi and communicate with an external server).
Other Microcontrollers
Adafruit's How To Choose A Microcontroller is also a good guide to look at, but 90% of the boards it recommends are the Adafruit Feather series. One thing to be wary of -- lots of these microcontrollers don't run at 5V, but 3.3V! Be careful that you don't fry them by just sticking them into the same circuit you were using with a Leonardo.
Arduino Mega
The Arduino Mega is based on the ATmega2560 chip, which is a larger version of the ATmega328p chip used for the standard Arduino boards. It has 54 digital input/output pins (of which 15 can be used as PWM outputs), 16 analog inputs and 4 hardware Serial ports
Arduino Nano BLE
We have loads of these little bluetooth boards, which are particularly well-suited
Interestingly, unlike most other Arduino boards, these are not made using the ATMEGA chips but instead the
RP2040 / Raspberry Pi Pico
If you simply need more speed / simple multithreading, you could also consider switching from Arduino to a Raspberry Pi Pico -- these are not the same as other Raspberry Pis: they don't run an operating system, and are instead an interface to a microcontroller called the RP2040.
The other nice thing about RP2040 boards is that some people make them really pretty small -- Solder Party's RP2040 stamp comes in at 1x1 inch (careful, though, as the headers are 2mm rather than the more common 2.54mm pitch, so the rest of your circuit will need to reflect that). You can also sacrifice some pins for easier interfacing with the Seeed XIAO RP2040, which is a similar size but 2.54mm pitch.