
PSLab
fossasia/pslab-hardware
PSLab Hardware Design and Schematics https://pslab.io

just a button
Tapt is an open-source printed circuit board by grimsteel, from the grimsteel/tapt repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 26 × 26.9 mm with 37 parts on 37 nets, routed with 184 tracks and 109 vias.
It is built around the WS2812B. Its parts include 15 capacitors, 5 inductors, 4 resistors, 2 diodes and 2 connectors. It belongs with the nRF52 and nRF5x boards of this library.
just a button
tapt is a BLE-powered IoT button. It uses an nRF52810 and can be powered for long periods of time on a single CR2032 battery.
It can be connected to Home Assistant and hooked up to automations from there.
Note: do NOT connect the battery when the board is powered on the debug header.
Note: An nRF-SDK environment is required. This is a freestanding project
Customize the device ID and board name if needed in prj.conf
Build the firmware:
west build -b tapt -- -DBOARD_ROOT=.Flash the nRF over SWD, using the SWD header on the board. The pins are labeled on the bottom.
Firmware is included in the ./firmware directory.
Profit. The button should be autodiscovered in Home Assistant, where it will expose a button entity.
I made this because I wanted a large button for controlling random automations.
I also wanted to learn more about RF PCB design, and the nRF chip was a great place to start.

| F.Cu | In1.Cu | In2.Cu | B.Cu |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Apart from the PCB, tapt just has two components: the base and the button.

The PCB is screwed into the base, and the button sits inside the base. When pressed down, it presses the limit switch.
If the price is 0, I have the component already (basically everything except the PCB/PCBA). I added links for reference, though
| Description | Part ID | Link | Per-unit price | Board Quantity | Total Quantity | Extended? | Total Price | Running Price w/ Tax |
|---|---|---|---|---|---|---|---|---|
| 2.4 GHz Chip Antenna | C89334 | https://jlcpcb.com/partdetail/C89334 | $0.62 | 1 | 5 | TRUE | $6.1630 | $6.69 |
| 100nF Capacitor | C1525 | https://jlcpcb.com/partdetail/C1525 | $0.00 | 4 | 8 | FALSE | $0.0104 | $6.70 |
| 0.8pF Capacitor | C88902 | https://jlcpcb.com/partdetail/C88902 | $0.04 | 1 | 20 | TRUE | $3.7420 | $10.76 |
| 1.0pF Capacitor | C1550 | https://jlcpcb.com/partdetail/C1550 | $0.00 | 1 | 20 | FALSE | $0.0240 | $10.79 |
| 100pF Capacitor | C1546 | https://jlcpcb.com/partdetail/C1546 | $0.00 | 1 | 2 | FALSE | $0.0024 | $10.79 |
| 1uF Capacitor | C28323 | https://jlcpcb.com/partdetail/C28323 | $0.01 | 1 | 2 | FALSE | $0.0254 | $10.82 |
| 12pF Capacitor | C1547 | https://jlcpcb.com/partdetail/C1547 | $0.00 | 4 | 8 | FALSE | $0.0096 | $10.83 |
| 4.7uF Capacitor | C19666 | https://jlcpcb.com/partdetail/C19666 | $0.01 | 1 | 2 | FALSE | $0.0206 | $10.85 |
| Green LED | C2297 | https://jlcpcb.com/partdetail/C2297 | $0.02 | 1 | 2 | FALSE | $0.0314 | $10.88 |
| 3.9nH Inductor | C14033 | https://jlcpcb.com/partdetail/C14033 | $0.00 | 2 | 20 | FALSE | $0.0800 | $10.97 |
| 10uH Inductor | C86083 | https://jlcpcb.com/partdetail/C86083 | $0.05 | 1 | 6 | TRUE | $3.3412 | $14.60 |
| 15nH Inductor | C27143 | https://jlcpcb.com/partdetail/C27143 | $0.05 | 1 | 20 | FALSE | $1.0200 | $15.71 |
| 2.7nH Inductor | C27123 | https://jlcpcb.com/partdetail/C27123 | $0.00 | 1 | 20 | TRUE | $3.1360 | $19.12 |
| 1k Resistor | C11702 | https://jlcpcb.com/partdetail/C11702 | $0.00 | 1 | 2 | FALSE | $0.0014 | $19.12 |
| 100k Resistor | C25741 | https://jlcpcb.com/partdetail/C25741 | $0.00 | 1 | 2 | FALSE | $0.0016 | $19.12 |
| 1M Resistor | C26083 | https://jlcpcb.com/partdetail/C26083 | $0.00 | 2 | 4 | FALSE | $0.0032 | $19.12 |
| SW_SPST Button | C720477 | https://jlcpcb.com/partdetail/C720477 | $0.05 | 1 | 2 | FALSE | $0.1082 | $19.24 |
| nRF52810-QCxx | C519278 | https://jlcpcb.com/partdetail/C519278 | $2.99 | 1 | 2 | TRUE | $9.0228 | $29.04 |
| 32MHz Crystal | C2965582 | https://jlcpcb.com/partdetail/C2965582 | $0.07 | 1 | 6 | TRUE | $3.4606 | $32.80 |
| 32.768kHz Crystal | C97603 | https://jlcpcb.com/partdetail/C97603 | $0.24 | 1 | 5 | TRUE | $4.2365 | $37.40 |
| PCB | $1.00 | 2 | $2.00 | $39.57 | ||||
| PCBA Fees | $11.55 | 1 | $11.55 | $52.12 | ||||
| PCB Shipping | $3.12 | 1 | $3.12 | $55.51 | ||||
| Case | 3d-printed | $0.00 | 1 | $0.00 | $55.51 | |||
| M3 Heatset | https://www.aliexpress.us/item/3256802711669116.html | $0.00 | 2 | $0.00 | $55.51 | |||
| M3 Screw x 8mm | https://www.aliexpress.us/item/2255801013414226.html | $0.00 | 2 | $0.00 | $55.51 | |||
| SPDT Limit Switch | https://www.aliexpress.us/item/2255800451734482.html | $0.00 | 1 | $0.00 | $55.51 | |||
| 2.54mm Pin Header 1x05 | https://www.aliexpress.us/item/3256806247917356.html | $0.00 | 1 | $0.00 | $55.51 | |||
| CR2032 Holder | https://www.aliexpress.us/item/3256810117671035.html | $0.00 | 1 | $0.00 | $55.51 |
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 100nF | Capacitor_SMD:C_0402_1005Metric | C1, C2, C6, C15 |
| 4 | 12pF | Capacitor_SMD:C_0402_1005Metric | C11, C12, C13, C16 |
| 2 | 1M | Resistor_SMD:R_0402_1005Metric | R5, R6 |
| 2 | 3.9nH | Inductor_SMD:L_0402_1005Metric | L1, L5 |
| 2 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2 |
| 2 | N.C. | Capacitor_SMD:C_0402_1005Metric | C7, C10 |
| 1 | 0.8pF | Capacitor_SMD:C_0402_1005Metric | C3 |
| 1 | 1.0pF | Capacitor_SMD:C_0402_1005Metric | C4 |
| 1 | 100k | Resistor_SMD:R_0402_1005Metric | R4 |
| 1 | 100pF | Capacitor_SMD:C_0402_1005Metric | C8 |
| 1 | 10uH | Inductor_SMD:L_0603_1608Metric | L2 |
| 1 | 15nH | Inductor_SMD:L_0402_1005Metric | L3 |
| 1 | 1k | Resistor_SMD:R_0402_1005Metric | R3 |
| 1 | 1uF | Capacitor_SMD:C_0805_2012Metric | C9 |
| 1 | 2.7nH | Inductor_SMD:L_0402_1005Metric | L4 |
| 1 | 32.768kHz | Crystal:Crystal_SMD_2012-2Pin_2.0x1.2mm | Y2 |
| 1 | 32MHz | Crystal:Crystal_SMD_2016-4Pin_2.0x1.6mm | Y1 |
| 1 | 4.7uF | Capacitor_SMD:C_0603_1608Metric | C14 |
| 1 | Antenna_Chip | Inductor_SMD:L_1206_3216Metric | AE1 |
| 1 | Battery_Cell | Connector_Wire:SolderWire-0.5sqmm_1x02_P4.6mm_D0.9mm_OD2.1mm | BT1 |
| 1 | Conn_01x04_MountingPin | Connector_JST:JST_SH_BM04B-SRSS-TB_1x04-1MP_P1.00mm_Vertical | J2 |
| 1 | Conn_01x05_Pin | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J1 |
| 1 | LED | LED_SMD:LED_0805_2012Metric | D2 |
| 1 | SW_SPDT_LIMIT | Button_Switch_THT:SW_XKB_DM1-16UP-1 | SW1 |
| 1 | SW_SPST | Button_Switch_SMD:SW_SPST_TS-1088-xR020 | SW2 |
| 1 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D1 |
| 1 | nRF52810-QCxx | Package_DFN_QFN:QFN-32-1EP_5x5mm_P0.5mm_EP3.6x3.6mm | U1 |
It measures 26 × 26.9 mm and has 4 copper layers, 1.6 mm thick.
37 parts, built around the WS2812B. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the grimsteel/tapt repository on GitHub, at the commit this page was made from: the board is pcb/tapt.kicad_pcb and its schematic pcb/tapt.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

fossasia/pslab-hardware
PSLab Hardware Design and Schematics https://pslab.io

FrameworkComputer/ExpansionCards
Reference designs and documentation to create Expansion Cards for the Framework Laptop



PrintersForAnts/Micron
If you want to purchase full kits there are 3 available (Kits are slowly updating to R1 hardware just make sure to double check the included hardware in your kit and if you have any questions reach out in the discord)


