project
Ghost Hand
Public Unreviewedby John Lauer
A small battery gadget that keeps an automatic sink faucet running while you use the sink: it learns the faucet's timeout, re-arms with the shortest blip, and stops after 10 minutes or when picked up.
← Commit history
Dashboard images get content-hashed names so the page never shows a cached old screenshot
10 files changed
+9−9
README.md+9−9docs/studio/architecture-c58dbf60.pngdocs/studio/battery-cd475f0f.pngdocs/studio/charging-cc89151a.pngdocs/studio/engrave-28497848.pngdocs/studio/ir-97cd3b7f.pngdocs/studio/learning-c070ec94.pngdocs/studio/lights-51d4ab6d.pngdocs/studio/model3d-1eee5a3c.pngdocs/studio/schematic-d536fe78.pngREADME.md+9−9@@ -34,7 +34,7 @@ system fires two single-shot timers that light the emitters, all in hardware, un faucet's pulse begins. The echo therefore lands inside the faucet's own listening window and reads as a strong reflection. The CPU only decides *when* to echo. -+ ### Wavelengths and faucets covered @@ -51,7 +51,7 @@ the common brands: | Kohler K-13460 | 30 s maximum run | | | TOTO EcoPower | 10 or 60 s by model | | -+ ### Learning the faucet @@ -63,7 +63,7 @@ and pulse width, echoes until the rate drops (that is the timeout), then re-arms from its first miss. Faucets whose rate never changes get a blip every 8 s. What it learns is kept in EEPROM, keyed to the faucet's idle period. -+ ## The lights @@ -79,7 +79,7 @@ EEPROM, keyed to the faucet's idle period. | Full | off | all four green 5 s, then a dim pulse every 10 s | | Unplugged | off | the level for 2 s | -+ ## Charging and battery life @@ -87,7 +87,7 @@ USB-C 5 V feeds an MCP73831 linear charger at 196 mA (about 0.39 C, gentle for a cell in a sealed case): constant current, then constant voltage at 4.2 V, full in about 3.2 h. A TPS7A02 makes the 3.3 V rail on 25 nA of quiescent current. -+ The budget is built from the typical current of every part (Adafruit 1578, 500 mAh 1S LiPo, 425 mAh usable, stop at 3.45 V):@@ -104,7 +104,7 @@ stop at 3.45 V): Self-discharge of the cell (3.0 %/month assumed (0.5 mAh/day), larger than the sleep current) matters more than the sleep current. The faucet's pulse rate and the light pattern are the two big unknowns. -+ ## Board @@ -113,7 +113,7 @@ pours, current and heat analysis, silkscreen and 3D, on a 3rd party fab's 2-laye machine pins are the same pins that seat it in an Adom workcell, and in the case they press into printed sockets that hold the board. -+ The AI Flow run, step by step: [board-claude-opus-5-5-20261106-1434](docs/runs/board-claude-opus-5-5-20261106-1434), [ghost-hand-claude-opus-5-5-20261106-1434](docs/runs/ghost-hand-claude-opus-5-5-20261106-1434). Build clips: [docs/clips.md](docs/clips.md). @@ -129,7 +129,7 @@ The 3D view at the top of this page is the assembled gadget: open its Layers pan A 54 x 44 mm pebble for a wet sink counter. The roof follows the board's 12 degree nose-up pitch, so drips run off toward the back and the dark front window aims the IR up at the faucet's sensor, with separate transmit and receive openings and an opaque barrier between them. The board's four machine pins press into split printed collets that squeeze them, the same pins that seat it in an Adom workcell. The LiPo lies flat under the board on its own spacer, which also holds an optional steel ballast plate. A TPU gasket seals the seam, a tethered TPU stopper seals the USB-C tunnel, every screw enters from below through a TPU seal, and a TPU ring is the non-slip foot. Five clear-resin light pipes carry the WS2812 lights to the top: the main one is the Adom logo and four pills make the battery gauge. A UV fiber laser engraves the light names on the case. Design notes, print settings and assembly: [case/README.md](case/README.md); engraving guide: [case/laser_engrave.md](case/laser_engrave.md); parametric source: [case/ghost_hand_case.py](case/ghost_hand_case.py). -+ ## Firmware @@ -154,7 +154,7 @@ lights and the safety checks, and a 1 s watchdog guards the main loop. Full sour The build dashboard: an Adom app that shows the architecture, the faucet and its beam, the learning state machine, the lights, charging, battery life and the 3D models, live as the board and case come together. -+ ## Downloads
docs/studio/architecture-c58dbf60.pngadded⋯ 1 unchanged line ⋯
docs/studio/battery-cd475f0f.pngadded⋯ 1 unchanged line ⋯
docs/studio/charging-cc89151a.pngadded⋯ 1 unchanged line ⋯
docs/studio/engrave-28497848.pngadded⋯ 1 unchanged line ⋯
docs/studio/ir-97cd3b7f.pngadded⋯ 1 unchanged line ⋯
docs/studio/learning-c070ec94.pngadded⋯ 1 unchanged line ⋯
docs/studio/lights-51d4ab6d.pngadded⋯ 1 unchanged line ⋯
docs/studio/model3d-1eee5a3c.pngadded⋯ 1 unchanged line ⋯
docs/studio/schematic-d536fe78.pngadded⋯ 1 unchanged line ⋯