
PCB Receiver
michaelruppe/touch-keypad
This project is for a general-purpose, capacitive-touch keypad powered by a ESP32 and a matching receiver.

This project is for a general-purpose, capacitive-touch keypad powered by a ESP32 and a matching receiver.
PCB Keypad is an open-source printed circuit board by michaelruppe, from the michaelruppe/touch-keypad repository on GitHub. It is a 2-layer board of 70 × 111 mm with 61 parts on 41 nets, routed with 231 tracks and 15 vias.
It is built around the BS8116A-3 and BSS138. Its parts include 6 resistors, 5 capacitors, 3 ICs, 3 diodes and 1 transistor. It belongs with the keyboards and input boards and the ESP32 and RISC-V boards of this library.
This project is for a general-purpose, capacitive-touch keypad powered by a ESP32 and a matching receiver.
This project was originally designed as a keypad entry system for my garage door, but could easily be modified to other purposes. It is essentially a touch-keypad and receiver pair, where all authorisation is handled by the receier. The keypad only transmits information about what key sequence has been pressed.
The keypad provides audible feedback to guide you:
When the user enters a code on the keypad, the numerical code and the control key (Up, Down, or Stop) are sent as an encrypted message to the receiver. The receiver decrypts the message and determines if the code is correct. It responds with the authorisation status and the number of attempts remaining. If too many unauthorised attempts are made the Receiver locks-out the system.
sequenceDiagram
participant User
participant Keypad
participant Receiver
User->>Keypad: Enter code + control key
Keypad->>Keypad: Encrypt message
Keypad->>Receiver: Send encrypted message
Receiver->>Receiver: Decrypt message
alt UP command
Receiver->>Receiver: Check authorization
alt authorised
Receiver->>Keypad: Send authorization status
Receiver->>Receiver: Execute UP command
else Unauthorised
Receiver->>Keypad: Send status + remaining attempts
alt Too many attempts
Receiver->>Receiver: Lock out system
end
end
else DOWN or STOP command
Receiver->>Receiver: Execute command without authorization
Receiver->>Keypad: Send execution status
end| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 10k | Resistor_SMD:R_0805_2012Metric | R2, R3, R4, R5 |
| 3 | D_Schottky | Diode_SMD:D_SMA | D1, D2, D3 |
| 2 | 4.7uF | Capacitor_SMD:C_0805_2012Metric | C3, C4 |
| 2 | Fiducial | Fiducial:Fiducial_0.5mm_Mask1mm | FID1, FID2 |
| 2 | TestPoint | TestPoint:TestPoint_Pad_D3.0mm | TP14, TP15 |
| 1 | 0 Key | Touch Pad:Touch_Pad | TP11 |
| 1 | 0.47u | Capacitor_SMD:C_0805_2012Metric | C2 |
| 1 | 1 Key | Touch Pad:Touch_Pad | TP1 |
| 1 | 100n | Capacitor_SMD:C_0805_2012Metric | C5 |
| 1 | 1k | Resistor_SMD:R_0805_2012Metric | R6 |
| 1 | 2 Key | Touch Pad:Touch_Pad | TP2 |
| 1 | 3 Key | Touch Pad:Touch_Pad | TP3 |
| 1 | 4 Key | Touch Pad:Touch_Pad | TP4 |
| 1 | 5 Key | Touch Pad:Touch_Pad | TP5 |
| 1 | 56k | Resistor_SMD:R_0805_2012Metric | R1 |
| 1 | 6 Key | Touch Pad:Touch_Pad | TP6 |
| 1 | 6.8uH | Inductor_SMD:L_KOHERelec_MDA7030 | L1 |
| 1 | 68p | Capacitor_SMD:C_0805_2012Metric | C1 |
| 1 | 7 Key | Touch Pad:Touch_Pad | TP7 |
| 1 | 8 Key | Touch Pad:Touch_Pad | TP8 |
| 1 | 9 Key | Touch Pad:Touch_Pad | TP9 |
| 1 | BS8116A-3 | Package_SO:SSOP-20_3.9x8.7mm_P0.635mm | U3 |
| 1 | BSS138 | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | Buzzer | Buzzer_Beeper:MagneticBuzzer_CUI_CMT-8504-100-SMT | BZ1 |
| 1 | Conn_01x04_Pin | Connector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal | J1 |
| 1 | Down Key | Touch Pad:Touch_Pad | TP10 |
| 1 | G*** | kibuzzard-66F9EB0E | kibuzzard-66F9EB0E |
| 1 | G*** | kibuzzard-66FA5178 | kibuzzard-66FA5178 |
| 1 | G*** | kibuzzard-66FA5120 | kibuzzard-66FA5120 |
| 1 | G*** | kibuzzard-66F9EAD5 | kibuzzard-66F9EAD5 |
| 1 | G*** | kibuzzard-66F9EB01 | kibuzzard-66F9EB01 |
| 1 | G*** | kibuzzard-66F9EAFC | kibuzzard-66F9EAFC |
| 1 | G*** | kibuzzard-66F9EAE0 | kibuzzard-66F9EAE0 |
| 1 | G*** | kibuzzard-66F9EB24 | kibuzzard-66F9EB24 |
| 1 | G*** | kibuzzard-66FAA17C | kibuzzard-66FAA17C |
| 1 | G*** | kibuzzard-66FAA159 | kibuzzard-66FAA159 |
| 1 | G*** | kibuzzard-66FAA150 | kibuzzard-66FAA150 |
| 1 | G*** | kibuzzard-66F9EAE9 | kibuzzard-66F9EAE9 |
| 1 | G*** | kibuzzard-66F9EB2B | kibuzzard-66F9EB2B |
| 1 | G*** | kibuzzard-66FA510C | kibuzzard-66FA510C |
| 1 | G*** | kibuzzard-66F9EAF8 | kibuzzard-66F9EAF8 |
| 1 | G*** | kibuzzard-66FAA16B | kibuzzard-66FAA16B |
| 1 | G*** | kibuzzard-66F9EB33 | kibuzzard-66F9EB33 |
| 1 | G*** | kibuzzard-66F9EAF1 | kibuzzard-66F9EAF1 |
| 1 | G*** | kibuzzard-66F9EAE4 | kibuzzard-66F9EAE4 |
| 1 | G*** | kibuzzard-66F9EB39 | kibuzzard-66F9EB39 |
| 1 | LOGO | LOGO | G# |
| 1 | ME3116 | Package_TO_SOT_SMD:SOT-23-6 | U2 |
| 1 | RX | TestPoint:TestPoint_Pad_D3.0mm | TP17 |
| 1 | STOP | Touch Pad:Touch_Pad_Long | TP13 |
| 1 | TX | TestPoint:TestPoint_Pad_D3.0mm | TP16 |
| 1 | Up Key | Touch Pad:Touch_Pad | TP12 |
| 1 | XIAO ESP32C6 | xiao:XIAO-ESP32-14P-2.54-21X17.8MM-SMT | U1 |

michaelruppe/touch-keypad
This project is for a general-purpose, capacitive-touch keypad powered by a ESP32 and a matching receiver.

StuckAtPrototype/Racer
These are structured into their own files. I could have used submodules, but decided against it.

willem-pennings/balancing-cube
A cube that balances itself in a corner or edge using reaction wheels

abhishek-kakkar/BeagleLogic
A Software Suite that implements a logic analyzer with the PRU on the BeagleBone / BeagleBone Black.


lachlanA/eagle-to-kicad
Eagle SCH/LIB to KiCad SCH/LIB ULP conversion script

No0ne/ps2x2pico
USB keyboard/mouse to PS/2 interface converter using a Raspberry Pi Pico

StuckAtPrototype/AirCube
Works standalone out of the box. Pairs with Home Assistant in minutes. Other platforms are supported through community-contributed extensions.

It measures 70 × 111 mm and has 2 copper layers, 1.6 mm thick.
61 parts, built around the BS8116A-3 and BSS138. 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 michaelruppe/touch-keypad repository on GitHub, at the commit this page was made from: the board is PCB-Keypad/PCB-Keypad.kicad_pcb and its schematic PCB-Keypad/PCB-Keypad.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask michaelruppe before reusing the design.