Picture of Reginald: a UDP surveillance bot; control via the Internet
ScreenHunter_05 Sep. 15 15.31.jpg
Reginald started from the simple, yet bold idea to control a bot from anywhere in the world with a live video feed. What I wasn't expecting was for Reginald to develop into an involved, feature rich project. With my work and money, I was able to complete a project exactly to my satisfaction and more. This tutorial chronicles the entire project: from top to bottom.

Before I started my project, I had several goals that I wanted to see in Reginald:
  • Have one battery power absolutely everything (redundant technologies cause complications)
  • Implement a method where the video feed and the controls work through the same technology. This simplifies Reginald for the end user. The user will only need to connect to Reginald in one way and not two separate ways which is what I often see in most projects that implement video feeds (Again, redundant complications; saturate two separate links to one).
  • For the user to be able to interact with Reginald in real time.
  • Encrypt Reginald so no one can just simply type in the IP Address and access him
  • Have one single input/output board to saturate all the circuitry. This way: Reginald is much cleaner in appearance, and will create a sturdy electric foundation to connect my peripherals to.
  • Have a live console bringing information to the user.
  • Code a GUI that looks good, can be controlled via key commands and is feature rich.    
  • Simplicity in end user experience; so any layman could operate.
  • Most importantly: set up the network connection to allow access from anywhere
What's the point of this?

Reginald is a very useful project for the end user. If a user is interested in checking on his or her house from school or work, that person would be able to do so from an infinite amount of angles. The user can move around the house wirelessly and greet others. If you have children you can let them know you always have your eye on them!

More importantly, the biggest use featured in this Instructable is the implementation of the UDP technology. If someone can interface any physical and/or electrical object to an Arduino, that person could be able to control this object wirelessly in real time from anywhere. This is very useful. Reginald is an example application for UDP, a highly under utilized technology among projects.

What will this Instructable provide?

This Instructable will introduce Reginald as a whole and then go into a breakdown of every component in detail.

Performing all the necessary networking to accomplish this can be very complex and involved, however this method of communication is clarified and explored through this Instructable. I saturated approximately a solid month of research and troubleshooting into a simple guide; I provide troubleshooting guidance and example tests along the way.

emdarcher2 years ago
is it possible to use hamachi instead of port forwarding for the robot, because that has worked for other things like minecraft servers and stuff for me. Also can this be done with the wifi shield instead? the routers are very bulky.
N.fletch (author)  emdarcher2 years ago
The Arduino on Reginald acts as a server, and accepts UDP messages, which most network games use (to my understanding). So I imagine Hamachi will work just fine; when setting up the Primary Router's Firewall, I treated it like a video game server.

It's a coincidence that you bring up the routers and wifi shield. I address exactly that concern you make on Step 2 within this guide. In short: you most certainly can use a wifi shield, but I opted for routers based on the end user experience.
DJCoopes12 months ago
Where did you get your PC background?

would be perfect if swirled direct web, crashes a lot

pejay281 year ago
hi there - great project - liked it so much i have tried to make a similar version myself. One question though - when you drive the bot forwards and backwards did you ever get a problem with the servos juddering forward even though you are stopped? I have checked to see the clear command has a setting of 89 in it which is a stop position but still they very slightly judder forward, i have tried changing the setting but still same problem - i was wondering if it has something to do with the packet conversion do you think? Thanks
N.fletch (author)  pejay281 year ago
Hello pejay28; the best approach is to always completely isolate the issue then attack.

I'm unsure of the definition of "judder", in context it seems your bot is either twitching or crawling forward. In either case, you should isolate the issue to either being the robot, or something in the GUI to Arduino connection. The .ino file I wrote to be uploaded to the board prints out the messages it receives through its USB serially.

Open a serial interface on your computer at 9600 baud connected to the Arduino and see what the board spits out. If you see it receiving the "clear" packet and nothing follows, then you can conclude that the Arduino side is faulty, perhaps adjust the .ino file to compensate. However, if you are seeing that the Arduino receives "clear" then "froba" and alternates quickly, then something is wrong with the connection.

However, I bet my money on the Arduino side. Your issue (assuming "judder" == "crawl" or "twitch") is probably due to the servos not being in a sort of equilibrium when they are given the "89" value. You could have the Arduino directly assign various values to the servos and see what value is right.

