loading
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.

Step 1: Introduction/Prerequisites

This is a large project; so I believe it will provide the best clarity to break down this guide first with a large perspective and afterwards exploring each individual component of the project separately.

Instructable Breakdown:
  • First, I will discuss the prerequisite knowledge that you should have to first attempt to tackle this project. A beginner will likely have trouble following the guide.
  • Secondly, I will show a "macro" view of the project and discuss it generically so the reader understands my approach to accomplish Reginald. If the reader understands my process, it'll be easier for the reader to pick and choose components from my process that he/she desires in his/her own project. I don't assume that everyone would want to clone their own Reginald; but to customize the project with their own wants.
  • Thirdly, I will give the parts list divided among the different components of the project.
  • It is at this point that I will go into detail of each part of Reginald.
Prerequisite Knowledge that I will assume you already know:

This will save time of myself and others who are already very familiar with these topics. If I was to cater to the absolute beginner here, this Instructable would be easily, magnitudes larger. Someone who already understands the topics would have difficulty following the guide due to the size of it.

However, an absolute beginner can familiarize oneself with the given topics to research before attempting Reginald. If an individual understands these topics, that person will be able to understand the project.

Therefore, this Instructable caters to all. Given one is willing to learn.

The topics are:
Helpful Notes:

In this tutorial, I will be showing schematics and diagrams of the custom PCB I built to saturate all the circuits; but showing how to build the board step by step would be a fairly large instructable in itself. If you understand the above, you won't have a problem following the information that I provide.

The networking section is by far the most important, especially if you're interested in communicating with your project via the Internet; and even more so if you happen to have AT&T as your ISP. You'll see later. 


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.
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. <br> <br>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.
Where did you get your PC background?
<p>would be perfect if swirled direct web, crashes a lot</p>
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
Hello pejay28; the best approach is to always completely isolate the issue then attack. <br> <br>I'm unsure of the definition of &quot;judder&quot;, 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. <br> <br>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 &quot;clear&quot; 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 &quot;clear&quot; then &quot;froba&quot; and alternates quickly, then something is wrong with the connection. <br> <br>However, I bet my money on the Arduino side. Your issue (assuming &quot;judder&quot; == &quot;crawl&quot; or &quot;twitch&quot;) is probably due to the servos not being in a sort of equilibrium when they are given the &quot;89&quot; value. You could have the Arduino directly assign various values to the servos and see what value is right. <br> <br>Best of luck, <br>N.fletch
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?
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. <br> <br>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.
<strong>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?</strong>
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: <br> <br>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. <br> <br>Good luck and thanks for reading!
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. <br>
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. <br> <br>It's certainly possible to mount a paint ball gun! This clever gentleman did so: <br>http://www.instructables.com/id/Autonomous-Paintball-Sentry-Gun/ <br> <br>
I WANT ONE. This reminds me of God's Little Toy from All Tomorrow's Parties... if it were able to fly! :D
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!
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. <br> <br>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.<br> Ya just gotta appreciate university level (and above) work and documentation!
It was like a passage from my<br>Calucls book. But I admire that lvl of work just like u DiY guy
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! <br>
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!
Thanks for a comprehensive, clear and very informative IBL. You have given me a bunch of ideas!!! <br> <br>I have got to learn more about the UDP.
It was my pleasure to create! And I'm pleased to know that it's given you ideas.
can i get one fully created <br> <br>
da
Cool
Really really good! i love it, and thanks for the info its well done, i hope the moderators accept it into the Contest.
Thanks! It was accepted yesterday.
Awesome. That was a lot of work. Shame it is not in a contest.
Thank you for appreciating the effort behind it. Incidently, I'm waiting for moderators to accept it into the Hurricane Laser Contest.
Brilliant!
Excellent! Thanks for sharing!
Thanks! It was my pleasure to create.

About This Instructable

56,712 views

285 favorites

License:

Bio: My name is Nick, I work at Continental and just recently got my BSEE. I love working with projects on lower levels to design them ... More »
More by N.fletch: The Rhapsody Tart ChronosMEGA; a wrist watch Standing Linear Actuator; powered by Modtronix
Add instructable to: