Microprocessor platforms and interface boards

There's a huge variety of boards for running code on and interfacing with sensors, actuators, the internet and so on. Around each main kind of board you can find an ecosystem of add-on boards which make connecting to things easier and get you up and running with sample code. The names vary: shields, FeatherWings, HATs, and break-out modules.

Considerations when choosing a board:

  • What programming environment are you comfortable with? Wiring/C? Javascript? Python?
  • How mobile should it be? Some controllers are smaller and can run off battery, or even include the necessary connector and charging circuits for a Li-Po battery.
  • What kinds of inputs/actuators do you want to work with? Is an add-on board needed, and which platforms do they support?
  • Media? Do you expect to work with audio, data from a camera or display graphics on a screen? A single-board computer is probably your best option
  • Connectivity? Do you want to access the internet, or exchange data between devices? You might want onboard wifi and/or Bluetooth Low Energy (BLE) or another radio technology. With the ESP-family of chips, it's now possible for even the cheapest ($1) boards to include wifi and BLE
  • Integration? Do you want to emulate a USB input device or MIDI controller as a way of quickly connecting with existing systems? Some boards make this trivially easy, like Teensy.
  • Voltage: Low-power boards are great for running of battery, but it can make connecting some sensors/actuators more complicated. Boards are typically 3.3V or 5V.
  • Price: If you know what you want to use the board for you can be quite ruthless in choosing just the right board for a situation and saving money by not paying for features you don't need.

There is the Single Board Computer Database to help you find the right board too.

Basic

These basic controllers are programmable in Wiring, a slight twist on the C language) that makes it easier to program. They tend to be limited in processing speed and memory, which makes single-board computers a better alternative if you want to drive displays.

  • Adafruit Metro M0 Express - Arduino compatible but also programmable with Python, a more powerful version of the Uno
  • Arduino Uno - A simple board, easy to connect things up to, in some cases you don't even need a breadboard. Quite a large footprint, and runs at 5V. A smaller version is the Micro, Nano and Mini - some of these have trade-offs, mind you.
  • Espruino - Javascript-based, slightly more advanced platform
  • Teensy - Small, cheap board often used for its USB capabilities. It's very easy to get a Teensy working as a fake USB keyboard, MIDI controller and so on, making it very easy to integrate with other systems. It is generally compatible with Arduino-style shields.
  • Tessel - Microcontroller with wifi that runs Javascript and has easy plug'n'play modules

Boards with wifi and/or BLE

Compact/wearable

Barebones

Popular development boards usually have a from Atmel or ST at their heart. It's not so difficult to work directly with these chips if you want to reduce the footprint of your project or save costs by omitting components and features you don't need.

Digispark board
!

The ATtiny series of chips from Atmel easily used since they come in a easy to work with form factor. To begin, try a Digispark (or clone from Aliexpress) which is based on the ATtiny85. For a small price you get an easily programmable chip with 6 GPIOs, I2C and SPI and PWM.

Once that's mastered, you can try working with the raw chips. To program, them you can use a dedicated programmer like this Tiny AVR Programmer from Sparkfun, which gives the convenience of USB. Or you can also program the chip via an existing Arduino board and a few components.

Ready to go

These boards have in-built sensors and outputs which encourage quick hacking

  • Circuit Playground - Cheap, small and comes in-built with sensors, buttons and Neopixels
  • Espruino Puck.js - Battery-powered, compact Javascript-programmable with BLE, NFC and sensors

Full computer

Single-board computers (SBC) can bring a lot of extra computational power to a project. They tend to be necessary when working with audio and video. Since they are full computers, usually running Linux, they can be more complicated to set up but gives more freedom with what programming language you use and you can get the board doing a few things in parallel. They can also be put to use as hubs for interconnecting simpler devices that connected via USB, serial or BLE so that your regular laptop is not tied up.

These days, SBCs are dirt cheap, too.

It's usually possible to interface to random break-out boards and modules that may have been designed for something like an Arduino. Some of these computers have Arduino-compatible pin headers, or at the very least analog/digital inputs or data busses. Unlike basic controller boards, SBCs can be multi-tasked. This can be a benefit, but also means some timing-intensive tasks such as working with Neopixels can be more difficult. Most of the time, it's easy to connect a SBC to a 'slave' microcontroller board to handle this.

  • CHIP - Tiny computer-on-a-board that is cheaper than many Arduino options
  • Raspberry Pi - Pi comes in a few different form-factors, some with in-built connectivity. It has arguably the widest range of add-on boards and accessories, see for example the range from Pimoroni and Adafruit.
  • LattePanda - Tiny computer that runs Windows and has an in-built Arduino microprocessor!
  • Up boards
  • Udoo - A few different board versions that can run Windows, Linux and Android. The X86 and Quad/Dual boards are 3.3V Arduino shield compatible.
  • ESPRESSObin - Cheap and powerful, but lacking display output

Requires connection to a computer

  • Phidgets - USB-connected sensors, actuators and input components for rapid prototyping. Nodejs API