Best of luck,
JackHHolmes2 years ago
Would it be possible to make this without the on-bot router and Ballistics? Instead buying a wireless security camera and an WiFi Arduino shield?
N.fletch (author)  JackHHolmes2 years ago
This would be possible; it's actually easier to implement your way. If you read through Step 2, I explain all the reasons why I choose the router instead of a WiFi shield. Basically, as long as you don't plan on moving your project from your home constantly, everything will work well. Unless you can find a way to ad-hoc the WiFi shield.... but I digress.

Good luck!
excellent work! good choice using udp topology for something like this, i did the same with mine. http://www.instructables.com/id/how-to-build-MACKRA-a-serb-variant/
Useful reviews - didn't know many things.
Good IBL , I am also constructing a similar bot, but i don't understand why the netgear router is used, cant you complete all the network operations using linksys router ? If netgear router is definitely needed, can i replace it with TP-link WR703N?
N.fletch (author)  irshad_ahamed2 years ago
In step 2, I go over this. In short, it is not necessary; the Linksys router is capable of making the long distance communication on its own. The Netgear is used for specific applications:

The Netgear router is only used when you want to communicate to Reginald directly (from computer to Reginald). For instance: if you were to take Reginald to your work, you wouldn't be able to use him without first changing all of the network settings all over again. With the Netgear router you can simply connect directly to Reginald from the computer. It's for user simplicity; but it's not necessary if you are planning on keeping your project at home at all times.

Good luck and thanks for reading!
razor71772 years ago
You could use a brushless motors...last longer than common dc motors....is it possible to mount a paint ball turret...? Might be more fun.
N.fletch (author)  razor71772 years ago
I'm not sure if, for DC motors, you are referring to the servos (DC motors inside) or the DC motors in the turrets. I'm a bit stuck with DC motors for the turrets. As far as the drivetrain goes, I'm interested in swapping the servos for DC motors.

It's certainly possible to mount a paint ball gun! This clever gentleman did so:

I WANT ONE. This reminds me of God's Little Toy from All Tomorrow's Parties... if it were able to fly! :D
Hippymike962 years ago
Thats AWSOME!!!!!! Is there a place i could buy this b/c i have 0 software experince or understanding. If not you should seriously go to market with this. I would be a definet buyer!
N.fletch (author)  Hippymike962 years ago
Ha, I appreciate the support. If you ever wanted to teach yourself, I provided all the links on the first step to get you started in learning.

As far as selling these, it's been suggested to me that I do this and I think it would be a great idea! My next project is building a smaller, cheaper and more rugged version with my own home brewed microcontroller or FPGA instead of Arduino.
Golly! This is so well laid out.
Ya just gotta appreciate university level (and above) work and documentation!
It was like a passage from my
Calucls book. But I admire that lvl of work just like u DiY guy
N.fletch (author)  DIY-Guy2 years ago
I'm flattered; thank you for your kind words!
Cool Keep tinkering away!
This is amazing. Thanks so much for sharing... and in such detail. I hope U win a contest, b/c U certainly deserve 2!
N.fletch (author)  christine edwards2 years ago
Thanks for your kind words! I appreciate your support.
Awesome job there, it makes me wish there was a way to cram all the wifi stuff into my RC Airsoft Tank.
Hahah IKR!
bikeframe2 years ago
Thanks for a comprehensive, clear and very informative IBL. You have given me a bunch of ideas!!!

I have got to learn more about the UDP.
N.fletch (author)  bikeframe2 years ago
It was my pleasure to create! And I'm pleased to know that it's given you ideas.
can i get one fully created

PMMPINDY2 years ago
Really really good! i love it, and thanks for the info its well done, i hope the moderators accept it into the Contest.
N.fletch (author)  PMMPINDY2 years ago
Thanks! It was accepted yesterday.
Awesome. That was a lot of work. Shame it is not in a contest.
N.fletch (author)  Computothought2 years ago
Thank you for appreciating the effort behind it. Incidently, I'm waiting for moderators to accept it into the Hurricane Laser Contest.
trickyM662 years ago
UOS2 years ago
Excellent! Thanks for sharing!
N.fletch (author)  UOS2 years ago
Thanks! It was my pleasure to create.