UPDATE (8/29/13): Thank you readers for your enthusiasm and kind remarks regarding this project! It has been a tremendous journey since I started this project back in March, but I am very glad with the resulting product and the excitement with which it has been received by the maker community. Happy building! -Cyrus

Do you like Legos?
Do you like Arduinos?
Do you like RC things that you can bring to life with the flick of a thumb?
I certainly do, so today I’ll be showing you how to make something that combines all of the above into one and go over a ton of other useful techniques and best practices as well!

     I’ll start by giving a brief description of what I made, and then I’ll follow with not just how to make it, but the reasons behind it too! By explaining all the steps involved (like the design, planning, 3D modelling, and even the Lego-building and laser-cutting!) and the decisions and thought process behind those steps (as well as the CAD files and code), I hope not only to share with you what you will need to make what I have, but also useful background and techniques that you can use not only in your own version of this project, but in all your other DIY projects too! Lastly, if there anything that I might have missed or that you need additional information or clarification about, or if you have any questions whatsoever, please feel free to ask me in the comments or to message me! Now lets get started! 

    As you might have guessed from the title or seen in the video, the project I've been hinting towards consists of two parts: a completely custom Arduino remote control, and a servo-powered RC Lego car!

   The Lego part of the RC vehicle is a medium-sized chassis built around a Lego drivetrain with four-wheel drive and four-wheel steering. The RC part is a set of four standard hobby servos powering the drivetrain; an Arduino, for controlling everything; and an XBEE radio, for communication with the remote control. There is also an onboard power supply (it’s an RC car! Of course it has one!).

    The second part of the project is the remote control. It’s about the size of a Gameboy Advance; has a 2.2” LCD color display; is built around an Arduino microcontroller; has a joystick, two potentiometers, and four buttons for input; and has the same type of XBEE radio module the RC vehicle does. All of this is housed in a custom enclosure made entirely from laser-cut acrylic. The remote control supports USB cable operation via the serial port on the Arduino, but it can also be operated off a 9V battery which can be mounted onboard, allowing the entire remote to be operated, well, remotely. Fun stuff.

    Now that you know what you’ll be making, we can start actually making it.
Everything you'll need file-wise is available for download on my site, Kayrus.com.
Here's the link: www.kayrus.com/legos/diy_rc_zip (it should download automatically)
Included in the zip file are the latest Inventor part files (.ipt's), the combined AutoCAD drawing (.dwg), and the latest Arduino code for the car and Handuino (.ino's) and I'll let you all know if I make updates or improvements to these!

