Skip to the content
PCBKitNew board
4 layers30 × 51 mmEnv sensor b, the printed circuit board in 3D

My very first PCB: an ESP32-C6 temperature/humidity sensor prototype, exploring compact and thermally isolated layouts from one shared electrical design.

Size
30 × 51 mm
Copper layers
4
Thickness
1.6 mm
Parts
64
Nets
49
Pads
223
Tracks, vias
309, 105
Pours
96
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
25 Aug 2026
Updated
28 Oct 2026

Overview

Env sensor b is an open-source printed circuit board by marcelpetrick, from the marcelpetrick/sensorly-unhinged repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 30 × 51 mm with 64 parts on 49 nets, routed with 309 tracks and 105 vias.

It is built around the ESP32-C6-MINI-1-N4, SHT45-AD1F-R2 and TPS62840DLCR, with the BQ24074RGTR and USBLC6-2SC6 among its other parts. Its parts include 22 resistors, 14 capacitors, 5 ICs, 2 connectors and 1 diode. It belongs with the sensors and measurement boards and the ESP32 and RISC-V boards of this library.

Main components

5

README

README.md

sensorly-unhinged

Hardware Quality (master) Release workflow: manual Manufacturing: not released License: GPL v3 or later KiCad 10 Status: engineering prototype

My very first PCB project: a battery-powered indoor temperature and humidity node, developed as one electrical platform in two physical implementations so that the cost of compactness can be measured instead of guessed.

Author: Marcel Petrick mail@marcelpetrick.it

License: GPLv3 or later. See LICENSE.

Note: project is generated with AI.

text
                    ESP32-C6-MINI-1 + SHT45-AD1F + BQ24074 + TPS62840
                    1S LiPo · USB-C · deep sleep · BLE provisioning · MQTT/TLS
                                          |
                 +------------------------+------------------------+
                 |                                                 |
         Variant A - Compact                        Variant B - Thermally isolated
         30 × 34 mm, one rectangle                  30 × 51 mm, milled sensor island
         sensor 11.5 mm from the                    on a 3.5 x 8 mm FR-4 neck,
         nearest heat source                        sensor 24.5 mm away;
                                                    thermal benefit unmeasured
Variant AVariant B
A — Compact (HW A1)B — Thermally isolated (HW B1)
Case ACase B
47.0 × 39.2 × 19.6 mm, one chamber47.0 × 56.2 × 19.6 mm, two chambers, wall at the neck

Build 5 of each, put them next to a reference instrument, and let the data pick the design. The decision gate is written down in docs/50-thermal-ab-test-plan.md before the boards exist, including the thresholds under which A wins.

Status

Engineering prototype; not ready for fabrication or use. The twenty-finding review records corrective work and unresolved qualification. make outputs produces explicitly marked draft review files. make release-check requires complete routing, clean DRC/parity and the evidence listed in hardware/release-readiness.json. A development pipeline pass does not imply a working sensor or safe battery charging.

Partially routed: the current exact counts are recorded in hardware/drc-budget.json, with verification history in the execution plan. Sensor routes, local power/ground paths and regulator controls are generated; USB and remaining main-board branches are incomplete. Development DRC has zero errors, warnings and schematic/PCB parity differences; manufacturing also requires zero unconnected items. Phase 6 of 14 — see docs/00-plan.md.

A compiled, radio-disabled bring-up application and fixture capture are now available. Full telemetry firmware and device qualification remain open. The prototype-to-production handoff separates public engineering sources, controlled prototype orders and qualified products.

The current audit and ordered work through the prototype experiment and 20-unit series are in docs/01-execution-plan.md.

text
KiCad ERC      0 violations
KiCad DRC      0 errors, 0 warnings on both boards (KiCad 10.0.6)
Sch/PCB parity 0 differences  (both are generated from one model)
Ratsnest       Incomplete on both boards (exact counts: hardware/drc-budget.json)
Outputs        4-layer gerbers, drill, CPL, assembly PDF, STEP, schematic PDF, BOM

schematic

Build

