What it does
This is an Arduino wheeled robot that is wirelessly remotely controlled with a dance mat.
How we built it and the challenges we faced
We assembled the Arduino RedBot wheeled robot, which proved to be an issue in itself as the kit had a defective cable for one of the motors. We had to improvise with using extra cables and duct tape to make it all work as (not) intended. We wanted to remotely control the robot, but it has no wireless connectivity of any type, nor were there any extra Arduino parts available to add Bluetooth to it.
We decided to work around it by attaching an Android phone to the robot with some more duct tape! With a lucky donation of an USB OTG cable we were able to connect the phone to the robot. The next step was to write an Android app that can communicate with serial-over-USB, which also was non-trivial to say the least.
The robot itself is programmed in C, and surprisingly its software is the simplest part of the project; it listens to requested motor speeds on the serial connection and applies them to the motors, with some additional protections against serial connection errors.
On a laptop, a Kotlin driver for the USB dance mat was written, which translates the inputs into correct motor speed requests. A web server is coded right into it, serving the current requested motor values. The Android app continuously requests the web page and reads the motor values, passing them on to the robot with the USB serial connection.
All of this worked on the software side, but one hardware was still preventing our success; as the robot has only 2 wheels, a third plastic part always touches the ground. While this fine usually fine, with the added weight of the Android phone it causes too much friction making the robot unable to move at all! A third wheel had to be botched together with two plastic bottle caps, the top part of a plastic cup and even more duct tape!
Accomplishments that we're proud of
All of this work resulted in a completely working solution!
What we learned
Every problem can be solved with more duct tape. Except missing cables, so always bring your cables.