Microcontrollers and Small Computers
Microcontrollers and computers are the brain of your project. Although a lot can be done without them, they tend to be the easiest way to get complex or interactive behaviors out of an electronic project. Below I will describe bare microcontroller chips, microcontroller boards which have revolutionized electronic art, making it possible for all skill levels to create amazing art, and small ARM computers which bridge the gap between small electronics and full fledged computer controlled art.
Microcontrollers
Microcontrollers are small, single-chip computers which generally offer input and output capabilities, a small amount of memory, and a processor. Typically you program these cores to run a single program (without surrounding operating system) written in C or assembly language. There are several different brands each with their own instruction sets and capabilities.
Although small, some can be quite powerful, and usually a chip can be found which matches up very well with the capabilities you need for an electronic project. Unfortunately each brand of microcontroller may need a proprietary programmer, which transfers the program from a computer to the chip’s program memory. The image above shows a PIC12F1822 microcontroller as well as the PICkit programmer available from Microchip Technology. Microcontollers are suited to projects which require many microcontrollers, which incude mass-produced parts, or which may have very tight form-factor requirements. I do not recommend starting with microcontrollers, but instead using more user-friendly microcontroller boards when starting out.
Benefits
- Many brands and models to choose from
- Adapt to any form factor
- Easily place in custom circuit board
- Good survival rate in harsh environments
Drawbacks
- Requires separate programmer and proprietary tools
- Debugging can take longer as programming may require removing it from project
- Usually requires higher level of expertise
Microcontroller Boards
Microcontroller boards are circuit boards which include a central microcontroller as well as the electronics to power the board and program the board. They typically do not need a separate programmer, and generally use open source tools like the Arduino IDE or Python. These boards were popularized by the Arduino project which formed to make a low-cost electronic platform for non-engineers. Arduino boards are open source hardware, and therefore other companies can replicate the design, though they are prohibited from using the name. There are now a wide variety of microcontroller boards available, but I recommend starting with one of the Arduino boards as they are very popular and reliable.
Pictured above is an Arduino UNO board, which is one of the original Arduino designs. Below that is a Seeeduino board which uses the basic hardware design of the Arduino UNO, but is made by Seeed Studio. These boards both can be programmed with the Arduino IDE. The black board above is Adafruit’s Metro M0 Express which can be programmed in Python.
Most of these boards include Digital I/O, Analog I/O, and communication SPI and I2C communication protocols to interact with electronic projects. I recommend starting with these boards if you are just starting out with electronics. There are Arduino tutorials and Adafruit tutorials to get you started.
Benefits
- Easy to integrate into electronic projects
- Open source tooling
- Simple C or Python programming language
- Many available libraries for controlling motors, LEDs, etc…
- Good survival rate in harsh environments
- Suitable for all skill levels
Drawbacks
- Larger form factor than microcontrollers themselves (though there are some very small boards, such as the Teensy and Trinket)
- Complex electronics must be put on separate circuit board
ARM Computers
ARM computers are full computers which have GPIO ports to send and receive electronic signals, and also can communicate using SPI and I2C. They also typically include the ability to use wired or wireless internet and interface with HDMI monitors as well as USB devices. Unlike laptops or desktops, these computers take up less space and are usually more rugged, however they are much less powerful. Nevertheless these computers can support video and other signal processing, video playback, text rendering, and very advanced projects. They can also use USB input devices such as keyboards, joysticks, and sensors such as Xbox kinect.
The most popular single-board ARM computer is the Raspberry Pi, which is shown in the image above on the left. There are a number of generations of Raspberry Pi, each one with more power than the previous generation. There are others including the BeagleBone, shown above on the right. Typically you must install an operating system (usually based on Linux), but you can program the device by logging directly into the device either over internet or by plugging in a keyboard and monitor. Tutorials are available on the Raspbery Pi Foundation page for the Raspberry Pi, and the BeagleBoard page for the BeagleBone and other boards they produce.
Benefits
- Can create highly complex programs using just about any language
- Can put full Linux operating system on board, along with all the libraries of that operating system
- Can usually change the program on the board by changing a micro SD card.
- Wide variety of tooling
Drawbacks
- Real-time operation can be difficult
- Not as robust as microcontroller boards and microcontrollers in harsh environments
- Longer boot time
- Skill level required can depend on operating system and card features
- Complex electronics must be put on a separate circuit board