Loading 3D model… large boards can take a moment.
USB-powered ESP32-C3 workshop air-quality logger that tracks PM2.5 and VOC trends locally to help makers improve ventilation habits without cloud accounts.
Bench Breathe is a low-voltage, local-first open-hardware project for hobby workshops and desk labs. It samples particulate and VOC indicators with temperature/humidity context, stores bounded trend history locally, and provides a local companion dashboard for setup, quality states, event notes, and explicit export.
Bench Breathe is a non-certified advisory trend logger. It does not determine whether air is safe and is not a medical, emergency, life-safety, or occupational-exposure instrument.
The normative baseline is in hardware/requirements.md, with subsystem ownership, dependencies, evidence gates, and the risk register in PLAN.md.
Key constraints:
Users must follow tool/material manufacturer guidance and appropriate ventilation and PPE practice independently of this device.
docs/protocol.md is finalized contract v1 (HTTP + USB-serial shapes, units, limits, errors, authorization). The firmware baseline still streams the v0-compatible serial line; adoption is tracked in docs/release-checklist.md (T-1).The device remains authoritative for sensor state, timestamps, configuration limits, and retained records. The app presents that contract and must not turn null/invalid values into apparently valid measurements. For the MVP, compiled app assets are served by the device for offline same-origin use. A physical, time-bounded setup action issues the per-device local credential; this reduces casual LAN access but does not make cleartext HTTP confidential or safe for internet exposure.
hardware/requirements.md — normative MVP requirements and safety boundarieshardware/kicad/bench-breathe.kicad_pro — editable KiCad project containerhardware/kicad/bench-breathe.kicad_sch — editable A0 electrical schematic and schematic-owned BOM-property sourcehardware/kicad/bench-breathe.kicad_pcb — planned editable PCBhardware/component-selection.md — exact M2 parts, manufacturer-datasheet checks, static power budget, and dated availability snapshotfirmware/ — device firmware and verificationapp/ — local companion web appdocs/protocol.md — device/app contract (v1)docs/bring-up.md — integration bring-up procedure, wiring/pinouts, calibration, troubleshooting matrix, and evidence ledgerdocs/release-checklist.md — fabrication/release artifact gates and open tracked itemsbom/bom.csv — generated stuffed-BOM export from schematic properties (regenerate with python3 bom/export_bom.py, gate with python3 bom/verify_bom.py)bom/README.md — BOM workflow, sourcing/pricing policy, and file rolesbom/non-schematic-items.csv — enclosure, cables, fasteners, adapter, power supply, and PCB fab with explicit planning statusThe current bom/preliminary-bom.csv is the issue-#2 planning list reconciled against the schematic (Schematic_Refs/Reconciliation columns). It is not a fabrication-ready BOM; bom/bom.csv is the export artifact.
| Milestone | Status |
|---|---|
| M1 — Requirements, architecture, safety, and risk baseline | Baseline documented |
| M2 — Datasheet-backed component selection | Static selection complete; physical validation not started |
| M3 — Editable KiCad schematic and ERC | Complete: clean KiCad 9 ERC plus static validation and PDF review export |
| M4 — Schematic-source BOM export | Complete: bom/bom.csv generated from schematic properties with reproducibility + no-fabricated-price gate (bom/verify_bom.py) |
| M5 — PCB layout and DRC | A0 evidence board complete: 0 DRC violations with 15 documented unrouted stubs — not fab release (see hardware/pcb-notes.md §Residuals and docs/release-checklist.md) |
| M6 — Firmware baseline | Baseline implemented + natively verified (19 unit tests, pinned device build). Bench flash/flash-recovery and power gating on hardware not performed |
| M7 — Companion app baseline | App MVP + contract v1 complete; 13/13 contract tests against the dev simulator only — never run against a real device |
| M8 — Integration and bench bring-up | Bring-up procedure, wiring/pinouts, and troubleshooting published (docs/bring-up.md); all bench steps unexecuted — no prototype exists |
| M9 — Mature fabrication/release bundle | Gate checklist published (docs/release-checklist.md); fab artifacts blocked on A1 stub closure |
The editable A0 schematic and its static ERC/analyzer evidence are complete,
as is the A0 evidence PCB (0 DRC violations, 15 documented unrouted stubs —
not fab release), the natively verified firmware baseline, and the
contract-tested companion app (simulator-evidence only). PCB fab export,
simulation, firmware/app builds on hardware, assembly, bench measurement,
field results, and certification are not claimed. See
docs/bring-up.md (bench procedure and evidence ledger) and
docs/release-checklist.md (release gates and open tracked items).
git clone https://github.com/rwrife/bench-breathe.git
cd bench-breathe
Review hardware/requirements.md, PLAN.md, and the issue backlog before implementing a subsystem. Work should proceed in dependency order and attach the evidence named by the relevant milestone; documentation alone does not satisfy a hardware or physical-test gate.
No comments yet. Be the first to ask about this board.