github.com/chrislafave Β· chris.r.lafave@gmail.com Β· linkedin.com/in/chris-lafave
Current, self-directed bench work. Full write-ups, schematics, firmware source, and photos in the linked repos.
Problem. I needed long-duration logging of low-frequency analog signals on the bench (thermal drift, supply rail sag, sensor output) without tying up an oscilloscope, and wanted results viewable from another room. π€
Approach.
- Analog front end: ADS1115 16-bit ADC, four single-ended channels, RC anti-alias filtering, protective input clamping.
- Controller: ESP32-S3 running ESP-IDF, firmware in C, sampling and networking split across FreeRTOS tasks with a queue between them.
- Interfaces: on-board HTTP server with a live-updating chart, MQTT publish to a local broker, CSV to microSD as the fallback record.
- Hardware: 2-layer PCB designed in KiCad β separated analog and digital ground pours joined at a single point, decoupling cap placed at each supply pin.
Verification.
| Test | Method | Result |
|---|---|---|
| DC accuracy | Compared against calibrated reference, 0β4.096 V in 0.25 V steps | Β±0.3% of reading |
| Noise floor | Shorted input, 10,000 samples | 1.2 LSB RMS |
| Wi-Fi dropout recovery | Forced AP power cycle | Reconnect and resume logging in under 8 s, no sample loss to SD |
What I learned. The first board revision shared a ground pour and placed the switching regulator too close to the ADC input traces β the noise floor was about four times worse. Relocating the regulator and reworking the analog return path fixed it.
My project files. Schematic and layout (KiCad), firmware source, bring-up checklist, test procedure and results, photos of both board revisions.
Problem. Which antenna option actually performs best on a small ESP32 board, and how much does matching matter in practice? π€
Approach. Built one target board with three populated antenna options (PCB trace, ceramic chip, external whip via U.FL/SMA). Measured return loss on each, tuned a pi-network match on the chip antenna, then ran repeatable range tests: fixed AP location, marked distances, 500 pings per point, logging RSSI and packet loss.
Results. Matching improved usable range by roughly 35% over the untuned chip antenna; the external whip outperformed both PCB options by a further margin, at the cost of an extra connector (what insertion loss? Wut?).
What I learned. The mechanical and BOM cost of a connector is a real trade-off against RF gain β the "best" antenna depends on the enclosure and product volume, not just S11. Fixture repeatability dominated the measurement until positions were clamped and marked.
Artifacts. Return-loss plots, matching network design notes, range-test data and logging script.
Problem. A dead 0β30 V linear bench supply, no output, no documentation beyond a service manual. π€
Approach. Traced from the output back through the regulation loop, isolated a shorted pass transistor and two out-of-spec filter capacitors, sourced replacements, and reworked the board. Characterized the repaired unit rather than assuming it was fine.
Results. Load regulation 0.02% from no-load to 2 A; output ripple reduced to 4 mV p-p, measured with a short-ground-spring probe.
What I learned. Probe technique determines what you measure β an early ripple reading came in roughly 3x high because of loop-inductance pickup in the probe ground lead. The corrected measurement and the mistake are both documented.
Artifacts. Fault-isolation notes, before/after ripple scope captures, bill of materials for the repair.

