Handuino: A DIY Handheld Human Interface Device

Modular. Portable. Powerful. DIY. The ultimate Arduino interface for your robots, UAVs, 3D-printers and everything else you can dream of

Similar projects worth following
The Handuino is a portable, handheld, Arduino-based human interface device (HID) and remote control. The purpose of the Handuino is both to expand the utility of the popular Arduino microcontroller and to create a more engaging way to interact with devices around the home, school, and laboratory. Currently, the Handuino does this by fitting a 2.2-inch TFT LCD screen, XBEE radio module, joystick, four buttons, and two rotary knobs into a small, transparent, laser-cut acrylic frame. When connected to a computer via USB, the Handuino can be used in place of other peripherals. Without a computer, the Handuino can function as a stand-alone unit or use its XBEE radio to establish two-way serial communication with other radio-enabled projects or devices (such as a second Handuino). This flexibility and range of use makes the Handuino an extremely useful and fun platform.

The Handuino is an exciting new device with seemingly-limitless potential. At first glance, it may appear only to be a fancy remote control; but put it in your hands, and you'll quickly imagine the opportunities that it makes possible. Being Arduino-based, the Handuino builds upon an extremely well-established platform. People use Arduinos all the time in applications ranging from robotics to 3D-printing; from wearables to even the Internet of Things! In general, Arduinos are extremely easy to use yet they are remarkably powerful devices. The aptly-named Handuino was built with this same approach in mind and extends the capabilities and usage of Arduinos further by putting one into the palm of your hands.

The Handuino, however, is much more than just a portable Arduino—it represents a whole new class of DIY computing devices. On paper, the Handuino is a human interface device that doubles as a remote control, but in reality, the Handuino has the ability to transform human-computer interaction by bringing a low-cost, educational, powerful yet customizable interface to the masses. In this regard, the Handuino is extremely functional.

As a stand-alone device, the Handuino allows a user to interact with the Arduino in a more meaningful and engaging way than communicating with it via Serial Monitor and a keyboard thanks to its use of a 2.2” LCD screen and videogame-like controls (joystick, buttons, and rotary knobs). This setup also makes the Arduino’s abilities more visible and clear for those new to the platform—interested students no longer wonder what the series of flat blue boards are capable of, seeing instead an interface they are familiar with already.

With applications ranging from portable gaming to on-the-go data logging, the Handuino’s abilities are only extended through the use of additional connected devices. With a single USB cable, the Handuino becomes a new way of using your computer. With other radio-enabled devices present, the Handuino becomes a remote control capable of two-way interaction—the device’s use of an XBEE radio module makes networking easy! Since its creation, the Handuino’s abilities as a programmable remote control have made it an irreplaceable tool. I have already used it to control a number of my robotic creations and it has made debugging serial communication easier than ever before.

To me, the only aspect of the Handuino more appealing than the immediate utility I have found for it is its potential for growth. As a device I designed, soldered, and programmed myself, I find it very exciting to think about the possibilities it holds as I design its successor. With a more compact, comfortable and modular design featuring new sensors and interfaces (including an accelerometer, gyroscope, compass, speakers, small vibrator motors, LED lighting, and others), a 3D-printed Handuino-powered universe isn’t hard to imagine.

  • 1 × Arduino Leonardo A variation of the popular Arduino microcontroller with built-in USB communication
  • 1 × 2.2" TFT LCD Screen w/ breakout board From Adafruit Industries, this screen is easily controlled by the Arduino's various pins. A specific pin configuration is necessary to achieve high refresh rates, though.
  • 1 × Joystick w/ breakout board (built-in button) From Sparkfun, this board breaks the joystick input into distinct analog and digital outputs and is simple to work with.
  • 4 × Large, square tactile button Generic square buttons.
  • 2 × Generic potentiometer w/ nut and washer

View all 12 components

  • Wiring Schematic for an Example RC Car

    Cyrus Tabrizi01/26/2015 at 04:31 0 comments

    To make the Handuino-controlled Lego car in the video, you can use a setup similar to this one (note: some additional configuration with the Arduino code will be necessary depending on your wiring and vehicle construction)

  • Action Video

    Cyrus Tabrizi08/21/2014 at 04:24 0 comments

    I decided to share one of the videos I have available of the Handuino being used. It is a demonstration of the Handuino in conjunction with a simple Arduino-powered Lego truck I made. The video is synced to some electronic music, so make sure to listen with headphones (the only thing you would miss otherwise are some servo noises). 

  • Device Diagram/Schematic

    Cyrus Tabrizi08/21/2014 at 03:41 0 comments

    Here is a wiring schematic describing the way the Handuino operates!

    And here is a visual overview of the relationships between components

  • 2-Minute Video Description

    Cyrus Tabrizi08/21/2014 at 03:21 0 comments

    Here's a quick video I put together of me describing the project in person! Sorry for the lacking of robots and flying objects (I was short on time filming this one).  

  • Resources and Attribution

    Cyrus Tabrizi08/20/2014 at 21:18 0 comments

    Every piece of the Handuino is open-source and easily accessible. First, the designs (in Autodesk's ipt format) and code (in Arduino's ino format for both receiver and transmitter sample code) are available by download from my website, (ZIP download: For the LCD screen, the Arduino code uses two libraries from Adafruit as shown by the following:

    #include <Adafruit_GFX.h>

    #include <Adafruit_HX8340B.h>

    These libraries are available for download from Adafruit's website (specifically, the tutorial for that particular LCD screen, and their GitHub (

    I'd like to thank and acknowledge Adafruit for their thorough tutorials, example code, and libraries without which this project would have been much more difficult. I also need to thank Mr. Charles Dela Cuesta, my Robotics teacher at Thomas Jefferson High School for Science and Technology for providing the resources and time for me to begin my work on the Handuino (it began as a school assignment and has since grown from there). 

    Please comment if there are questions regarding any of the above. All of my work on this project (i.e. the information disclosed on all portions of the Projects page for this project) is released under the MIT license.

  • A Clarification

    Cyrus Tabrizi08/20/2014 at 21:01 0 comments

    Hi! I just wanted to clarify the way this Project is organized. There's a lot of information about it so I want to make sure everyone knows where everything is! In the Description, there's a brief description of the Handuino's specifications and purpose. In the Details section, much of the information in the Description section is repeated but in elaborated form. The Details section also includes more background information and is generally more thorough than the Description section (as one might expect). The Description and Details sections, though, do not cover everything someone might want to know about the project's creation or the rationale behind different design choices. For that additional information as well as every step in the process of making your own Version 1 Handuino, look for the Build Instructions section!

View all 6 project logs

  • 1
    Step 1

    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!

  • 2
    Step 2

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

  • 3
    Step 3

    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.

View all 8 instructions

Enjoy this project?



Viper-Gtr wrote 09/12/2014 at 06:03 point
cool project!
but, is the on-switch maybe a little overdressed?

  Are you sure? yes | no

Cyrus Tabrizi wrote 09/20/2014 at 22:51 point
Possibly :)

  Are you sure? yes | no

zuul wrote 08/20/2014 at 20:29 point
looks pretty cool

  Are you sure? yes | no

Cyrus Tabrizi wrote 08/21/2014 at 04:07 point
Thanks! :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates