Skip to content

All items ship from our office in Colorado USA - $5.95 Flat-Rate US shipping & free shipping on orders over $75!

Arduino Nano-Compatible USB-C ATmega328P CH340G Microcontroller User Guide

Arduino Nano-Compatible USB-C ATmega328P CH340G Microcontroller

πŸ“‹ Overview

The Nano V3.0 compatible USB-C 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.

This version features a modern USB-C connector, replacing the older Mini-B USB port found on earlier Arduino Nano-compatible boards. USB-C offers a reversible plug (no more flipping the cable), a more secure connection, and broader compatibility with modern computers and chargers. The board is powered via USB-C or an external power supply, and it's programmed through the Arduino IDE β€” the same software used for all Arduino boards.

πŸ’‘ 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
  • USB-C Connector β€” Modern reversible connector for programming and power β€” no more fumbling with cable orientation
  • CH340G USB Interface β€” Reliable USB-to-serial converter for programming and serial communication
  • 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-C 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 USB-C
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:

  • USB-C β€” Connect to your computer or a USB power adapter. Provides 5V directly. This is the most common method during development. The USB-C connector is reversible, so the cable plugs in either way.
  • 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.


πŸ“‘ USB-C vs Mini-B USB

If you've used Arduino Nano-compatible boards before, you may be familiar with the older Mini-B USB connector. Here's how USB-C compares:

Feature USB-C (This Board) Mini-B USB (Older Boards)
Connector Orientation Reversible β€” plugs in either way One-way only
Cable Availability Widely available β€” same cable used by most modern devices Less common β€” may need to purchase separately
Durability More robust connector design Smaller, more fragile connector
Data Transfer Same (USB 2.0 via CH340G) Same (USB 2.0 via CH340G)
Arduino IDE Setup Identical β€” same board/processor settings Identical β€” same board/processor settings

πŸ’‘ Tip: The USB connector type does not affect the board's functionality, programming, or performance. All Arduino sketches, libraries, and shields that work with the Mini-B USB version will work identically with this USB-C version. The only difference is the cable you plug in.


πŸ”Œ 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 USB-C board up and running takes just a few steps:

  1. Install the CH340G USB driver on your computer (see below)
  2. Download and install the Arduino IDE
  3. If you have the Loose Pins version, solder the header pins onto the board first (see the Soldering section below)
  4. Connect the board to your computer with a USB-C cable
  5. In the Arduino IDE, select Tools > Board > Arduino Nano
  6. Select Tools > Processor > ATmega328P
  7. Select the correct COM port under Tools > Port
  8. 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

  1. Download the CH340G driver from the manufacturer: CH341SER.EXE (Windows)
  2. Run the downloaded installer and click Install
  3. Plug in your board via USB-C β€” Windows should now recognize it and assign a COM port
  4. In the Arduino IDE, go to Tools > Port and select the new COM port

macOS

  1. Download the CH340G driver: CH341SER_MAC.ZIP
  2. Unzip and run the installer package
  3. You may need to allow the driver in System Preferences > Security & Privacy
  4. Restart your Mac, then plug in the board
  5. 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:

  1. Open the Arduino IDE
  2. Go to Tools > Board and select Arduino Nano
  3. Go to Tools > Processor and select ATmega328P
  4. 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:

  1. Open the Arduino IDE and paste the sketch above (or go to File > Examples > 01.Basics > Blink)
  2. Click the Upload button (right arrow icon)
  3. Wait for "Done uploading" to appear in the status bar
  4. 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:

  1. Connect a potentiometer or analog sensor to pin A0, 5V, and GND
  2. Upload the sketch to your board
  3. Open the Serial Monitor (Tools > Serial Monitor or Ctrl+Shift+M)
  4. Set the baud rate to 9600
  5. 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:

  1. Connect a 220Ξ© resistor from pin D7 to the anode (longer leg) of an LED
  2. Connect the cathode (shorter leg) of the LED to GND
  3. Upload the sketch
  4. The external LED should blink on and off every half second

πŸ› οΈ Soldering the Header Pins

If you purchased the Loose (Unsoldered) Pins version, the header pins are included but not attached. 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:

  1. Insert the header pins into a breadboard to hold them straight and steady
  2. Place the board on top of the pins with the component side facing up
  3. Solder one pin on each side first, then check alignment before soldering the rest
  4. Use a fine-tip soldering iron (25–40W) and thin solder wire for best results
  5. 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. Or consider purchasing the Soldered Pins version of this board.


πŸ› οΈ Troubleshooting

Board Not Detected (No COM Port)

  • Make sure the CH340G driver is installed (see the driver installation section above)
  • Try a different USB-C cable β€” some cables are charge-only and don't carry data. Look for cables labeled "data" or "sync"
  • Try a different USB port on your computer
  • If using a USB-C to USB-C cable, try a USB-C to USB-A cable instead (or vice versa)
  • 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
  • The USB-C port on this board supports USB 2.0 data speeds only β€” it does not support USB 3.0, USB Power Delivery (PD), or video output
  • 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 USB-C ATmega328P Board

The Nano-Compatible USB-C ATmega328P Microcontroller is available at Envistia Mall:Β 

Buy the Arduino Nano-Compatible USB-C ATmega328P Micro-Controller β†’

  • πŸ“¦ Fast US Shipping
  • πŸ”„ Hassle-Free Returns
  • πŸ“§ Responsive Customer Support

πŸ“š Resources & Downloads


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.

Share this guide:
in

πŸ›’ Related Products

Find the components mentioned in this guide in our store.

Browse Products β†’