tessel-apple-remote
An event-emitter interface to an Apple IR Remote using the Tessel IR Module
This module takes the burden off of processing the infared byte buffers and extends the events from ir-attx4
to provide a higher-level API for programming against Apple remotes. This module supports both the first and second generation of remotes.
usage
var tessel = ;var port = tesselport'A';var apple = port; apple;
events
Simple button presses:
menu
center
up
down
right
left
play
Each event name has a corresponding [name].long
event for long presses:
menu.long
center.long
up.long
down.long
right.long
left.long
play.long
NOTE: both play
and play.long
only apply to the 2nd Generation remote.
id
Each Apple Remote sends along a simple remote ID between 0-255 (0xFF). To differentiate between remotes, you can prefix both the command events and continuation events with that id. For example, if your remote had the ID of 50
apple;
To enable discovery on the fly of remote IDs, an id
event is emitted, with a value of the new id. This event will only be emitted the first time that ID is encountered.
apple;
To test this, you can either use two remotes, or you can first press a button on the remote, notice the id
event fires, then change your remote's ID by pressing and holding the menu + center buttons for about 10 seconds. After your remote's ID is changed, another id
event will be emitted on the next button press. See examples/lockout.js for an example of how to isolate your code to the first remote to send an event.
data
The standard data
event is unmodified.
apple;
error
The standard error
event is unmodified.
apple;
examples
- Plug the IR module into Port A on your Tessel, then connect via USB
tessel run [script]
to test scripts in examples folder.- Click buttons on your remote and commence mad science.
notes
Helpful reference material on the implemenation:
- https://github.com/tessel/ir-attx4#api-infrared-on-data-callback-data-Emitted-when-an-infrared-signal-is-detected
- http://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol
- http://en.wikipedia.org/wiki/Apple_Remote#Technical_details
- https://github.com/squeed/AppleRemoteSender/blob/master/AppleRemoteSender.cpp
- https://hifiduino.wordpress.com/apple-aluminum-remote/
hardware
You need:
- a Tessel
- an IR module
- either a first-generation (white) Apple remote
- or a second-generation (silver) Apple remote