Skip to main content

 I urgently need individuals who are willing to cooperate on my website and projects.

Smallest complete Arduino board: the Nano DIP 33x10mm

Published: 27 December 2019
Last updated: 09 May 2024

I have developed the smallest Arduino board ever: the Arduino Nano DIP. 
It's compatible with the Arduino Uno, but surprisingly, it has the same size as the ATmega328P-PU chip: 33 x 10mm!

Smallest Arduino: Nano DIP 33x10mm

FOTO VERNIEUWEN...........

Nano DIPSmallest complete Arduino board: the Nano DIP 33x10mm

Why did you build the Nano DIP?

It was just fun to build a complete Arduino on the size of the ATmega328P-PU chip itself. It was a challenge to get all parts on a PCB the size of DIP26 IC. It was a really entertaining puzzle. Moreover, I wanted a solid groundplane, thus as few tracks as possible at the bottom side.
I know, there are better microcontrollers, like the STM32F103C8. But that is not an Atmel chip, which can cause compatibility problems.

Advantages of the Arduino Nano DIP

  • Unparalleled compactness, being the smallest Arduino board ever developed. Its DIP26 size of 33 x 10mm allows for easy integration into projects with limited space constraints.
  • It has more functionality than the Arduino Uno.
  • The DIP26 package leaves more pins free on a solderless breadboard.

Arduino Nano DIP features

  • DIP26 size, 33 x 10 mm.
  • Arduino Uno compatible.
  • ATtiny3217 instead of the ATmega328P.
  • 21 I/O pins (the Arduino Uno has 20).
  • 12 x 10 bit ADC channels.
  • Supply voltage 1.8V - 5.5V.
  • Straightforward pinout.
  • Common USB micro B connector.
  • Decent ground plane.

Additional features compared to the Arduino Uno

  • 1 x fast 350ksps 8-bit DAC (this is not a PWM DAC).
  • The USB supply pin is protected by an ideal diode that doesn't have a 0.7V voltage drop.
  • A 2-pole header, which is connected to D2, can be used as a jumper. Use pinMode(INPUT_PULLUP).
  • The LED at D0 can be disabled by a jumper.

Similarities with the Arduino Uno

  • USB connector for programming and debugging.
  • Bootloader Optiboot preloaded.
  • 32kByte program memory.
  • 2048Byte SRAM.
  • Reset button.
  • 3 LEDs for indication of power, TXD and RXD.
  • 5V regulator .

Missing features compared to the Arduino Uno

  • The clock oscillator has no pins for an external crystal. The frequency accuracy is 2%.
  • There is no 3.3V regulator on board.

ATtiny3227 vs ATtiny3217

My preference is the ATtiny3217 because it has an extra DAC. These are the main differences:

  • ATtiny3217: 1-series, DAC
  • ATtiny3227: 2-series, no DAC,12 bit ADC, 3kbyte RAM, differential ADC, 2 UARTs

See more:

Arduino Nano DIP circuit

Small ATtiny3217 development board circuitNano DIP: Arduino compatible ATtiny3217 board circuit

PCB design

Fitting all 23 components within the 33mm x 7.6mm PCB was a challenge. To make this job easy, I could have opted for small 0201 SMD parts and thin 2 mil traces. However, I chose not to do this. I wanted the PCB to be cheap to produce, which imposed restrictive conditions:

  • PCB trace width / space 6/6 mil.
  • Via drill / outer diameter 12/24 mil.
  • All SMD parts 0402 or larger.

Smallest Arduino: Nano DIP 33x10mm

ATtiny3217 Arduino breakout board in DIP26

OLD Nano DIP, THE NEW ONE HAS USB

OLD Nano DIP, THE NEW ONE HAS USB

FOTOS VERNIEUWEN...........

Here is an video of the OLD Dily3217 board (without USB)
It controls 21 LEDs in this demonstration video on YouTube:

 

OLD Nano DIP, THE NEW ONE HAS USBNano DIP: Arduino compatible ATtiny3217 board

FOTO VERNIEUWEN...........

More memory (32k/2048)

Until the year 2018, the small and cheap ATtiny microcontroller series, such as the ATtiny85, had less memory (8k/512). This was often a serious problem, sometimes you need a microcontroller with a larger memory but small in size. But in 2018, more powerful ATtiny chips were introduced, such as the ATtiny3217. It has 32kByte program memory and 2048Byte SRAM equal to the ATmega328P which is used on the Arduino Uno.

QFN24 package transformed into DIP26 package

For hobbyists, the drawback of the ATtiny3217 is that it is only available in a QFN24 package, with a pin spacing of 0.5 mm, which can only be soldered using a solder mask. Since there is no breadboard-friendly DIL package of the ATtiny3217, you always need a development board. That's why I made the small DIP board, just like I did with the SAM15x15.

Compatibility

The pin numbers are different than the Arduino Nano or UNO, you must change them in the sketch.

5V regulator

The maximum input voltage on the V+ pin is 18V.
The voltage regulator is the AP7370-50Y-13.

Upload sketches with the Arduino IDE

Step 1

Step 2

  • Tools > Board = ATtiny3217 (Optiboot).
  • Board = First set Tools > Clock Speed = 16MHz.
  • Upload the sketch

Note that the bootloader is already burned by me.

How to burn a bootloader into the ATtiny3217

Note that you don't need this step because the bootloader is already burned by me. Read here how you can burn a bootloader yourself: Burning a bootloader into the ATtiny3217.

Calibration of the internal RC oscillator

The accuracy of the internal RC oscillator is factory calibrated within ±4%. This only applies for 0-70ºC 16MHz or 20MHz and voltage between 1.8 and 3.6V. It is possible to perform a secondary calibration of the RC oscillator to obtain a frequency accuracy within ±1% see here. Note that the oscillator temperature coefficient is also corrected and calibrated. 

Checking the clock speed

If you forget to set the clock speed with tools> Clock Speed, it can have serious consequences. For example, at the Yamaha battery dongle, to reduce power consumption, I use a clock frequency of 5MHz instead of 20MHz.  If the factory forgets to set the frequency, the dongle will still work. While the dongle still passes the test, the electronics will overheat. That is why it is important to add a test in the software. In this example, the program stops if the clock frequency is not 5Mhz.

while(checkClockSpeed()) blinkError(5)
bool checkClockSpeed()
{ byte b = CLKCTRL.MCLKCTRLB; // 0=20MHz 1=10MHz 11=5MHz not allowed: 16, 8, 4, 1 MHz
  return b!= 3; 
}

My favorite Arduino chips

  • ATmega328PB is the successor of the ATmega328P
  • ATtiny3217 is very small, but with large memory (32k / 2048) and hardware UART