First-person WiFi driving of Roombas and other infrared RC vehicles

Picture of First-person WiFi driving of Roombas and other infrared RC vehicles

Sticking a smartphone a remote controlled vehicle and having it stream camera video over WiFi lets you have lots of fun driving the vehicle with its remote while viewing images from it on another device and using the vehicle's own remote control. You can even do this where there is no WiFi access point with a hotspot on the phone or laptop (even if the phone or laptop has no Internet connection). And you can control your phone's flash for use as a headlight. All this uses simple off-the-shelf software, but I'll describe it in the first two steps.

Problem: But what if your vehicle is, like the Roomba, controlled by a line-of-sight (or close to line-of-sight: the light will bounce off walls to some degree) infrared remote? Sure, you could make sure that your vehicle is always within sight, but then what's the point of first person driving if you can see the vehicle?

Solution: Stick an infrared emitter dongle in the phone's audio jack and make an open source app -- IR Server -- that lets you control the vehicle (or any other IR-controllable device) via a web browser. Now you can use your laptop (or tablet or other device) both to steer and to view the video.

That's what I did, using an Android phone with two infrared controlled vehicles: a Roomba 530 and a bulldozer from the kids' Thames and Kosmos Remote-Control Machines Set. And of course now that I've done it, you don't need to write the app. If you just want to drive a 500-series Roomba or a Thames and Kosmos machine, you can just use my IR Server app. If you want to drive some other infrared-controlled vehicle -- or just control your TV via a browser! -- then you just need to modify one of the html files that IR Server uses for controlling.

My IR Server app is still a work in progress, which is why I am only making an apk available on github rather than putting it on Google Play as yet. I have the occasional hiccup with it.

What you need:

  • Android device with camera
  • Webcam app: I use the free version of IP Webcam; if you prefer open source, there is SpyDroid
  • IR Server app (source code and binaries here)
  • Audio jack infrared emitter: I used one from a defunct Griffin HeloTC; you can buy a cheap IR blaster; you can also make your own but the Griffin worked more reliably for me (newer phones have built-in support, but I don't have such a phone so I didn't add support for that)
  • Remote controlled toy
  • Optional: Way of capturing IR signals (I won't describe this, as the hardware you have probably differs a lot from mine)
bdav1 year ago

really neat mod. going to have a go with my old (half dead) roomba. May try the serial interface, think there may be more options for controlling different parts / interrogating sensors

arpruss (author)  bdav1 year ago

Serial is better, but you'll need a phone with USB host and a USB to serial adapter, one of the Bluetooth Roomba or serial adapters, or a Brainlink. I picked up a Brainlink when SurplusShed had them on sale for $20, and they're great for driving a Roomba via Bluetooth and serial port.

You get a lot finer control over serial. You can turn the vacuum on and off, control the speed and access all the sensors. And it's pretty easy.

By the way, here's a handy hint: an S-video cable can be repurposed as a Roomba serial cable if you remove the plastic block from the plug.