muse/book-reading-clip-lamp
A Wi‑Fi/USB‑C ESP32‑S3 reading lamp with OV5640 camera, microphone, speaker amplifier, rechargeable Li‑Po power management, six-LED boost light, USB protection/charging detection, and a clip/gooseneck enclosure with external FlexPIFA antenna.
- Version
- 0.4.3
- License
- unset
- Stars
- 0
controls-parts.tsx
import type { PushButtonProps } from "@tscircuit/props"
import { tactileSwitchModel } from "./enclosure-geometry"
/** E-Switch TL3305AF160QG — SPST normally-open momentary tactile switch.
* Official TL3305 datasheet, 2022-09-28, p2 land pattern and schematic:
* https://www.e-switch.com/wp-content/uploads/2023/01/TL3305.pdf
* Manufacturer pins 1+2 form one permanently joined contact (lower row);
* manufacturer pins 3+4 form the other contact (upper row).
* Logical pin1 = physical 1+2; logical pin2 = physical 3+4.
* Four 1.6x1.6 mm lands. Outer x span8.8, inner gap5.6 => x centres±3.6.
* Outer y span4.4 => y centres±1.4. Body4.5x4.5, actuator height3.8mm.
* Do not substitute a button with vertical-side contact pairing.
*/
export function AskButton(props: PushButtonProps) {
return <pushbutton manufacturerPartNumber="TL3305AF160QG"
cadModel={{ jscad: tactileSwitchModel, modelOriginPosition: { x: 0, y: 0, z: 0 },
size: { x: 8.5, y: 4.5, z: 3.8 }, modelUnitToMmScale: 1 }}
footprint={<footprint insertionDirection="from_above" cutoutApertureDirection="from_above">
<smtpad shape="rect" portHints={["pin1"]} pcbX={-3.6} pcbY={-1.4} width={1.6} height={1.6}/>
<smtpad shape="rect" portHints={["pin1"]} pcbX={3.6} pcbY={-1.4} width={1.6} height={1.6}/>
<smtpad shape="rect" portHints={["pin2"]} pcbX={-3.6} pcbY={1.4} width={1.6} height={1.6}/>
<smtpad shape="rect" portHints={["pin2"]} pcbX={3.6} pcbY={1.4} width={1.6} height={1.6}/>
<silkscreenrect width={4.5} height={4.5}/>
<silkscreencircle radius={1.25}/>
<courtyardrect width={9.3} height={5}/>
</footprint>} {...props}/>
}