
24g2usb rp2350zero
joypad-ai/joypad-os
Universal controller firmware for building adapters, dongles, and custom controllers.

Arduino sketch for an animatronic Halloween skeleton built on an Arduino Uno.
DF mp3 player is an open-source printed circuit board by ninopereira, from the ninopereira/skeleton repository on GitHub. It is a 2-layer board with 4 parts on 18 nets, routed with 13 tracks and 0 vias.
Its parts include 2 resistors and 1 connector.
Arduino sketch for an animatronic Halloween skeleton built on an Arduino Uno.
| Part | Connection |
|---|---|
| VL53L0X time-of-flight sensor | VIN on 3V3, not 5V; GND → GND, SDA → A4, SCL → A5 |
| or HC-SR04 sonar | trig pin 7, echo pin 6 |
| DFPlayer Mini | VCC on 3V3, not 5V; module TX → pin 0 (RX); pin 1 (TX) → 680 Ω → module RX, 1 kΩ from module RX to GND; module BUSY → A0 |
| Jaw servo | pin 9 |
| Arm servos | left: pin 10, right: pin 11 |
| Eye LEDs | pin 8 |
All pins, angles, distances and timings live in config.hpp.
Set DISTANCE_SENSOR there to the sensor you fitted:
DistanceSensorType::TIME_OF_FLIGHT (VL53L0X) or
DistanceSensorType::SONAR (HC-SR04). The detection range
(DETECT_MIN_CM / DETECT_MAX_CM) applies to both.
The VL53L0X runs on 3.3 V and its SDA/SCL pins are not 5 V tolerant. The sketch turns off the Uno's internal pull-ups (which go to 5 V), so the sensor board's own pull-ups to 3.3 V must hold the lines high; if the board has none, fit 4.7 kΩ from SDA and from SCL to 3V3. The bus runs at 100 kHz because 3.3 V only just counts as high for the Uno. Peel off the protective film over the lens.
The 3V3 pin also feeds the DFPlayer and can only supply about 150 mA (Uno R3). If the sensor drops out while music plays loudly, power both from a separate 3.3 V regulator instead.
With the VL53L0X in place of the sonar:
ADVERT and copy the voice clips from sd_card/ into it,
renamed so each starts with a 4-digit number:
0001_WhoAreYou.mp3, 0002_ComeHere.mp3, ... (the module only reads
the first four digits). An advert pauses the song and the song resumes
where it left off. Set MP3_SONG_COUNT in config.hpp to the number
of songs.
After adding, removing or changing a voice clip, regenerate the jaw
scripts with python3 tools/make_jaw_script.py (needs numpy and
ffmpeg); clip N in sd_card/ must be advert N on the card.tools/mp3_test tests
the player on its own. If they blink 3 times, the VL53L0X did not
answer: check its I2C wiring. tools/tof_test tests the sensor on
its own.MOUTH_CLOSED_DEG / MOUTH_OPEN_DEG and the arm angles and
sweep times in config.hpp for your build.The DFPlayer is on the Uno's only hardware serial port (pins 0/1). A software serial port would block interrupts for about 1 ms per byte, which stretches the servo pulses and makes the arms jerk past their limits. As a result:
tools/tof_test still prints to the Serial Monitor; tools/mp3_test
shows its results on the eye LEDs instead.| File | Purpose |
|---|---|
skeleton.ino | Entry point |
haunted_skeleton.* | Behaviour state machine |
mp3_player.* | DFPlayer Mini wrapper |
presence_sensor.hpp | Picks the sensor selected in config.hpp |
presence_filter.* | Debounced presence detection shared by both sensors |
tof_sensor.* | VL53L0X time-of-flight sensor |
sonar.* | HC-SR04 ultrasonic sensor |
mouth.* | Scripted jaw animation |
arm.*, arms.* | Staggered up-and-down servo arm gesture |
eyes.* | Eye LEDs |
| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | 1K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2 |
| 1 | 680 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1 |
| 1 | Conn_01x08_Pin | Connector_PinHeader_2.00mm:PinHeader_1x08_P2.00mm_Vertical | J2 |
| 1 | ~ | DFPlayer:DFPlayer_Mini | DFPlayer_Mini1 |
4 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.
From the ninopereira/skeleton repository on GitHub, at the commit this page was made from: the board is pcb/DF_mp3_player/DF_mp3_player.kicad_pcb and its schematic pcb/DF_mp3_player/DF_mp3_player.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 ninopereira before reusing the design.

joypad-ai/joypad-os
Universal controller firmware for building adapters, dongles, and custom controllers.


hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

tardate/LittleArduinoProjects
a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

drandyhaas/KiCadRoutingTools
A set of Python/Rust tools to aid routing in KiCad

osy/XG_Mobile_Station
Open source eGPU dock for ROG Ally and ROG Flow

Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

NVNTLabs/switch2-SDEX2M2
Micro SD Express to M.2 NVME Adapter for Nintendo Switch 2