UNO R3 Dip Development Board ATMega328

Details

Summary

UNO R3 DIP Clone board photo with ATmega328P and CH340G

The UNO R3 DIP Development Board uses a socketed ATmega328P (DIP-28) clocked at 16 MHz with 5 V I/O. It provides the classic UNO pinout: 14 digital I/O (6 PWM), 6 analog inputs, hardware UART, I²C, and SPI. The DIP package makes MCU replacement and offline programming convenient.

Power from USB or a DC barrel jack (7–12 V recommended). Share grounds with peripherals and budget current carefully.

📘 Quick Start Guide

Pinout & Power
  • Digital I/O: D0–D13 (PWM on D3, D5, D6, D9, D10, D11)
  • Analog In: A0–A5 (I²C on A4=SDA, A5=SCL)
  • SPI: D10 (SS), D11 (MOSI), D12 (MISO), D13 (SCK)
  • UART: D0 (RX), D1 (TX)
  • Power: 5 V, 3.3 V (~50 mA), GND, VIN (7–12 V recommended)
  • Reset: RST pin and on-board button (socketed MCU is user-replaceable)

Tip: Use a separate supply for motors/servos; connect grounds together.

Arduino Code

Quick sketches to verify I/O, ADC, and I²C.

Blink (D13 LED)

// UNO R3 DIP — Blink built-in LED
void setup(){ pinMode(LED_BUILTIN, OUTPUT); }
void loop(){ digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); delay(500); }

Read Analog (A0) and Print

// UNO R3 DIP — Read A0 and print voltage
void setup(){ Serial.begin(115200); }
void loop(){
  int v = analogRead(A0);              // 0..1023
  float volts = v * (5.0/1023.0);      // ~0..5 V
  Serial.print("A0: "); Serial.print(v);
  Serial.print("  (~"); Serial.print(volts, 2); Serial.println(" V)");
  delay(200);
}

I²C Scanner (A4/A5)

#include <Wire.h>
// UNO R3 DIP — Quick I2C scanner
void setup(){
  Serial.begin(115200);
  Wire.begin(); // A4=SDA, A5=SCL
}
void loop(){
  byte count=0;
  for (byte addr=1; addr<127; addr++){
    Wire.beginTransmission(addr);
    if (Wire.endTransmission()==0){
      Serial.print("Found I2C device: 0x"); Serial.println(addr, HEX);
      count++; delay(2);
    }
  }
  if(!count) Serial.println("No I2C devices found.");
  delay(1000);
}
Raspberry Pi

Talk to the UNO via USB serial on Raspberry Pi OS.

Python: Read Serial from UNO

# On the Pi: pip install pyserial
import serial, time

ser = serial.Serial('/dev/ttyACM0', 115200, timeout=1)  # or /dev/ttyUSB0
time.sleep(2)  # UNO resets on open
try:
  while True:
    line = ser.readline().decode(errors='ignore').strip()
    if line: print("UNO:", line)
except KeyboardInterrupt:
  pass
finally:
  ser.close()

Enable Serial Access

  • Find the port: ls /dev/ttyACM* or /dev/ttyUSB*
  • Add user to dialout: sudo usermod -aG dialout $USER (reboot)
ESP Coding

ESP32/ESP8266 ↔ UNO: Use UART (3.3 V logic on ESP) or I²C/SPI level-shifted. UNO TX (5 V) must be level-shifted or divided before feeding ESP RX. Always share GND.

ESP32 (Arduino core): UART bridge to UNO

#include <HardwareSerial.h>
// ESP32 pins: RX2=16, TX2=17 (default), connect to UNO: TX -> divider -> ESP32 RX2, ESP32 TX2 -> UNO RX
HardwareSerial Uno(2);
void setup(){
  Serial.begin(115200);
  Uno.begin(115200, SERIAL_8N1, 16, 17); // RX, TX
}
void loop(){
  if (Uno.available()) Serial.write(Uno.read());
  if (Serial.available()) Uno.write(Serial.read());
}

