Skip to the content
PCBKitNew board
2 layers73.5 × 65.5 mmESP32 Sensor Data Acquisition Board, the printed circuit board in 3D

ESP32 Sensor Data Acquisition Board

EldinLz/esp32-sensor-daq

Custom ESP32-C3 sensor data acquisition PCB, firmware, fabrication files, and validation plan.

Size
73.5 × 65.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
16
Nets
23
Pads
62
Tracks, vias
109, 0
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
6 Aug 2026
Updated
21 Oct 2026

Overview

ESP32 Sensor Data Acquisition Board is an open-source printed circuit board by EldinLz, from the EldinLz/esp32-sensor-daq repository on GitHub. It is a 2-layer board of 73.5 × 65.5 mm with 16 parts on 23 nets, routed with 109 tracks and 0 vias.

It is built around the ESP32-C3-DEVKITM-1 and BME280. Its parts include 5 resistors, 2 ICs, 1 capacitor, 1 diode and 1 connector. It belongs with the sensors and measurement boards and the ESP32 and RISC-V boards of this library.

Main components

2

README

README.md

ESP32 Sensor Data Acquisition Board

A custom two-layer PCB and Arduino firmware project for collecting ambient-light, temperature, humidity, and pressure data with an ESP32-C3.

Assembled Rev A ESP32 sensor data-acquisition PCB

Project status: Rev A was hand-assembled, programmed, and hardware-validated on 2026-08-22. The ESP32-C3 streams serial CSV data, the BME280 is detected over I2C, and the MCP6002-buffered light channel responds from covered to bright-light conditions. Long-duration logging and calibrated light measurement have not been completed.

Overview

This project combines a custom KiCad carrier board with an ESP32-C3 DevKitM-1. A photoresistor signal is conditioned by an MCP6002 op-amp and sampled by the ESP32 ADC, while a BME280 breakout provides environmental data over I2C. Six labeled test points expose the primary power and signal nets for structured bring-up and debugging.

mermaid
flowchart LR
    LDR["Photoresistor divider"] --> OP["MCP6002 buffer"]
    OP --> ADC["ESP32-C3 GPIO0 / ADC"]
    BME["BME280 temperature, humidity, pressure"] -->|"I2C: GPIO4 SDA, GPIO5 SCL"| ESP["ESP32-C3"]
    ADC --> ESP
    ESP --> LED["Status LED on GPIO7"]
    ESP --> USB["CSV data over USB serial"]

Finished hardware

The Rev A PCB was assembled by hand with the ESP32-C3 in removable socket headers and the BME280 connected through the labeled J1 I2C header.

Top-down view of the assembled PCB and connected BME280 breakout

Key features

  • ESP32-C3 DevKitM-1 controller on removable 1x15 sockets
  • BME280 interface with 4.7 kOhm I2C pull-up resistors
  • Photoresistor voltage divider buffered by an MCP6002 op-amp
  • 100 nF local decoupling capacitor for the analog section
  • Status LED with a 330 Ohm current-limiting resistor
  • Six labeled test points: 3V3, GND, raw light signal, buffered ADC signal, SDA, and SCL
  • CSV serial output suitable for logging or plotting
  • Through-hole construction for accessible hand assembly and rework

Pin map

FunctionESP32-C3 pinPCB test point or connector
Light sensor ADCGPIO0TP4 ADC
I2C SDAGPIO4TP5 SDA, J1 pin 3
I2C SCLGPIO5TP6 SCL, J1 pin 4
Status LEDGPIO7D1 through R5
3.3 V3V3TP1, J1 pin 1
GroundGNDTP2, J1 pin 2
Raw light-divider signal-TP3 RAW

Firmware

The Arduino firmware:

  1. Initializes the ESP32 ADC and the BME280 at address 0x77, then tries 0x76 as a fallback.
  2. Samples the buffered light-sensor signal once per second.
  3. Reads temperature, humidity, and pressure when the BME280 is available.
  4. Emits one CSV row per second at 115200 baud.

Measured Rev A serial output:

text
BME280 detected
time_ms,light_raw,light_percent,temperature_C,humidity_percent,pressure_hPa
628,2058,50.3,25.70,47.22,1009.73

Build environment

  • Arduino IDE 2.3.10
  • esp32 board package by Espressif Systems 3.3.11
  • Board target: ESP32C3 Dev Module
  • Adafruit BME280 Library 2.3.0 and its installed dependencies

Rev A hardware validation

These captured values demonstrate end-to-end operation; they are not calibration data.

CheckResultCaptured evidence
Post-assembly power-off checkPassNo 3V3-to-GND short was found.
3.3 V operationPassThe assembled board powered and ran from the ESP32-C3 3.3 V rail.
Firmware and serial outputPassFirmware uploaded successfully and produced one 115200-baud CSV row per second.
BME280 I2C sensingPassSerial Monitor reported BME280 detected; observed readings were about 25.2-26.0 C, 47-49% RH, and 1009.7-1009.9 hPa.
Light channel - coveredPasslight_raw approximately 247-265; light_percent approximately 6.0-6.5%.
Light channel - room lightPasslight_raw approximately 1887-2134; light_percent approximately 46.1-52.1%.
Light channel - flashlightPasslight_raw = 4095; light_percent = 100.0%.
Status LEDPassA brief firmware-driven activity blink was observed.

