Choosing a microcontroller for a project can be at once both daunting and exhilarating.
There are so many factors and variables to consider. Besides the obvious hard
factors of processor speed, number and type of IOs, unit cost, there are a
number of soft factors such as familiarity with tools and architecture, software
support, development environment, supported languages, library support, and
community support. Each microcontroller consists of a constellation of hardware
and software tools that compose its ecosystem. We will look at some of the most popular options available: the Arduino, the Raspberry Pi, the Netduino, and the Beaglebone Black.
The Arduino ecosystem consists of a wide variety of Arduino compatible hardware, shields (add on boards) the Arduino IDE, and Arduino libraries. The Arduino board is really just a thin wrapper around Atmel’s AVR processor. One 16Mhz ATmega328, plus a USB interface, power regulators, and standard pinout equals an Arduino Uno. The Atmel processors supported by the Arduino software tools range from the ATTiny85 on the low end (Trinket,$8) to the Atmel ARM Cortex-M3 SAM3X8E (Arduino Due,$49) and ATMega2560 (Arduino Mega,$59 ) on the high end.
The current trend is to extend the upper end of the Arduino performance spectrum by combining an AVR processor with a higher end processor running a Linux variant on the same board. Examples of this “two for one” strategy are: The $80 YUN (ATMega32u4 + Atheros AR9331), the Tre (ATMega32u4 + TI Sitara AM3359AZCZ100 (ARM Cortex-A8)), and the $100 Udoo (Freescale i.MX 6 ARM Cortex-A9 + Atmel SAM3X8E ARM Cortex-M3 ).
The Arduino software tools consist of the Arduino IDE, a multiplatfrom simplied development environment. The IDE is written in Java andruns on Windows, Linux, and Mac. The Arduino IDE supports a simplified version of C, derived from the Processing language. Under the hood, the development environment is comprised of various open source tools, such as avr-gcc, avrdude. Arduino compatible boards are programmed with a special bootloader that simplifies loading programs on to the Arduino. A more flexible and powerful alternative to the Arduino IDE is The Atmel Studio IDE produced by Atmel, the manufacturer of the AVR family of semiconductors. Atmel Studio can take full advantage of all of the microcontroller features. No bootloader is required, so all of memory is available for user programs.
There are a wide variety of specialized and less popular development environments available. A list can be found on the Arduino Development Tools webpage.
Advantages: Low cost, large community, migration to professional IDE possible, hard real time, multiplatform IDE
Disadvantages: Primitive default IDE, pseudo C language, lack of multithreading, primitive / lack of debugging support, no built in graphics.