Close Menu
  • Articles
    • Learn Electronics
    • Product Review
    • Tech Articles
  • Electronics Circuits
    • 555 Timer Projects
    • Op-Amp Circuits
    • Power Electronics
  • Microcontrollers
    • Arduino Projects
    • STM32 Projects
    • AMB82-Mini IoT AI Camera
    • BLE Projects
  • IoT Projects
    • ESP8266 Projects
    • ESP32 Projects
    • ESP32 MicroPython
    • ESP32-CAM Projects
    • LoRa/LoRaWAN Projects
  • Raspberry Pi
    • Raspberry Pi Projects
    • Raspberry Pi Pico Projects
    • Raspberry Pi Pico W Projects
  • Electronics Calculator
Facebook X (Twitter) Instagram
  • About Us
  • Disclaimer
  • Privacy Policy
  • Contact Us
  • Advertise With Us
Facebook X (Twitter) Instagram Pinterest YouTube LinkedIn
How To Electronics
  • Articles
    • Learn Electronics
    • Product Review
    • Tech Articles
  • Electronics Circuits
    • 555 Timer Projects
    • Op-Amp Circuits
    • Power Electronics
  • Microcontrollers
    • Arduino Projects
    • STM32 Projects
    • AMB82-Mini IoT AI Camera
    • BLE Projects
  • IoT Projects
    • ESP8266 Projects
    • ESP32 Projects
    • ESP32 MicroPython
    • ESP32-CAM Projects
    • LoRa/LoRaWAN Projects
  • Raspberry Pi
    • Raspberry Pi Projects
    • Raspberry Pi Pico Projects
    • Raspberry Pi Pico W Projects
  • Electronics Calculator
How To Electronics
Home » DIY ESP32 Board for Battery Powered IoT Applications
ESP32 Projects IoT Projects

DIY ESP32 Board for Battery Powered IoT Applications

Mamtaz AlamBy Mamtaz AlamUpdated:September 28, 202511 Mins Read
Share Facebook Twitter LinkedIn Telegram Reddit WhatsApp
DIY ESP32 Board for Battery Powered IoT Applications
Share
Facebook Twitter LinkedIn Pinterest Email Reddit Telegram WhatsApp

Overview

In this post, we will learn how to design our own Low Power DIY ESP32 board for Battery Powered IoT Applications. The ESP32 microcontrollers from Espressif have become the backbone of modern IoT designs due to their integrated Wi-Fi, Bluetooth connectivity, and robust processing capabilities.

Ready-made development boards such as ESP32 DevKitC or NodeMCU are widely used among hobbyists, makers, and engineers. However, these boards are relatively large in size and include power-hungry voltage regulators, USB-to-UART chips, and other components that may not be suitable for compact and ultra-low-power battery-operated projects.  Earlier, we used Battery Powered ESP8266 Board, which was quite good.

To overcome these limitations, it becomes necessary to design a custom ESP32 board optimized for a small form factor and low power consumption. In this article, we will go through the circuit design and PCB considerations for building a compact ESP32 board specifically for battery-powered IoT devices.

Our design incorporates several important features:

  • A buck-boost converter (TPS63020) to provide a stable 3.3 V supply from a single-cell Li-ion battery.
  • A dedicated Li-ion charging circuit (BQ24092D) with battery management for safe and efficient charging via USB.
  • A battery sensing network to monitor the battery voltage directly with the ESP32 ADC.
  • Minimal external circuitry for programming: we avoid an on-board USB-to-UART chip (like CP2102 or CH340). Instead, the ESP32 can be programmed using an external FTDI adapter.

By eliminating unnecessary ICs and using efficient power converters, the DIY ESP32 Board reduces both power consumption and board size, making it ideal for IoT nodes powered by small lithium-ion batteries.




Circuit Design & Schematic

Here is the DIY ESP32 Board schematic that can be powered by Battery. We are using the raw ESP32-WROOM Module as the controller. The board consists of a buck-boost converter for a stable 3.3 V output, a battery charging IC for safe USB charging, and a simple battery sense circuit for monitoring.

DIY ESP32 Board for Battery Powered IoT Applications
Fig: Schematic for ESP32 Board for Battery Powered IoT Applications

