Arduino Nano Board: Features, Pinout, Models, and Programming Tutorials

Table of Contents

The Arduino Nano is a popular choice for makers, hobbyists, and engineers who need a capable microcontroller for their electronic projects. It comes with small footprint and flexibility. Whether you’re building a simple sensor-based application or a more complex IoT device, the Arduino Nano provides all the essential features in a portable, easy-to-use package. In this article, we’ll introduce its’ features, specifications, pinout, and programming tutorials.

What is An Arduino Nano?

The Arduino Nano is a compact, versatile microcontroller board that packs a punch despite its small size. Designed to fit in tight spaces, it’s an ideal choice for projects where size matters, such as wearable devices, robotics, and embedded systems. Based on the ATmega328P microcontroller (on the Nano 3.0), the Nano offers 14 digital I/O pins (6 of which can generate PWM output), 8 analog inputs, and a 16 MHz clock speed. Unlike larger Arduino boards, it connects via a Mini-B USB port, making it perfect for breadboard-based prototyping without the need for additional hardware.

Arduino Nano Boards V3.0
Arduino Nano Boards V3.0

Key Features and Specifications

  • Processor: ATmega328P (Nano 3.0 version)
  • Operating Voltage: 5V
  • Recommended Input Voltage: 7–12V
  • Input Voltage Range: 6–20V
  • Digital I/O Pins: 14 (6 of which can be used for PWM output)
  • Analog Input Pins: 8
  • DC Current per I/O Pin: 40mA
  • Flash Memory: 32KB
  • SRAM: 2KB
  • EEPROM: 1KB
  • Clock Speed: 16 MHz
  • USB Interface: Mini-B USB port for programming and communication

Arduino Nano Pinout Configuration

The Arduino Nano features a total of 32 pins, with multiple functions assigned to each. These pins are grouped into three main ports: PortB, PortC, and PortD. Here is a breakdown of the important pins and their functionality:

3561cc39f592f1f5a2672e0653f6bd2704807edf
Nano V3.0 Board (Image Credit: forum.arduino)
  • Pin 1 (RX) and Pin 2 (TX): These are serial communication pins, used for receiving and transmitting data between the Nano and a host computer. The Nano uses the CH340 chip to convert USB signals into TTL serial data.
  • Pin 3: Reset pin, used for resetting the microcontroller.
  • Pin 4: Ground pin (GND).
  • Pins 5–16: Digital I/O pins; pins 5 and 6 are also external interrupt pins.
  • Pin 17: 3.3V power output from the CH340 USB chip, useful for powering 3.3V systems.
  • Pin 18: AREF (Analog Reference), used for analog-to-digital conversions. Typically, this pin is unused unless you want to provide an external reference voltage.
  • Pins 19–26: Analog input pins (A0 to A7).
  • Pin 27: Bidirectional power pin, used for supplying 5V to external devices or accepting input from an external 5V power source.
  • Pin 28: System reset pin.
  • Pin 29: Ground pin (GND).
  • Pin 30: External power input (Vin), typically used when providing external power through a battery or DC adapter.

Arduino Nano Models

There are several variations of the Arduino Nano, each suited for different types of projects. Here’s a look at the key models and their specifications:

Arduino Nano ESP32

The Arduino Nano ESP32 is a powerful board based on the ESP32 microcontroller, offering dual-core processing, more memory, and integrated wireless capabilities (Wi-Fi and Bluetooth), making it suitable for IoT applications and more demanding projects.

Arduino Nano ESP32 Board (Image Credit: store.arduino)
SpecificationDetails
MicrocontrollerESP32 (Dual-core 32-bit)
Clock Speed240 MHz
Flash Memory4 MB
SRAM520 KB
EEPROMNone
USB InterfaceMicro-USB
Wireless ConnectivityWi-Fi, Bluetooth
Special FeaturesBuilt for IoT applications, includes Wi-Fi and Bluetooth 4.2, more processing power, ideal for high-performance projects

Arduino Nano RP2040 Connect

The Nano RP2040 Connect is designed for IoT applications, featuring Wi-Fi and Bluetooth support with the integrated Nina W102 ESP32 chip. It is ideal for connected devices and remote sensing.

