📋 D1 Mini Pro Overview
The D1 Mini Pro is a compact, powerful WiFi-enabled development board based on the ESP8266EX microcontroller. Designed for fast Internet-of-Things (IoT) prototyping, it packs WiFi connectivity, 16MB of flash memory, and a built-in lithium battery charging circuit into a board barely larger than a postage stamp.
Despite its small size, the D1 Mini Pro is fully compatible with the Arduino IDE and supports NodeMCU/Lua programming, making it accessible to beginners and powerful enough for advanced projects.
What Makes the "Pro" Special?
Compared to the standard D1 Mini, the Pro version adds several key upgrades:
- 16MB flash memory (vs. 4MB on the standard D1 Mini)
- Built-in ceramic antenna plus a U.FL connector for an external antenna (included)
- Lithium battery charging circuit — connect a LiPo battery and charge it via USB
- CP2104 USB-to-UART bridge — reliable driver support across all operating systems
🔧 Technical Specifications
| Feature | Specification |
|---|---|
| Microcontroller | ESP8266EX |
| Operating Voltage | 3.3V |
| Input Voltage (USB) | 5V via Micro-USB |
| Digital I/O Pins | 11 |
| Analog Input Pins | 1 (A0, 0–3.3V range) |
| Flash Memory | 16MB |
| Clock Speed | 80MHz / 160MHz |
| WiFi | 802.11 b/g/n (2.4GHz) |
| USB-to-UART Chip | CP2104 (Silicon Labs) |
| Antenna | Built-in ceramic + external U.FL antenna (included) |
| Battery Charging | Built-in LiPo charging circuit |
| Board Dimensions | Approx. 34.2mm × 25.6mm (1.35" × 1.0") |
| Weight | ~3g |
📌 Pinout Reference
┌───────────┐
RST ─┤ 1 16 ├─ TX (GPIO1)
A0 ─┤ 2 15 ├─ RX (GPIO3)
D0 (GPIO16) ─┤ 3 14 ├─ D1 (GPIO5) [SCL]
D5 (GPIO14) ─┤ 4 13 ├─ D2 (GPIO4) [SDA]
D6 (GPIO12) ─┤ 5 12 ├─ D3 (GPIO0)
D7 (GPIO13) ─┤ 6 11 ├─ D4 (GPIO2) [LED]
D8 (GPIO15) ─┤ 7 10 ├─ GND
3V3 ─┤ 8 9 ├─ 5V
└───────────┘
Pin Details
| Board Label | GPIO | Function | Notes |
|---|---|---|---|
| TX | GPIO1 | UART Transmit | Used for serial communication |
| RX | GPIO3 | UART Receive | Used for serial communication |
| A0 | ADC0 | Analog Input | 0–3.3V input range |
| D0 | GPIO16 | Digital I/O | Can be used for deep sleep wake-up |
| D1 | GPIO5 | Digital I/O / SCL | Default I²C clock line |
| D2 | GPIO4 | Digital I/O / SDA | Default I²C data line |
| D3 | GPIO0 | Digital I/O | Pulled HIGH; used for flash/boot mode |
| D4 | GPIO2 | Digital I/O | Built-in LED (active LOW); pulled HIGH |
| D5 | GPIO14 | Digital I/O / SCK | SPI clock |
| D6 | GPIO12 | Digital I/O / MISO | SPI data in |
| D7 | GPIO13 | Digital I/O / MOSI | SPI data out |
| D8 | GPIO15 | Digital I/O / SS | SPI select; pulled LOW at boot |
| RST | — | Reset | Active LOW; resets the board |
| 3V3 | — | Power | 3.3V regulated output |
| 5V | — | Power | 5V from USB input |
| GND | — | Ground | Common ground |
📡 Antenna Options
The D1 Mini Pro features two antenna options:
- Built-in ceramic antenna — Suitable for most short-to-medium range applications
- External U.FL antenna — Included in the box; provides better range and signal strength
How to Switch Between Antennas
The antenna selection is controlled by a tiny 0-ohm resistor (solder bridge) on the board. By default, the board is configured to use the ceramic antenna.
To switch to the external antenna:
- Locate the small 0-ohm resistor near the antenna area on the PCB
- Carefully desolder it from the ceramic antenna pads
- Re-solder it to the external antenna pads (or simply bridge the pads with solder)
- Connect the included U.FL external antenna to the U.FL connector on the board
🔋 Battery Charging Feature
The D1 Mini Pro includes a built-in lithium polymer (LiPo) battery charging circuit. This allows you to:
- Power the board from a rechargeable LiPo battery when USB is not available
- Automatically charge the battery when USB power is connected
- Create portable, battery-powered IoT projects
How to Connect a Battery
- Solder a single-cell 3.7V LiPo battery to the battery pads on the bottom of the board (marked + and −)
- When USB is plugged in, the battery charges automatically
- When USB is disconnected, the board runs from the battery
💻 Getting Started
Step 1: Install the CP2104 USB Driver
The D1 Mini Pro uses the CP2104 USB-to-UART bridge chip by Silicon Labs. You need to install the driver so your computer can communicate with the board.
Download the driver from Silicon Labs:
https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
| Operating System | Instructions |
|---|---|
| Windows | Download and run the CP210x Windows installer. Follow the on-screen prompts. |
| macOS | Download the macOS VCP driver. Open the DMG and run the installer. You may need to allow it in System Preferences → Security & Privacy. |
| Linux | Most modern Linux distributions (kernel 3.x+) include CP210x drivers by default. No installation needed. |
Verify the Driver Is Working
- Connect the D1 Mini Pro to your computer via a Micro-USB cable
- Open your system's device manager:
- Windows: Device Manager → Ports (COM & LPT) → Look for "Silicon Labs CP210x USB to UART Bridge (COMx)"
-
macOS: Terminal → type
ls /dev/tty.*→ Look for/dev/tty.SLAB_USBtoUART -
Linux: Terminal → type
ls /dev/ttyUSB*→ Look for/dev/ttyUSB0
Step 2: Set Up the Arduino IDE
The Arduino IDE is the easiest way to program the D1 Mini Pro. Follow these steps to add ESP8266 board support.
Install Arduino IDE
If you don't already have it, download the Arduino IDE from:
https://www.arduino.cc/en/software
Add the ESP8266 Board Manager URL
- Open the Arduino IDE
- Go to File → Preferences (on macOS: Arduino IDE → Settings)
- In the "Additional Board Manager URLs" field, paste the following URL:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
- Click OK
Install the ESP8266 Board Package
- Go to Tools → Board → Boards Manager
- In the search box, type "ESP8266"
- Find "ESP8266 by ESP8266 Community" and click Install
- Wait for the installation to complete
Select the Correct Board Settings
- Go to Tools → Board and select "LOLIN(WEMOS) D1 mini Pro"
- Configure the following settings under the Tools menu:
| Setting | Value |
|---|---|
| Board | LOLIN(WEMOS) D1 mini Pro |
| Upload Speed | 921600 |
| CPU Frequency | 80 MHz |
| Flash Size | 16MB (FS:14MB OTA:~1019KB) |
| Port | Select the COM port where your board is connected |
Step 3: Upload Your First Sketch (Blink Example)
Let's verify everything is working by blinking the built-in LED.
- In the Arduino IDE, go to File → Examples → ESP8266 → Blink, or paste the following code:
/*
* D1 Mini Pro - Blink Example
* Blinks the built-in LED on GPIO2 (D4)
* The built-in LED is active LOW (LOW = ON, HIGH = OFF)
*/
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // Initialize the built-in LED pin as output
}
void loop() {
digitalWrite(LED_BUILTIN, LOW); // Turn LED ON (active LOW)
delay(1000); // Wait 1 second
digitalWrite(LED_BUILTIN, HIGH); // Turn LED OFF
delay(1000); // Wait 1 second
}
- Click the Upload button (→ arrow icon) in the Arduino IDE
- Wait for the upload to complete — you should see "Done uploading" in the status bar
- The built-in LED on the board should now blink on and off every second 🎉
Step 4: WiFi Example — Connect to Your Network
Here's a simple sketch that connects the D1 Mini Pro to your WiFi network and prints the assigned IP address:
/*
* D1 Mini Pro - WiFi Connection Example
* Connects to your WiFi network and prints the IP address
*/
#include <ESP8266WiFi.h>
const char* ssid = "YOUR_WIFI_NETWORK_NAME";
const char* password = "YOUR_WIFI_PASSWORD";
void setup() {
Serial.begin(115200);
delay(100);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// Your code here
}
To use this sketch:
- Replace
YOUR_WIFI_NETWORK_NAMEwith your actual WiFi SSID - Replace
YOUR_WIFI_PASSWORDwith your actual WiFi password - Upload the sketch
- Open Tools → Serial Monitor and set the baud rate to 115200
- You should see the board connect and display its IP address
🛠️ Troubleshooting
Board Not Detected by Computer
- Try a different USB cable — Many Micro-USB cables are charge-only and don't carry data
- Install/reinstall the CP2104 driver from Silicon Labs
- Try a different USB port — Avoid USB hubs; connect directly to your computer
- On macOS: Check System Preferences → Security & Privacy — you may need to allow the driver
Upload Fails or Times Out
- Verify the correct Board is selected: LOLIN(WEMOS) D1 mini Pro
- Verify the correct Port is selected under Tools → Port
- Try lowering the Upload Speed to 115200
- Press and hold the RESET button on the board, then release it just as the upload begins
- Close any other programs that might be using the serial port (e.g., Serial Monitor, PuTTY)
Serial Monitor Shows Garbled Text
- Make sure the baud rate in the Serial Monitor matches the baud rate in your sketch (e.g.,
Serial.begin(115200)→ set monitor to 115200) - Press the RESET button on the board to restart the sketch
WiFi Won't Connect
- Double-check your SSID and password (they are case-sensitive)
- Make sure your router is broadcasting on 2.4GHz — the ESP8266 does not support 5GHz networks
- Move the board closer to your router
- Try restarting your router
Board Keeps Restarting (Boot Loop)
- This is often caused by insufficient power. Try a different USB cable or power source
- Check for short circuits on your wiring
- If using a battery, make sure it has sufficient charge
🛒 Where to Buy the D1 Mini Pro
Ready to get started with the D1 Mini Pro? You can purchase it directly from our store:
📚 Additional Resources
- ESP8266 Arduino Core Documentation: arduino-esp8266.readthedocs.io
- WEMOS Official Documentation: wemos.cc — D1 Mini Pro
- CP2104 Driver Download: Silicon Labs CP210x VCP Drivers
- Arduino IDE Download: arduino.cc/en/software
- ESP8266 Community Forum: esp8266.com
⚠️ Safety & Handling Precautions
- Operating voltage is 3.3V — Do not apply 5V to GPIO pins
- Handle with care — Avoid touching components with bare hands to prevent static discharge
- Use proper polarity when connecting a LiPo battery
- Do not short-circuit the pins — always double-check wiring before powering on
- Keep away from moisture — The board is not waterproof