A PROG header is used for programming via external FTDI, and the design avoids on-board USB-to-UART chips to save power and space. The rest of the sections are explained in detail.

  1. Download: Schematic PDF
  2. Download: Bill of Materials (BOM)
  3. Download: Pick & Place File

About ESP32-WROOM Module

ESP32-WROOM is a powerful Wi-Fi + Bluetooth module from Espressif designed for IoT applications. The core of the module is the ESP32 SoC, a highly integrated dual-core 32-bit processor with built-in wireless connectivity and rich peripheral support. It can function as a standalone microcontroller or be used to add Wi-Fi and Bluetooth capability to other systems. The module is compact, efficient, and suitable for both low-power designs and high-performance IoT projects.

ESP32-WROOM-32
Fig: ESP32-WROOM-32 Chip

ESP32-WROOM offers enhanced performance compared to older ESP8266 modules, providing a dual-core CPU, higher clock speed, more GPIOs, and integrated Bluetooth support for BLE and Classic modes. It features low-power modes, fast wake-up, and on-chip power management, making it suitable for battery-operated devices.

  • Frequency Range: 2.412 – 2.484 GHz
  • CPU: Dual-core Tensilica Xtensa LX6, up to 240 MHz
  • RAM: 520 KB SRAM, with external flash support
  • Interfaces: SPI, I²C, I²S, UART, CAN, PWM, ADC, DAC, Touch sensor
  • Wireless: Wi-Fi 802.11 b/g/n + Bluetooth 4.2 (BR/EDR + BLE)
  • Security: WPA/WPA2, encryption with AES, SHA, RSA, ECC
  • Operating Voltage: 3.3 V
  • Maximum GPIO current: 12 mA typical
  • Deep sleep current: < 10 µA
  • Wake up and transmit packets in < 2 ms
  • Operating Temperature: -40 ºC to +125 ºC
  • Onboard PCB antenna and support for external antenna options



Buck-Boost Converter

Most of the ESP32 based boards use linear regulators like AMS1117, which are inefficient for battery powered applications. These regulators have a large dropout voltage and waste considerable power as heat, making them unsuitable when operating from a small Li-ion cell.

As an alternative, this design uses the TPS63020 Buck-Boost Converter IC, which can efficiently regulate the battery voltage to a stable 3.3V output.

TPS63020 Buck-Boost Converter Schematic
Fig: TPS63020 Buck-Boost Converter Schematic

The advantage of a buck-boost regulator is that it can both step-down and step-up the input voltage, ensuring the ESP32 receives a constant 3.3V even when the battery voltage drops below 3.7V. The TPS63020 also has high efficiency and low quiescent current, which makes it ideal for battery powered IoT devices. This IC directly powers the ESP32 module and other circuits, maintaining reliable operation over the entire discharge range of the battery.

Battery Management & Charging

Since the device is powered by a Lithium-Ion battery, there is a need to charge and manage the battery safely. This task is performed by the BQ24092D IC. The BQ24092D is a highly integrated linear charge and power-path management controller designed for space-limited and portable applications. It supports a constant-current/constant-voltage charging algorithm with automatic preconditioning and charge termination.

BQ24092D Battery Charger Schematic
Fig: BQ24092D Battery Charger Schematic

The IC can manage charging from a USB source while powering the system at the same time. It provides built-in safety features such as thermal regulation, current limiting, and over-voltage protection, making it reliable for battery-powered IoT applications. By using this charger IC, the board can efficiently recharge the Li-ion cell through the USB port while ensuring safe and stable operation of the ESP32 and other peripherals.



GPIOs & Power Pins

Since this board is designed for multiple IoT applications, you can connect digital sensors and I²C devices directly to the available GPIO pins. The GPIO output pins brought out are IO5, IO18, IO19, and IO23. Among them, IO21 (SDA) and IO22 (SCL) are dedicated for I²C communication.

The ESP32 module also includes ADC channels. In this design, the battery voltage is connected to IO34 through a resistor divider (R11 & R12), allowing the ESP32 to measure the battery voltage and calculate the battery percentage.

