An Arduino History Lesson

In looking at the different general purpose Arduino boards available today, I’ve been thinking of how to tie them all together. So I’ve delved as well as I can into the history of Arduino boards. Frankly, it isn’t particularly easy to do. But I did find what appears to be the starting point — the Arduino Serial RS-232 (version 2). I can’t find anything older. This is apparently the first commercially produced Arduino board. It uses at ATmega8 microcontroller, which has less memory and fewer PWMs but is otherwise basically identical to the ATmega328P in the Uno. Here the microcontroller portion of the schematic:

The connections between the microcontroller pins and the board pins is, shall we say, straightforward. This was continued to today’s Uno, which looks like this:

Two more pins were added to the IOH block copying the SCL and SDA pins, which puts all the digital pins on one side of the board. An LED (buffered now, but not buffered on older Uno boards) to pin 13 was added, and the power block now contains the RESET signal, a 3.3V power, and the board voltage sense pin.

Having done that, the boards using different microcontrollers rather than maintaining the straightforward pin assignments have all attempted to match the Uno for compatibility. Unfortunately, the compatibility isn’t complete, and is only on the surface. All of the microcontrollers have far more to offer than Arduino presents.

So that’s what I’m working on now. I’ll be looking at the Leonardo, Micro, and Pro-Micro (not an Arduino design), which use the ATmega32U4, as well as the previously covered Uno, Nano (ATmega328P), Mega (ATmega2560), and Nano Every (ATmega4809). For orthogonality, there is also the 2nd generation Uno WiFi which uses the ATmega4809 with the Uno form factor.

I’m not going to do a deep dive into the ATmega8. While you can replace the ATmega328P in a modern Uno with the ATmega8, and the Arduino IDE will target it (say it is an “Arduino NG” which I guess means “New Generation” since it has a USB connector rather than the RS-232). I can’t see a good reason in doing so.