The Arduino Nano is one of the most popular versions of the Arduino. The low cost of Arduino Nano work-alike clones is one attribute that drives the popularity of the nano design. The use of an ATmega328P makes it compatible with a substantial collection of libraries that go back to the first Arduino that used the ATmega8 - a direct predecessor of the ‘328. Four ‘nano’ designs will be referred to in this document. Arduino Nano refers to a genuine Arduino Nano, Arduino Every refers to the new Arduino Every, nano clone refers to a functional equivalent of a genuine Arduino Nano, and new nano refers to the new design that is the subject of this document. The design of these variants will be analyzed with the goal of creating a new design that has a lower manufacturing cost and remains highly compatible with the legacy nano designs (preceding the new Arduino Every). There is a summary of changes made to create the new nano at the end of this document. PgDn for TL;DR;


The MCU (MicroController Unit) used on the Arduino Nano is the ATmega328P. This is the same MCU used on several other Arduino models and numerous clones. The peripherals are mostly unchanged from the ATmega168 and ATmega8 used on older Arduino models. The most notable change is the increase in flash memory from 8 KiB to 16 KiB and finally 32 KiB. The libraries that are part of Arduino configure the peripherals of the MCU in a way that is suitable for many common uses of a MCU. For example the timer/counter units are configured to generate PWM and also provide a periodic interrupt for timing. In some cases it is necessary to change the configuration of a peripheral to use it for some other purpose. For example the timer/counter peripheral(s) can be used to generate PWM that is suitable for control of small ‘RC’ servo motors. This use requires at a minimum changing the PWM period. The Arduino API does not have a function to do this, so directly accessing the SFRs (special function registers) is required. Doing so makes the application code non-portable to MCU that do not feature the same peripheral and their corresponding SFRs. The new Arduino Every uses a ATmega4809 that features new peripherals. There are certainly advantages to using the latest technology available in the 8 bit AVR family, but SFR and binary compatibility with older MCUs is broken. Existing libraries that access the SFRs will typically be incompatible with this new MCU. It takes courage to remove the headphone jack break backwards compatibility. A few years ago the venerable ‘328 was revised to become the ATmega328PB. This revised MCU features an additional UART, four more GPIO, two more counter/times, and more. It is not pin compatible due to having more GPIO, so it is not a drop-in replacement for the older ‘328s. This new ‘328 not only has new features, it also has a lower price! Microchip, the manufacturer of the ‘328 often introduces new MCUs at a lower price than their direct predecessor. This creates a financial incentive for users to switch to newer parts and provides Microchip with more demand for these newer parts thus improving the economy of scale. The ‘4809 chosen for the Arduino Every is also less expensive than the ‘328 and contributes to the lower price of the Nano Every versus the legacy Arduino Nano. The new nano uses the ‘328PB to achieve the goal of lower cost while not breaking backwards compatibility.

Voltage regulator

Most Ardunio and compatible boards feature a voltage regulator so the board can be powered from some voltage above the nominal 5 volts that the ‘328 and predecessors allow. This is typically a LM340, LM7805, LM1117 or similar. A common use of this capability is to use a 9 volt alkaline battery to power the board and circuitry attached to it. Unfortunately this wastes approximately half of the power in the battery. It is mostly lost as heat in the linear regulator and a little by internal losses in the battery itself. An improvement would be to use a switching...

Read more »