Introduction
In this tutorial we’re going to use the mouse and keyboard emulation abilities of a variety of Arduino devices combined within infrared receiver to make a remote control mouse with some keyboard commands thrown in for good measure.
There are a variety of reasons why you might want to create an infrared remote control mouse or keyboard. Suppose you’re making a PowerPoint presentation and you don’t want to be stuck standing next to the laptop as you click through the slides. Or perhaps you’ve set up your Raspberry Pi as a media server or you have some sort of Home Theater PC connected to your TV.
However for me the ability to do mouse and keyboard remotely is much more personal. As a result of my disability, I cannot use a traditional mouse. I control my computer using dictation software. However the mouse commands for that software have limits or are somewhat inconvenient to use. I can however use a traditional TV remote by poking at the buttons with a stick in my mouth. I originally developed this project because it helps me overcome my disability and allows me to do productive things like write tutorials for the Adafruit Learning System. If you’re interested, here is a link to my personal blog about how this project was originally developed. I use it every day and I could not have written this tutorial without it.
Hardware Needed
We originally intended this tutorial to have support for Pro Trinket as well as any ATmega32u4 based boards such as the Arduino Leonardo, Arduino Micro, and Arduino Yun. However there appeared to be some conflicts between IRLib infrared library and the Pro Trinket mouse and keyboard libraries. If we can resolve those problems at a later date we will update this tutorial. For now we are sticking to the ATmega32u4 based boards. We will be using Arduino Micro however the code will work identically with an Arduino Leonardo and the Leonardo portion of the Arduino Yun.
You will need an IR sensor such as the TSOP38238 shown at the right.
You will need some sort of infrared remote control. All of our example code has been written for the Adafruit Mini Remote Control shown on the right but you can modify the code to use any ordinary TV remote if it uses a protocol supported by IRLib.
Although it is not 100% necessary, we will also add 2 NeoPixel’s as indicator lights that will help you know whether or not you are in mouse mode or keyboard mode and if you have pressed the Control, Alt, or Shift buttons. The NeoPixel also indicates whether or not you are dragging the mouse or clicking it.
Software Libraries
The mouse and keyboard libraries for the Leonardo, Micro, and Yun are already installed as part of the standard Arduino IDE. You can find more about these libraries at http://arduino.cc/en/Reference/MouseKeyboard
You also need the IRLib Infrared Library for Arduino available on GitHub.. For an introduction to using this library, see our previous tutorial Using an Infrared Library for Arduino.
If you’re using NeoPixels as indicator lights you will need down eight the Adafruit NeoPixel Library from GitHub.