

Tokeychain
An interactive keychain with an accelerometer and an OLED display powered by the Xiao ESP-32 S3 microcontroller.
- Size
- 37 × 37 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 3
- Nets
- 15
- Pads
- 51
- Tracks, vias
- 25, 0
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 10 Aug 2026
- Updated
- 18 Aug 2026
Overview
Tokeychain is an open-source printed circuit board by Toki-dev465, from the Toki-dev465/Tokeychain repository on GitHub, published under the MIT licence. It is a 2-layer board of 37 × 37 mm with 3 parts on 15 nets, routed with 25 tracks and 0 vias.
Its parts include 2 ICs and 1 connector. It belongs with the lEDs and displays boards and the ESP32 boards of this library.
README
README.mdIntroduction
I built this project as a fun way to learn more about PCB, CAD and firmware design. I spent quite a lot of time on it and learned a lot especially about CAD modelling. I hope to show it off by hooking it up to my keys and other accessories.
How it works
The Xiao ESP32-S3 reads tilt from the ADXL345 accelerometer. This is used to create interactive animations displayed on the OLED. As of right now, there is only one "game", the ball game. As you tilt the device the ball starts speeding up in that direction and slows down over time from "friction." The ball also bounces off the edge, which is displayed as a white box. The device will support more of these interactive animations and the animations will be cycled by tap detection on the accelerometer module. This version of the Xiao supports a rechargeable battery with an on-board charging module, which this device will utilize.
Assembly instructions
- Insert OLED: Place the OLED in the rectangular cutout on the case.
- Stack components: Place the PCB and the battery on top of the OLED.
- Close case: Snap back cover onto the case until it securely clicks in place.
Firmware & Flashing
- ino (arduino) file: ball_game.ino
- Install Arduino IDE
- Add ESP 32 board support: Click on file, preferences, then paste this into the additional board managers URL (https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json)
- Select tools, board, then board manager. Search ESP 32 and install it
- Select tools, board, esp32, then select Xiao ESP-32-S3 and plug in the device.
- Hit sketch, then upload
Challenges
All went quite smoothly except for the CAD modelling part. I used Fusion only once and that was by following a tutorial. Therefore, this project gave me a massive headache! I had lots of trouble just doing the most basic and minute things such as creating a sketch, projecting onto a sketch, etc. However, due to the immense amount of time I spent, I learned a lot regarding the basics of Fusion and spending so much time on it just made completing the final design more rewarding. I am very proud of how it turned out.
PCB design
The schematic and PCB were made using the open-source software KiCad. I made sure to use global net variables for the schematic because otherwise, I would be left with incomprehensible messy wiring. The PCB uses a two-layer system. The top layer (F.Cu) is used for routing traces, whereas the bottom layer (B.Cu) is used for grounding using copper fill zones. I made sure to make the power traces 0.5mm in thickness as recommended by professionals in the industry.
| Schematic | PCB |
|---|---|
![]() | ![]() |
PCB and Schematic files
- Project: Tokeychain.kicad_pro
- PCB: Tokeychain.kicad_pcb
- Schematic: Tokeychain.kicad_sch
- Gerbers: Tokeychain_Gerbers.zip
CAD design
The CAD components were built using AutoDesk Fusion software. The components are all inside a 38x50x20 mm 3D-printed case with a key loop at the top and a USB-C cutout at the bottom. The back is covered using a snap-fit cover.
| Fusion Snapshot |
|---|
![]() |
CAD & Print Files
- Preview: Tokeychain_assembled.png
- 3D Model: Tokeychain.stl
- Source File: Tokeychain_assembled.f3z
- Step file: Tokeychain_assembled.step
Parts
3| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | Conn_01x04_Pin | xiao:OLED_SSD1306_I2C_0.96 | J1 |
| 1 | XIAO-ESP32-S3-DIP | xiao:XIAO-ESP32-S3-DIP | U2 |
| 1 | module_adxl345 | xiao:module_adxl345 | U1 |
Questions
How big is the Tokeychain PCB?
It measures 37 × 37 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Tokeychain use?
3 parts. 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.
Where can I download the Tokeychain KiCad files?
From the Toki-dev465/Tokeychain repository on GitHub, at the commit this page was made from: the board is PCB/Tokeychain.kicad_pcb and its schematic PCB/Tokeychain.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Tokeychain design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 2 layers40 × 30 mm

- 2 layers51.9 × 16 mm

Passive2-rpi non standard adapter
hzeller/rpi-rgb-led-matrix
Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO
3 parts4.4kGPL-2.0 - 2 layers16.3 × 16.3 mm

- 2 layers

Sub
atopile/atopile
Design circuit boards with code! ✨ Get software-like design reuse 🚀, validation, version control and collaboration in hardware; starting with electronics ⚡️
3 parts4kMIT - 2 layers85 × 30 mm

- 2 layers124.5 × 33.7 mm

- 2 layers10.5 × 83 mm

- 2 layers21.2 × 51.3 mm

Pico reset
hackclub/sprig
🍃 Learn to code by making games in a JavaScript web-based game editor.
3 parts1.1kMIT


