Skip to the content
2 layersShakeMe, the printed circuit board in 3D

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

1

README

README.md

ShakeMe

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").

Screenshot from 2026-10-28 15-06-47


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

PartChoiceNotes
MicrocontrollerRaspberry Pi Pico (RP2040)Powered through VSYS
DisplayST7789 2.0" 240x320 SPI TFT3.3 V logic, 8-pin header
Motion sensorMPU6050 breakout (8-pin)I2C, 3.3 V, on-board regulator and pull-ups
Battery3.7 V LiPo, 500 to 1000 mAh, with protection boardPouch cell no larger than the Pico (21 x 51 mm)
ChargerTP4056 Type-C module (with protection)Charges the battery over USB-C
Power switchSlide switchBetween the battery and the Pico
DiodeSchottky, SOD-123Battery to VSYS, so USB and battery don't fight
ControlsTwo tactile buttonsMode and spare
Passives10 uF bulk capacitor on VSYS, 100 nF decoupling on 3.3 VPlus backlight MOSFET and resistors if the display needs them

Power

text
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.

SignalPico pin
Display DC / CS / SCL / SDA / RES / BLKGP0 / GP1 / GP2 / GP3 / GP4 / GP5
IMU SDA / SCLSee schematic (I2C pair)
IMU AD0GND (address 0x68)
ButtonsSee 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

Screenshot from 2026-10-28 21-36-41


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

Screenshot from 2026-10-28 15-05-07


Figure 2. Full board layout, all layers visible.

Screenshot from 2026-10-28 21-35-10

  • 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

FrontBack
Screenshot from 2026-10-28 21-33-01Screenshot from 2026-10-28 21-33-42
Figure 5. 3D render, front.Figure 6. 3D render, back.

Rendered with KiCad's 3D viewer using the custom STEP models.

Final 3D model

Screenshot from 2026-10-28 21-33-01
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)

text
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.md

Firmware 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:
    1. Read acceleration and low-pass filter it.
    2. Update agitation: E = max(E * decay, |a|).
    3. 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
QtyValueFootprintReferences
1100nFCapacitor_SMD:C_1808_4520Metric_Pad1.72x2.30mm_HandSolderC3
110uF, 10VCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1
1BAT42W-VDiode_SMD:D_SOD-123D2
1MPU6050Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalU5
1Power_swButton_Switch_THT:SW_DIP_SPSTx01_Slide_6.7x4.1mm_W7.62mm_P2.54mm_LowProfileSW3
1SC0917SC0917:MODULE_SC0917U4
1ST7789_2.0_TFTDisplaysWeek:Display_ST7789_2in_8pinU2
1SW_PushButton_Switch_SMD:SW_Push_1P1T_NO_E-Switch_TL3301NxxxxxGSW1
1TP4056_TypeCDisplaysWeek:Charger_TP4056_TypeC_ProtectedU1

Similar boards

  • 2 layersAuv pcb, the printed circuit board in 3D

    Auv pcb

    BodhiDavis/reef_runners_circuitry

    22 parts
  • 6 layers200 × 170 mmMicrowave Beamer, the printed circuit board in 3D

    Microwave Beamer

    levisawatz/Microwave_beam_kicad

    474 parts
  • 2 layers105 × 44.7 mmPower Module, the printed circuit board in 3D

    Power Module

    maxbmorr/PCB-Junior_Design

    Power Stuff

    30 parts
  • 4 layers75 × 125 mmControl Board V1, the printed circuit board in 3D

    Control Board V1

    Thornbots/Supa-Cap

    Rose-Hulman's Thornbot's Electrical Team's Super Capacitor Bank

    84 partsGPL-3.0
  • 2 layers103 × 30.5 mmTS Back Endcap, the printed circuit board in 3D

    TS Back Endcap

    EEVengers/ThunderScope

    ThunderScope GitHub Repo

    9 parts1.3kMIT
  • 2 layers31.8 × 47.6 mmNGC 38 connector, the printed circuit board in 3D

    NGC 38 connector

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    9 parts1.2k
  • 2 layers24 × 27.3 mmExpansion Card Retrofit, the printed circuit board in 3D

    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.