Here’s one of my favorite projects so far: a wifi-controlled robot that streams video to the user. I call it the Rover because it can work over any distance as long as it’s on a wifi network, and I really feel like an explorer when I drive it around the office. This project was an absolute blast to put together, and it’s really the result of putting together a few simple ideas into a single project.
The rover system works by using two android devices, which I’ll call the driver phone and robot phone. The robot phone (in this case a Moto G 2nd gen) is mounted onto the rover and connects to an Arduino that controls the motors. Using a simple serial interface, this phone can send steering commands and control the robot. In addition, the robot phone records video and streams it to the driver phone. I chose QuickBlox as my streaming service, but I designed the app to switch between services with relative ease later on.
The driver phone receives the video stream and gives the user a virtual d-pad to control the rover, and that’s all it takes to control the Rover! The actual code implementation is more complicated of course, but I think this project has a charming simplicity to it.
Here’s a short video showing how it works. If you pay close attention, you’ll notice that my steering worsens considerably when the Rover gets farther away. That’s because once I have to rely entirely on the video stream, the lag makes precise handling pretty difficult, and that’s why this robot did a great job of finding all of the wifi dead zones in the office.
All code is available on my Github page.
Arduino Uno (any Arduino that fits the motor shield will work)
I used a sheet of acrylic to make the platform, and a basic phone tripod from Target to hold the robot phone. The green chip on the motor shield is a bluetooth chip from another project, and it’s not necessary for the Rover to work properly.