

ShakeMe
A handheld motion-reactive display where particles in a virtual solvent settle at rest and disperse when shaken, driven by an IMU and rendered on a color TFT.
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 9
- Nets
- 52
- Pads
- 85
- Tracks, vias
- 131, 29
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 26 Oct 2026
- Updated
- 29 Oct 2026
Overview
ShakeMe is an open-source printed circuit board by ahmadjamal789, from the ahmadjamal789/ShakeMe repository on GitHub. It is a 2-layer board with 9 parts on 52 nets, routed with 131 tracks and 29 vias.
It is built around the SC0917. Its parts include 4 ICs, 2 capacitors, 2 switches and 1 diode. It belongs with the lEDs and displays boards of this library.
Main components
1README
README.mdShakeMe
A handheld, battery-powered display that behaves like a solute in a solvent. Left at rest, the particles on screen settle to the bottom. Shake or move it, and they are kicked up and spread through the whole volume. When the motion stops, they slowly resettle.
Built for Hack Club, Week 4: Displays Week ("Design with Displays").
The finished device.
The idea
A motion sensor measures how hard the device is being disturbed, and that measurement drives a particle simulation drawn on a color TFT.
- At rest: gravity wins and the particles settle into a layer, like sediment.
- Disturbed: the acceleration reading becomes an "agitation" value that gives the particles random kicks, so they disperse rapidly.
- After the disturbance: agitation decays over time and the particles slowly resettle.
Status
- Concept and parts chosen
- Schematic drawn in KiCad
- Custom symbols, footprints and 3D models for the display, IMU, charger and battery
- PCB layout (in progress)
- Firmware
- Enclosure
Hardware
| Part | Choice | Notes |
|---|---|---|
| Microcontroller | Raspberry Pi Pico (RP2040) | Powered through VSYS |
| Display | ST7789 2.0" 240x320 SPI TFT | 3.3 V logic, 8-pin header |
| Motion sensor | MPU6050 breakout (8-pin) | I2C, 3.3 V, on-board regulator and pull-ups |
| Battery | 3.7 V LiPo, 500 to 1000 mAh, with protection board | Pouch cell no larger than the Pico (21 x 51 mm) |
| Charger | TP4056 Type-C module (with protection) | Charges the battery over USB-C |
| Power switch | Slide switch | Between the battery and the Pico |
| Diode | Schottky, SOD-123 | Battery to VSYS, so USB and battery don't fight |
| Controls | Two tactile buttons | Mode and spare |
| Passives | 10 uF bulk capacitor on VSYS, 100 nF decoupling on 3.3 V | Plus backlight MOSFET and resistors if the display needs them |
Power
USB-C -> TP4056 -> LiPo (protected) -> slide switch -> Schottky diode -> Pico VSYS
|
Pico 3V3(OUT) -> display, IMU- The TP4056 module charges the cell from its own USB-C port. Switch the device off while charging.
- The Pico's own regulator makes the 3.3 V rail, so no separate regulator is used.
- VBUS is left unconnected. The Pico's USB port powers it internally when plugged in.
Pin assignments
Planned mapping. Update this table to match the final schematic.
| Signal | Pico pin |
|---|---|
| Display DC / CS / SCL / SDA / RES / BLK | GP0 / GP1 / GP2 / GP3 / GP4 / GP5 |
| IMU SDA / SCL | See schematic (I2C pair) |
| IMU AD0 | GND (address 0x68) |
| Buttons | See schematic |
PCB design
All design work was done in KiCad. The three modules that have no stock library parts (display, IMU, charger) and the LiPo cell outline use custom symbols, footprints and 3D models, kept in hardware/DisplaysWeek/.
Schematic
Figure 1. Full schematic.
The schematic is split into five blocks:
- Power: battery connector, TP4056 charger, slide switch, Schottky diode to VSYS, 10 uF bulk capacitor.
- Controller: Pico, with the 3.3 V rail taken from its 3V3(OUT) pin and decoupled with 100 nF.
- Display: ST7789 on hardware SPI, with the backlight driven directly or through a MOSFET depending on the module.
- Motion: MPU6050 on I2C.
- Controls: two tactile buttons.
Board layout
Figure 2. Full board layout, all layers visible.
- Board: 2 layers, [width] x [height] mm.
- Placement: [describe which parts sit on the front and which on the back once the layout is final].
- Pin tails: through-hole header pins come out on the opposite face. Each header has a keep-out rule area on the other side, so nothing sits where its tails land. The display header's tails are kept clear of the Pico, whose underside has exposed test pads, and of the battery.
- Battery: the cell is a courtyard-only footprint with no pads. No tails and no tall parts sit under it.
- Traces: about 0.5 mm for VSYS and the battery path, about 0.25 mm for signals, with a GND pour on both sides and stitching vias.
- IMU placement: kept away from the charger, which warms up while charging.
3D render
| Front | Back |
|---|---|
| Figure 5. 3D render, front. | Figure 6. 3D render, back. |
Rendered with KiCad's 3D viewer using the custom STEP models.
Final 3D model
Figure 7. Final 3D model of the assembled device.
Manufacturing files
- Gerbers and drill files:
hardware/gerbers/(add when generated) - Bill of materials:
hardware/bom.csv(add when generated)
Repository layout (suggested)
hardware/
kicad/ KiCad project (schematic and PCB)
DisplaysWeek/ custom symbol, footprint and 3D libraries
gerbers/ manufacturing files
firmware/ Pico firmware
docs/
images/ pictures used in this README
README.mdFirmware plan
- C++ with the Arduino-Pico core and PlatformIO.
- Display: TFT_eSPI or LovyanGFX over hardware SPI.
- IMU: any MPU6050 library; subtract gravity and take the acceleration magnitude.
- Physics loop each frame:
- Read acceleration and low-pass filter it.
- Update agitation:
E = max(E * decay, |a|). - For each particle: apply gravity, add a random kick scaled by
E, apply drag, bounce off the walls.
- Optional: use the gravity vector so particles slosh when the device is tilted.
Design notes and known issues
- Through-hole pin tails: header pins come out on the opposite side of the board. Keep them clear of other parts, and never let them touch the battery or the Pico's underside test pads. Clip them flush after soldering and cover with Kapton tape.
- Backlight: some ST7789 modules take BLK as a logic input, others use it as the LED cathode. Test the module before deciding whether the MOSFET is needed.
- LiPo polarity: many cells use the opposite polarity to the standard JST connector. Check the cell's red and black wires against the connector before plugging in.
- Module sizes: the footprints use typical dimensions. Measure the real modules before ordering boards.
Safety
LiPo cells can catch fire if shorted, punctured, over-charged or over-discharged. Use a cell with a protection board, never charge it unattended while testing, and stop using it if the pouch swells.
Credits
Built for Hack Club Displays Week. Designed in KiCad.
Parts
9| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | 100nF | Capacitor_SMD:C_1808_4520Metric_Pad1.72x2.30mm_HandSolder | C3 |
| 1 | 10uF, 10V | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C1 |
| 1 | BAT42W-V | Diode_SMD:D_SOD-123 | D2 |
| 1 | MPU6050 | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | U5 |
| 1 | Power_sw | Button_Switch_THT:SW_DIP_SPSTx01_Slide_6.7x4.1mm_W7.62mm_P2.54mm_LowProfile | SW3 |
| 1 | SC0917 | SC0917:MODULE_SC0917 | U4 |
| 1 | ST7789_2.0_TFT | DisplaysWeek:Display_ST7789_2in_8pin | U2 |
| 1 | SW_Push | Button_Switch_SMD:SW_Push_1P1T_NO_E-Switch_TL3301NxxxxxG | SW1 |
| 1 | TP4056_TypeC | DisplaysWeek:Charger_TP4056_TypeC_Protected | U1 |
Similar boards
- 2 layers

- 6 layers200 × 170 mm

- 2 layers105 × 44.7 mm

- 4 layers75 × 125 mm

Control Board V1
Thornbots/Supa-Cap
Rose-Hulman's Thornbot's Electrical Team's Super Capacitor Bank
84 partsGPL-3.0 - 2 layers102.9 × 74.9 mm

Avionics Instrumentation and Microcontroller Board
cacortes694/Avionics-Power-Regulation-Board
Power Regulation Board for the Fresno State SLI Full Scale Avionics Bay
24 parts - 2 layers103 × 30.5 mm

- 2 layers31.8 × 47.6 mm

- 2 layers24 × 27.3 mm

Expansion Card Retrofit
FrameworkComputer/ExpansionCards
Reference designs and documentation to create Expansion Cards for the Framework Laptop
9 parts1.1kCC-BY-4.0
Questions
What parts does the ShakeMe use?
9 parts, built around the SC0917. 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 ShakeMe KiCad files?
From the ahmadjamal789/ShakeMe repository on GitHub, at the commit this page was made from: the board is PCB Design/shakeMe.kicad_pcb and its schematic PCB Design/shakeMe.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the ShakeMe design in my own project?
Its repository states no licence, so its author keeps all rights: ask ahmadjamal789 before reusing the design.