Compact standalone ESP32 Board Design for Max30102 sensor with OLED display

Замовник: AI | Опубліковано: 21.03.2026

The board is essentially a compact "brain board" — an ESP32-WROOM-32 module with integrated power management, USB-C for charging and programming, and two 4-pin male headers that external modules plug into: one for a 1.3" SH1106 I2C OLED display and one for a MAX30102 PPG sensor breakout. The display and sensor are not soldered to the PCB — they are separate off-the-shelf modules that plug directly onto the male pin headers. The device is powered by a single-cell 3.7V LiPo battery connected via a JST-PH 2-pin connector, with a slide switch for power on/off. Charging is handled by a TP4056-based USB-C charging circuit with charge and done indicator LEDs (red for charging, green or blue for done). The battery feeds into a low-dropout 3.3V regulator — specifically an ME6211C33 or equivalent with under 200mV dropout, since a single LiPo cell drops to 3.5V during discharge and a standard AMS1117 (1V dropout) will not work here. The 3.3V rail powers the ESP32, the display header, and the sensor header. For programming and debugging, the board needs a CH340C (or CP2102N) USB-to-UART bridge sharing the same USB-C connector used for charging. This means one USB-C port handles both battery charging and firmware flashing. An auto-reset circuit using two NPN transistors on the CH340C's DTR and RTS lines connected to the ESP32's EN and GPIO 0 pins is required — this is the standard ESP32 auto-program circuit that allows one-click flashing from ESP-IDF without manually holding any buttons. This is the same circuit used on official ESP32 DevKit boards. The pin mapping is fixed and cannot be changed because the firmware is already written. The OLED display connects to I2C bus 1 on GPIO 16 (SDA) and GPIO 17 (SCL). The PPG sensor connects to I2C bus 0 on GPIO 21 (SDA) and GPIO 22 (SCL). These are intentionally on two separate I2C buses — do not combine them onto one bus. A single tactile push button is connected to GPIO 0 (active low with internal pull-up) for app navigation. A status LED is connected to GPIO 2. An optional small reset button on the EN pin is nice to have for manual reboots but not strictly required. For I2C pull-ups: include 4.7kΩ pull-up resistor footprints on the OLED bus (GPIO 16/17) to 3.3V, but make them optional (the designer can choose to populate or leave unpopulated since most OLED modules have their own pull-ups). Do not place pull-ups on the sensor bus (GPIO 21/22) — the external MAX30102 breakout already has them. The board should be a 2-layer PCB with a solid ground plane, targeting approximately 45mm × 30mm or smaller. Include 2× M2 mounting holes in the corners. The silkscreen should clearly label all connectors with pin names (VCC, GND, SDA, SCL), the sensor and display headers, and include "PPG BP Monitor" branding with a version number. Both the display and sensor connectors are 4-pin 2.54mm pitch male pin headers — please confirm the pin order matches common SH1106 OLED modules (typically GND, VCC, SCL, SDA) and common MAX30102 breakouts (typically VIN, GND, SCL, SDA) so the modules plug in directly without adapter wires. As a bonus, I would like a battery voltage divider (two resistors) connected to GPIO 34 (ADC1 channel) so the firmware can read the battery percentage and display it on screen. Also include test points on key power rails (3.3V, VBAT, 5V USB) and maintain a proper keepout zone around the ESP32 module's antenna area per Espressif's RF design guidelines. Deliverables I need: complete schematic (KiCad preferred, Altium also acceptable), finished PCB layout with copper pours and proper grounding, manufacturing-ready Gerber files compatible with JLCPCB or PCBWay, a Bill of Materials with LCSC/JLCPCB part numbers where possible for easy assembly ordering, a pick-and-place file if SMD components are used, and a 3D render of the finished board.