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.
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
- 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.
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:
A moderate understanding of networking
Internal and External IP addresses; Subnet masks; DHCP; UDP technology
- http://en.wikipedia.org/wiki/User_Datagram_Protocol (Be sure to read the comparison between UDP and TCP)
- How to configure your primary router: setting static IPs, Port Forwarding
- Basic understanding of at least what DD-WRT is
- Internal and External IP addresses; Subnet masks; DHCP; UDP technology
- Basics of Arduino and Processing programming (Although not quite necessary since I'm just giving you the code)
Electrical Components (I will be giving schematics and guidelines, but I can't hold your hand to build the board; understand the following and you'll be fine)
- Understanding very simple schematics
- The practical use of transistors, capacitors, resistors, voltage regulators, DC motors, servos
- Basics of soldering and debugging with a multimeter
- An understanding of how voltage and current work
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.