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
Rev 2: release 0.2.0, fab files after the light-row fix, hero 3D with the finished board
7 files changed
+143−10
README.md+15−8@@ -4,7 +4,7 @@ <!-- rev2-status:begin --> ## Rev 2 build status -Rev 2 is being built right now by three AI threads in Adom Hydrogen; this section follows their work. Last updated Nov 8, 8:36 PM Central.+Rev 2 is being built right now by three AI threads in Adom Hydrogen; this section follows their work. Last updated Nov 8, 8:42 PM Central. | Stage | | What it covers | |---|---|---|@@ -16,13 +16,13 @@ Rev 2 is being built right now by three AI threads in Adom Hydrogen; this sectio | Silkscreen | **done** | names of every light and part, 0.6 / 0.3 mm text | | Checks | **done** | DRC, current and heat (Adom Fields), finish | | 3D | **done** | the finished board in 3D, inside the case |-| Fab files | *in progress* | Gerbers, drill, BOM and placement file; a fresh export follows the light-name fix |+| Fab files | **done** | Gerbers, drill, BOM and placement file | | Wiki | *in progress* | this page and the release; the hero image is **done** | | Thread | Now | |---|---|-| Board (Claude) | 8:33 PM: Silkscreen: light-row fix final: rows nudged up so each gauge name clears its LED's own silk outline. |-| Case (Codex) | 8:02 PM: Case: new board exact fit PASS in reviewed case exports retained. Next: review this source-specific result. |+| Board (Claude) | 8:40 PM: Board: DONE export after the light-row fix: and, finished STEP and GLB. |+| Case (Codex) | 8:39 PM: Case: new board exact fit PASS in reviewed case exports retained. Next: review this source-specific result. | | Studio and wiki (Claude) | 8:09 PM: Studio: release 0.2.0 still on hold despite the 20:09 'board: DONE export' line: the fab set in is the 19:50 board-23 export. | @@ -353,7 +353,14 @@ The back carries the name, rev 2, the date and this page's address. The board's own page, written by AI Flow, is in [board/](board/README.md). -The board is being laid out now; the finished board, its checks and its fab files appear here when AI Flow exports it.+### The finished board++| | |+|---|---|+| Parts | 66 fitted, 35 BOM lines, every placement rotation checked |+| Routing | 830 mm of track in 1326 segments, 77 vias, 0 DRC errors, 0 unconnected |+| Programming | UPDI on machine contacts MC4 (UPDI), MC3 (3V3), MC1 (GND) |+| Battery connector | J2 pin 1 = VBAT (+, red), pin 2 = GND (-, black), + and - in the silkscreen | ## Why an ATtiny1616 and not an STM32C0 @@ -442,7 +449,7 @@ Design notes, print settings and assembly: [case/README.md](case/README.md); eng ## Firmware -Plain C for the ATtiny1616, updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge) (avr-gcc, about 13.1 KB of the 16 KB flash). The echo path is pure hardware:+Plain C for the ATtiny1616, updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge), updated for rev 2 (the STATUS dot takes the logo's job at about half the drive, a 30 mA light cap for the small cell, the 77 mA charge) (avr-gcc, about 13.1 KB of the 16 KB flash). The echo path is pure hardware: AC0, the event system and TCB0/TCB1 single-shots. The CPU runs the state machine, the learner, the lights and the safety checks, and a 1 s watchdog guards the main loop. Full source is in [firmware/](firmware/README.md), with a host test that runs the learner against simulated faucets@@ -485,16 +492,16 @@ Rev 1's complete design (board KiCad files, Gerbers, BOM, CPL, case STEP and STL | | | |---|---|+| **Rev 2 release (0.2.0)** | [design zip](https://wiki.adom.inc/download/john/ghost-hand/0.2.0/ghost-hand-rev2-design.zip) (board KiCad files, Gerbers, BOM, CPL, case STEP/STL/SVG, firmware hex), [Gerbers](https://wiki.adom.inc/download/john/ghost-hand/0.2.0/ghost-hand-rev2-gerbers.zip) | | Case STEP | [base.step](case/step/base.step), [battery_jst_plug.step](case/step/battery_jst_plug.step), [battery_lead_black.step](case/step/battery_lead_black.step), [battery_lead_red.step](case/step/battery_lead_red.step), [battery_pouch.step](case/step/battery_pouch.step), [battery_tape.step](case/step/battery_tape.step), [cover.step](case/step/cover.step), [final_board.step](case/step/final_board.step), [foot.step](case/step/foot.step), [gasket.step](case/step/gasket.step), [ghost-hand-assembly.step](case/step/ghost-hand-assembly.step), [ghost-hand-exploded.step](case/step/ghost-hand-exploded.step), [inserts.step](case/step/inserts.step), [ir_window.step](case/step/ir_window.step), [lightpipe_100.step](case/step/lightpipe_100.step), [lightpipe_25.step](case/step/lightpipe_25.step), [lightpipe_50.step](case/step/lightpipe_50.step), [lightpipe_75.step](case/step/lightpipe_75.step), [lightpipe_status.step](case/step/lightpipe_status.step), [screw_seals.step](case/step/screw_seals.step), [screws.step](case/step/screws.step), [usb_plug.step](case/step/usb_plug.step) | | Case STL (print) | [base.stl](case/stl/base.stl), [cover.stl](case/stl/cover.stl), [foot.stl](case/stl/foot.stl), [gasket.stl](case/stl/gasket.stl), [inserts.stl](case/stl/inserts.stl), [ir_window.stl](case/stl/ir_window.stl), [lightpipe_100.stl](case/stl/lightpipe_100.stl), [lightpipe_25.stl](case/stl/lightpipe_25.stl), [lightpipe_50.stl](case/stl/lightpipe_50.stl), [lightpipe_75.stl](case/stl/lightpipe_75.stl), [lightpipe_status.stl](case/stl/lightpipe_status.stl), [screw_seals.stl](case/stl/screw_seals.stl), [screws.stl](case/stl/screws.stl), [usb_plug.stl](case/stl/usb_plug.stl) | | Laser engraving SVG | [laser_engrave.svg](case/laser_engrave.svg) |+| Board fab files (Gerbers and drill, BOM, CPL, 3D) | [ghost-hand-rev2-gerbers.zip](docs/fab/ghost-hand-rev2-gerbers.zip), [ghost-hand-rev2-bom.csv](docs/fab/ghost-hand-rev2-bom.csv), [ghost-hand-rev2-cpl.csv](docs/fab/ghost-hand-rev2-cpl.csv), [ghost-hand-rev2-board.glb](docs/fab/ghost-hand-rev2-board.glb) | | Sourcing BOM | [ghost-hand-rev2-sourcing-bom.csv](docs/fab/ghost-hand-rev2-sourcing-bom.csv) | | Aim drawings and numbers | [side-view.svg](docs/aim/side-view.svg), [top-view.svg](docs/aim/top-view.svg), [aim.json](docs/aim/aim.json) | | Firmware | [ghost-hand.hex](firmware/build/ghost-hand.hex), [source](firmware/README.md) | | Rev 1 | [design zip](https://wiki.adom.inc/download/john/ghost-hand/0.1.0/ghost-hand-rev1-design.zip), [Gerbers](https://wiki.adom.inc/download/john/ghost-hand/0.1.0/ghost-hand-rev1-gerbers.zip) | -Rev 2 Gerbers, BOM and CPL appear here when AI Flow exports the finished board.- ## License MIT. Build it, change it, share it.
docs/3d/ghost-hand-hero-c419fc1b.glbadded⋯ 1 unchanged line ⋯
docs/fab/ghost-hand-rev2-board.glbadded⋯ 1 unchanged line ⋯
docs/fab/ghost-hand-rev2-bom.csvadded+36@@ -0,0 +1,36 @@+Reference,Qty,Value,Footprint,Manufacturer,MPN,DNP+C1 C2,2,4.7uF 16V,Capacitor_SMD:C_0603_1608Metric,Yageo,CC0603KRX5R7BB475,+C3 C4 C8 C11,4,1uF 25V,Capacitor_SMD:C_0402_1005Metric,Samsung Electro-Mechanics,CL05A105KA5NQNC,+C5 C21,2,10uF 10V,Capacitor_SMD:C_0603_1608Metric,KEMET,C0603C106M8PACTU,+C6 C7 C9 C14 C16 C17 C18 C19 C20,9,100nF,Capacitor_SMD:C_0402_1005Metric,Samsung Electro-Mechanics,CL05B104KO5NNNC,+C12,1,4.7pF,Capacitor_SMD:C_0402_1005Metric,Murata Electronics,GRM1555C1H4R7WA01D,+C13,1,1nF,Capacitor_SMD:C_0402_1005Metric,Murata Electronics,GRM1555C1H102JA01D,+C15,1,100uF 6.3V,Capacitor_SMD:C_1206_3216Metric,Taiyo Yuden,JMK316BJ107ML-T,+D1,1,VSMY2853SL,GhostHand:Vishay_SMD-SL_SideLooking_AK,Vishay,VSMY2853SL,+D2,1,VSMB2948SL,GhostHand:Vishay_SMD-SL_SideLooking_KA,Vishay,VSMB2948SL,+D4 D5 D6 D7 D8,5,WS2812B-2020,GhostHand:WS2812B-2020,Worldsemi,WS2812B-2020,+D10,1,SMF5.0A,Diode_SMD:D_SOD-123F,Littelfuse,SMF5.0A,+J1,1,USB4105-GF-A,Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal,GCT,USB4105-GF-A,+J2,1,S2B-PH-K-S,Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal,JST,S2B-PH-K-S,+PD1 PD2,2,VEMD2023SLX01,GhostHand:Vishay_SMD-SL_SideLooking_PD,Vishay,VEMD2023SLX01,+Q1 Q2,2,DMN2041L-7,Package_TO_SOT_SMD:SOT-23,Diodes Incorporated,DMN2041L-7,+Q3,1,DMG2305UX-13,Package_TO_SOT_SMD:SOT-23,Diodes Incorporated,DMG2305UX-13,+R1 R2,2,5.1k,Resistor_SMD:R_0402_1005Metric,Yageo,RC0402FR-075K1L,+R3,1,13k,Resistor_SMD:R_0402_1005Metric,Yageo,RC0402FR-0713KL,+R4,1,68k,Resistor_SMD:R_0402_1005Metric,Yageo,RC0402FR-0768KL,+R5 R6 R13 R16 R17 R21 R25 R26,8,100k,Resistor_SMD:R_0402_1005Metric,Yageo,RC0402FR-07100KL,+R7 R15,2,150k,Resistor_SMD:R_0402_1005Metric,Yageo,RC0402FR-07150KL,+R8 R9,2,4.7M,Resistor_SMD:R_0402_1005Metric,Yageo,RC0402FR-074M7L,+R11 R12,2,4.7k,Resistor_SMD:R_0402_1005Metric,Yageo,RC0402FR-074K7L,+R14 R18,2,10k,Resistor_SMD:R_0402_1005Metric,Yageo,RC0402FR-0710KL,+R19,1,8.2R,Resistor_SMD:R_0603_1608Metric,Yageo,RC0603FR-078R2L,+R20 R24,2,100R,Resistor_SMD:R_0402_1005Metric,Yageo,RC0402FR-07100RL,+R22,1,4.7R,Resistor_SMD:R_0603_1608Metric,Yageo,RC0603FR-074R7L,+R27,1,33R,Resistor_SMD:R_0402_1005Metric,Yageo,RC0402FR-0733RL,+R28,1,10R,Resistor_SMD:R_0402_1005Metric,Yageo,RC0402FR-0710RL,+U1,1,ATtiny1616-MNR,GhostHand:QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm,Microchip Technology,ATTINY1616-MNR,+U2,1,MCP73831T-2ACI/OT,Package_TO_SOT_SMD:SOT-23-5,Microchip Technology,MCP73831T-2ACI/OT,+U3,1,TPS7A0233PDBVR,Package_TO_SOT_SMD:SOT-23-5,Texas Instruments,TPS7A0233PDBVR,+U4,1,LIS2DW12TR,Package_LGA:LGA-12_2x2mm_P0.5mm,STMicroelectronics,LIS2DW12TR,+U5,1,TLV9062IDGKT,Package_SO:MSOP-8_3x3mm_P0.65mm,Texas Instruments,TLV9062IDGKT,+BT1,1,150mAh 1S LiPo,"off-board, plugs into J2",Adafruit,1317,off-board (not assembled)
docs/fab/ghost-hand-rev2-cpl.csvadded+90@@ -0,0 +1,90 @@+Ref,Val,Package,PosX,PosY,Rot,Side +"C1","4.7uF 16V","C_0603_1608Metric",101.500000,-86.500000,0.000000,bottom +"C2","4.7uF 16V","C_0603_1608Metric",101.500000,-88.100000,0.000000,bottom +"C3","1uF 25V","C_0402_1005Metric",100.100000,-98.300000,0.000000,bottom +"C4","1uF 25V","C_0402_1005Metric",102.100000,-100.000000,0.000000,bottom +"C5","10uF 10V","C_0603_1608Metric",105.000000,-101.000000,90.000000,bottom +"C6","100nF","C_0402_1005Metric",111.300000,-92.400000,0.000000,bottom +"C7","100nF","C_0402_1005Metric",113.000000,-87.400000,0.000000,bottom +"C8","1uF 25V","C_0402_1005Metric",116.600000,-87.400000,0.000000,bottom +"C9","100nF","C_0402_1005Metric",114.700000,-86.300000,0.000000,bottom +"C11","1uF 25V","C_0402_1005Metric",111.400000,-93.600000,0.000000,bottom +"C13","1nF","C_0402_1005Metric",115.400000,-98.000000,0.000000,bottom +"C14","100nF","C_0402_1005Metric",115.400000,-96.600000,0.000000,bottom +"C16","100nF","C_0402_1005Metric",111.000000,-95.800000,0.000000,bottom +"C17","100nF","C_0402_1005Metric",111.000000,-83.700000,0.000000,bottom +"C18","100nF","C_0402_1005Metric",114.500000,-83.500000,0.000000,bottom +"C19","100nF","C_0402_1005Metric",117.700000,-84.500000,0.000000,bottom +"C20","100nF","C_0402_1005Metric",120.900000,-84.500000,0.000000,bottom +"C21","10uF 10V","C_0603_1608Metric",113.600000,-84.900000,0.000000,bottom +"D10","SMF5.0A","D_SOD-123F",120.600000,-100.400000,0.000000,bottom +"Q1","DMN2041L-7","SOT-23",103.100000,-95.800000,0.000000,bottom +"Q2","DMN2041L-7","SOT-23",107.100000,-95.800000,0.000000,bottom +"Q3","DMG2305UX-13","SOT-23",110.000000,-86.000000,0.000000,bottom +"R1","5.1k","R_0402_1005Metric",119.100000,-92.800000,90.000000,bottom +"R2","5.1k","R_0402_1005Metric",120.100000,-90.800000,90.000000,bottom +"R3","13k","R_0402_1005Metric",101.600000,-91.000000,90.000000,bottom +"R4","68k","R_0402_1005Metric",105.200000,-90.600000,90.000000,bottom +"R5","100k","R_0402_1005Metric",106.400000,-90.600000,90.000000,bottom +"R6","100k","R_0402_1005Metric",119.300000,-85.900000,90.000000,bottom +"R7","150k","R_0402_1005Metric",116.100000,-84.700000,90.000000,bottom +"R8","4.7M","R_0402_1005Metric",99.200000,-87.900000,90.000000,bottom +"R9","4.7M","R_0402_1005Metric",111.400000,-88.800000,90.000000,bottom +"R11","4.7k","R_0402_1005Metric",117.900000,-90.800000,90.000000,bottom +"R12","4.7k","R_0402_1005Metric",119.000000,-90.800000,90.000000,bottom +"R13","100k","R_0402_1005Metric",113.000000,-95.000000,90.000000,bottom +"R14","10k","R_0402_1005Metric",114.200000,-95.000000,90.000000,bottom +"R16","100k","R_0402_1005Metric",118.000000,-98.100000,90.000000,bottom +"R17","100k","R_0402_1005Metric",118.000000,-94.000000,90.000000,bottom +"R18","10k","R_0402_1005Metric",115.800000,-93.600000,0.000000,bottom +"R19","8.2R","R_0603_1608Metric",102.700000,-98.600000,0.000000,bottom +"R20","100R","R_0402_1005Metric",101.600000,-93.000000,90.000000,bottom +"R21","100k","R_0402_1005Metric",102.700000,-93.000000,90.000000,bottom +"R22","4.7R","R_0603_1608Metric",107.000000,-98.600000,0.000000,bottom +"R24","100R","R_0402_1005Metric",105.600000,-93.000000,90.000000,bottom +"R25","100k","R_0402_1005Metric",108.400000,-93.000000,90.000000,bottom +"R26","100k","R_0402_1005Metric",109.600000,-90.200000,90.000000,bottom +"R27","33R","R_0402_1005Metric",111.400000,-94.700000,0.000000,bottom +"R28","10R","R_0402_1005Metric",117.800000,-96.000000,90.000000,bottom +"C12","4.7pF","C_0402_1005Metric",112.600000,-97.600000,0.000000,top +"C15","100uF 6.3V","C_1206_3216Metric",107.700000,-97.000000,0.000000,top +"D1","VSMY2853SL","Vishay_SMD-SL_SideLooking_AK",103.700000,-101.150000,0.000000,top +"D2","VSMB2948SL","Vishay_SMD-SL_SideLooking_KA",108.300000,-101.150000,0.000000,top +"D4","WS2812B-2020","WS2812B-2020",111.000000,-93.000000,0.000000,top +"D5","WS2812B-2020","WS2812B-2020",111.300000,-84.500000,0.000000,top +"D6","WS2812B-2020","WS2812B-2020",114.500000,-84.500000,0.000000,top +"D7","WS2812B-2020","WS2812B-2020",117.700000,-84.500000,0.000000,top +"D8","WS2812B-2020","WS2812B-2020",120.900000,-84.500000,0.000000,top +"J1","USB4105-GF-A","USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal",122.820000,-92.000000,90.000000,top +"J2","S2B-PH-K-S","JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal",106.000000,-87.800000,180.000000,top +"MC1","GND","MachineContactMedium",100.000000,-96.000000,0.000000,top +"MC2","VBAT","MachineContactMedium",100.000000,-94.000000,0.000000,top +"MC3","3V3","MachineContactMedium",100.000000,-92.000000,0.000000,top +"MC4","UPDI","MachineContactMedium",100.000000,-90.000000,0.000000,top +"MP1","MachinePinMediumShort","MachinePinMediumShort",100.000000,-100.000000,0.000000,top +"MP2","MachinePinMediumShort","MachinePinMediumShort",124.000000,-100.000000,0.000000,top +"MP3","MachinePinMediumShort","MachinePinMediumShort",100.000000,-84.000000,0.000000,top +"MP4","MachinePinMediumShort","MachinePinMediumShort",124.000000,-84.000000,0.000000,top +"PD1","VEMD2023SLX01","Vishay_SMD-SL_SideLooking_PD",114.100000,-101.150000,0.000000,top +"PD2","VEMD2023SLX01","Vishay_SMD-SL_SideLooking_PD",118.700000,-101.150000,0.000000,top +"R15","150k","R_0402_1005Metric",112.600000,-98.600000,0.000000,top +"TP1","TP_0.5mm","Adom_TestPoint_D0.5mm",110.000000,-82.400000,0.000000,top +"TP2","TP_0.5mm","Adom_TestPoint_D0.5mm",99.400000,-87.600000,0.000000,top +"TP3","TP_0.5mm","Adom_TestPoint_D0.5mm",123.100000,-86.000000,0.000000,top +"TP4","TP_0.5mm","Adom_TestPoint_D0.5mm",98.300000,-88.900000,0.000000,top +"TP5","TP_0.5mm","Adom_TestPoint_D0.5mm",116.700000,-86.400000,0.000000,top +"TP6","TP_0.5mm","Adom_TestPoint_D0.5mm",110.700000,-90.300000,0.000000,top +"TP7","TP_0.5mm","Adom_TestPoint_D0.5mm",111.900000,-96.000000,0.000000,top +"TP8","TP_0.5mm","Adom_TestPoint_D0.5mm",111.000000,-97.200000,0.000000,top +"TP9","TP_0.5mm","Adom_TestPoint_D0.5mm",119.100000,-98.400000,0.000000,top +"TP10","TP_0.5mm","Adom_TestPoint_D0.5mm",99.400000,-86.000000,0.000000,top +"TP11","TP_0.5mm","Adom_TestPoint_D0.5mm",106.700000,-93.500000,0.000000,top +"TP12","TP_0.5mm","Adom_TestPoint_D0.5mm",98.400000,-95.000000,0.000000,top +"TP13","TP_0.5mm","Adom_TestPoint_D0.5mm",109.200000,-98.800000,0.000000,top +"TP14","TP_0.5mm","Adom_TestPoint_D0.5mm",110.600000,-96.000000,0.000000,top +"TP15","TP_0.5mm","Adom_TestPoint_D0.5mm",100.800000,-82.400000,0.000000,top +"U1","ATtiny1616-MNR","QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm",114.800000,-90.500000,0.000000,top +"U2","MCP73831T-2ACI/OT","SOT-23-5",103.200000,-92.000000,0.000000,top +"U3","TPS7A0233PDBVR","SOT-23-5",103.200000,-96.300000,0.000000,top +"U4","LIS2DW12TR","LGA-12_2x2mm_P0.5mm",111.300000,-87.100000,180.000000,top +"U5","TLV9062IDGKT","MSOP-8_3x3mm_P0.65mm",116.200000,-96.900000,90.000000,top
docs/fab/ghost-hand-rev2-gerbers.zipadded⋯ 1 unchanged line ⋯
page.json+2−2@@ -4,7 +4,7 @@ "type": "component", "title": "Ghost Hand", "brief": "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.",- "version": "0.1.0",+ "version": "0.2.0", "kind": "project", "hero": { "type": "image",@@ -42,7 +42,7 @@ "subcategory": "", "body_size": null, "parts": {- "model_3d": "docs/3d/ghost-hand-hero-a2ccb94f.glb"+ "model_3d": "docs/3d/ghost-hand-hero-c419fc1b.glb" }, "distributor_links": {}, "viewer_3d": {