Even though we've not yet customized the remote for the particular devices you want to control, we need to explain how the remote works so that you can understand what it is is being configured. Also note that you can use the mouse and keyboard emulation portions of the device without any customization, so you can start using that portion of the device right away.
Here is a YouTube video that demonstrates many of the functions of the remote. You can read more about it in detail in the sections below.
The device is designed to operate using 3 standard AT switches which are connected through the three jacks on the side of the case. We will refer to them as LEFT, RIGHT, and SELECT. They are used to move the cursor around the display screen. We've also implemented a system of "cording" which means pressing more than one button simultaneously to get a different function. If you push the LEFT and SELECT buttons simultaneously, the cursor will move up and if you push the RIGHT and SELECT buttons simultaneously the cursor moves down.
We should note that just because we've built the device to use ordinary switches, with a little extra programming, other input methods such as sip-and-puff, flex sensors, force resistors, and capacitive touch could be used to control the device. That is beyond the scope of this tutorial. Contact us at ATMakers.org on our Facebook group here for more information and assistance.
Additionally, we have taken advantage of the fact that the TFT display has a resistive touchscreen over it. Although you probably would not use the touchscreen for everyday purposes, it is available for testing and demonstration purposes without the need to connect switches. If the disabled person needed assistance from an attendant or caregiver, they could operate the device using the touchscreen rather than the user's usual switches. If the touchscreen is a bad idea for your day-to-day use, the program can be recompiled easily to disable it.
The touchscreen is divided into five sections for up, down, left, right, and select as seen in the drawing below. Note that there's nothing on the screen to indicate where these areas are, the select section is the center third of the screen and the other directions surround it.
Near the top of the ultimate_remote sketch on the front page is a definition
#define MY_DEBUG 0
Changing this value to a 1 and recompiling turns on serial monitor debugging. It also allows you to navigate the screen by typing commands into the serial monitor. You can type in "u", "d", "l", "r", "s" for up, down, left, right, and select.
When operating the device, think of the characters on the screen as a menu and you are going to navigate around it and select the function that you want to transmit.
Using the AT switches, you can move the cursor left or right and then select the function that you want. As previously mentioned, if you press LEFT and SELECT at the same time, the cursor will move up and if you press RIGHT and SELECT at the same time the cursor will move down. However some users will not be able to use this multi-button system so there is an alternative.
As you move the cursor past the right edge of the commands, you will see a down arrow appear. If you press SELECT while the down arrow is visible, the cursor go down one row. If you press RIGHT again when the down arrow is available, an up arrow will appear and pressing SELECT will cause the cursor to go up. If you continue to press RIGHT, the up or down arrow will disappear and the cursor will wrap around to the beginning of the same row.
Similarly as you go up or down off the top or bottom of the screen, the cursor wraps around.
This wraparound feature both horizontal and vertical means that technically you really only need 2 buttons. A direction button (either RIGHT or LEFT) and a SELECT button. It takes longer to navigate the screen if only one direction button is used, but it is possible to completely operate the device with just two buttons. At various times late in the day when my fingers are cramping, I often operate the device using only 2 buttons. I've also been in situations where my RIGHT or LEFT button failed due to a loose wire. As long as my SELECT button and at least one other direction button works, I was still able to use the device until I could get it repaired.
The menus are organized into pages of commands. Each page can consist of up to 9 rows of 14 columns of commands. (Note: most of these demonstration pages are only 10 columns wide because they were designed for a version of this remote that used the display screen in a portrait orientation instead of landscape.)
The top row of the screen is used to select which page you want. The top row of symbols never changes. However as you select different pages, the remaining rows will display different sets of commands. You can create your own pages and organize them however you want. We are going to describe the pages that I use. This will serve as a demonstration of how the system works. Across the top row you will see the letters "CMKATBX" followed by a Bluetooth symbol. Those characters stand for "Cable, Mouse, Keyboard, Amplifier, TV, Blu-ray, eXtra". The default page when the system turns on is my cable page so that is what you are looking at. The remaining lines on the screen are all commands to control my cable DVR.
Your cable or satellite box or DVR may or may not have all of these functions and it may have additional functions. You will be able to design your own page and commands. We will explain this cable page in some detail so that you can see what is possible. We will not go through a detailed explanation of the commands for my surround sound amplifier, TV commands, or Blu-ray player. The eXtra page contains commands from the Adafruit Mini Remote Control which I use on many of my maker projects and to demonstrate IR functions.
Selecting the Bluetooth symbol at the end of the top row changes the remote from infrared control mode to Bluetooth mode so that you can use the device for iOS switch control on iPhone or iPad devices. The Bluetooth switch control mode is described in a separate section of this tutorial.
Let's look in more detail at the first page with the cable commands. We have designed some custom symbols to represent the typical commands you would find in a TV or cable remote control. For more information on these symbols see the tutorial linked here.
The first row of commands perform the following functions on my DVR: Jump back, Rewind, Play, Fast-Forward, Pause, Stop, Live, Mute, Volume Up, and Volume Down.
In the next row we used a mixture of custom symbols and regular characters for the functions. They are: Channel Up, Channel Down, Info, Favorites, preVious Channel, eXit, Guide, List, Menu, and Record. When you select Record, a pop up message will appear on the screen asking "Are You Sure?" You have to press the RIGHT button to confirm that you really want to record. This has saved me from accidentally recording a show I didn't want and causing my DVR to overflow.
The third row of commands are the left, right, up, down, select, page up, page down, A, B, and C buttons from my DVR remote. Those arrows are used to navigate the on-screen guide and the list of recorded programs as well as the cable box's menu system. The A, B, and C buttons perform miscellaneous functions on the DVR.
The next row consists of PIP (picture-in-picture) functions and some others. They are Toggle PIP, Move PIP, Swap PIP, PIP Channel Up, PIP Channel Down. This is followed by a special command for navigating the on-screen guide that goes to the Previous Day, or Next Day. The final three commands on this row are "CTQ" which mean Cable Power, TV Power, and Quit. The quit command doesn't transmit anything via IR. It simply blanks the display and it locks out the switches for 10 seconds. I select this when taking the remote off or on my wheelchair or removing the buttons from my hand.
Note also that after five minutes of inactivity, the screen will blank itself. It actually turns off the backlight thus saving battery power. The next time you press a button, the screen will reappear however when the screen is blank, the SELECT button is disabled so you don't accidentally select a command that you can't see. If you want to completely disable the device you can turn it off with the power switch at the bottom of the case.
Let's look in detail at the Mouse and Keyboard pages of commands. IRLib contains a special protocol of my own design for doing mouse and keyboard control. The dongle is programmed to receive these special commands and perform the actual functions on your computer.
You should navigate to the top row and select the "M" to switch to the mouse page.
The first row is basic mouse movement in any of eight directions horizontally, vertically or diagonally. The "l" in the center of the row does a single left click of the mouse. The "r" at the right end of the row does a single right click. You can select these rapidly for double clicks.
The next row begins with "LRM". These are toggle buttons for the Left, Right, and Middle mouse buttons. If you click them once it presses and holds the mouse button until you press it again. The "wW" commands move the mouse scroll wheel up or down. The next three characters "SCA" are keyboard toggles for Shift, Control, and Alt. This allows you to do things like "Shift Click" or "Control Click". Like the mouse toggles, one press turns them on and the next press turns them off. The final "fs" changes the mouse speed faster or slower. The default is 10 units per command.
Although this page is primarily a mouse page, it also includes several other handy keyboard commands. The third row begins with keyboard presses of Home, Up Arrow, Page Up, Left Arrow, Enter, Right Arrow, End, Page Down, and Windows Key. (Although we have not tested this on a Mac computer it should work as a command key on those systems.)
The fourth row consists of several other useful characters. The "zyxcv" commands are all control characters for Ctrl-Z, Ctrl-Y etc. On most programs these control characters do "Undo", "Redo", "Cut", "Copy", and "Paste". That "E" is Escape. The remaining four symbols are "Backspace", "Insert", "Delete", and "Tab". The fifth row contains a space bar followed by a "0". That zero means reset all toggles. This includes all three mouse buttons as well as Shift, Control, and Alt toggles. It also resets the mouse speed to the default.
You should now navigate to the "K" at the top of the page to select a full keyboard page.
This simulates a full QWERTY keyboard including 12 function keys. The top row begins with a backwards accent or apostrophe character followed by 1 through 0, -, =, and finally Backspace. The second row is the standard first row of the keyboard. The symbol at the end is Delete. The third row is the typical middle row of the keyboard with an Enter followed by the Space Bar at the end. It seemed to be more convenient in that location then putting it at the bottom of the keyboard like a physical keyboard would. The fourth row covers z through "/" followed by toggles for Shift, Control, and Alt. These work just like the keyboard toggles in the mouse screen. One press turns them on. A second press turns them off. Note that when you choose the "S" Shift toggle the display changes to display uppercase characters and to replace the numbers and punctuation marks with their typical shifted versions on a physical keyboard. Here is how the screen looks after selecting the Shift.
The next row consists of navigation keys Home through Page Down as duplicated from the mouse page. The "wW" are Windows keys with the small "w" giving a momentary press and the "W" is a toggle so that you can use Windows shortcuts such as "Win-A" to bring up the notification area. There are a number of these such shortcuts built into Windows. The "e" is the escape key and the "0" is the toggle reset which releases all Shift, Control, and Alt toggles. The final row are the function keys F1-F12.
Without going into a lot of detail, here's a brief overview of the other pages. As mentioned previously the "A" page is for my surround sound amplifier. It looks like this.
The "T" is for my TV controls apart from the usual power and volume controls which are on the cable page where they are more handy.
The "B" page is for my Samsung 3D Blu-ray player. Note that it has 2 sets of volume controls. The one in the upper right is for the TV and the one in the lower right is on my surroundsound amplifier because sometimes I watch Blu-ray with or without the surround sound on.
The "X" page is extra commands that I had programmed to emulate the Adafruit Mini-Remote. I arranged it in a narrow format of three columns so that looks just like the remote itself. The software has a little difficulty handling a narrow column and I haven't bothered to completely debug it.
Apple iOS operating systems have an accessibility feature called "Switch Control". It allows you to control an iPhone or iPad without using the touchscreen. You need to connect a device that emulates a standard Bluetooth keyboard. By pressing different keys on this virtual keyboard, you can move a cursor around the screen of your iOS device and select programs, type, drag-and-drop and basically do anything you could do with the device using its traditional touchscreen controls.
In a separate tutorial here, we have described in detail how this feature works and how to configure your iPhone or iPad to use it.
We have program software to send "L" when you push the LEFT switch, "R" when you push the RIGHT switch, and "S" when you press the SELECT switch. The software also allows you to use long keypresses so that a long press of one of the switches can have a different effect on the iOS device. This is all explained in the switch control tutorial.
There are three ways to exit switch control mode. If you push all three switches simultaneously it will exit. If you push 2 switches for one half second it will exit. If you press 1 switch for more than 8 seconds it will exit. After exiting switch control mode, the remote will return to whichever page you were on before you switch into Bluetooth switch control.
You can recharge the battery using the micro USB port of the power boost at the bottom of the device or by using the 2.1 mm barrel jack. Although the device will operate if powered through the micro USB port of the Feather M0 BLE, it will not recharge the device when connected through that port.
We recommend this charger for recharging the device using the barrel jack.