BlockBot is an open source robot based on Arduino. It is a fun experiment to try to replace the traditional R/C remote and use apps to control it.
A traditional R/C system is quite simple - the remote stick's position controls the servo's position - and that's about it.
That is indeed quite boring (although quite reliable), and sometimes you need to extensively modify the system to make it work ideally.
And when you're hooking up to Bluetooth, millions of laptops and phones have it, and with gamepad/keyboard/mouse/eye-tracking support, you can have so many ways to control it, maybe even use a camera to calculate it's path or something. And you only need a simple microcontroller for this - instead of using an on-board microprocessor, you use the untapped power of your phone's ARM cores or your laptop's x86 cores.
How it works
We will be using Bluetooth RFCOMM (SPP) to control the robot using "packets" which contain simple instructions. Here's the command packet defined in C++ :
uint8_t direction; // Forward, Backward, Right and Left.
uint8_t speed; // % Speed of all the continuous rotation servos
uint8_t rotate; // Angle of the servo 0-180
uint8_t grip; // Angle of the servo 0-180
uint8_t lift; // Angle of the servo
uint8_t query; // Send Query
A traditional R/C system works at around 50Hz, that is, you can issue 50 instructions per second to the system - which is also what we will *try* to achieve (since anything farther isn't useful due to my cheapo analog servos, however the source code is open for all to modify).