UniversalRemote_Header UNIVERSAL REMOTE UniversalRemote_Header

Inspired by the work of British YouTuber, James Bruton, I have become interested in expanding my projects into the world of Mechatronics. That being the combination of programable electronics and mechanical robotics.

In any such robotic project one often requires a remote control to operate the device. James has built several universal remotes - and I thought it might be prudent to do the same. In order to have the remote in place when I begin my first project.

The remote has to be universal in the true sense of the word. It must be able to control a number of different machines and be able to switch between them on the fly.

I have therefore designed and built a programmable universal remote that can do just that, based on the Arduino Mega Microcontroller



In short, the remote has:
10 "Push to make" switches,
4 latching switches,
2 joysticks,
2 potentiometers and
2 rotary encoder switches for internal functions

The rotary encoder switches allow you to switch instantly between the devices (or robots) that you wish to control.
All of the other inputs are used for control. Quite simply, pressing a particular button or joystick generates an ASCII String inside the Arduino. This string is then sent to the radio and transmitted to the receiving devices.
By looking at the prefix to the string, each device can determine whether the command is intended for it. Then by looking at the following characters in the string, can determine what action is being requested.

Its that simple. And in its simplicity lies its customizability.


UniversalRemote_Header INSIDE THE BOX UniversalRemote_Header



The heart of the controller is the popular Arduino Mega 2560 Micro Controller.
This has been my first project using the Mega. No other Arduino has enough IO to accommodate all the controls used in this build.

The display is the standard 1602 display with a mod board that I added to the back to reduce the wiring in the box.

The accelerometer is the MPU6050 triple axis accelerometer. Although it can be used to fly a drone as one would using a cell phone, I use it only for sensing movement to wake the remoteup from sleep mode.
If no movement is detected for a preset time it assumes that the device is placed on the table and switches to low power mode to conserve battery.
When it is picked up the accelerometer senses the movement and returns the remote to full power mode.

The radio used for signal transmission is the NRF24L01.
It is a simple, easy to use transceiver that can be purchased at a very low cost from any Arduino supplier.

All switches, potentiometers, joysticks and rotary encoders are standard units available at your Arduino supplier.



UniversalRemote_Header THE CASING UniversalRemote_Header




The housing is made of several layers of 5mm Perspex.

This has been CAD drawn and Laser cut - A very nice way to work.

For years now, I have relied on Crystallite Plastics in East London for all of my laser cutting requirements.
Owner, Francois Boniface, has always been most accommodating and willing to help.
I would strongly recommend them, should you live in the area.


UniversalRemote_Header THE CODE UniversalRemote_Header


In the interest of Open Source mentality, I make this code available to anyone to use or distribute as a whole or as parts thereof - provided it is not for commercial use.

Below are the complete text files containing the Arduino Code .