ESP32 Battery Sensing Circuit
Fig: ESP32 Battery Sensing Circuit

There is also a header provided in the circuit with multiple pins for power connections. Out of these, 3 pins supply VCC (3.3V) and the other 3 are GND, making it easy to connect external modules and sensors.

OLED Display (Optional)

The OLED Display is optional for this project. But you can use the OLED Display when you want to add a display to your IoT project. The Display that you can use here is the SSD1306 0.96″ I2C OLED Display.

This is how you can design your own Battery Powered ESP32 Powered Board for low power IoT applications.

Programming the ESP32 Chip

The above circuit also supports automatic programming. You just need an external FTDI Module to program the raw ESP32 chip. There is no need to press or release push buttons manually during the upload process. The programming is handled automatically by two transistors (Q1 and Q2), along with a few supporting components connected to the EN and IO0 pins of the ESP32 module.

ESP32 Programmer Circuit
Fig: ESP32 Programmer Circuit

The RTS signal from the FTDI is used to reset the ESP32, while the DTR signal is used to pull the IO0 pin low, putting the chip into flash mode. Transistors Q1 and Q2 ensure proper level shifting and isolation so that the ESP32 is not held in reset when both signals are low. When an upload command is issued from the Arduino IDE or esptool, the ESP32 is automatically put into programming mode and a new sketch can be uploaded. In normal operation, when no upload is triggered, the ESP32 starts in run mode and executes the previously flashed program.




Project PCB Design, Gerber File & PCB Ordering Online

The above schematic is designed using EasyEDA, and it can be directly converted into a PCB layout.

PCB Layout of ESP32 Battery Powered Board
Fig: PCB Layout of ESP32 Battery Powered Board

The PCB mainly uses SMD components, with resistors and capacitors in the 0603 package. The ICs, including the buck-boost converter and battery charging IC, are also in SMD packages. The front side of the PCB contains most of the critical components and looks something like this:

Fig: Top Side View

The backside of the PCB also carries a few supporting components that need to be assembled. The rear view of the board is shown below.

Fig: Bottom Side ESP32

The Gerber file for this ESP32-based Battery Powered IoT Board is provided below. You can download the Gerber file and place an order with a PCB manufacturer like ALLPCB for as low as $1.

Download: ESP32 Battery Powered Board Gerber File

To order the PCB, visit the ALLPCB Official Website and upload the Gerber file using the Quote Now option. You can then choose your required parameters, such as Material Type, Dimensions, Quantity, Thickness, and Solder Mask Color.

ALLPCB is making PCB prototyping more affordable for new users by offering $30 off your first PCB order, plus $30 off shipping. With this promotion, you can enjoy free shipping on your first order—no restrictions on size, layers, or quantity.

Here is the campaign detail: Unlock $1 PCB Prototyping

Once all the details are filled in, select your country and shipping method. After confirming everything, you can place the order and wait for your boards to arrive.

The 3D view of the PCB design looks like this:

Fig: 3D View Battery Powered ESP32 Board

Finally, after receiving the PCB, you can assemble the SMD components and the ESP32 module on the board.




Assembly & Testing the DIY Battery Powered ESP32 Board

After one week, I received the PCB box from ALLPCB.

The box contained the PCB as expected. The quality was super fine and I could finally use it make my DIY Battery Powered ESP32 Board.

After receiving the PCB from ALLPCB, you can begin by soldering all the SMD components on the front side of the board.

The layout has been kept compact, and only the front side contains the ESP32 module, buck-boost converter, battery charging IC, resistors, and capacitors.

DIY ESP32 Board Battery Powered
Fig: Final DIY ESP32 Board Battery Powered

During the first revision, there were only a few minor issues with capacitor and resistor values, but these have been corrected in the final Gerber files. You can safely order and assemble the board directly using the updated files without any footprint concerns.

Once assembled, connect a 3.7V Lithium-Ion battery to the battery connector.

Fig: Plugin the Battery

To program the ESP32 module, connect an FTDI programmer to the PROG header. The programming process is automatic—there’s no need to press reset or boot buttons manually.

Fig: Programming the ESP32 Module

