Arduino Board Differences

This post was intended to compare the different general purpose Arduino boards. However I’ve been slowed down by the week of fires and hazardous air here in Oregon. I haven’t completed my investigation of the ATmega32U4 yet, and, in fact, my sample Arduino Micro, which uses this microcontroller, was delayed over a week in arrival. I just got it two days ago!

I’ve revised my previous post with photos of the different boards I’m discussing here.

Prices given below are what I’ve observed today. First price are for official Arduino boards on arduino.cc. The second price is what I’ve observed for seemingly reputable clone boards on amazon.com. 

I feel that I can make some recommendations. First, if the Arduino Uno ($23/$13) or Nano ($21/$5) does what you need, stick with them. While they represent the oldest technology with the fewest features, they do have the best application support. They aren’t the least expensive boards from Arduino.cc but there are plenty of low cost, available clones. As far as choosing between the two, buy the Uno if you want to use “shields” or prefer the top connections. It’s probably the best board for beginners. You lose virtually nothing with the Nano and gain a smaller size and two additional analog inputs.

The Arduino Mega ($40/$16) is the obvious choice if you need more pins or memory. However often a redesign, such as using I2C or SPI interfaces, can reduce the number of pins needed. And rethinking the algorithm can reduce the memory requirements. Note that the XCK pins of the USARTs are not brought out which means that even though there are four USARTs in the Mega none of them can be used in synchronous or master SPI modes.

The internals of the Uno, Nano, and Mega are very well covered in my Far Inside The Arduino book.

Applications that need the USART interface will benefit from a board that uses either the ATmega32U4 or ATmega4809 microcontroller. Both of these also cost less (at least in the name brand Arduino trim) than the ATmega328P based boards.

The ATmega32U4 is found in the Leonardo ($21/$12) (packaged like an Uno), Micro ($21/—)  (packaged like the Nano but with 4 additional pins), and the clone Pro-Micro (—/$5) which has a smaller board with pins missing compared to the Micro. Consider the Micro only after careful study!  All of these have a virtual UART allowing connecting via USB to the computer without needing the second microcontroller. This frees up the USART for applications. It has rearranged timer/counters (2-16 bit, 1-8-bit instead of 2-8bit and 1-16-bit, plus a newly designed 10-bit) so isn’t fully compatible with the Uno/Nano. Also, the SPI interface is no longer on pins 10-13 but has separate pins on the Micro and requires using the ICSP connector for access on the Leonardo. SS is not accessible on the Leonardo, so that board cannot be used as an SPI slave.

The virtual UART and an increased bootloader size cuts into the available program memory in these boards. While the Uno/Nano has about 32KB free for applications the Leonardo/Micro has only about 25KB.

I haven’t written a book that covers the internals of the ATmega32U4, yet.

The real winner microcontroller among the AVR-based Arduinos is the ATmega4809. It has far more available RAM and program memory than any but the Mega board, really falling behind only in available PWMs and EEPROM capacity. It has 4 USARTs, leaving three for applications, although not all are supported by the Arduino library without tweaking. It will also run at 20MHz (again, with tweaking). Program memory is addressable as data, so no having to deal with PROGMEM declarations and awkward function calls to access static data. 

This microcontroller is found in the Arduino Nano Every ($11/-), the lowest cost Arduino board product, and the Arduino Uno WiFi REV 2 ($45/-), a fairly expensive board. Frankly, if you want compatibility, this is not the board to use as there are many complaints about compatibility trying to run existing applications on this board. Internally, it’s a nearly completely new design. In fact it pushed me into writing Far Inside The Arduino: Nano Every Supplement to show how to use it to its fullest.

There are also the ARM based boards. I haven’t checked these out. I have programmed ARM microcontrollers professionally, but not the specific chips in the Arduino boards, nor with the Arduino tool chain. I expect “issues” using them, the first being that they are all 3.3v boards. Also, trying to mold these into looking like Uno/Nano boards is really foolish. So although I liked the ARM microcontrollers I used, I can’t see recommending the ARM based Arduino boards if you wan’t to fully utilize their capabilities.