Arduino Nano RP2040 Connect Board (Image Credit: store.arduino)
SpecificationDetails
MicrocontrollerRaspberry Pi RP2040
Clock Speed133 MHz
Flash Memory16 MB Flash (external)
SRAM264 KB
EEPROMNone
Power Input5V via USB or external 5V input
Digital I/O Pins22 (3 PWM)
USB InterfaceMicro-USB
Wireless ConnectivityWi-Fi, Bluetooth (Nina W102 uBlox ESP32)
Special FeaturesBuilt for IoT, includes uBlox Nina W102 chip, ideal for wireless applications

Arduino Nano Every

The Nano Every offers more memory and I/O capabilities compared to the standard Nano, making it suitable for more advanced projects. It retains compatibility with the classic Nano form factor.

Arduino Nano Every Board (Image Credit: store.arduino)
SpecificationDetails
MicrocontrollerMicrochip ATMega4809
Clock Speed20 MHz
Operating Voltage5V
Digital I/O Pins14
Flash Memory48 KB
SRAM6 KB
EEPROM256 Bytes
USB InterfaceMicro-USB
Wireless ConnectivityNone
Special FeaturesCompatible with Arduino Nano form factor, improved memory, and speed

Arduino Nano 33 IoT

The Nano 33 IoT is equipped with wireless connectivity (Wi-Fi and Bluetooth) and is designed for IoT applications. It also includes a 6-axis accelerometer and gyroscope, making it ideal for projects that involve motion sensing.

Arduino Nano 33 IoT Board (Image Credit: store.arduino)
SpecificationDetails
MicrocontrollerMicrochip SAMD21G18A (Cortex-M0+)
Clock Speed48 MHz
Flash Memory256 KB
SRAM32 KB
EEPROMNone
Operating Voltage3.3V
Digital I/O Pins14
USB InterfaceMicro-USB
Wireless ConnectivityWi-Fi, Bluetooth (Nina W102 ESP32)
Special FeaturesBuilt for IoT, includes NINA W102 module, sensors, hardware encryption

Arduino Nano 33 BLE

The Nano 33 BLE offers low-power Bluetooth connectivity, making it ideal for wearable devices, health sensors, and other Bluetooth-based applications. It also features advanced sensors such as a 9-axis accelerometer, gyroscope, and magnetometer.

Arduino Nano 33 BLE Board (Image Credit: store.arduino)
SpecificationDetails
MicrocontrollerNordic nRF52840 (Cortex-M4F)
Clock Speed64 MHz
Flash Memory1 MB
SRAM256 KB
Operating Voltage3.3V
Digital I/O Pins14
USB InterfaceMicro-USB
Wireless ConnectivityBluetooth 5.0 (U-blox NINA B306 module)
Special FeaturesLow power consumption, suitable for wearables, includes 9-axis sensor

Arduino Nano 33 BLE Sense

The Nano 33 BLE Sense is similar to the Nano 33 BLE but comes with additional onboard sensors, including temperature, humidity, pressure, light, color, gesture recognition, and a digital microphone. This makes it perfect for sensor-heavy applications, including environmental monitoring and wearables.

Arduino Nano 33 BLE Sense Board (Image Credit: store.arduino)
SpecificationDetails
MicrocontrollerNordic nRF52840 (Cortex-M4F)
Clock Speed64 MHz
Flash Memory1 MB
SRAM256 KB
Operating Voltage3.3V
Digital I/O Pins14
USB InterfaceMicro-USB
Wireless ConnectivityBluetooth 5.0 (U-blox NINA B306 module)
Special FeaturesIncludes additional sensors for temperature, pressure, humidity, light, and gesture recognition

Programming the Arduino Nano

The Arduino Nano can be programmed using the Arduino IDE, just like other Arduino boards. It comes preloaded with a bootloader, meaning you don’t need an external programmer to upload code.

Step 1: Install the Arduino IDE

  • Download the Arduino IDE:
    Go to the official Arduino website and download the latest version of the Arduino IDE suitable for your operating system (Windows, macOS, or Linux).

Arduino IDE 2.3.4
  • Install the IDE:
    Follow the installation instructions for your operating system. After installation, launch the Arduino IDE.

Step 2: Add ATtiny board to Arduino IDE

