Documentation

ESP32 UNO D1 R32 Development Board with WiFi & Bluetooth, 4MB Flash, CH340G, Type-B USB | ShillehTek Product Manual
Documentation / ESP32 UNO D1 R32 Development Board with WiFi & Bluetooth, 4MB Flash, CH340G, Type-B USB | ShillehTek Product Manual

ESP32 UNO D1 R32 Development Board with WiFi & Bluetooth, 4MB Flash, CH340G, Type-B USB | ShillehTek Product Manual

Overview

The D1 R32 is an ESP32-based development board cleverly built in the Arduino UNO form factor. It pairs the dual-core 240 MHz ESP32 with WiFi and Bluetooth on a footprint that accepts every standard Arduino UNO shield — motor shields, LCD shields, sensor shields. You get a CH340G USB-to-serial chip, Type-B USB connector, onboard 3.3V regulator, and a barrel jack for external power.

Compared to a vanilla ESP32 DevKitC, the D1 R32 trades the breadboard-friendly DIP layout for shield compatibility and the convenience of a barrel jack. With 4 MB of flash, all the ESP32's WiFi/BLE capabilities, and the entire Arduino IDE / PlatformIO ecosystem, it's an excellent step up from the UNO when you outgrow ATmega328P. Note that some Arduino shields expect 5V on certain pins — the D1 R32's GPIOs are 3.3V, so check your shield's voltage requirements first.

At a Glance

MCU
ESP32-WROOM-32
CPU
Dual-core 240 MHz
Flash
4 MB
USB Bridge
CH340G (Type-B)
Logic Level
3.3V
Form Factor
Arduino UNO R3

Specifications

Parameter Value
MCU ESP32 (Tensilica Xtensa LX6 dual-core)
Clock Speed Up to 240 MHz
Flash Memory 4 MB
SRAM 520 KB
Wireless WiFi 802.11 b/g/n + Bluetooth 4.2 BR/EDR/BLE
USB Bridge CH340G (USB-Serial)
USB Connector Type-B (printer-style)
Operating Voltage 3.3V (logic)
Input Voltage (VIN/Jack) 5V - 12V (barrel jack accepts 7-12V)
Digital I/O 20 pins (UNO-style header)
Analog Inputs 6 channels (ADC1, 12-bit, 0-3.3V)
DAC 2 channels (8-bit, GPIO 25 / 26)
PWM All GPIOs (LEDC peripheral)
I2C / SPI / UART Hardware support, configurable on most pins
Touch Pins 10 capacitive touch inputs

Pinout Diagram

D1 R32 ESP32 board pinout showing all GPIO assignments, ADC, DAC, I2C, SPI, UART, RTC, and capacitive touch pins

Wiring Guide

Power and USB

Plug in via Type-B USB for power and programming. The barrel jack accepts 5-12V (7-12V recommended for clean 3.3V regulation under load). 5V from the USB or jack passes through an onboard regulator to make 3.3V for the ESP32.

Source Pin / Connector Notes
USB Type-B port 500 mA from PC, 1A+ from a wall charger
Barrel jack 5.5 x 2.1 mm DC plug Center positive, 5-12V
VIN pin Header pin 5-12V external (alt to barrel jack)
5V pin Header pin 5V output from USB rail (~500 mA)
3V3 pin Header pin 3.3V output (~600 mA)
Warning: All GPIO pins are 3.3V — DO NOT feed 5V signals into any digital pin. UNO shields that drive signals at 5V will damage the ESP32. Check shield datasheets first or use a level shifter on the data lines.

I2C Devices

Default I2C pins (Wire) on the D1 R32 are mapped to the UNO's SDA/SCL header positions. Use 4.7k pull-ups on long bus runs (most modules already include them).

D1 R32 Header ESP32 GPIO
SDA (UNO header) GPIO 21
SCL (UNO header) GPIO 22
3V3 3.3V output
GND GND

SPI Devices

The ICSP header and the standard UNO SPI positions map to ESP32's HSPI bus.

SPI Function UNO Pin ESP32 GPIO
SCK D13 GPIO 18
MISO D12 GPIO 19
MOSI D11 GPIO 23
SS / CS D10 GPIO 5