For charging, simply plug in a Type-C USB cable to the onboard USB connector. A red LED will light up to indicate USB power.

Battery Powered ESP32 Board
Fig: Charging the Battery

You can use a multimeter and check if the battery is being charged or not, as there will be an increase in battery voltage during charging.




Uploading a Test Code to Battery Powered ESP32 Board

Once the hardware assembly is complete and the battery is connected, you can upload an example code to verify that the board is working properly. Simply connect your FTDI module directly to the PROG header on the PCB.

Open the Arduino IDE, copy the example code, and paste it into a new sketch. From the Tools → Board Manager, select ESP32 Dev Module as the board type, and also choose the correct COM port corresponding to your FTDI adapter.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#define SENSE_PIN 34
#define NUM_SAMPLES 32
 
// Divider values (Ohms)
const float R_TOP    = 100000.0f;   // R11
const float R_BOTTOM = 100000.0f;   // R12
const float DIVIDER_GAIN = (R_TOP + R_BOTTOM) / R_BOTTOM;  // = 2.0 with 100k/100k
 
void setup() {
  Serial.begin(115200);
  delay(300);
 
  // On ESP32 you can set width/atten globally
  analogReadResolution(12); // 12-bit (0..4095)
  analogSetAttenuation(ADC_11db);  // allows ~0–3.9V on ADC input
 
  Serial.println(F("ESP32 Battery Voltage Reader (IO34, 100k/100k divider)"));
}
 
uint16_t readRawAverage(uint8_t pin, uint16_t n) {
  uint32_t acc = 0;
  for (uint16_t i = 0; i < n; i++) {
    acc += analogRead(pin);
    delayMicroseconds(200);
  }
  return (uint16_t)(acc / n);
}
 
uint32_t readMilliVoltsAverage(uint8_t pin, uint16_t n) {
  uint32_t acc = 0;
  for (uint16_t i = 0; i < n; i++) {
    acc += analogReadMilliVolts(pin); // calibrated mV
    delayMicroseconds(200);
  }
  return acc / n; // mV at the pin
}
 
void loop() {
  uint16_t raw = readRawAverage(SENSE_PIN, NUM_SAMPLES);
  uint32_t vSense_mV = readMilliVoltsAverage(SENSE_PIN, NUM_SAMPLES);
 
  // Undo the divider to compute battery voltage
  float vBat_V = (vSense_mV * DIVIDER_GAIN) / 1000.0f; // volts
 
  Serial.print(F("RAW="));
  Serial.print(raw);
  Serial.print(F("  Vsense="));
  Serial.print(vSense_mV / 1000.0f, 3);
  Serial.print(F(" V  Vbat="));
  Serial.print(vBat_V, 3);
  Serial.println(F(" V"));
 
  delay(500);
}



Finally, click the Upload button. The code will be automatically uploaded to your ESP32 board without the need to press any reset or boot buttons.

After successfully uploading the sketch, open the Serial Monitor in the Arduino IDE. Make sure the baud rate is set to 115200.

If everything is working correctly, the Serial Monitor will begin displaying continuous readings of the raw ADC values, the sensed voltage at the ESP32 pin, and the calculated battery voltage. You may build an IoT Battery SoC Monitoring System project using this board.

This is how you can design and assemble your own battery-powered ESP32 board for compact and energy-efficient IoT applications.


Video Tutorial & Guide

Build Your Own ESP32 Board for Compact Low-Power IoT Devices
Watch this video on YouTube.

Share. Facebook Twitter Pinterest LinkedIn Tumblr Email Reddit Telegram WhatsApp
Previous ArticleBuild IoT DC Energy Meter with ESP32 Web Dashboard
Next Article Speed-Run Translations: Making Fast-Moving Meme Videos Accessible Worldwide

Related Posts

IoT Based PM & Air Quality Monitoring System using ESP32

IoT Based PM & Air Quality Monitoring System using ESP32

DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

Updated:May 10, 20261K
IoT Activity Tracker with ESP32 & Accelerometer Gyroscope

IoT Activity Tracker with ESP32 & Accelerometer/Gyroscope

Updated:May 2, 2026

ESP32 IoT Vehicle Motion Analyzer with MPU6050 & LIS3MDL

