The Handuino is an infinitely-expandable platform. The following steps will detail the construction of the very first version of the Handuino. To keep these instructions relevant in the future, there are also design strategies and ideas that should apply to most if not all possible variants. Also, here are all the relevant CAD files and code (it's a ZIP folder that will download automatically)! Hooray for open-source! http://www.kayrus.com/legos/diy_rc_zip
Designing the Remote Control:
The first step to making a remote control of your own design is deciding what types of inputs and outputs/feedback you want your remote control to have. You should also consider what form factor you want your remote to have, because this may affect what types of inputs and outputs you can fit in it.. You could make it like the stand-up RC car controllers, with their steering knobs and triggers; you could make it larger and give it two joysticks and a couple of flip switches, like those RC plane remotes, or you could make it to your heart’s content and give it a built-in speaker for voice feedback and force-sensitive touch control (that's not a bad idea...)—the possibilities are only limited by your imagination...and the size of the battery you want to carry along with you (I'm not kidding).
For my remote, I eventually decided that I wanted something I could carry in the palms of my hands, like the Gameboy Advance I used to play with as a child; something with a variety of input types, because I wanted to be able to use it for different applications; and something with immersive feedback capabilities so that I could know what was going on without the use of my computer.
Considering all this, I decided to give it a 2.2” LCD TFT color display from Adafruit Industries, because it was well-documented, well-priced, and known for its Arduino compatibility (most of Adafruit’s selection is!); four push-buttons in typical game-controller configuration; two potentiometers with custom 3D-printed caps for precise, but comfortable rotary input; and an off-the-shelf joystick with analog horizontal and vertical output (it was also supposed to let you click the joystick and use it as a button, but that function never actually worked as advertised).
After figuring out what I wanted, I did some conceptual sketches. This "design phase" is particularly important depending on how you plan to manufacture the actual enclosure (case, body etc.) of the remote. In my case, I planned to laser-cut the entire enclosure from transparent acrylic. This, however, is somewhat of a luxury if you're a student (like myself). Luckily, my school happens to have one that I can use (if I had one of my own I would be using it all the time), but don't worry if you don't have access to one, because not only are there other materials you can make your enclosures from, but there are other means of getting your parts laser-cut or 3D-printed for you! For example, Ponoko is one online service that can ship you your custom-made parts, but if that's too expensive or not your style, you should consider another building material, like Sugru, or consider cutting out your parts with an X-Acto knife. If you do use an X-Acto knife to cut out your parts, you probably won't be able to have them fit together without adhesives, but it still functions just as well (the design I laser-cut fits together without tape or adhesives).
If you do have access to a laser-cutter or 3D-printer (or on online service that can provide you with those tools), you'll have to design those parts using computer-aided design (CAD) software (like Inventor). The benefit of this type of software is that, in addition to being able to make parts precisely and with all sorts of features, you can also make the parts in an assembly and see how they all come together (we'll go over this later). Before you can do this in a computer, though, you should plan it all out on paper.
To plan your design out, you need to start by getting all the dimensions of the parts you want to use. Often this can be done by looking up the dimensions or original spec sheets for the parts online, but occasionally you may have to measure them yourself in the case that a specific dimension is not available or if you want to double or triple-check something. In the case that you do want or have to measure something yourself, I recommend the use of a caliper—they’re great for making precise measurements quickly and conveniently so, if you don’t have one, I highly recommend picking one up from your local hardware store or online.
Once you have the dimensions of all your parts, you need to figure out the layout of your remote. This includes not only the position of all the parts, but their orientation as well. At this stage, you don’t need to figure out exactly how the parts will be spaced out. Instead, it’s more critical that you figure out a design that will fit your needs and wants. In doing so, though, you still need to consider how the enclosure will come together, including where each part will go and what will keep them together (its a bit like a puzzle, but its fun!). You will also need to consider how you want to mount all the parts—you don’t need to figure out all the details now (like the diameter those holes need to be if you’re using nuts and bolts) but you should decide whether you want your parts to snap or press into place (most of mine do) or if you’re okay with hot-gluing them to each other or using some other adhesive or fastener.
While thinking about how to put the enclosure together, you should also be thinking about how to take it apart. This will depend on why you’re building the remote in the first place, but you need to think about the components inside the remote that you may want access to later on, and what type of access it is you want: are you okay with taking apart part of your remote just to reprogram it? What will you do if some wires disconnect or you need to replace a bad part? For my remote, I made it so that the back of the remote left the Arduino's top face completely exposed—this may be bad in the long run protection-wise, but the access it gave me to the ports was critical to my improvement of the remote and will allow for other capabilities to be added later on without the need for taking the whole thing apart (although I still do that occasionally just for the fun of it) (and yes, you most certainly can design a removable panel that gives you both access AND protection—I just didn’t get around to it).
Lastly, but not least importantly, you need to think about wiring. Yes. Wiring. In larger remotes, you don’t really need to, but in smaller remotes like mine, where there’s not a lot of leeway between the Arduino and the components, you need to think about how everything will fit or if you need to have access holes here and there (I sure did), or you might find later that its extremely difficult to put together. EXTREMELY DIFFICULT. Everything in my version fits (albeit just barely) and I don’t want to discourage you from pushing the boundaries of enclosure-design, but take it from me: it’s much better to account for things before you’ve built them than afterwards (unless, of course, you’re open to building them again).
A little redirecting..
Once you have a design done with pencil and paper, it’s time for you to turn it into a reality:
If you’re not planning to use a laser cutter to cut out your parts (or a 3D printer to print them), the following few sections may not be as useful to you (you’ll want to stick around though for the RC car and the wiring and programming of everything) because the following is about using Inventor to model your design.
If you plan to make my remote exactly as I have, then the following is also not necessary (although it may be useful here and in the future). Skip ahead to where I discuss the use of the laser cutter.
3D Modeling in Autodesk Inventor
For those of you ARE going to laser cut (or 3D print) your own design, our journey continues into the world of Computer-Aided Design (CAD). Personally, I used Autodesk Inventor to create my enclosure model because it is a powerful tool that is available for free as a student. While many other CAD programs are available (like SolidWorks, or, for free, Google Sketchup, 123D and plenty of others), I will be showing you how to do everything using Inventor.
The first step is to open Inventor and create a new Assembly (a Standard.iam). From here you’ll want to click the “Create” button in the “Assemble” window. Type in the desired name for your first part under “New Component Name” and the desired storage location for it (keep all your parts in the same folder), and then click OK. Click anywhere on screen and then click “Create 2D Sketch” and click somewhere on the screen to select your drawing surface.
For each part you will need to make, this and the rest is basically the same. You start by creating a 2D sketch with lines and different shapes. In doing so, you’ll use such tools like Dimension, Trim, and the different Constraints a lot, so try to become familiar with them—trust me, it’s worth it.
When drawing your part, it’s important that it be formed in a closed loop. An example of a closed loop is if I were to take a piece of string and attach each end to the other to form a circle. If the two ends were not attached, the string might still have a shape, but it wouldn’t be in a closed loop.
When your sketch is ready, click “Finish Sketch” and then head over to the “Extrude” command under the “3D model” tab—this is what turns your 2D surface into a 3D model. Once you’ve opened the Extrude window, hover your mouse over the body of your sketch. If you’ve done your sketch correctly, the surface of it should change color (mine appears light gray). If not, you need to go back and edit your sketch by clicking Cancel, right clicking on your sketch, and clicking “Edit Sketch.” If it does change color, though, you’re set. Click on the sketch and Inventor will show it as a 3D part. Chances are, though, that there are parts of your sketch that aren’t meant to be extruded. If that’s the case, click on them again while holding the CTRL key. You can go back and forth selecting all the closed loops until your part is exactly as it should be, minus its thickness—that comes next. Since we are primarily laser-cutting the various enclosure parts from a single sheet of plastic or acrylic, all the parts will have the same thickness (mine was 1/8”)—that thickness is the amount we will want to extrude our 2D drawings. This is under the “Extents” and “Distance” form in the “Extrude” window. Type in the thickness with the right unit of measurement and then click OK. Once its extruded you’re set! That’s your first 3D piece! Now click “Return” on the right and you’ll be back in your assembly and able to make another part.
This is all you’ll need to make your parts, but if you want to see your parts come together (which makes it a lot easier to visualize and plan out things), you’ll have to do a little more work (but I highly recommend it and its actually quite simple once you get the hang of it). Basically, you have to tell Inventor how the parts should stick to each other—this relationship is called a Constraint, and there are many different types Inventor has to offer. It would take a while to explain each and every one of them and their different options, but you can figure it out just as effectively and much more quickly by just playing around with it on your own (and its fun too). All you have to do is open the Constraints window (or press CTRL + C), select a type of constraint, click the little number “1” button under "Selections" and select the surface of one object, and then click the little number “2” button and select the surface of a second object. If everything is okay, the two objects should now move together and be constrained, but for the constraint to remain, you have to click OK or APPLY. By using different constraints on different parts of the objects, you can make it so that they all fit together without any freedom to move around. The best part of this is that you can edit your parts while they are together (be careful, though, because this may remove one or more of your existing constraints, but you can easily redo them).
From 3D to 2D:
Once we know that all our 3D parts will fit together like we want, we need to turn them back into 2D so that the laser-cutter can cut them out. We will do this from Inventor, but it does get somewhat repetitive.
First, close the assembly that has all the parts in it. Then, go into the folder that you saved all the files and open each one at a time. For each part, right click on the main surface that you designed already (the part that looks like your original 2D sketch) and click “Export Face As.” You will have the option to save as either a DXF or a DWG. Besides issues of compatibility (maybe one program is older than the other), though, both are standard file types, although I end up turning everything into a DWG in the end when I send it to the laser cutter.
With all the part faces exported, you can close Inventor and open a 2D CAD program like AutoCAD. You’ll need this to create the necessary file for laser-cutting. Take the rest of this process with caution, though, because it may not apply so well to your specific laser-cutter (it does work on one I used at school, which is from Universal Laser Systems).
In AutoCAD, open a blank drawing (DWG). Create a rectangle from the origin and extend it into the first quadrant. This rectangle represents the available cutting area, so dimension it properly (the one I used had a 24” by 12” cutting area). Now you have to insert all the parts you’ve designed. Go to the Insert tab, click Insert, and select the file for one of your parts. Clicking OK will let you move the part around the drawing. Click to place it there—you can always move it again later with the Move tool under the Home tab. You’ll want to do this with all the parts, but it’s important to put them in the right place. For example, it’s okay to put parts next to each other, but leave at least an eighth of an inch of spacing between them (this will help you later when you have to remove that part from the laser-cut plastic and will ensure that the parts are properly cut out). Also, you need to make sure all your parts not only fit within the rectangle you initially drew, but that there is some margin as well. Leave at least half an inch around the borders. What’s important now is that the parts be distinguished from that bordering rectangle. This is done by keeping the rectangle and the rest of the parts on a separate layer (remember the color of the layer because this will be important later during the plot setup). When all of this is done, save the file and head over to the Plot command under the File menu.
Plotting to a Laser-Cutter:
In the Plot window in AutoCAD, there are a bunch of options that you have to set for everything to turn out okay. The ones that aren’t specific to the printer I used include setting the scale to 1:1, selecting the right plot area, making sure that the correct power settings are set, and that the correct material profile be loaded. I’ve attached some pictures of the setting windows that I went through in case they are of some use to somebody, but I don’t have the experience to say if the same will apply elsewhere or if these settings are the best (I can, however, say from experience that having the correct settings are important).
If you have access to a laser cutter to begin with, you probably know what you’re doing already. Nevertheless, I will point out some things you should remember to do like aligning your material properly, aligning the height of the bed, and running through the cut without the laser (this is to see if everything will turn out alright before the actual laser is turned on).
The time it will take for the cut to finish depends on the material you are cutting the enclosure from. Once its cut, remove the parts and poke them out of the original sheet. Be careful with the thinner parts because they are fragile and pose a high risk for breaking. Try out all the parts. See how they fit together. If you’ve stuck with my original files and have all the power settings and focusing right, everything should fit together nicely and firmly. If there is something obviously wrong with the parts, go back to the drawing board and see what needs to change. It’s a learning process. I myself went through two or three complete cuts before I was happy with how it turned out. Since redoing the cut is to be expected, if you have the means, I recommend doing the first few cuts in a less expensive material. Then, once you’re surer about how everything will fit together should you use the final material.
Finishing Details about the Handuino:
For you to be sure that the enclosure works (and for you to have a remote at all), there is still a lot that needs to be done. Secure all the components in their places and put the rest of the enclosure together. Does it fit and feel like you expected? Now’s the best time if you want to revise—it’s much harder to once things are soldered.
For those of you making my design, everything should fit into place with some pressing with the exception of the knob switch, LCD display, and the joystick.
If you’re happy with where the enclosure is going, get some standard electrical wire, a piece of string (ideally one that does not stretch much), and a wire-cutter. While you can probably guess what the electrical wire and wire-cutter are for, the piece of non-elastic string is my recommendation for determining how long you should be cutting your wires. Just connect the string to the component you will be wiring, and run it through your enclosure just like you would with the actual electrical wire. With that string you can gauge (no pun intended) how long your electrical wire will need to be. Leave an inch or so more than the exact length so that you will still have enough to rearrange your input and output pins—you can always have extra wire, but what you can’t have is not enough wire (in the case that you do, though, and everything is already secure, just take a second wire and solder it to the original short wire as an extension; then wrap the connection up with some electrical tape and tuck it away).
Once you have your wires, solder everything together, put the last pieces on and you’ll have a finished remote control of your or my own or design! Feels pretty great huh? Well it will feel better once you test it out and hook it up to an RC car. I have included some of my test programs and my final code—they should all work perfectly with my own design, but with a little tweaking, they can be adapted to enclosures of your own design too! If something’s wrong, check your program. Check it again. Once you’re sure it’s not a coding issue, it might be time to take out that multimeter and test some of your circuitry—some faulty parts may be hiding within your creation. If everything works, though, you have my congratulations!