Menu

Remote Controller

David McGinnis Kyle
Attachments
RemoteControlFiles.zip (20690 bytes)
RemoteSchematic.PNG (15997 bytes)

Overview

The remote controller is an IO Interface that implements ITVInfoRemote, IVolumeController, and IDVRRemote. It is an interface to an Arduino IR remote.

The Hardware

The only required componets for the remote (besides the arduino) are LED1 and R1. This is the IR transmitter, so LED1 must be an IR transmitter. IR1 is an IR receiver, such as this one from SparkFun. It is used for capturing remote signals from your existing remotes, to get the codes and teach them to SAMI. LED2 is just a status LED that lights up when a code is being received.

Arduino Code

The arduino code uses a modified version of the IR remote library by Ken Shirriff. This library is included with the Arudino code. These changes were made to support longer code lengths used by some remotes, such as the Xbox 360.

Configuration File Format

<IRRemoteControl Name="ATTDVR" COMPort="COM3">
  <RemoteCode Name="zero" Code="0B-00-00-00-00-23-40-26-00-11" />
  <RemoteCode Name="one" Code="0B-00-00-00-00-23-40-A6-01-11" />
  ...
  <Channel Name="Fox" Number="1002"/>
  <Channel Name="Food Network" Number="1452"/>
  ...
</IRRemoteControl>

A separate IRRemoteControl should be setup for each device it is controlling. For example, if one remote is pointing at the TV and DVR, two IRRemoteControl tags would be instantiated. Name is the unique name for the device it is controlling, and is referenced in the Remote app. COMPort is the COM port the arduino is connected to.

There are two supported child tags for IRRemoteControl: RemoteCode and Channel. RemoteCode tells SAMI what "buttons" are supported by that remote, and the IR code to send for them. The code is a 10 byte code separated by '-'. This code can be generated by reading codes from the device remotes using Remote Code Decoder.py. (Note that the irrecv.enableIRIn() call in setup() will need to be uncommented to use the receiver.) See the section Supported Remote Code Names below for a list of allowed names.

The Channel tag is used for devices which support changing channels. The name is the name given in the grammar. It may be necessary for names that are a series of letters (such as ABC, NBC) to be spelled out with spaces between the letters (such as "A B C" or "N B C") for the speech recognition to work as expected. Number is the channel number.

Supported Remote Code Names

These are a list of supported code names, sorted by function

Power |
------------- | -------------
power |

Volume | |
------------- | ------------- | -------------
volumeup | volumedown | mute

Channel | | |
------------- | ------------- | ------------- | -------------
zero | one | two | three
four | five | six | seven
eight | nine | last | channelup
channeldown | | |

DVR | | |
------------- | ------------- | ------------- | -------------
ff | rew | play | pause
guide | info | record | stop

Misc. | | |
------------- | ------------- | ------------- | -------------
up | down | left | right
enter | ok | record | stop

First-party App Support

This IO Interface is used by the Remote App and the Volume App.


Related

Documentation: First-party Apps
Documentation: Remote App
Documentation: Volume App

MongoDB Logo MongoDB