Following on from our previous blog post about SKY+ RC6 IR codes, we have now completed the project and are about to ship to its new owner – a friend of ours.
We purchased a Sega megadrive Arcade style games console which was BNIB for €25 ($35) and disabled all of the buit-in gaming functionality. We then wired up each of the 12 available switches (Joystick & Arcade style buttons) to the Arduino Nano which was placed onto an Arduino prototyping shield and mounted to the enclosure using ‘lots’ of hot glue. Note some of these consoles come with an additional 2 buttons, which can bring the total to 14. In addition, the joystick has 8 positions in total of which we used only 4 as it would be too difficult for the user to manage all eight.
The new wiring turned out to be a bit of a birds nest & also benefited from even more hot glue. The wiring was attached to the shield via screw-terminal blocks. We then set about trying to decide which of the 40 buttons on the SKY+ remote control to assign to the effective 12 buttons (switches) available on the console. In fact, a lot of time was spent considering various permutations of the mapping before we settled on the final version.
We used the following PDF template to discuss mapping options:
SKY BUTTON MAPPING 15oct2013LC
As the intended user for this remote (now called the SR1 for convenience) is living overseas we went through serveral iterations to get this right as re-programming the unit would have meant shipping it back to Dublin. In the end we came up with a method to re-map any of the SKY+ remote keys (RC6/5 IR Keys) to any button on the console using a special ‘programming’ mode which can be entered at power-on. This new map is then written to the EEPROM of the Arduino nano for all future uses. Naturally, we also included an ‘factory’ reset mode as well, in case there were ‘operator errors’ during this process.
As there may be problems with the placement of the SR1 in the TV room to suit the paricular needs of the user, we decided to mount 3 x TSAL6xxx IR emmiters , from Vishay, on 3 vertical faces of the console to ensure operation no matter what the orientation. On the side facing the user we mounted a red LED to provide visual feedback when any button is pressed. This LED also provides coded visual feedback during re-programming mode.
The system included an AC to 9V power adapter with only 9V entering the console. The existing onboard regulator dropped this down to a steady 5V and this was fed in turn to the Arduino Nano (5v pin not Vin). The console unit came with a power switch and a red LED indicator for when power is on.
So hopefully this custom SR1 remote will be of some benefit to the user. If not we have already developed some ideas of an even better remote for people who find it difficult to use standard remotes. Bring on V2!
It is important to note that SKY, to their credit, have introduced modifications to their remote controls to assist users who find them difficult and also have a dedicated accessibilty department. Unfortunately, this did not suit our friend and the alternative ones available as commercial products online can cost $4-500+ and would be of limited use (in this case).
During the final test, which was particularly difficult for us because we don’t have a SKY STB readily available, we discovered a potentially fatal flaw. Apparently the PLAY/PAUSE key on the SKY remote control is actually 2 independent keys. If you press the upper part of the ‘large’ key – PAUSE is sent and PLAY is sent when the lower part of the key is pressed. Little wonder some people have difficulties with typical TV remotes.
Less than an hour later and thanks to the flexibility of Aduino, we introduced a new ‘virtual’ key for the SKY remote into SR1 which toggles the IR signal sent every time the ‘PLAY/PAUSE’ button is pressed. This should work OK – fingers crossed. If not we can always re-programme the SR1 manually to an alternative key sequence.
Finally, we would like to acknowledge the great IRremote Arduino Library which we used for this project to transmit the RC6/5 IR signals. Of course, we also used AnalysIR to visually confirm & check the signals sent from the SR1, which saved us many hours of needless debugging.