Adding IR Output

From Wiki
Jump to: navigation, search

The options for adding IR functionality for Android devices seem to be few. Here, we will discuss pre-existing solutions, as well as document ways to work around this limitation. Please feel free to add information to this wiki, or use it as a base for working on making this a reality.

Pandigital Novel specific discussion can be found on the forum.

Contents

Background

When ThinkFlood released their "RedEye Mini" for the iPhone/iTouch, everybody acted like it was a revolutionary idea to use the audio jack to transmit IR signals and use a cellphone as a universal remote.

This same exact concept was patented and developed by Griffin over 6 years ago and called "Total Remote".

The idea has obviously been around a long time with the biggest hurdle being the software. The idea of playing a sound file for every button for every device is just ridiculously cumbersome, so a User Interface is needed. After addressing that issue, one has to start contemplating how many users would actually be willing to record an audio file for every device manually, so naturally enters the idea of having a pre-existing database of generated files from which the user can pull their devices by name. Of course, lots of new devices come out all the time, and it would be interesting to try to manage this database without some sort of verified source, a large and willing following of opensource volunteers, or some serious capital ($$).

A company called TotalControl says they are making a product, but it is merely an Android GUI front end for an expensive network to IR bridge, such as BitWise Controls BC4.

ThinkFlood claims they will write an Android client for the RedEye Mini if they get a positive enough response. However, the $50 cost for a dongle that one could make themselves for $1-3 seems a little steep. However, the bundled software is where where the challenge comes in, and hopefully with several players, we will start to see more cost-friendly options.

Most promising is Redmote, a fledgling project for the Android environment that seeks to mimic then expand upon products like RedEye Mini and Total Remote.

Link Repository

Please feel free to add any links you may find that might be on topic.

Homemade Devices

Redmote - Universal Remote for Android

  • Android app written in Java, and developed under Android SDK
  • Source code available
  • CAD renderings of 3.5mm jack to IR LED dongle
  • "The project is still under development, as we are working on building an amplified circuit for a much greater range."

iCouchPotatoe

  • Includes Audio to IR Transmitter and Receiver Schematics
  • Should work for any device

LEDRem

  • Lots of ontopic links
  • LEDRem written for older devices (non-android)
  • Open PC software written in Rapid Q-Basic allows conversion of LIRC remote code files to WAV files.

Further Reading

Retail Devices

Griffin - "Total Remote"

ThinkFlood - "RedEye Mini"

  • Software currently iPhone/iTouch only
  • May be working on an Android port
  • Dongle should be usable for converting audio to IR on any device

TotalControl - Android App

Funai - Unnamed Android Tablet Universal Remote

  • Can't find it in production yet
  • Might be useful for reverse engineering a solution, depending on the adaptability of their hardware and software implementation

Neuros - VIA WM8505 Android Control Tablet

  • Still In Development
  • WiFi controller for LINK
  • Potentially an IR transmitter built directly in the device via serial or UUART
  • Currently collaborating with the manufacturer and Wondermedia

Redmote Design

Hardware

"The module itself is simply 2 infrared LED's from Radio Shack, (940nm wavelength), a 10-ohm resistor, and a 3.5mm stereo jack. A mono jack will not work for this application. An amplifier module is in the works, and photos of it can be viewed on the emitter page. Buttons in the application trigger each command for the remote by playing the correct 36kHz square wave (.wav file) for each remote function. Each function, (power, volume, channel, etc.) have different waves, as the infrared beam is slightly different for each function."

Software

"In order for the application to successfully perform remote functions, the module must be plugged into the device. The application in short is a square wave generator, which generates the appropriate 36kHz square wave for each button. When the button is pressed, the module receives that 36kHz square wave information from the Audio Out port of the device, converting it into infrared light to control the television.

[...]

Furthermore, the square wave samples are recorded and fine tuned using the Nyquist script in Audacity. I referred to this blog post to figure out the correct commands in Nyquist to sharpen the waves. If this is too much for you, luckily someone has written a program called LedRem, allowing us waveform newbies to easily convert our initially recorded waves into IR-ready signals."

---Redmote : About

Conclusion

Redmote Beta is confirmed to run successfully on my tablet, and produce signal.

However, it's important to note that this is merely a program that links on-screen buttons to the playing of WAV files. No real magic is going on here (It's similar to the thousands of "soundboard" programs that are in the Market).

What needs to be changed/added to Redmote (or a code project started from scratch) to make this practical:

  • GUI remote buttons need to be adjusted for the proper display resolution
  • Ability to parse the LIRC code text file format (also, CCF and Pronto files would be really nice)
  • Ability to generate the audio signal in real-time from the parsed info

