I have made some progress with the self balancing robot. The speed of the motors is now controlled using two cascaded PID regulators. One regulator adjusts the speed of the motors to maintain a setpoint angle. The other PID regulator adjusts this setpoint angle according to a setpoint speed. This new control system allows the robot to return to its original position when disturbed. The robot can also find a new angle for balancing if the center of gravity is moved, or the robot is standing on an inclined plane.
In this video I use the Raspberry Pi for a very basic form of remote control. I connect to the robot using SSH, then I run a serial terminal program on the Raspberry Pi to send ascii characters the the main Arduino. The video also shows an example of video and photo quality from the Raspberry Pi camera.
The three ultrasonic distance sensors and the tilt servo for the camera module are not connected yet…
It was about three years since last time I built a robot. I have learned a lot of things since then, now it is time for a new robot project. Now I have built a self balancing robot based on Arduino. This robot uses stepper motors, the balancing is done using a PID regulator. In this video, the setpoint angle is adjusted proportionally to the speed of the motors to keep the robot from drifting away. Later I will add a second PID regulator for this instead.
Currently the robot can only stand still, but this will be a platform for more experiments in the future. There is a Raspberry Pi 2 installed in the robot. Right now it does nothing, but it will bu used to persorm higher level functions like navigation, obstacle avoidance, remote control and maybe computer vision using the raspberry pi camera module.
When I built the “Stik Pusher” indoor plane, I installed some LEDs that I did not connect. My intention was to add an Arduino but I wanted to test and make sure the plane worked as expected before I did it.
The main purpose of the Arduino is to monitor the battery voltage, but all control signals from the receiver to the servos and ESC (speed controller) now goes though the Arduino. The Arduino flashes the LEDs located on the fin, motor mount and nose depending on the battery status. If the voltage drops to low, the motor is stopped to protect the battery, but the the control surfaces still works. This is similar to how a normal “cutoff” function in an ESC works. My ESC in this plane in very small and simple and does not have this function built in.
I have also connected a serial bluetooth module the the Arduino for wireless communication. I also plan on connecting an ultrasonic range finder pointing downwards to experiment with an automatic altitude holding feature. This requires tuning some parameters, and this is where the bluetooth connectivity comes in handy. Maybe later. I will also try to control the plane with a smartphone app or laptop using this bluetooth connectivity.
To extend the life span on LiPo batteries, they should be stored at the correct voltage. Most hobby chargers have a build in program for storage charging LiPo batteries, but mine did not. So I desired to make my own. Read more about how I made it on the DIY LiPo storage discharger page
This is a project I have been working on for a while now. The alarm clock features a large 40×7 LED dot matrix display and a easy-to-use user interface for adjusting settings. The clock is controlled by an real time clock module that keeps track of date and time. The time of this module is set using a built in GPS every three seconds if the GPS has a valid position FIX. Read more about this project here: Arduino based GPS alarm clock