Step 1: 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 many years ago; 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!); fourpush-buttons in typical game-controller configuration; twopotentiometers with custom3D-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: or 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).
<p>great project, but where i can get the sketch for arduino?</p>
You are too good awesome project.<br>But where can I find that Lego set will u help me please.<br>Thanks :)
<p>Hi crtlego, nice project.</p><p>I cannot find your zip file. Is it still available? (I looked on your website as well as the link)</p><p>My kids and I would like to make our versions of this project. (obviously the will want to install servo controlled lasers or something)</p>
<p>Hello, I was wondering if you had a schematic for this project?</p><p>If so, could you email it to mikeslad722@gmail.com</p><p>thank you!</p>
<p>Which part of the project did you need a schematic for? The CAD models are available for download as discussed in the article!</p><p>Cyrus</p>
<p>I need the electronic parts only. Mainly the controller, but all would be lovely!</p>
Hey man love your idea could I have the name, design id and element id for the Legos you used
<p>I haven't compiled a list of the Lego parts I've used.. </p><p>If I do, I'll update this!</p><p>Best,</p><p>Cyrus</p>
<p>how much is it to make this?</p>
<p>The car? Or the Handuino?</p><p>The car is probably under $50 disregarding the cost of the Legos. It comes down to what parts you already have and which you don't (and the quality of the parts you choose to buy).</p><p>The Handuino, on the other hand, is probably closer to $100, but I didn't purchase the parts myself and haven't put together a budget!</p><p>I'll let you know if I do make a budget,</p><p>Cyrus</p>
<p>Hey Crtlego,</p><p>this project is awesome! I'm planning to build a similar car but i'm pretty new to arduino stuff and lego. Did you just bought one set of lego technic to realize the car or do you need several? Is there a schematic how the ardunio is connected to the motors? This stuff is all very <br>exciting. Mayby you could me send some more information? freeskyfaller(ad)gmail.com</p><p>Cheers,</p><p>Michael</p>
<p>Hi Michael!</p><p>Thank you! I'm glad that you're planning to build a similar car! I've amassed a decently-sized collection of Legos over the years (initially by buying sets and later by buying specific pieces from websites like Bricklink.com) so I didn't build this with a specific set or anything. I'm about to update this Instructable with some diagrams for the wiring. I hope that helps you. If not, message me with questions!</p><p>Best,</p><p>Cyrus</p>
if you could send it to abs-in-da-house786@hotmail.com
if you could send it to abs-in-da-house786@hotmail.com
<p>OMG best project ever! </p>
<p>Hey man, great Post!</p><p>I want to build a autonomous arduino/lego based vehicle, so I'm mainly interested in the awesome car part. I currently don't have any lego anymore. Could you recomment a set to start off with? The choice is overwhelming.</p>
<p>Hi ruffyD! </p><p>Sorry for the late response!</p><p> Your feeling of being overwhelmed is natural.. There are so many options to choose from! If you're not picky about old vs new parts, I would go on Ebay and see if you can buy a huge lot of Technic parts that are cheap and used. Often, buying a single new set won't give you the parts you need to make good modifications, but maybe by combining a new set with an excess of old parts, you'll have enough to do what you want! Let me know what your interests are and maybe I can find a perfect set for you! Happy building! (:</p>
<p>Hey, I am also looking for a set of legos and am overwhelmed. I do not care if they are new or old, or one kit, or scattered. I want to make the car really similar to yours, except I want to develop an iphone app that will control the car. </p><p>In terms of the car, I have prototyped one already, except I just have a base, and 4 circular wooden wheels I found at a craft store. The problem is that I am unable to attach the servos on the axles and I can never get the alignment. I want to make something out of legos, where, basically, I can use two motors to turn the wheels, a servo or two to control the direction of wheels, and a platform on which I can rest my battery pack/arduino/breadboard. Thank you for your help, and it would be great if you can direct me to some lego type parts!</p>
Possibly the best write up on the site well done
<p>Thank you! I really appreciate that (:</p>
Wow! This is really exceptional work, nice job
<p>Thanks! (:</p>
I can't wait to pull my old footlocker out filled with Legos and get to work on this. Amazing job.
<p>I can't tell you how glad I am to hear that (:</p>
amazing I wish I had the resources for this very good job!!!!!!
<p>Thanks! The right resources are often hard to come by.. but with some tinkering, one can often make do! Happy making!</p>
That's awesome I voted so hope u win
<p>Thank you! Every vote counts (:</p>
Man , I really like your work it's awesome. I even would like to make that as my next project at sch. I would highly appreciate it if you can send me a schematic of both the remote control and the Lego car. My email : amissah.prince@gmail.com
Thank you! I'll message you privately (:
Purely amazing! i started a project like this but could not finis but i have studied your model and found the missing link!. Thank you very much!
You're most welcome. I'm just glad you were able to find the missing link for <em>your</em> project with <em>my</em> project!! Out of curiosity, though, what was it that you were missing?
Why aren't we funding this?
What do you have in mind?
can i have the code?
Its available on my site. Just go to http://www.kayrus.com/legos/diy_rc_zip
Thanks (:
You can download LEGO Digital Designer, you can make the vehicle in 3D and the software can give you a instruction step by step
Just to make sure, are you asking for me to use LDD to make instructions for the Lego part of the project? I would be glad to do it in SR 3D, but I just wanted to check to see if that is what you were asking for. I'll definitely be putting up more pictures once I take it apart.
this combines two of my favorite hobbies! <br/>i am just starting with Arduino.<br/>good job
Thanks! It combined my two favorite hobbies as well!! <br>Have fun and best of luck! Arduino is a great system to get involved with.
very nice, there is one more thing id like to see out of this however, try doing this with Lego motors connected to standard hobby esc's
Thank you. Actually, using Lego motors was my original intention. I just didn't have the right motor controllers at the time of the build (they consume a lot of current).
It doesn't look like it was made out of pasta??? (legos) <br>It does look like LEGO though, great build
Very nice setup. Can you also consider adding the arduino sketches and lego nxt programs? Also: have you thought if it wouldbe possible to interact directly via usb or to connect the xbee radio directly to the nxt?
Its so very interesting that you asked that! USB to XBEE communication is <strong>exactly</strong> how I got started! I probably should have talked more about this in the Instructable..but, YES, it is most certainly possible!<br> <br> You'll need two things (besides an XBEE): <strong>a board to connect the XBEE to the USB</strong>, and the <strong>right software to communicate with the port</strong>.<br> For the board, I used this little guy from <em>Sparkfun</em> (<a href="https://www.sparkfun.com/products/8687" rel="nofollow">https://www.sparkfun.com/products/8687</a>). You'll need a mini-to-A USB cable if you want to use it with your computer, but the board's <em>really handy&nbsp;</em>(you also need it if you want to configure your XBEE)!<br> Software-wise, I've used two programs to communicate directly with the XBEE.<br> &nbsp; &nbsp; &nbsp;One is called <strong>X-CTU</strong>. Its made by the same people who made the XBEE (Digi) and it gives you all the options and tools you'll need to configure all the settings of your radio if you don't like it out of the box. It also serves our purposes, though, by having a Terminal that lets you type out Serial data straight to the radio. Provided you have all the data transmission rates and channels set properly, you could technically have your own private little chatroom with local XBEEs (or one on your own computer if you opened two windows up at the same time).<br> &nbsp; &nbsp; &nbsp;The second one is called <strong>Termite</strong>, and its&nbsp;by CompuPhase&nbsp;(<a href="http://www.compuphase.com/software_termite.htm" rel="nofollow">http://www.compuphase.com/software_termite.htm</a>). This one's much simpler and is essentially the &quot;Terminal&quot; part of X-CTU. It still has the options needed to properly communicate through your USB port to the X-CTU, but, if I understand correctly, you cannot change the actual settings on the radio. As far as controlling the RC car I built or doing other XBEE communication, though, both this and X-CTU are good places to start. Did I mention they are both free? Just checking.<br> ----------<br> &nbsp; &nbsp; &nbsp;As far as XBEE and NXT communication goes, I'm not sure what the possibilities are (I never really experimented with the NXT in depth, even with my love for Lego). I imagine somebody has worked out a way to do communicate serially via USB with the NXT, so if that's possible, I suppose you could hook an NXT up to the XBEE? I know a couple of Lego fans that might like that..<br> ----------<br> With regards to programs and sketches, I have uploaded the latest stable release of my Arduino code/sketch for both the remote control and the Arduino on the car. They are in a zip file on my website along with the CAD files: <a href="http://www.kayrus.com/legos/diy_rc_zip" rel="nofollow">http://www.kayrus.com/legos/diy_rc_zip</a><br> <br> <br>
Awesome project ! <br>I like it and i vote you :) <br>
Thanks!! Much appreciated (:

About This Instructable




Bio: I'm a sophomore at Carnegie Mellon University studying electrical engineering and robotics. I previously attended Thomas Jefferson High School for Science and Technology and ... More »
More by Crtlego:DIY Arduino Remote Control and Lego RC Vehicle!! 
Add instructable to: