Skip to Content

Arduino Nano Board Guide (Pinout, Specifications, Comparison)

Arduino Nano Board Guide (Pinout, Specifications, Comparison)

If you are looking for the specifications, pinout, fritzing model, datasheet, or comparison of an Arduino Nano board, then you have come to the right place!

This article includes everything you need to know about each of the 5 currently available Arduino Nano boards. If you have any questions, please leave a comment below.

Recommended articles

Arduino Nano

Arduino Nano (Source: Arduino)

The Arduino Nano was first released in 2008 and is still one of the most popular Arduino boards available. The Nano is a breadboard-friendly board, based on the ATmega328 8-bit microcontroller by Atmel (Microchip Technology). It has more or less the same functionality as the Arduino Uno but in a smaller form factor. The only thing that is missing is a DC power jack and it works with a Mini-B USB cable instead of a standard one.

The specifications of the latest version of the Arduino Nano can be found below.

Arduino Nano specifications

MicrocontrollerATmega328
Operating voltage5 V
Input voltage (VIN)6-20 V
Power consumption19 mA
Flash memory32 KB of which 2 KB is used by bootloader
SRAM2 KB
Clock speed16 Mhz
EEPROM1 KB
DC current per I/O pin40 mA (20 mA recommended)
Digital I/O pins22
PWM outputs6 (D3, D5, D6, D9, D10, D11)
Analog input pins8 (ADC 10 bit)
I2CA4 (SDA), A5 (SCL)
SPID10 (SS), D11 (MOSI), D12 (MISO), D13 (SCK)
LED_BUILTIND13
PCB size18 x 45 mm
Weight7 g
CostCheck price

If you want to compare the specifications and functionality of this board with the other boards of the Arduino Nano family, check out the comparison table at the end of this article.

The Arduino Nano is open-source hardware! You can download the schematics for this board here:

The Fritzing model of the Arduino Nano can be found here:

Arduino Nano pinout

The pinout of the Arduino Nano can be found in the diagram below:

Arduino Nano pinout
Arduino Nano pinout

All of the digital pins of the Arduino Nano can be used as input or output, using the functions pinMode(), digitalRead(), and digitalWrite(). They operate at 5 V and each pin can receive or provide a maximum of 40 mA of current.

All the digital and analog pins also have an internal pull-up resistor (disconnected by default) of 20-50 kOhms. To use this pull-up resistor, you can use:

void setup() {
  pinMode(3, INPUT_PULLUP);
}

This can be useful when you don’t want a pin to be floating, e.g. when you connect a button to a pin.

Note that the analog pins can also be used as digital pins, using the aliases A0, A1, etc. The exception is the Arduino Nano’s A6 and A7 pins, which can only be used as analog inputs.

pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);

Some pins also have additional functions which you can find in the table below:

Pin numberPin nameTypeSpecial function
1D1/TXDigital PinSerial communication (TX)
2D0/RXDigital PinSerial communication (RX)
3RESETOther pinReset (active LOW)
4GNDGround
5D2Digital PinExternal interrupt
6~D3Digital PinExternal interrupt
8-bit PWM output
7D4Digital Pin
8~D5Digital Pin8-bit PWM output
9~D6Digital Pin8-bit PWM output
10D7Digital Pin
11D8Digital Pin
12~D9Digital Pin8-bit PWM output
13~D10Digital PinSPI communication (SS)
8-bit PWM output
14~D11Digital PinSPI communication (MOSI)
8-bit PWM output
15D12Digital PinSPI communication (MISO)
16D13Digital PinSPI communication (SCK)
Connected to a built-in LED
17+3V3Power
18AREFAnalog PinReference voltage for the analog inputs
19D14
A0
Digital Pin
Analog Pin
20D15
A1
Digital Pin
Analog Pin
21D16
A2
Digital Pin
Analog Pin
22D17
A3
Digital Pin
Analog Pin
23D18
A4
Digital Pin
Analog Pin
I2C communication (SDA)
24D19
A5
Digital Pin
Analog Pin
I2C communication (SCL)
25D20
A6
Digital Pin
Analog Pin
Cannot be used as a digital pin
26D21
A7
Digital Pin
Analog Pin
Cannot be used as a digital pin
27+5VPower
28RESETOther pinReset (active LOW)
29GNDGroundGround
30VINPower6 – 20 V input to the board

Arduino Nano ICSP pins

Arduino ICSP header

At the bottom of the Arduino Nano, you can find the ICSP (In-Circuit Serial Programming) header (6 pins). The pinout of this connector is as follows:

Pin numberPin NameTypeFunction
1MISOCommunicationMaster in slave out
2+5VPowerSupply voltage
3SCKCommunicationClock
4MOSICommunicationMaster out slave in
5RESETOther pinReset (active LOW)
6GNDGroundSupply ground

The ICSP connector can be used to program the microcontroller using Arduino ISP or similar (this bypasses the bootloader).

How to power the Arduino Nano?

The Arduino Nano can be powered in 3 ways:

  1. Mini-B USB connector: The most popular way to power the Arduino Nano board is with a USB cable. You can use a Mini-B USB cable connected to the USB port of your laptop, PC, or 5 V USB power adapter. This cable is also used to program the Arduino Nano.
  2. VIN pin: You can also power the Arduino Nano with an unregulated 6 – 20 V external power supply connected to the VIN pin (pin 30). This pin can also be used to power the microcontroller with a battery for example.
  3. +5V pin: It is also possible to use a 5 V external regulated power supply connected to the +5V pin (pin 27). However, this is method is not recommended because it bypasses the voltage regulators. If you want to power the board in this way, you have to make sure that the voltage level is stable and does not exceed 5 V.

If you connect multiple voltage sources, the power source is automatically selected to the highest voltage source.

Programming the Arduino Nano

The easiest way to program the Arduino Nano is with the Arduino IDE or the Arduino Web Editor. The advantage of the Arduino Web Editor is that you don’t need to install anything and your sketches are stored in the cloud.

Selecting the right board type and processor/bootloader

In the desktop Arduino IDE, you have to select the right board type, processor, and port if you want to upload sketches to the Arduino Nano.

To select the right board, go to Tools > Board > Arduino AVR Boards > Arduino Nano.

Since January 2018, Arduino Nano boards come with a new bootloader. If you have a genuine Arduino Nano that was purchased after this date, you have to select ATmega328P under Tools > Processor > ATmega328P.

If you have an older board (or an Arduino Nano compatible board/knockoff from Amazon, AliExpress, Banggood, etc.), you have to choose Tools > Processor > ATmega328P (Old Bootloader).

Board Manager

If you get an error while uploading the sketch, try changing the processor until the program compiles and uploads properly.

Lastly, select the COM port to which the Arduino Nano is connected under Tools > Port.

Communication

The Arduino Nano has several default pins that are used for communication between the Arduino board and a computer or other devices.

Serial

Digital pins D0 (RX) and D1 (TX) are used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the corresponding pins of the FTDI USB-to-TTL Serial chip.

I2C

Analog pins A4 (SDA) and A5 (SCL) support I2C (TWI) communication using the Wire library. This library can be used to communicate between the Arduino Nano and sensors, displays, other Arduino boards, etc.

In the table below, you can find the I2C pins of some of the other Arduino boards.

BoardSDASCL
Arduino UnoA4A5
Arduino NanoA4A5
Arduino Micro23
Arduino Mega 25602021
Arduino Leonardo23
Arduino Due2021
SDA and SCL pin locations on different Arduino boards.

SPI

Digital pins D10 (SS), D11 (MOSI), D12 (MISO), and D13 (SCK) support SPI communication. Although SPI communication is provided by the underlying hardware, it is not currently included in the Arduino language.

Note that most of the SPI pins can also be found at the ICSP header, the only pin that is missing is the slave select pin (SS). This header is for example used by the Pixy2 camera to talk to the Arduino over SPI.

Arduino Nano LEDs

The Arduino Nano has 4 LEDs; TX LED, RX LED, Power, and LED_BUILTIN.

Arduino Nano LEDs

The TX and RX LEDs will flash when data is being transmitted via the FTDI chip and USB connection to the computer (but not for serial communication on pins 0 and 1).

The power LED (ON) lights up when the board is powered up.

The LED_BUILTIN (L) is connected to digital pin 13 of the board. When this pin is HIGH, the LED is on, when the pin is LOW, it’s off. You can also use the constant LED_BUILTIN in your code, e.g. when using digitalWrite(pin, value).

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Arduino Nano Every

Arduino Nano Every (Source: Arduino)

The Arduino Nano Every is one of the newer, more powerful Arduino Nano boards. It uses the ATmega4809 microcontroller and is the cheapest Arduino board you can buy!

This board is also 5 V compatible and has the same form factor as the original Arduino Nano (18 x 45 mm). The small size and low cost make it ideal for wearable projects, low-cost robotics, drones, and also general use to control smaller parts of larger projects.

The key feature of the Arduino Nano Every is its new processor with more RAM and flash memory. This means that you can make larger programs with more variables than with the Arduino Uno.

If you need multiple Arduino Nano Every boards, you can also buy them in a pack at a discounted price, saving on the unit price of each board.

Arduino Nano Every specifications

MicrocontrollerATmega4809 (datasheet)
Operating voltage5 V
Input voltage (VIN)7-21 V
DC current per I/O pin40 mA (20 mA recommended)
DC current for 3.3 V pin50 mA
CPU flash memory48 KB (ATMega4809)
SRAM6 KB (ATMega4809)
Clock speed20 MHz
EEPROM256 byte (ATMega4809)
PWM pins5 (D3, D5, D6, D9, D10)
UART1
SPI1
I2C1
Analog input pins8 (ADC 10 bit)
Analog output pinsOnly through PWM (no DAC)
External interruptsAll digital pins
LED_BUILTIND13
USBATSAMD11D14A
PCB size18 x 45 mm
Weight5 g (with headers)
CostCheck price

You can download the schematics for this board below:

The Fritzing model of the Arduino Nano Every can be found here:

Arduino Nano Every pinout

The pinout of the Arduino Nano Every can be found in the diagram below. Note that the Arduino Nano Every is almost 100% pin-compatible with the original Arduino Nano and it also runs on 5 V. The important differences are:

  • This board doesn’t have PWM on D11 and therefore it supports only 5 PWM outputs instead of 6.
  • SPI SS is on pin D8 instead of D10.
  • External interrupts are allowed on all pins, not just pin D2 and D3.
  • Analog pins A6 and A7 can also be used as digital pins.

The green LED on the board (right) is the power LED and the orange LED (left) is LED_BUILTIN.

Arduino Nano Every pinout
Arduino Nano Every pinout

Programming the Arduino Nano Every

If you want to use the desktop Arduino IDE to program the Arduino Nano Every, you have to follow a couple of steps before you can upload sketches to the board.

Install megaAVR core and drivers

First, you need to add the Arduino MegaAVR core to the Arduino IDE. To do this go to Tools > Board > Boards Manager. Now search for ‘megaAVR’ and select Arduino megaAVR Boards by Arduino. Select the latest version and click Install.

Install Library

After you have installed the megaAVR core, the drivers will install automatically once you connect the Arduino Nano Every to your computer with a USB cable.

Select the right board and port

Now select Arduino Nano Every under Tools > Board > Arduino megaAVR Boards.

Next, select the right COM port under the Tools > Port menu. If you disconnect and reconnect your board while looking at the menu, you should be able to see which entry is the Arduino board.

Compilation errors? Try “Register emulation”

Although the Arduino Nano Every is fully electrically compatible with the original Arduino Nano (it also works at 5 V), you might run into issues if your (old) code uses third-party libraries that don’t manage the pin mapping of the microcontroller.

If you have compilation errors you can try to turn on the “Register emulation” mode to emulate ATmega328P registers in the ATmega4809 while compiling.

Register Emulation

Arduino Nano 33 IoT

Arduino Nano 33 IoT (Source: Arduino)

