press → 50,000release → 40,000hysteresis gap → 10,000
ema smoothing
shift=2 · α=0.25 · responsive
1000ms
per-key override
KEY 1
50k
+0
40k
+0
press 50,000 · rel 40,000
KEY 2
50k
+0
40k
+0
press 50,000 · rel 40,000
auto calibration
ready. start with baseline sample, then touch sample.
stats
KEY 1
idle min —
idle max —
idle σ noise —
touch peak —
delta —
suggested press —
suggested release —
KEY 2
idle min —
idle max —
idle σ noise —
touch peak —
delta —
suggested press —
suggested release —
firmware flash & connection manager
Process Status
IDLE
Flashing Flow:
1. Select your XIAO ESP32-S3 serial port below. 2. Click Start Flash (this will safely auto-disconnect the live monitor). 3. Wait for Compilation and Upload (compiling takes 1-2 minutes the first time). 4. Once successful, switch to Live Mode and click Connect Serial.
checking server...
1. Connected
2. Compile
3. Upload
4. Complete
Waiting to flash...
electrode type — sensitivity reference
📌
bare pin tip
low
🔌
insulated wire
medium
🥢
copper tape pad
high
🧵
conductive fabric
high
3d print embedded copper tape method
Technique (John Phillips / Instructables): pause print after layer 3 (~0.6mm), embed copper tape, resume — plastic fully encapsulates it.
Copper tape size: tested at 20mm × 5mm. Larger = more sensitive, more noise. Filament: PETG recommended over PLA — handles soldering heat near the access hole. Solder access hole:3mm × 5mm extruded to layer 3, seal with hot glue after. Layer 4-5: print at 30–40mm/s, 100% solid infill to encapsulate cleanly. Wire routing: keep short. Avoid routing near PWM, switching regulators, WS2812 data lines. Result: invisible, durable, professional touch surface inside any 3D printed part.
ema smoothing — from capacitivebutton library (j. phillips)
Integer EMA formula:ema = ema - (ema >> shift) + (raw >> shift)
No floats, very fast. α = 1/2^shift.
shift=1 → α=0.5, very responsive, less smooth shift=2 → α=0.25, responsive (default) shift=3 → α=0.125, smooth, some lag shift=4+ → α≤0.0625, very smooth, slow to react
Hysteresis: separate press/release thresholds prevent chattering at the boundary.
Always set press > release (ESP32-S3 values go UP on touch).
Note: original library written for ESP32 original (values go DOWN on touch).
Logic is inverted for S3 — press threshold must be HIGHER than release.
environment factors (preliminary — needs more data)
Observations so far (March 14 2026 — desk, loose wires, no enclosure):
• Insulated wire more sensitive than bare pin tip (more contact area + dielectric)
• GND guard removal seemed to have minimal effect — but only one test, one environment
• Baseline ~22,800–23,400 on this board (lower than spec'd 30k–60k)
Need more data: different electrode types, enclosure vs open air,
different humidity days, grounded vs floating setup, long wire vs short wire.