📋 Overview
The Nano V3.0 ATmega328P micro-controller board is a compact, fully featured development board compatible with the Arduino Nano. It offers the same functionality as larger Arduino boards like the Duemilanove, but in a breadboard-friendly package that's perfect for space-constrained projects. This board uses the CH340G USB-to-serial chip instead of the FTDI chip found on the official Arduino Nano, making it an affordable and widely compatible alternative.
The board is powered via a Mini-B USB connection or an external power supply, and it's programmed through the Arduino IDE — the same software used for all Arduino boards. Whether you're a beginner building your first LED blinker or an experienced maker prototyping a sensor network, this Arduino Nano-compatible board is a great choice.
💡 Tip: This board uses the CH340G USB driver, which may need to be installed on your computer before the Arduino IDE can communicate with the board. See the CH340G Driver Installation section below.
⭐ Key Features
- ATmega328P Microcontroller — The same proven MCU used in the Arduino Uno and Arduino Nano, with 32 KB flash memory (2 KB used by bootloader), 2 KB SRAM, and 1 KB EEPROM
- CH340G USB Interface — Reliable USB-to-serial converter for programming and serial communication via Mini-B USB
- 14 Digital I/O Pins — Including 6 PWM-capable outputs (D3, D5, D6, D9, D10, D11)
- 8 Analog Input Pins — A0 through A7 with 10-bit resolution (1024 steps)
- Breadboard-Friendly — Compact form factor with dual inline pin headers that plug directly into standard breadboards
- Flexible Power Options — USB powered, 5V regulated input, or 7–12V unregulated input with automatic source selection
- Bootloader Pre-Installed — Ready to program out of the box with the Arduino IDE
- ICSP Header — Supports In-Circuit Serial Programming for advanced users
📋 Specifications
| Parameter | Value |
|---|---|
| Microcontroller | Atmel ATmega328P-AU |
| USB-to-Serial Chip | CH340G |
| Operating Voltage (Logic Level) | 5V |
| Clock Speed | 16 MHz |
| Flash Memory | 32 KB (2 KB used by bootloader) |
| SRAM | 2 KB |
| EEPROM | 1 KB |
| Digital I/O Pins | 14 (TX, RX, D2–D13) |
| PWM Pins | 6 (D3, D5, D6, D9, D10, D11) |
| Analog Input Pins | 8 (A0–A7) |
| Max Current per I/O Pin | 20 mA |
| Max Current on 3.3V Pin | 50 mA |
| Recommended Input Voltage | 7–12V DC (on VIN pin) |
| Maximum Input Voltage | 6–20V (absolute limits) |
| USB Connector | Mini-B USB |
| Serial Communication | 1 pair TTL-level (RX/TX) |
| Programming Interface | USB (via CH340G) or ICSP |
| Board Dimensions | Approx. 45 × 18 mm (1.77 × 0.71 inches) L × W |
📌 Pinout
The board has 30 pins arranged in two rows of 15 along the edges, plus a 6-pin ICSP header. Here's a breakdown of the pin functions:
Digital Pins
| Pin | Function | Notes |
|---|---|---|
| D0 (RX) | Digital I/O / Serial Receive | Used for USB serial communication |
| D1 (TX) | Digital I/O / Serial Transmit | Used for USB serial communication |
| D2 | Digital I/O / External Interrupt 0 | |
| D3 | Digital I/O / PWM / External Interrupt 1 | PWM capable |
| D4 | Digital I/O | |
| D5 | Digital I/O / PWM | PWM capable |
| D6 | Digital I/O / PWM | PWM capable |
| D7 | Digital I/O | |
| D8 | Digital I/O | |
| D9 | Digital I/O / PWM | PWM capable |
| D10 | Digital I/O / PWM / SPI SS | PWM capable |
| D11 | Digital I/O / PWM / SPI MOSI | PWM capable |
| D12 | Digital I/O / SPI MISO | |
| D13 | Digital I/O / SPI SCK / Built-in LED | On-board LED connected to this pin |
Analog Pins
| Pin | Function | Notes |
|---|---|---|
| A0 | Analog Input / Digital I/O | |
| A1 | Analog Input / Digital I/O | |
| A2 | Analog Input / Digital I/O | |
| A3 | Analog Input / Digital I/O | |
| A4 | Analog Input / Digital I/O / I2C SDA | I2C data line |
| A5 | Analog Input / Digital I/O / I2C SCL | I2C clock line |
| A6 | Analog Input Only | Cannot be used as digital I/O |
| A7 | Analog Input Only | Cannot be used as digital I/O |
Power Pins
| Pin | Function | Notes |
|---|---|---|
| VIN | Voltage Input | 7–12V recommended (6–20V max) |
| 5V | Regulated 5V Output / Input | Can supply or receive regulated 5V |
| 3V3 | Regulated 3.3V Output | 50 mA max from on-board regulator |
| GND | Ground | Multiple GND pins available |
| AREF | Analog Reference | External reference voltage for ADC |
| RST | Reset | Pull LOW to reset the board |
⚠️ Note: Pins A6 and A7 are analog input only — they cannot be used as digital I/O pins. This is a hardware limitation of the ATmega328P in the TQFP package used on Arduino Nano-compatible boards.
🔋 Power
This Arduino Nano-compatible board offers three ways to supply power:
- Mini-B USB — Connect to your computer or a USB power adapter. Provides 5V directly. This is the most common method during development.
- VIN Pin (Pin 30) — Apply 7–12V DC (6–20V absolute max). The on-board voltage regulator steps it down to 5V. Ideal for standalone projects using a battery pack or wall adapter.
- 5V Pin (Pin 27) — Apply a regulated 5V directly. This bypasses the on-board regulator, so the voltage must be clean and stable. Do not exceed 5.5V on this pin.
The board automatically selects the highest voltage source when multiple power inputs are connected.
⚠️ Warning: When powering via the 5V pin, you are bypassing the voltage regulator and all protection. Make sure your supply is a stable, regulated 5V. Applying higher voltage to this pin can permanently damage the board.
🔌 Compatible With
- Arduino IDE (select board: "Arduino Nano" and processor: "ATmega328P")
- Arduino Nano shields and expansion boards
- Standard solderless breadboards
- All Arduino libraries compatible with ATmega328P
- PlatformIO and other AVR-compatible development environments
- Windows, macOS, and Linux (with CH340G driver installed)
🎯 Common Applications
- Learning & Education — Ideal starter board for learning programming, electronics, and embedded systems
- Sensor Projects — Read temperature, humidity, light, motion, and other sensors using analog and digital inputs
- Home Automation — Control relays, lights, motors, and other devices with simple sketches
- Robotics — Drive servos, stepper motors, and DC motors for small robot builds
- Wearable Electronics — Compact size makes it suitable for wearable and portable projects
- IoT Prototyping — Pair with Wi-Fi or Bluetooth modules (ESP8266, HC-05) for connected projects
- Data Logging — Collect and store sensor data to SD cards or transmit via serial
🚀 Getting Started
Getting your Arduino Nano-compatible board up and running takes just a few steps:
- Install the CH340G USB driver on your computer (see below)
- Download and install the Arduino IDE
- Connect the board to your computer with a Mini-B USB cable
- In the Arduino IDE, select Tools > Board > Arduino Nano
- Select Tools > Processor > ATmega328P
- Select the correct COM port under Tools > Port
- Upload your first sketch!
💻 CH340G Driver Installation
This board uses the CH340G USB-to-serial chip. Most modern operating systems will install the driver automatically when you first plug in the board. If the Arduino IDE cannot detect your board or no COM port appears, you'll need to install the driver manually.
Windows
- Download the CH340G driver from the manufacturer: CH341SER.EXE (Windows)
- Run the downloaded installer and click Install
- Plug in your board via USB — Windows should now recognize it and assign a COM port
- In the Arduino IDE, go to Tools > Port and select the new COM port
macOS
- Download the CH340G driver: CH341SER_MAC.ZIP
- Unzip and run the installer package
- You may need to allow the driver in System Preferences > Security & Privacy
- Restart your Mac, then plug in the board
- The port should appear as
/dev/cu.wchusbserial*in the Arduino IDE
Linux
Most Linux distributions include the CH340G driver in the kernel (module ch341). Simply plug in the board and it should appear as /dev/ttyUSB0 or similar. If you encounter permission issues, add your user to the dialout group:
sudo usermod -a -G dialout $USER
Log out and log back in for the change to take effect.
💡 Tip: If you've previously used boards with the FTDI (FT232RL) chip, the CH340G driver is separate and must be installed independently. Having both drivers installed will not cause conflicts.
🔧 Arduino IDE Setup
Once the CH340G driver is installed, configure the Arduino IDE to work with your board:
- Open the Arduino IDE
- Go to Tools > Board and select Arduino Nano
- Go to Tools > Processor and select ATmega328P
- Go to Tools > Port and select the COM port assigned to your board
💡 Tip: If uploading fails with an error like
avrdude: stk500_getsync(), try changing the processor setting to ATmega328P (Old Bootloader) under Tools > Processor. Some boards ship with the older bootloader version.
🚀 Step 1: Blink — Your First Sketch
The classic Blink sketch is the "Hello World" of Arduino. It blinks the built-in LED on pin D13 to confirm your board and IDE are set up correctly. No external wiring is needed.
/*
* Blink - Built-in LED Test
* Envistia Mall - Product Support
*
* Blinks the on-board LED on pin D13
* to verify the board is working.
*
* No external wiring required.
*/
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // D13 has the built-in LED
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // Turn LED on
delay(1000); // Wait 1 second
digitalWrite(LED_BUILTIN, LOW); // Turn LED off
delay(1000); // Wait 1 second
}
How to Use:
- Open the Arduino IDE and paste the sketch above (or go to File > Examples > 01.Basics > Blink)
- Click the Upload button (right arrow icon)
- Wait for "Done uploading" to appear in the status bar
- The on-board LED near pin D13 should now blink on and off every second
🚀 Step 2: Reading an Analog Sensor
This sketch reads a value from an analog sensor (such as a potentiometer or light sensor) connected to pin A0 and prints the reading to the Serial Monitor. It's a great way to learn about analog inputs and serial communication.
/*
* Analog Sensor Reading
* Envistia Mall - Product Support
*
* Reads an analog value from A0 and
* prints it to the Serial Monitor.
*
* Connections:
* Sensor Signal -> A0
* Sensor VCC -> 5V
* Sensor GND -> GND
*/
void setup() {
Serial.begin(9600); // Start serial at 9600 baud
}
void loop() {
int sensorValue = analogRead(A0); // Read analog pin A0
// Print the raw value (0-1023)
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
// Convert to voltage (0-5V)
float voltage = sensorValue * (5.0 / 1023.0);
Serial.print(" | Voltage: ");
Serial.print(voltage, 2);
Serial.println(" V");
delay(500); // Read every half second
}
How to Use:
- Connect a potentiometer or analog sensor to pin A0, 5V, and GND
- Upload the sketch to your board
- Open the Serial Monitor (Tools > Serial Monitor or Ctrl+Shift+M)
- Set the baud rate to 9600
- You should see sensor values and corresponding voltages updating every half second
🚀 Step 3: Controlling an External LED
This sketch demonstrates digital output by blinking an external LED connected to pin D7. It introduces the concept of using a current-limiting resistor, which is essential for protecting LEDs.
/*
* External LED Blink
* Envistia Mall - Product Support
*
* Blinks an external LED on pin D7
* with a 220-ohm current-limiting resistor.
*
* Connections:
* D7 -> 220 ohm Resistor -> LED Anode (+)
* LED Cathode (-) -> GND
*/
const int ledPin = 7; // External LED on D7
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH); // LED on
delay(500);
digitalWrite(ledPin, LOW); // LED off
delay(500);
}
How to Use:
- Connect a 220Ω resistor from pin D7 to the anode (longer leg) of an LED
- Connect the cathode (shorter leg) of the LED to GND
- Upload the sketch
- The external LED should blink on and off every half second
🛠️ Soldering the Header Pins
Depending upon the board option purchased, the header pins may be included but not soldered. This gives you the flexibility to solder them pointing up (for breadboard use) or down (for direct PCB mounting). Here are some tips for a clean solder job:
- Insert the header pins into a breadboard to hold them straight and steady
- Place the board on top of the pins with the component side facing up
- Solder one pin on each side first, then check alignment before soldering the rest
- Use a fine-tip soldering iron (25–40W) and thin solder wire for best results
- Avoid holding the iron on any pin for more than 2–3 seconds to prevent heat damage
💡 Tip: If you don't have soldering equipment, you can still test the board by holding the header pins in place with your fingers or using alligator clips for temporary connections.
🛠️ Troubleshooting
Board Not Detected (No COM Port)
- Make sure the CH340G driver is installed (see the driver installation section above)
- Try a different USB cable — some cables are charge-only and don't carry data
- Try a different USB port on your computer
- On Windows, check Device Manager for an unrecognized device under "Other Devices"
Upload Fails with "avrdude: stk500_getsync()" Error
- Change the processor setting to ATmega328P (Old Bootloader) in Tools > Processor
- Make sure the correct COM port is selected
- Disconnect any wires from pins D0 (RX) and D1 (TX) during upload
Sketch Uploads but Nothing Happens
- Double-check your wiring connections
- Verify the correct board and processor are selected in the IDE
- Try pressing the reset button on the board after upload
Erratic Analog Readings
- Make sure unused analog pins are not floating — connect them to GND if not in use
- Add a small capacitor (0.1 µF) between the analog input and GND to filter noise
- Keep analog signal wires short and away from digital/power lines
⚠️ Important Notes
- Do not exceed 20 mA per I/O pin or 200 mA total across all I/O pins combined
- The 3.3V output pin can supply a maximum of 50 mA — do not use it to power high-current 3.3V devices
- When using VIN for external power, keep the input between 7–12V for reliable operation. Voltages above 12V will cause the voltage regulator to overheat
- Pins D0 (RX) and D1 (TX) are shared with USB serial communication — avoid using them for other purposes if you need serial communication with your computer
- Pins A6 and A7 are analog input only and cannot be used as digital I/O
- This is a third-party board compatible with Arduino Nano — it is not manufactured by or affiliated with Arduino
🏪 Where to Buy the Arduino Nano-Compatible ATmega328P Board
The Arduino Nano-Compatible ATmega328P Microcontroller is available at Envistia Mall:
Buy the Arduino Nano-Compatible ATmega328P Micro-Controller →
- 📦 Fast US Shipping
- 🔄 Hassle-Free Returns
- 📧 Responsive Customer Support
📚 Resources & Downloads
- Arduino IDE Download: Arduino Software (IDE)
- CH340G Windows Driver: CH341SER.EXE
- CH340G macOS Driver: CH341SER_MAC.ZIP
- Arduino Nano Documentation: Arduino Nano Docs
- ATmega328P Datasheet: Microchip ATmega328P Datasheet (PDF)
Sold and supported by Envistia Mall. Ships from the USA. This product is compatible with Arduino Nano but is not manufactured by or affiliated with Arduino. "Arduino" and "Nano" are trademarks of Arduino SA. The manufacturer and Envistia LLC (dba Envistia Mall) are not responsible for any damages or losses resulting from the use of this product. Always follow proper electrical safety practices when working with electronic components. Specifications are based on manufacturer data and are subject to change without notice.