Introduction: Assistive TV Remote

Current television remotes can be confusing and difficult to operate. The small buttons and confusing layout make it difficult to physically press the button and remember which buttons to press. The purpose of this project was to combat these difficulties by creating a remote with fewer, larger buttons and an alert system to notify the user when to change the channel. The limited number of buttons will minimize confusion and make it easier to navigate television channels. The alert system will warn the user five minutes before it is time to change the channel.

Before starting the design process, background research was conducted and requirements were defined. The requirement, decision matrix, and competitor analysis documents are available for download below. The links to all of these files are also available in the references and resources section at the bottom of this page.

Step 1: Gather the Materials and Tools

Before you start building your remote, make sure that you have all the materials and tools that you will need. The materials are listed in the bill of materials and a link to the document can be found in the resources and references section of this page. For the tools you will need a soldering station/kit and a 3D printer.

Step 2: Wire the Arduino

Next, find your Arduino Mini Pro and gather all the materials found in the bill of materials. Obtain your PCB board, and your first step should be to create two lines of metal on either side of the PCB which can serve as dedicated 5V and GND rails from the Arduino. Alternatively, you can also use a breadboard-style PCB, but the disadvantage of this approach is limited flexibility and unintended connections.

The IR led is unclear in this photo, but the anode is connected to the emitter of an NPN bipolar transistor. The collector of the transistor is connected through a 220 ohm resistor to a 5V power supply, the base is connected through a 220 ohm resistor to a digital pin 3 on the Arduino. This allows pin 3 to drive more current to the IR LED, which increases the range of the remote.

Each of the buttons are wired such that one leg is connected to 5V through a 1k ohm resistor. The horizontally opposite leg should be connected to ground and the diagonally opposite leg should be connected to the digital pin being used to check the status of the button.

The most important pinouts are that the IR led is connected to pin 3 and that SDA and SCL on the RTC are connected to pins A4 and A5 respectively. Follow the circuit diagram and image above, to help with the wiring.

Step 3: Collecting the Remote Channel Signals

TV remotes work by sending specific signals to TVs at a specified frequency. These infrared signals can be imagined as a string of blinking lights that tell the TV to do specific things. To implement remote/TV connection, these remote channel signals had to be collected and programmed to specific buttons so that they were emitted on click. To do this, a receiver was used to collect this string of on/off signals. Upload the IRrecvDumpV2 to the Arduino. Point your remote at the receiver and press the remote channels that your wish to record. In the Arduino Serial, you should see something like the image above. Take the unsigned int rawData[] value and use that as your channel value. Repeat these steps until you have all of the required channels.

Step 4: Implement the Code

The code for the remote is below for download and the explanation of what the code does is below.

The Channels:

Now that you have all the channels, it is time to implement it into the code. Upload the remote code to the Arduino. Take the unsigned raw channel codes and place them in the global section of the Arduino code. In most files, it should be fine to add them above the setup() method. Inside of the loop() function, use the sendRaw() function inside the if loops to send the specific channels. See the video for a better explanation.

The Real Time Clock:

The real time clock (RTC) was implemented to alert the user when it is time to change the channel. The RTC can be set using the RTC population method. Before the RTC is used with the remote it will need to be populated. At the time the RTC is connected to the device the date and time will need to be entered into the methods for the RTC. Each space that needs to be entered is in the code below. Download the population method for the RTC below before you download the channel and RTC code.

Step 5: Print the Case

Why did we use computer aided design (CAD)?

The use of CAD allows for fast prototyping. By using CAD models, we were able to quickly generate different designs to reach the current model that accommodates all the components. As we iterated, we discovered which components fit and which areas of the CAD needed to be modified. The fast prototyping allowed us to modify the parts that didn't work in a relatively short amount of time. For example, we had to continuously modify the height of the case until it was large enough to fit all the components.

CAD and Assembly Instructions

The CAD model was designed using OnShape. First, download the three .stl files that are shown below. The three files will provide you with the bottom, the cover, and the battery clip. Once you have downloaded the files you can print them on the 3D printer of your choice. For our iterations, we used the Prusa and the Makerbot. Depending on the printer, you may have to sand down some of the edges of the plastic. Next, once the components are placed inside the remote, you will have to use screws to attach the top of the remote to the bottom. Then, you will have to screw the joystick into place on the top of the remote. Depending on the fit of the components, you may have to glue the battery case to the inner wall of the case.

Step 6: Improvements and Extensions

The remote can be improved by creating an app that allows the user to easily program a specific schedule into the remote. In the future the remote can also be improved by designing a case that is smaller and easier for the user to hold. Internal circuitry can be also improved through customized PCBs to allow for a simpler internal remote design.

Step 7: Resources and References

Many useful resources are included in this section so that you may re-purpose the remote to suit your needs. Below, you will find many resources that we used while building the remote.

Background Research:

Desc: Before the design process was started preliminary research was conducted. The resources for the preliminary research are displayed below.

W., & I. (2017, October 30). How to Control Your TV With an Arduino! Retrieved February 17, 2018, from

Muscular dystrophy. (2018, February 06). Retrieved February 17, 2018, from

Dezfuli, N., Khalilbeigi, M., Huber, J., Müller, F., & Mühlhäuser, M. (2013). PalmRC. Proceedings of the 10th European conference on Interactive tv and video - EuroiTV 12. doi:10.1145/2325616.232562

Young, C. (2017, April 4). Using an Infrared Library on Arduino. Retrieved February 19, 2018, from

Dementia | MedlinePlus. (2018, January 31). Retrieved February 19, 2018, from

Brenner, L. (n.c.). Types of Plastic Used to Make TV Remotes. Retrieved February 20, 2018, from

Zo, A. (n.d.). IR Communication. Retrieved February 20, 2018, from

Features Simple TV Remote Jumbo Buttons. (n.d.). Retrieved February 25, 2018, from (n.d.). Retrieved March 20, 2018, from

Gmatrix u43 Big Button Universal Remote Control - Retail Packaging: Home Audio & Theater. (n.d.). Retrieved February 25, 2018, from

Button. (n.d.). Retrieved March 20, 2018, from

Nedelkovski, D. (2016, August 17). Arduino and DS3231 Real Time Clock Tutorial. Retrieved March 20, 2018, from

IR Remote Arduino Library:

Desc: This library is a super useful for remote programming as it contains many functions that help speed up the coding process. Critical functions like IR decoding and IR signal sending are included for most TV remote systems.

Github Link:

Bill of Materials:

Desc: Online version of the bill of materials. Link below.

Device Requirements Sheet:

Desc: The device requirements sheet. You can either download the file (see intro section) or view it online. The link is below.

Competitor Analysis:

Desc: A document on our competitors. Download the file in the intro or see the link below.

Decision Matrix:

Desc: A document on the decisions we made during our device development cycle. Download the file in the intro or see the link below.