If this functionality was added, you would just need to load the LIRC code text file for the IR device you want to control. Several hundreds of these files could be stored in very little space. The application would parse the file when needed and then generate the audio signal in real-time when you press the corresponding button (essentially a port of LEDRem to the Android platform). This would eliminate the need to store hundreds of WAV files. With the amount of sound makers / waveform generators in the android market, this can't be that large of a task for someone familiar with android programming.

Proposed Solutions

The following proposed ideas may not be practical, but are stated as brain food to help get your "think outside the box" juices flowing.

Possible Connection Paths

  • Android Device IrDA Connection -> IR LEDs
    • The S3C6410 (and others) includes IrDA v1.1 with FIR, MIR and SIR support that may be able to tap into.
    • Lots of consumer IrDA devices were able to be "hacked" into sending Consumer IR signals:
Older list of "hacked" IrDA devices
  • Android Device USB Connection -> IR LED Transmitter Dongle
    • This would require a working USB host on your Android device, along with rudimentary USB driver and program to control it
    • A device such as a USB IR Transceiver could be used for this purpose.
  • Android Device Bluetooth Connection -> Bluetooth to IR Bridge Device -> IR LED Transmitter
    • Not sure if a Bluetooth to IR bridge device exists
  • Android Device WiFi Connection -> Router -> Ethernet to IR Bridge Device -> IR LED Transmitter
  • Android Device Audio Connection -> IR LED Transmitter Dongle

Solution - Wifi control where the bridge device is a PC

Needed:

  • Android device with WiFi
  • PC with WiFi
  • PC-to-IR transmitter

Steps:

  1. Set up a WiFi remote keyboard program like RemoteDroid on the PC and Android device
  2. Connect to the PC from the Android device over Wifi
  3. Set up one of the many existing softwares on the PC like Girder to translate shortcut keys to actions
  4. Connect an IR transmitter to PC and extend it into the room with the IR devices
  5. Keyboard shortcut keys on the Android device triggers the program's action to re-transmit the command via IR

Pros:

  • Some already have an HTPC available
  • No physical modification of either device
  • IR transmitters are ridiculously cheap
  • You can control your devices from anywhere in the world your Android device has access to the internet

Cons:

  • Cumbersome
    • Android device is capable of doing what the PC is doing except for a lack of a couple IR LED's
  • Non-Portable
    • It can only control the devices in range of the IR transmitter hooked to your PC

Another place to start for the PC->IR device side would be a device such as USB-UIRT, or a USB IR Transceiver.

Solution - 3.5mm to IR LEDs and WAV files

Needed:

  • PC for "recording" or generating IR waveform
    • IR receiver needed if "recording"
  • 3.5mm stereo jack to IR LED dongle
    • Handmade or one of the retail solutions
  • Device capable of playing WAV files

Steps:

  1. Generate the WAV file from LIRC code files using software LEDRem
    • Alternatively, you could "record" a WAV file for every button for every device you need using the IR receiver connected to the PC to record the signal
  2. Transfer files to the device
  3. Connect 3.5mm stereo jack to IR LED dongle to Android device
  4. Select the WAV that represents the action you would like to do
  5. Point the IR dongle at the intended device
  6. Play the WAV file

Pros:

  • Dongle is easy to make
    • A pre-made, cheap, retail solution may already exist
  • Works with any device that can play WAV files
  • Portable
    • The IR dongle is very small
  • Can also be permanently installed in the device with minimal case modification

Cons:

  • Very time consuming if you record the signals yourself
    • However, there may be a database of pre-recorded codes
  • Lots of WAV files for every device
    • However, a proper program would be able to generate the audio signal on-the-fly instead of playback of pre-recorded waves
  • Using a playlist to control a device is not very user friendly or convenient
    • However, a GUI with graphical buttons linked to the files would make this easier

What Needs To Be Done

Plenty of linux code exists in the way of IR remote control. Here is an older conglomeration of resources.

For this to become a reality, the following needs to be written or ported from other projects:

  • A GUI to manage the buttons and selection of devices
  • A parsing function to read info from pre-made remote control code text files
  • An audio signal/waveform generator
  • A database to store the information

All of this stuff has been done before, it's just a matter of bringing it all together into one android-based project.

If the project really took off, future development might include:

  • Support of LIRC, Pronto, CCF, and/or other IR remote file protocols
  • Integrated controlling of WiFi and Bluetooth devices
  • Integration with a (probably already existing) pre-parsed central database stored "on the cloud" for all major devices
  • Possibly supporting the "learning" of a new device (would need a IR sensor/decoder attached to microphone input)

Feel free to discuss, correct any errors, bounce new ideas around, etc.

Personal tools