Updated:April 27, 20261K
High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

Updated:April 27, 20262K
DIY Colorimeter using AS7265x Spectroscopy Sensor & ESP32

DIY Colorimeter using AS7265x Spectroscopy Sensor & ESP32

Updated:February 1, 20261K
Add A Comment

CommentsCancel reply

Latest Posts
IoT Based PM & Air Quality Monitoring System using ESP32

IoT Based PM & Air Quality Monitoring System using ESP32

May 31, 2026
DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

May 10, 2026
IoT Activity Tracker with ESP32 & Accelerometer Gyroscope

IoT Activity Tracker with ESP32 & Accelerometer/Gyroscope

May 2, 2026
A Guide to Sourcing Obsolete ICs for Vintage Projects

Beyond AliExpress: A Guide to Sourcing Obsolete ICs for Vintage Projects

April 21, 2026

ESP32 IoT Vehicle Motion Analyzer with MPU6050 & LIS3MDL

April 27, 2026
Building a Smart Sensor Node with a BLE Microcontroller

Building a Smart Sensor Node with a BLE Microcontroller

February 26, 2026
High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

April 27, 2026
DIY Colorimeter using AS7265x Spectroscopy Sensor & ESP32

DIY Colorimeter using AS7265x Spectroscopy Sensor & ESP32

February 1, 2026
Top Posts & Pages
  • IoT Based PM & Air Quality Monitoring System using ESP32
    IoT Based PM & Air Quality Monitoring System using ESP32
  • 12V DC to 220V AC Inverter Circuit & PCB
    12V DC to 220V AC Inverter Circuit & PCB
  • IoT AC Energy Meter with PZEM-004T & ESP32 WebServer
    IoT AC Energy Meter with PZEM-004T & ESP32 WebServer
  • Buck Converter: Basics, Working, Design & Application
    Buck Converter: Basics, Working, Design & Application
  • ECG Graph Monitoring with AD8232 ECG Sensor & Arduino
    ECG Graph Monitoring with AD8232 ECG Sensor & Arduino
  • How to use INA219 DC Current Sensor Module with Arduino
    How to use INA219 DC Current Sensor Module with Arduino
  • IoT Based Electricity Energy Meter using ESP32 & Blynk
    IoT Based Electricity Energy Meter using ESP32 & Blynk
  • Interfacing PN532 NFC RFID Module with Arduino
    Interfacing PN532 NFC RFID Module with Arduino
Categories
  • Arduino Projects (197)
  • Articles (60)
    • Learn Electronics (19)
    • Product Review (15)
    • Tech Articles (28)
  • Electronics Circuits (46)
    • 555 Timer Projects (21)
    • Op-Amp Circuits (7)
    • Power Electronics (13)
  • IoT Projects (204)
    • ESP32 MicroPython (7)
    • ESP32 Projects (81)
    • ESP32-CAM Projects (15)
    • ESP8266 Projects (76)
    • LoRa/LoRaWAN Projects (22)
  • Microcontrollers (38)
    • AMB82-Mini IoT AI Camera (4)
    • BLE Projects (18)
    • STM32 Projects (19)
  • Raspberry Pi (93)
    • Raspberry Pi Pico Projects (57)
    • Raspberry Pi Pico W Projects (12)
    • Raspberry Pi Projects (24)
Follow Us
  • Facebook
  • Twitter
  • Pinterest
  • Instagram
  • YouTube
About Us

“‘How to Electronics’ is a vibrant community for electronics enthusiasts and professionals. We deliver latest insights in areas such as Embedded Systems, Power Electronics, AI, IoT, and Robotics. Our goal is to stimulate innovation and provide practical solutions for students, organizations, and industries. Join us to transform learning into a joyful journey of discovery and innovation.

Copyright © How To Electronics. All rights reserved.
  • About Us
  • Disclaimer
  • Privacy Policy
  • Contact Us
  • Advertise With Us

Type above and press Enter to search. Press Esc to cancel.

Ad Blocker Enabled!
Ad Blocker Enabled!
Looks like you're using an ad blocker. Please allow ads on our site. We rely on advertising to help fund our site.