Arduino IDE does not support ATtiny85 by default, so you need to add ATtiny board in Arduino IDE. Open File->Preferences and enter in Additional boards manager URLs:

http://drazzy.com/package_drazzy.com_index.json
Setting Boards Manager URLs on Arduino IDE
Setting Boards Manager URLs on Arduino IDE

Step 3: Select Your Arduino Nano Board and Port

Select the Arduino Nano Board:

    • Go to the Tools menu at the top of the IDE.
    • Select Board > Arduino Nano.
    • If you’re using a specific version of the Nano (such as the Nano Every or Nano 33 IoT), select the appropriate version from the list.
Select Arduino Nano Board
Select Arduino Nano Board

Select the Correct Processor:

      • Still in the Tools menu, go to Processor.
      • For the standard Arduino Nano (ATmega328P), select ATmega328P. If you’re using a newer Nano model like the Arduino Nano Every, select the corresponding processor.
Select ATmega328P Processor
Select ATmega328P Processor

Select the Serial Port:

    • Under the Tools menu, go to Port and select the port to which your Arduino Nano is connected. On most systems, the Arduino will show up as something like COM3 (Windows) or /dev/ttyUSB0 (Linux/macOS).
Select Serial Port
Select Serial Port

Install Necessary Drivers (optional):

If you’re using the Arduino Nano 3.0 with the CH340 USB-to-Serial chip, you may need to install additional drivers for your system to recognize the Nano correctly.

Step 4: Connect ATtiny85 to Arduino Nano

ATtiny85 PinArduino Nano Pin
Pin 8 (VCC)5V
Pin 4 (GND)GND
Pin 1 (RESET)D10
Pin 5 (MOSI)D11
Pin 6 (MISO)D12
Pin 7 (SCL)D13
Wiring ATtiny 85 and Arduino Nano Board
Wiring ATtiny 85 and Arduino Nano Board

Step 5: Write Your First Program

Once everything is set up, you can start writing your code. Here’s an example of the classic “Blink” program that makes an LED connected to pin 13 blink on and off.

Open the File menu and select Examples > 01.Basics > Blink. This will load a simple program that blinks an LED.

Select Built in Examples for Arduino Nano
Select Built-in Examples for Arduino Nano

And then add the code like this:

				
					void setup() {
  pinMode(13, OUTPUT);  // Set pin 13 as an output
}

void loop() {
  digitalWrite(13, HIGH);  // Turn the LED on
  delay(1000);              // Wait for one second
  digitalWrite(13, LOW);   // Turn the LED off
  delay(1000);              // Wait for one second
}

				
			

Explanation:

  • setup(): This function runs once when the program starts. It sets pin 13 as an output.
  • loop(): This function runs repeatedly. It turns the LED on and off every second.

Step 6: Upload the Code to Your Arduino Nano

Before uploading the Blink code, please make sure you have connected your Arduino Nano to computer using a USB cable.

    • In the Arduino IDE, click the Upload button (right arrow icon) at the top left of the window. This will compile your code and upload it to the Arduino Nano.
Upload Blink Code to Arduino Nano Board
Upload Blink Code to Arduino Nano Board
  • Once the upload is complete, the Onboard LED (connected to pin 13) on the Arduino Nano should begin blinking, indicating that the program has been successfully uploaded.

Conclusion

The Arduino Nano is a versatile and compact board ideal for a variety of electronics projects. Whether you’re working on a small embedded system or an IoT device, the Nano’s small size, combined with powerful features like digital I/O pins, analog inputs, and support for various communication protocols, makes it a valuable tool for both beginners and experienced makers alike. The multiple variations of the Arduino Nano, including models with Wi-Fi, Bluetooth, and additional sensors, provide even more flexibility for a wide range of applications.

Subscribe

Join our subscribers list to get monthly blog updates, technology news, case studies. We will never send spam, and you can unsubscribe at any time.

About Author

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Need Help?

Don't hesitate - Get in touch today to find out how we can help take your project to the next level.

Scroll to Top
welldone pcb manufacturer

Start to Achieve Your PCB Project

Our office will be closed from Jan 21st to Feb 5th, 2025 for the Chinese New Year holiday. Orders and inquiries will be processed after holiday.