light_percent is the 12-bit ADC reading normalized to full scale; it is not a calibrated lux measurement. The light tests validate the complete photoresistor-divider, MCP6002-buffer, ADC, firmware, and serial-output path, but do not independently characterize the op-amp transfer function.

See VALIDATION.md for the full validation record and TEST_PLAN.md for the staged bring-up procedure.

Repository structure

text
.
├── fabrication/  Final Gerber and drill archive used for PCB ordering
├── firmware/     Arduino sketch folder and firmware source
├── hardware/     KiCad schematic, PCB, and project files
├── images/       KiCad renders and finished Rev A build photos
└── docs/         BOM, validation record, test plan, and resume notes

Design and validation status

  • KiCad schematic ERC: 0 errors and 0 warnings
  • KiCad PCB Editor DRC: 0 errors; one expected footprint/library mismatch warning after the ESP32 socket-pad customization
  • Unrouted connections: 0
  • Gerber and drill archive generated; PCB fabrication and delivery complete
  • Rev A assembly, soldering, post-assembly short check, firmware upload, and serial output: complete
  • BME280 I2C sensing and end-to-end light-channel response: hardware-validated

Optional follow-on characterization

  • Run and archive a one-hour serial logging test
  • Measure TP3 (RAW) and TP4 (ADC) simultaneously to quantify buffer tracking
  • Calibrate the light channel against a lux reference if absolute illumination is required

Parts

16
QtyValueFootprintReferences
6TestPointTestPoint:TestPoint_Plated_Hole_D2.0mmTP1, TP2, TP3, TP4, TP5, TP6
24.7kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3, R4
1100nFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1
110kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2
1330Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR5
1BME280Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1ESP32-C3-DevKitM-1RF_Module:ESP32-C3-DevKitM-1U1
1LEDLED_THT:LED_D5.0mmD1
1MCP6002-xPPackage_DIP:DIP-8_W7.62mmU2
1R_PhotoOptoDevice:R_LDR_5.1x4.3mm_P3.4mm_VerticalR1

Questions

How big is the ESP32 Sensor Data Acquisition Board PCB?

It measures 73.5 × 65.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ESP32 Sensor Data Acquisition Board use?

16 parts, built around the ESP32-C3-DEVKITM-1 and BME280. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the ESP32 Sensor Data Acquisition Board KiCad files?

From the EldinLz/esp32-sensor-daq repository on GitHub, at the commit this page was made from: the board is hardware/ESP32_Sensor_Data_Acquisition_Board.kicad_pcb and its schematic hardware/ESP32_Sensor_Data_Acquisition_Board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the ESP32 Sensor Data Acquisition Board design in my own project?

Its repository states no licence, so its author keeps all rights: ask EldinLz before reusing the design.

Similar boards

  • 2 layersControls, the printed circuit board in 3D

    Controls

    VladimirVladimirovMinkov/UOA_HPA

    This is a code and document repository for the University of auckland Aeronaughtics Club Human Powered Aircraft

    16 parts1
  • 2 layers106.5 × 66 mmTry, the printed circuit board in 3D

    Try

    Ahmed-YSY/FleetGuard

    IoT vehicle telematics for fleet & logistics — ESP32 + SIM7600G 4G/GPS tracker with fuel-theft detection, tamper/cargo security alarms, offline-resilient MQTT reporting, and OBD2 data over ESP-NOW.

    18 parts6
  • 2 layers60 × 40 mmEsp ppo v2, the printed circuit board in 3D

    Esp ppo v2

    iho77/ppo_v2

    This work is licensed under a [Creative Commons Attribution-NonCommercial 4.0 International License][cc-by-nc].

    19 parts5
  • 2 layers226.3 × 90.5 mmClockclock main, the printed circuit board in 3D

    Clockclock main

    TiboDevC/clockclock

    Personal project of a kinetic clock inspired by Humans Since 1982, using 48 stepper motors to display time in an artistic and dynamic way.

    132 parts3GPL-3.0
  • 4 layers58 × 60 mmProject 6 esp32 solar prototype, the printed circuit board in 3D

    Project 6 esp32 solar prototype

    Abineshpk007/KICAD-solar_panel_monitoring_prototype

    This is my PCB, there are many outer like it but this is mine

    15 parts1
  • 2 layers115.4 × 66.5 mmCNC Router, the printed circuit board in 3D

    CNC Router

    diaxxu/CNC-Router

    a challenge i gave myself to make something great ! yes its a cnc milling / laser / plotter machine

    34 parts1MIT
  • 2 layersHail Mary, the printed circuit board in 3D

    Hail Mary

    saniyafatima07/Hail_Mary

    Lakshya: Low Cost Precision Guidance and Smart Electronic Fuze System

    11 parts1
  • 2 layers70.8 × 51.4 mmESS Bottom, the printed circuit board in 3D

    ESS Bottom

    shrimp-18/ESS-Wristband

    A hardware Project:- Wristband

    14 parts1