This project utilizes a Flask webapp hosted on a Raspberry PI to control a cluster of Arduinos via bluetooth balancing a ping-pong ball on a flat beam. Each Arduino has a Pulse Width Modulation (PWM) stepper motor which is used to adjust the respective connected beams. The user enters values for the starting angle, proportion (kp), integral (ki), and derivative (kd) which are used in a PID control algorithm that dictates the behavior of the motors when attempting to place the ping-pong ball at the center of the beam.
- Arduino & Supplies LINK:
- Arduino Uno [alternate(s): arduino nano]
- Ultrasonic Sensor [alternate(s): IR Range Finder]
- Stepper Motor & Driver
- Jumper Wires (male-to-female & female-to-female)
- Raspberry Pi:
- Raspberry Pi Camera LINK
- Ping Pong Ball LINK
- HC-05 Bluetooth Module LINK
- The Balance Beam
NOTE:: The balance beam will have to be hand crafted for now. When a tested design has been found/made it can be included in the list.
- Basic linux commands (i.e. cd, ls, mkdir, etc)
- Basic C/C++ understanding for arduino
- Basic circuit wiring understanding
- Intermediate Python
- Basic HTML
- PWM - Pulse Width Modulation for Stepper Motor Control EXPLAINED
- Bluetooth communication ARDUINO & HC-05 Raspberry PI
- Web Server Website/WebApp setup using apache2 TUTORIAL
- Front-End & Back-End Development
- PID - Proportional-Integral-Derivative Controller EXPLAINED