The Arduino Nano 33 IoT is one of the 3.3 V variants of the Arduino Nano family. It features an Arm Cortex-M0+ microcontroller, pre-certified ESP32-based WiFi and Bluetooth module from u-blox, and an onboard ECC608A crypto chip which provides IoT security. The board also features an LSM6DS3 6-axis IMU.

The Nano 33 IoT is essentially an MKR WiFi 1010, but it sacrifices a battery charger and shield compatibility in favor of a smaller footprint and lower cost. It costs even less than the original Arduino Nano!

Arduino Nano 33 IoT specifications

MicrocontrollerSAMD21 Cortex®-M0+ 32bit low power ARM MCU
Radio moduleu-blox NINA-W102
Secure elementATECC608A
Operating voltage3.3 V
Input voltage (VIN)5-21 V
DC current per I/O pin7 mA
CPU flash memory256 KB
SRAM32 KB
Clock speed48 MHz
EEPROMNone
Digital I/O pins14
PWM pins11 (2, 3, 5, 6, 9, 10, 11, 12, 16 / A2, 17 / A3, 19 / A5)
UART1
SPI1
I2C1
Analog input pins8 (ADC 8/10/12 bit)
Analog output pins1 (DAC 10 bit)
External interruptsAll digital pins (all analog pins can also be used as interrupt pins, but will have duplicated interrupt numbers)
LED_BUILTIND13
USBNative in the SAMD21 processor
Inertial measurement unit (IMU)LSM6DS3 (6-axis)
PCB size18 x 45 mm
Weight5 g (with headers)
CostCheck price

The Arduino Nano 33 IoT is open-source hardware! You can download the schematics for this board below:

The Fritzing model of the Arduino Nano 33 IoT can be found here:

Arduino Nano 33 IoT pinout

The pinout of the Nano 33 IoT is almost exactly the same as the original Nano board (see diagram below).

Arduino Nano 33 IoT pinout
Arduino Nano 33 IoT pinout

A couple of important things to remember are:

  • The Arduino Nano 33 IoT only supports 3.3 V for the GPIO pins, so it is not 5 V tolerant like most of the other Arduino boards. Connecting more than 3.3 V to the GPIO pins will damage the board!
  • The +5V pin on the board is not connected by default. If you want to use this pin, you have to short the VBUS jumper on the back of the board. Note that this pin only outputs 5 V from the board when powered from the USB connector. If you power the board from the VIN pin, you won’t get any regulated 5 V, even if you do the solder bridge.
Arduino Nano 33 IoT VUSB jumper
VUSB jumper on the back of the board
  • As opposed to other Arduino Nano boards, pins A4 and A5 have an internal pull-up and default to be used as an I2C bus. So, usage as analog inputs is not recommended.

Programming the Arduino Nano 33 IoT on the Arduino IDE

If you want to program this board with the Arduino desktop IDE, you need to add the Arduino SAMD Core to it. To do this go to Tools > Board > Boards Manager. Now search for ‘SAMD’ and select Arduino SAMD Boards (32-bits ARM Cortex-M0+) by Arduino. Select the latest version and click Install.

If you properly installed the SAMD Core, Windows should initiate its driver installation process automatically once you connect the board to your computer with a micro USB cable.

Before you can upload your program to the board, select Arduino NANO 33 IoT under Tools > Board > Arduino SAMD (32-bits ARM Cortex-M0+) Boards.

Next, select the right COM port under the Tools > Port menu. If you disconnect and reconnect your board while looking at the menu, you should be able to see which entry is the Arduino board.

Arduino Nano 33 BLE

Arduino Nano 33 BLE (Source: Arduino)

The Arduino Nano 33 BLE is based on the powerful Nordic nRF52840 microcontroller with advanced Bluetooth capabilities. The board features a u-blox NINA B306 module and also includes a 9-axis inertial measurement unit (IMU). The IMU is an LSM9DS1, which is a 3-axis accelerometer, 3-axis gyroscope, and 3-axis magnetometer. You can use the example sketches in the ArduinoLSM9DS1 library to use the sensor.

The main processor is a lot more powerful than the one from the standard Arduino Nano (it has 1 MB of program memory and 256 KB of RAM) and runs at a much higher clock speed. It also includes other amazing features like Bluetooth pairing via NFC and ultra low power consumption modes.

Arduino Nano 33 BLE specifications

MicrocontrollernRF52840
Operating voltage3.3 V
Input voltage (VIN)5-21 V
DC current per I/O pin15 mA
CPU flash memory1 MB (nRF52840)
SRAM256 KB (nRF52840)
Clock speed64 MHz
EEPROMNone
Digital I/O pins14
PWM pinsAll digital pins
UART1
SPI1
I2C1
Analog input pins8 (ADC 12 bit 200 k samples)
Analog output pinsOnly through PWM (no DAC)
External interruptsAll digital pins
LED_BUILTIND13
USBNative in the nRF52840 processor
Inertial measurement unit (IMU)LSM9DS1 (9-axis)
PCB size18 x 45 mm
Weight5 g (with headers)
CostCheck price

The Arduino Nano 33 BLE is open-source hardware! You can download the schematics for this board below:

The Fritzing model of the Arduino Nano 33 BLE can be found here:

Arduino Nano 33 BLE pinout

Arduino Nano 33 BLE pinout
Arduino Nano 33 BLE pinout

Just like the Arduino Nano 33 IoT, you need to short the VBUS jumper on the back of the board if you want to use the +5V output.

You can connect an external NFC antenna between pins D7 and D8 to activate Bluetooth pairing of the board over NFC.

Programming the Arduino Nano 33 BLE/Sense with the Arduino IDE

If you want to use the Arduino Nano 33 BLE or BLE Sense with the Arduino Desktop IDE, you need to add the Arduino nRF528x mbed Core to it. To do this go to Tools > Board > Boards Manager. Now search for ‘nano 33 ble’ and select Arduino nRF528x Boards (Mbed OS) by Arduino. Select the latest version and click Install.

Boards Manager
Boards Manager

If you properly installed the nRF528x Core, Windows should initiate its driver installation process automatically once you connect the board to your computer with a micro USB cable.

Before you can upload your program to the board, select Arduino NANO 33 BLE under Tools > Board > Arduino nRF528x Boards (Mbed OS).

Next, select the right COM port under the Tools > Port menu. If you disconnect and reconnect your board while looking at the menu, you should be able to see which entry is the Arduino board.

Arduino Nano 33 BLE Sense

Arduino Nano 33 BLE Sense (Source: Arduino)

The Arduino Nano 33 BLE Sense features the same 32-bit ARM Cortex-M4 processor as the Arduino Nano 33 BLE, but also includes a bunch of onboard sensors: a 9-axis IMU, temperature, pressure, humidity, light, color, gesture sensors, and even a microphone that are managed through several specialized Arduino libraries.

Arduino Nano 33 BLE Sense sensors (Source: Arduino)

This board has become very popular as a machine learning platform using TensorFlow Lite for microcontrollers (TinyML). You can find a detailed getting started guide on the Arduino site and some great examples on twitter.

Arduino Nano 33 BLE Sense specifications

MicrocontrollernRF52840
Operating voltage3.3 V
Input voltage (VIN)5-21 V
DC current per I/O pin15 mA
CPU flash memory1 MB (nRF52840)
SRAM256 KB (nRF52840)
Clock speed64 MHz
EEPROMNone
Digital I/O pins14
PWM pinsAll digital pins
UART1
SPI1
I2C1
Analog input pins8 (ADC 12 bit 200 k samples)
Analog output pinsOnly through PWM (no DAC)
External interruptsAll digital pins
LED_BUILTIND13
USBNative in the nRF52840 processor
Inertial measurement unit (IMU)LSM9DS1 (9-axis)
MicrophoneMP34DT05
Gesture, light, proximityAPDS9960
Barometric pressureLPS22HB
Temperature, humidityHTS221
PCB size18 x 45 mm
Weight5 g (with headers)
CostCheck price

The Arduino Nano 33 BLE Sense is open-source hardware! You can download the schematics for this board below:

The Fritzing model of the Arduino Nano 33 BLE Sense can be found here:

Arduino Nano 33 BLE Sense Pinout

Arduino Nano 33 BLE Sense pinout
Arduino Nano 33 BLE Sense pinout

Programming the Arduino Nano 33 BLE Sense with the Arduino IDE

You can use the same procedure as for the Arduino Nano 33 BLE to install the Arduino nRF528x mbed Core (see above). Because the Arduino Nano 33 BLE Sense is a hardware variation of the Arduino Nano 33 BLE, both boards are recognized as the Arduino nano 33 BLE and this is normal. In the board manager and the board selection, you will only find Arduino Nano 33 BLE.

Arduino Nano comparison

From left to right: Arduino Nano, Arduino Nano Every, Arduino Nano 33 IoT, Arduino Nano 33 BLE, Arduino Nano 33 BLE Sense

Are you wondering which Arduino Nano board would work best for your project? Check out the table below for a comparison.

Arduino Nano comparison table

PropertyArduino NanoArduino Nano EveryArduino Nano 33 IoTArduino Nano 33 BLEArduino Nano 33 BLE Sense
MicrocontrollerATmega328ATMega4809SAMD21 Cortex®-M0+ 32bit low power ARM MCUnRF52840nRF52840
Operating voltage5 V5 V3.3 V3.3 V3.3 V
Input voltage (VIN)6-20 V7-21 V5-21 V5-21 V5-21 V
Clock speed16 Mhz20 MHz48 MHz64 MHz64 MHz
Flash32 KB48 KB256 KB1 MB1 MB
RAM2 KB6 KB32 KB256 KB256 KB
Current per pin40 mA40 mA7 mA15 mA15 mA
PWM pins6511AllAll
IMUNoNoLSM6DS3
(6-axis)
LSM9DS1
(9-axis)
LSM9DS1
(9-axis)
Other sensorsNoNoNoNoMicrophone, gesture, light, proximity, barometric pressure, temperature, humidity
WiFiNoNoYesNoNo
BluetoothNoNoYesYesYes
USB typeMiniMicroMicroMicroMicro
Price*$20
Amazon
$12.50
Amazon
$20
Amazon
$23
Amazon
$33
Amazon
Comparison of Arduino Nano boards

Makerguides.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to products on Amazon.com. As an Amazon Associate we earn from qualifying purchases.

*Prices can vary depending on your region and distributor.

Form factor

Besides the differences mentioned in the table above, there is one more important difference between the original and the newer Arduino Nano boards and that is the form factor.

The original Arduino Nano has components mounted on both the top and the bottom of the board, whereas the newer Arduino Nano boards only have components mounted on the top.

Another difference is that you can get the board with or without soldered headers. The boards without soldered headers do include them in the box so you can still install the headers yourself. Note that the board without pre-soldered headers is also a bit cheaper.

Lastly, besides the standard through holes, the board also comes with castellated connectors.

Close-up of the castellated pads

All these features combined allow you to solder the board directly onto your own design, minimizing the height of your whole prototype.

The outside and hole dimensions are the same for all of the boards.

Conclusion

With their small form factor and low cost, the Arduino Nano boards are a great choice for many electronics projects. The newer boards add several awesome features to the original Arduino Nano, like WiFi and Bluetooth connectivity, an IMU, and several other onboard sensors.

If you want an onboard battery charge controller or more pins, check out the MKR family of boards and the Arduino Mega.

If you have any questions, suggestions, or think that things are missing in this article, please leave a comment below.

Note that comments are held for moderation to prevent spam.

Creative Commons License

Dave A

Monday 4th of December 2023

One important thing left out is the adc reference voltage, is it 3.3 or 5v. Can higher ext voltages be used.

Stefan Maetschke

Monday 4th of December 2023

AREF cannot be higher than 5V. For the nano boards the default reference seems to be 3.3V but I haven't verified this https://www.arduino.cc/reference/en/language/functions/analog-io/analogreference/

Nate Ocean

Friday 3rd of June 2022

Arduino Nano ICSP pins diagram is wrong. It is rotated 180-degree. Correctly, the #1 pin is on the outside edge of the board.