Everything runs from make. If a step cannot, it is not part of the build.

bash
./localPipeline.sh   # hardware and host tests, with a PASS/FAIL summary

Or step by step:

bash
make license   # every authored source carries an SPDX header
make check     # generator rule checks   (Python only, no KiCad needed)
make test      # fault-injection regressions for electrical, build and model failures
make gen       # regenerate the schematic, both boards, project files, rules, SVGs
make erc       # KiCad ERC on the shared schematic
make drc       # KiCad DRC + schematic/PCB parity gate on both variants
make bom       # BOM + netlist from the shared design model
make thermal   # regenerate the thermal model from the live geometry
make cost      # regenerate the manufacturing estimate from the real design
make mech      # enclosure model + checks + OpenSCAD params (STL if openscad)
make outputs   # gerbers, drill, CPL, assembly PDF, STEP
make render    # KiCad 3D renders
make mech-render # optional enclosure PNG previews (requires a graphics display)
make power     # illustrative battery-side charge budget; replace inputs with measurements
make release-check # fails until routing and qualification are complete
make release-package RELEASE_TAG=hw-a1 # gated ZIP + SHA-256 for one printed revision
make firmware-test # host CRC/decoder fault tests
make firmware   # source pinned ESP-IDF v5.5.4 export.sh first
make prototype-check # separate prototype reviews; currently fails on layout/reviews
make prototype-package PROTOTYPE_VARIANT=a # gated 5-unit engineering order package
make all

Host firmware tests also require a C compiler and standard C development headers (gcc and libc6-dev on the Debian CI image). Container workflows explicitly trust their checked-out workspace for Git provenance checks.

Python-only checks include check, test, bom, thermal, cost, and power. ERC/DRC, board renders and exports require KiCad 10 (kicad-cli); mesh checks require OpenSCAD. Offline checks alone cannot establish hardware readiness.

The quality badge reports the latest master workflow result. The release workflow badge links to a manual process, rather than displaying an empty run status. No manufacturing release has been published; the manufacturing badge records that state without querying a nonexistent latest release. Both release labels are repository-owned SVGs; update the manufacturing label when a qualified release is actually published.

GitHub's Hardware Quality workflow runs the same localPipeline.sh gate and retains draft Gerbers, reports and enclosure meshes for 14 days. The separate, manual Hardware Release workflow accepts only a tag matching the revision printed on the selected PCB (hw-a1 or hw-b1 today). It cannot package or publish until make release-check proves clean routing, clean DRC/parity and all seven qualification-evidence categories. Publishing is opt-in and draft by default; a successful package contains a SHA-256 checksum and source provenance. Requesting make outputs OUTPUT_CLASS=release also runs qualification. Release markers are written only after every export succeeds. Packaging rejects draft markers and missing manufacturing files, repeats the live release gate and exports when invoked directly, and includes the evidence files referenced by the manifest. Packaging requires a clean committed source tree and verifies the recorded commit against HEAD before and after export.

How the two boards stay one design

tools/boardgen/ holds the parts, values, netlist, net classes and design rules once. variants.py is the only variant-specific file, and it contains outline, sensor position and thermal zones — nothing electrical. Both .kicad_pcb files are emitted from that model, so a rule change cannot silently apply to only one board.

The four sensor-island nets are routed by the generator rather than by hand, because they carry a rule — 0.15 mm wide, no vias, nothing else near them — and the same rule is written into each variant's .kicad_dru. A number that only lives in a designer's memory gets widened the first time a route is awkward.

Documents

AGENTS.mdworking agreement — read before changing anything
docs/00-plan.md14 phases with gates, schedule, risks, non-goals
docs/10-requirements.mdnumbered requirements, locked vs open
docs/20-component-selection.mdwhy SHT45 and not BME280; why C6 and not C3
docs/30-electrical-design-spec.mdthe circuit, every value traced to a datasheet
docs/40-floorplans.mdA vs B, and what the layout decided
hardware/outputs/schematic/env-sensor.pdfthe schematic, as built
docs/45-thermal-model.mdgenerated screening model
docs/50-thermal-ab-test-plan.mdthe experiment and its decision gate
docs/60-manufacturing-cost.mdgenerated cost estimate, from the real joint count
docs/61-cost-reduction.mdwhat would make it cheaper, and what each saving costs
docs/62-fabrication-3-boards.mdwho makes three boards, and what the antenna needs from them
docs/70-what-the-board-can-do.mdwhat firmware alone unlocks — three radios, one board
docs/80-enclosure.mdgenerated enclosure model, and the requirements it breaks
docs/vision.mdthe original transcript this was distilled from

Layout

text
docs/            requirements, specs, trade studies, test plans
hardware/
  lib/           project footprint library (vendored + authored, verified)
  variant-a/     HW A1 - compact
  variant-b/     HW B1 - thermally isolated
  outputs/       gerbers, drill, BOM, CPL, STEP  (regenerated by CI)
hardware/schematic/  one generated schematic, shared by both variants
tools/boardgen/  the shared model: design, schematic, geometry, placer, router, checks
mechanical/      OpenSCAD enclosures, generated parameters from the board
firmware/        pinned ESP-IDF engineering bring-up application

Licence

GPL-3.0-or-later — see LICENSE. That covers everything authored here: the generator, the schematic and both boards, the enclosure model, the documents. Every authored source file carries an SPDX header, the generated KiCad files carry it in their title block, and make license fails the build if one is missing — a licence that only exists at the repository root stops travelling the moment a file is copied out.

Two things in the tree are not ours and keep their own terms:

hardware/lib/sensorly.pretty/* and hardware/lib/sensorly.kicad_sym (except the two authored parts)from the official KiCad libraries, CC-BY-SA 4.0 with the KiCad library exception — which explicitly permits unlimited use in your own designs without imposing licence terms on the design itself. See hardware/lib/README.md.
Datasheet figures quoted in docs/the manufacturers'. Cited, not reproduced.

The KiCad library exception is what makes this combination clean: the footprints can sit inside a GPL project without the CC-BY-SA terms propagating to the board.

Parts

64
QtyValueFootprintReferences
6100k 1%sensorly:R_0402_1005MetricR7, R8, R9, R10, R19, R20
6100nF/16V X7Rsensorly:C_0402_1005MetricC2, C5, C6, C12, C13, C14
510uF/16V X5Rsensorly:C_0805_2012MetricC1, C8, C9, C10, C11
410k 1%sensorly:R_0402_1005MetricR1, R3, R4, R22
20Rsensorly:R_0402_1005MetricR5, R21
21uF/16V X5Rsensorly:C_0402_1005MetricC3, C4
22M2 1%sensorly:R_0402_1005MetricR14, R15
25k1 1%sensorly:R_0402_1005MetricR16, R17
2GNDsensorly:TestPad_D1.5mm_BottomTP1, TP17
1+3V0sensorly:TestPad_D1.5mm_BottomTP4
12.2uHsensorly:L_Murata_DFE201612EL1
1267k 1%sensorly:R_0402_1005MetricR6
12N7002sensorly:Onsemi_CASE318_SOT23Q1
13k01 1%sensorly:R_0402_1005MetricR12
13k3 1%sensorly:R_0402_1005MetricR2
14.7uF/10V X5Rsensorly:C_0603_1608MetricC7
147k 1%sensorly:R_0402_1005MetricR18
14k42 1%sensorly:R_0402_1005MetricR13
18k06 1%sensorly:R_0402_1005MetricR11
1BOOT_Nsensorly:TestPad_D1.5mm_BottomTP7
1BQ24074RGTRsensorly:TI_RGT0016B_VQFN16_3x3mmU4
1CHG_Nsensorly:TestPad_D1.5mm_BottomTP14
1ENsensorly:TestPad_D1.5mm_BottomTP6
1ESP32-C6-MINI-1-N4sensorly:ESP32-C6-MINI-1U1
1LED_GREENsensorly:Kingbright_KP1608SGCD1
1Molex PicoBlade 3Psensorly:Molex_PicoBlade_53261-0371_1x03-1MP_P1.25mm_HorizontalJ2
1PG_Nsensorly:TestPad_D1.5mm_BottomTP15
1SCLsensorly:TestPad_D1.5mm_BottomTP13
1SDAsensorly:TestPad_D1.5mm_BottomTP12
1SHT45-AD1Fsensorly:Sensirion_DFN-4_1.5x1.5mm_P0.8mm_SHT4x_NoCentralPadU2
1SW_PROVsensorly:Panasonic_EVQPUJ_EVQPUASW1
1TEST_MODEsensorly:TestPad_D1.5mm_BottomTP16
1TPS62840DLCsensorly:TI_DLC0008B_VSON-HR-8_2x1.5mm_P0.5mmU3
1UART_RXsensorly:TestPad_D1.5mm_BottomTP9
1UART_TXsensorly:TestPad_D1.5mm_BottomTP8
1USB-C 16Psensorly:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1
1USBLC6-2SC6sensorly:ST_USBLC6_SOT23_6U5
1USB_D_Nsensorly:TestPad_D1.5mm_BottomTP11
1USB_D_Psensorly:TestPad_D1.5mm_BottomTP10
1VBATsensorly:TestPad_D1.5mm_BottomTP5
1VBUSsensorly:TestPad_D1.5mm_BottomTP2
1VSYSsensorly:TestPad_D1.5mm_BottomTP3

Questions

How big is the Env sensor b PCB?

It measures 30 × 51 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Env sensor b use?

64 parts, built around the ESP32-C6-MINI-1-N4, SHT45-AD1F-R2, TPS62840DLCR and BQ24074RGTR. 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 Env sensor b KiCad files?

From the marcelpetrick/sensorly-unhinged repository on GitHub, at the commit this page was made from: the board is hardware/variant-b/env-sensor-b.kicad_pcb and its schematic hardware/schematic/env-sensor.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Env sensor b design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers88 × 48 mmMainboard reva, the printed circuit board in 3D

    Mainboard reva

    aliaksei-lameyka/ENKU-Clock

    Open, repairable, local-first e-paper alarm clock.

    82 parts1
  • 2 layers100 × 50 mmBPV4 CollarEVAL, the printed circuit board in 3D

    BPV4 CollarEVAL

    rees3901/BluepawsV4

    version 4 of my on-going cat tracker project. this differs in structure in that both the TX collar and Rx homehub will be in the same repo to ensure intercompatability

    58 parts
  • 4 layers60 × 36 mmCamera Project, the printed circuit board in 3D

    Camera Project

    Raphi25/Camera-Project

    This project investigates the development of a low-cost wearable camera system intended to support caregivers by capturing images throughout the wearer's daily life.

    132 parts
  • 6 layers51 × 65 mmOwo, the printed circuit board in 3D

    Owo

    hydrastro/owo

    uwu

    135 parts3
  • 2 layers49 × 50.4 mmAirMonitor, the printed circuit board in 3D

    AirMonitor

    JJendryka/AirMonitor

    60 parts
  • 4 layers70 × 109.2 mmManafish, the printed circuit board in 3D

    Manafish

    Tropaion/Manafish_Mainboard

    The Manafish Mainboard is the main electronics board of the Manafish ROV. It replaces the Raspberry Pi 3B, the USB-connected Raspberry Pi Pico and the wiring between them with one board:

    127 partsAGPL-3.0
  • 4 layers42 × 155 mmNrf moisture sensor, the printed circuit board in 3D

    Nrf moisture sensor

    alxgmpr/moisture-sensor

    Indoor capacitive soil moisture sensor - nRF54L15 + nPM1300 + FDC1004, BTHome v2 over BLE

    60 parts
  • 2 layers90 × 60 mmStridophone, the printed circuit board in 3D

    Stridophone

    jayis1/hardware-design-lab

    Full-cycle hardware device designs — each device in its own subfolder with architecture, schematics, PCB layout, and software stack

    18 parts