ESP8266 (Arduino core): Read UNO lines

// Use a CH divider on UNO TX -> ESP8266 RX (GPIO3)
void setup(){ Serial.begin(115200); }   // UART0 on ESP8266
void loop(){
  if (Serial.available()){
    String s = Serial.readStringUntil('\n');
    Serial.print("[UNO] "); Serial.println(s);
  }
}

ESP-IDF (C): UART echo with UNO

#include "driver/uart.h"
#include "driver/gpio.h"
#define UARTN UART_NUM_1
#define TXD   (GPIO_NUM_17)
#define RXD   (GPIO_NUM_16)  // UNO->ESP (level-shift to 3.3 V!)

void app_main(void){
  const uart_config_t cfg = {
    .baud_rate=115200, .data_bits=UART_DATA_8_BITS, .parity=UART_PARITY_DISABLE,
    .stop_bits=UART_STOP_BITS_1, .flow_ctrl=UART_HW_FLOWCTRL_DISABLE
  };
  uart_param_config(UARTN, &cfg);
  uart_set_pin(UARTN, TXD, RXD, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
  uart_driver_install(UARTN, 1024, 0, 0, NULL, 0);

  uint8_t buf[128];
  while (1) {
    int n = uart_read_bytes(UARTN, buf, sizeof(buf), pdMS_TO_TICKS(20));
    if (n > 0) uart_write_bytes(UARTN, (const char*)buf, n); // echo back
  }
}

For I²C, set UNO as peripheral with a library (e.g., Wire on 0x12) and ESP32 as master; use bidirectional level shifting. See Resources → Espressif for ESP-IDF drivers and examples.

Drivers

Official UNO R3 (ATmega16U2) is usually plug-and-play. Some clones use CH340/CP210x/FT232 USB bridges.

Windows

macOS

  • Many bridges supported natively; use notarized installers if needed.
  • Ports appear as /dev/tty.usbmodem* or /dev/tty.usbserial*.

Linux / Raspberry Pi OS

  • Usually plug-and-play (cdc_acm, ch341).
  • If permission denied, add user to dialout and re-login.
Resources
Specifications
Microcontroller ATmega328P (DIP-28)
Clock Speed 16 MHz
Operating Voltage 5 V (I/O)
Input Voltage (VIN) 7–12 V recommended (6–20 V absolute)
Digital I/O Pins 14 (PWM on D3, D5, D6, D9, D10, D11)
Analog Inputs 6 (A0–A5)
Flash / SRAM / EEPROM 32 KB / 2 KB / 1 KB
Interfaces UART, I²C (A4/A5), SPI (D10–D13)
3.3 V Output ~50 mA (on-board regulator)
USB USB-B (or USB-serial bridge variant on some boards)
Dimensions ~68.6 × 53.4 mm
FAQ
Sketch won’t upload — what now?
Select the correct board/port in the IDE, close any serial monitors, and press reset right before upload. If using a CH340/CH341 USB bridge, install the driver.
My sensor uses 3.3 V — is it safe?
UNO I/O is 5 V. Many 3.3 V sensors need a level shifter (especially sensor inputs). Power from the UNO’s 3.3 V pin (≤50 mA).
Servos and motors reset my UNO.
Use a separate 5–6 V supply for motors/servos and connect grounds. Add decoupling near loads; avoid powering servos from the UNO’s 5 V pin.
Safety & Compliance

Important Notice For educational, prototype, experimental, laboratory and R&D use only.(non-RoHS)

WEEE

Not subject to WEEE marking; obligations apply to final equipment.

Manufacturer

Little Muffins Things Limited
166 River Heights, 90 High Street
London E15 2GQ
littlemuffinsthings.com

EU Responsible Person

eucomply OU
Parnu mnt. 139b–141
13117 Tallinn, Estonia
hello@eucompliancepartner.com