Using Arduino UNO Shields

The header layout matches Arduino UNO R3, but ALL signals are 3.3V. Shields that work safely:

  • Display shields with 3.3V-tolerant interfaces (most TFT shields with level shifters)
  • Motor driver shields that accept 3.3V logic (L293D shields, most newer designs)
  • Sensor shields that just route signals to header pins

Shields to AVOID without level shifters:

  • Old shields hard-wired for 5V logic (some keypad+LCD shields)
  • Ethernet shields expecting 5V SPI
  • SD card shields with 5V signaling
Tip: Many "Arduino" shield libraries assume Atmel-style register access — they often won't compile on ESP32. Look for ESP32-specific forks of your shield's library.

Code Examples

Arduino IDE — Blink Built-in LED

blink_d1r32.ino
// D1 R32 ESP32 - Blink onboard LED
// Board: ESP32 Dev Module (or "WEMOS D1 MINI ESP32")
// Upload Speed: 460800

#define LED_PIN 2  // onboard LED on most D1 R32 boards

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

Arduino IDE — WiFi Hello World

wifi_d1r32.ino
// D1 R32 - Connect to WiFi and print the IP address

#include <WiFi.h>

const char* ssid     = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASS";

void setup() {
  Serial.begin(115200);
  delay(100);

  WiFi.begin(ssid, password);
  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Connected, IP: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // your code
}

Arduino IDE — Read Analog and Print

analog_d1r32.ino
// D1 R32 - Read analog on UNO header A0 (mapped to GPIO 36 / SVP)

const int analogPin = 36;  // UNO A0 header position

void setup() {
  Serial.begin(115200);
  analogReadResolution(12);  // 12-bit (0..4095)
}

void loop() {
  int raw = analogRead(analogPin);
  float volts = raw * 3.3 / 4095.0;
  Serial.printf("Raw: %d   V: %.2f\n", raw, volts);
  delay(500);
}

MicroPython — Blink and WiFi

main_d1r32.py
# MicroPython on D1 R32 ESP32
# Flash latest ESP32 firmware first using esptool.py

from machine import Pin
import network, time

# Onboard LED
led = Pin(2, Pin.OUT)

# Connect to WiFi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("YOUR_SSID", "YOUR_PASS")

while not wlan.isconnected():
    time.sleep(0.5)
    print("connecting...")

print("IP:", wlan.ifconfig()[0])

while True:
    led.value(not led.value())
    time.sleep(0.5)

Frequently Asked Questions

Which board do I select in Arduino IDE?
Use "ESP32 Dev Module" — it works for the D1 R32 with the standard ESP32 Arduino core. Set Upload Speed to 460800 (default) and Partition Scheme to "Default 4MB with spiffs". Some users also report success selecting "WEMOS D1 MINI ESP32" — try both if one gives upload errors.
Why won't my code upload?
First, install the CH340 driver if your computer doesn't recognize the board (Windows usually does automatically). If you see "Failed to connect... Wrong boot mode detected", press and hold the BOOT button while clicking Upload, then release once "Connecting....." starts.
Can I use 5V Arduino shields?
Only ones explicitly marked 3.3V-tolerant. The ESP32's GPIO pins are 3.3V and feeding 5V into them will damage the chip. Many modern shields work fine, but check the schematic — anything that uses 74HC logic gates running at 5V will need level shifters.
Why does the board reset randomly when I run motors?
The onboard 3.3V regulator can't supply enough current for high-load shields. Add an external power supply through the barrel jack, or power your motor shield from a separate supply with a shared ground.
Does the D1 R32 have onboard WiFi/Bluetooth like a regular ESP32?
Yes — same ESP32-WROOM-32 module, same WiFi 802.11 b/g/n and BT 4.2 BR/EDR/BLE. The only difference vs a DevKitC is the board form factor and USB connector style.
Are there pins I should avoid?
GPIO 0 (BOOT button), GPIO 1 (TX, used for serial), GPIO 3 (RX), and GPIO 6-11 (used for internal flash) should not be used as general I/O. The pinout image shows which header positions are safe.

Related Tutorials