This repository is for the Assistive Remote developed in 2018 as a Mass Academy STEM II Project. The remote was developed by Krish Nathan, Victoria Bowen, Andrew Yuan, and Joyce Fang.
If you have any questions about the code here, you can reach out to Krish at krishnathan2019@gmail.com.
The working code which we uploaded to our client's remote is Working_RTC_ChannelSignals.ino. This sketch incorporates the infrared LED, the real time clock (RTC), and the joystick. You may need to make a .txt file named channels.txt with each of your channel signals on a separate line. Then add the .txt file to your SD card through an SD card reader module. You could also choose to store your channels as arrays in the sketch, not as a .txt file on the SD card. However, you might run into memory constraints.
If you want a simpler sketch which just contains essential remote code, check out Remote_Example_revised.ino. The sketch only contains the code for sending different channel signals in a cycle. The sketch is easier to understand, and it works if you do not need an RTC or joystick.
We used the Arduino Pro Mini board for our remote. If you wish to use a board which supports Wifi and Bluetooth, I would recommend the ESP32 Board.
We used these large, colorful buttons that are easy to see and press. They are also pull up buttons, which means that they read as HIGH when released and LOW when pressed. This is useful because it eliminates false positive presses caused by background noise.
We utilized an infrared library for this project
In order to duplicate the actions produced by your client's original remote, you will need to measure the signals produced by each button. These are the steps
- Connect an infrared receiver such as the one found here to your Arduino.
- Install the infrared library to your computer using the instructions from the infrared library
- Open the infrared receiving demo in your arduino IDE and change the recvPin field to match the pin your receiver is connected to.
- Upload the sketch to your Arduino and open the Serial Monitor.
- Point your client's television remote directly at your infrared receiver
- Press the television button whose infrared signal you wish to measure
Check out this demo if you want to see how to send raw signals from the infrared LED. Raw signals are an array of integers which represents alternating delays and 38Khz pulses. Each integer is the length of the delay or pulse in microseconds. This is how we ended up sending signals from our remote
Check out this demo if you want to see how to send hexadecmial signals. You should be able to measure these using the receiving demo above. It could be less complicated to send these types of signals.
We used the DS3231 RTC in order to keep track of the time, so that we could automatically switch the channel on our client's television each hour. For a smaller, more convenient RTC consider this one. We modified the starting code of a button from this article. Tutorials and examples found here were used to help with the code. The examples were very helpful with the implementation of the RTC. This DS3231 library was used for the RTC.
We used this joystick in order to allow our client to scroll through an on-demand menu using up, down, left, and right controls.
We used this SD card reader to store .txt files containing our channel signals. If you wish to develop a mobile application which interfaces with the television remote, the extra data storage provided by the SD Card would also be useful.