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.
All code is available on my Github page.
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.
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.