
DingoPDM
corygrant/dingoPDM
Hardware - dingoPDM is an open source, affordable automotive PDM (Power Distribution Module). Pre-assembled and tested units are available or the design can be used to build a DIY version.

Self Balancing Robot using PID
Self Balancing Robot is an open-source printed circuit board by paradox3407, from the paradox3407/Training-Wheels repository on GitHub. It is a 2-layer board of 87.4 × 52.7 mm with 22 parts on 46 nets, routed with 157 tracks and 5 vias.
It is built around the TSR 1-2450. Its parts include 7 capacitors, 2 resistors, 2 ICs, 2 diodes and 1 connector. It belongs with the robots and motor control boards and the ESP32 boards of this library.
ESP32 based two wheeled self balancing robot with a custom PCB, chassis, firmware! Want to learn how to implement a control loop or just want to build a cool robot? Training Wheels is for you!
This project was made for Hackclub's Fallout Program. I built this because I wanted to make a project that encompasses mechanical, electrical, and software engineering, all while exploring PID control through implementing the prototyping process and good design practices. Through the ~70 hours spent on this project I learned the value of documentation, time management, how to select components, read datasheets, how to CAD using assemblies and designing in context, schematic, part layout and wiring good practices, version control, PID control theory and tuning, and so much more! (Might have gotten a caffeine addiction too...)
Designed in Onshape
Source Files found here
Designed in KiCad
Written in C++ using VSCode + PlatformIO
Firmware/Self-Balancing-Robot folder in VS Code with PlatformIO installed.The IMU must be calibrated before running the main code. Run the calibration program while the robot is upright and in a stable position.
Then run the main code. To get the robot to balance, modify these values:
const float desiredOutput = 0; // desired angle
const float Kp = 0;
const float Ki = 0;
const float Kd = 0; Tune these values in the following order:
desiredOutput is used for setting the offset for the balance point of the robot.
Kp is the proportional gain, and it will be doing most of the "work": increase by powers of two until the robot oscillates, then decrease by 20%.
Kd is the derivative gain, and it addresses oscillations. Increase by small increments, starting roughly at 0.05, until the robot stops oscillating.
Ki is the integral gain, which address drift. By this point the robot should be balancing but if it glides forward or backwards, increase this value, also starting small. Note that Ki might not always need to be modified.
The key to tuning is patience! Only modify one value at a time, and increment in small values.
Designed in Figma
Designed by Sara C / paradox3407
Special thanks to my robotics mentors for reviewing my designs and giving me much needed feedback! + Jennifer for creating inspiration/reference sketches for the chassis + Ellie for teaching me the basics of calculus at flex when I was trying to learn the math behind PID + Hackclub and Fallout!
| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 0.1 uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3, C4, C5 |
| 3 | 100 uF | TW Footprints:CP_Radial_D6.3mm_P2.50mm | C1, C2, C6 |
| 2 | LED | TW Footprints:SMD LED 1206 | D1, D2 |
| 2 | Pololu_Breakout_A4988 | Module:Pololu_Breakout-16_15.2x20.3mm | A1, A2 |
| 2 | Stepper_Motor_bipolar | Connector_JST:JST_XH_S4B-XH-A_1x04_P2.50mm_Horizontal | M1, M2 |
| 1 | 270 | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R2 |
| 1 | 470 uF | Capacitor_THT:CP_Radial_D10.0mm_P5.00mm | C7 |
| 1 | 620 | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R1 |
| 1 | DEVKIT_V1_ESP32-WROOM-32 | TW Footprints:MODULE_DEVKIT_V1_ESP32-WROOM-32 | U1 |
| 1 | GY-521 | TW Footprints:MODULE_GY-521 | MPU1 |
| 1 | TSR_1-2450 | Converter_DCDC:Converter_DCDC_TRACO_TSR-1_THT | U2 |
| 1 | XT60 Male | Connector_AMASS:AMASS_XT60-M_1x02_P7.20mm_Vertical | J1 |
The 19 most common of 22 parts.
It measures 87.4 × 52.7 mm and has 2 copper layers, 1.6 mm thick.
22 parts, built around the TSR 1-2450. 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 paradox3407/Training-Wheels repository on GitHub, at the commit this page was made from: the board is CAD Files/PCB Design/Self Balancing Robot/Self Balancing Robot.kicad_pcb and its schematic CAD Files/PCB Design/Self Balancing Robot/Self Balancing Robot.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 paradox3407 before reusing the design.

corygrant/dingoPDM
Hardware - dingoPDM is an open source, affordable automotive PDM (Power Distribution Module). Pre-assembled and tested units are available or the design can be used to build a DIY version.

hberntsen/mhi-ac-ctrl-esp32
Control MHI Airconditioning locally using your own ESP32 series chip!




idlehandsdev/shark_bait
The files and firmware for the Shark Bait wireless pumping system.

