Irdroid USB IR Transceiver compatible with Mac OS X

USB IR Tranceiver compatible with Mac OS X

USB IR Tranceiver compatible with Mac OS X

The Irdroid USB Infrared Transceiver is compatible with Mac OS X and it is working without installing any drivers on the host system. The above is possible due to the fact that the Irdroid USB IR Transceiver enumerates as a serial ACM device. The drivers for these types of devices are built in all Mac OS X versions. When you plug the USB IR Transceiver in a free USB port on your Mac , the device shows up as /dev/cu.usbmodem00000001 .

To use it on your Mac, you will also need the LIRC application software( Linux Infrared Remote control) for Mac OS X , available for Download from our github repository (see the links at the end of this article) . The LIRC software will allow you to use the Transmit and Receive feature of the Irdroid USB IR Transceiver. By using the software you can use your Mac to control almost any appliance that accept Infrared Commands, you can also record / scan existing remote control by using the infrared receive feature built in the Irdroid USB IR Transceiver.

More Info:

Purchase a module:

Downloads:

 

Infrared Task Automation with Irdroid on Mac OS X

Irdroid USB Infrared Transceiver support Mac OS X

Irdroid USB Infrared Transceiver support Mac OS X

Last year I had the chance to play with an old MacBook ( Late 2006 model ), running Mac OS X Mountain Lion and OS X Mavericks as a second OS installed on the hard drive. Originally I purchased the MacBook online from a second-hand store, and I intended to use it for the development of a  iOS proprietary Application for one of our clients. Now that the project is finished I decided to use the MacBook to play with LIRC and the USB Infrared transceiver, allowing the machine to transmit and receive Infrared signals.  In the past we have received questions from Irdroid user’s regarding the possibility of using the Irdroid USB Infrared Transceiver on Mac OS X. The above was not possible until now, because Lirc couldn’t compile on Mac OS X without doing changes to the original LIRC source code.

The Irdroid USB Infrared Transceiver module enumerates in the host system as a serial ACM device. In OS X the serial USB ACM driver is shipped and supported natively, which means that you don’t have to install any additional drivers and the module should enumerate “out-of-the-box” once plugged in a free USB port.

Considering the above and in order to have a fully functional Infrared Transmit and Receive environment in Mac OS X the only remaining thing that we need is a port of LIRC for Mac OS X, because LIRC manages the infrared transactions and provide utilities for transmitting and receiving infrared signals. LIRC is based on Linux and it can be easily ported to Mac OS X because Mac OS X is a POSIX operating system.

Used Tools:

  • Mac OS X Mountain Lion

  • Homebrew / brew v.1.1.7 (for installing GCC and dialog*required by the LIRC setup scripts)

  • GCC 4.9.3 (installed and compiled using Homebreq/brew)

  • Xcode 5.1.1

  • Xcode 5.1.1 command line utilities (installed via Xcode)

To make a port of LIRC one needs to replace the #include <linux/types.h>  (Because we are no longer using Linux) with a custom include file defining the relevant types for Mac OS X.For the above I have created a custom include file that replaces the <linux/types.h> and named it <my_custom_types.h> . Next I replace <linux/types.h> with #include “my_custom_types.h” in all source files that contained <linux/types.h> . I also had to install the “dialog” using brew as the LIRC version I used uses “dialog” for the setup and configuration process.

After that in order to make the configuration for my system I runned the ./configure.sh configuration script which generated a Makefile and configuration for my particular system (Mac OS X Mountain Lion) . After that make && make install compiled successfully and I was surprised to see a fully functional LIRC daemon working  with my old Mac.

I had to create a “rc.local” file in /etc/ so that lircd is called on boot and also LIRC needs the directory /var/run/lirc created on boot ,which is a separate lin in /etc/rc.local file.

The contents of rc.local are as follows:

mkdir /var/run/lirc

lircd –device=/dev/cu.usbmodem00000001 –listen=8765

the above commands create the required directories on boot and also start the lirc daemon. As you can see on Mac OS X the serial ACM devices are enumerated as /dev/cu.usbmodemxxxxxxxx (that is Apple’s way of naming these) . In my case the Irdroid USB Infrared transceiver enumerated as /dev/cu.usbmodem00000001 .

The other thing that you need to do is to get a sample lircd.conf file and copy it into /etc/lirc/lircd.conf  (this is the default location for lircd configuration files)

Depending on your configuration you may have to open port 8765 in Mac OS X firewall settings in order to be able to access the running LIRC daemon from another system on your local network, or using a LIRC client running on your Android Smartphone.

Transmitting Infrared signals:

If you will use LIRC locally only, then you can use the “irsend” utility for transmitting infrared commands.

example:

# irsend SEND_ONCE Samsung_TV Power

Next you can do some useful infrared task automation, with irsend and Cron , scheduling infrared commands etc.

Receiving and decoding Infrared Signals:

There are two utilities which you can use for reading infrared signals with Lirc – irrecord and irw .

The “irw” utility will allow you to “watch” the received pulse – space IR sequencies directly in the console.

The “irrecord” utility will allow you to scan and record your existing remote controls and storing the recorded commands into a lirc configuration file.

You can record your remote by issuing :

# irrecord –device=/dev/cu.usbmodem00000001 mylirc.conf

Used Tools (Software and Hardware):

Downloads:

Recording Air Conditioner remote controls using Irdroid

 

Recording Air conditioner remote controls with Irdroid

Recording Air conditioner remote controls with Irdroid

Recording Air Conditioner (AC) infrared remote controls can be a challenge, when using conventional methods for recording IR remote control codes with LIRC (The Linux Infrared Remote control software package).Recording off-the-shelf TV / STB infrared remote control includes running the irrecord utility that comes with LIRC and recording the physical infrared remote buttons one after another and storing the data into a flat text file. The above procedure is standard for recording home appliance IR remotes, except for Air Conditioner remote controls.

OK, what is different about the AC infrared remote controls ?

Well, the difference is that the AC infrared remote control codes are longer in comparison with any TV, DVD, STB or any other IR controlled equipment. The main difference is the way these infrared remote controls work.

The AC remote control sends all its settings (current state) at once (in one infrared code sequence) . That means when you set for example a temperature, air direction , mode etc these are all send with one IR command which contains all the current settings (current state) with other words all the data in the remote. It means that normally we can’t record remote buttons individually by pressing each button and recording with LIRC, as with every button press we get the remote current state, not a single pressed button.

We can record ON command, OFF command in combination with the current setting/state (mode – heat, current temperature;air direction etc) . We can do that using a patched version of the IR record utility, which is part of the LIRC software package which will allow us to record longer infrared commands.

The LIRC irrecord utility assumes maximum infrared code length of 200 bits, which is a limitation and it is not enought as most of the ACs are using code length > 200bits (some are using code length of ~500 bits) .To change the setting, we need to edit the source file irrecord.c that comes with the version of LIRC , attached to this article.

In particular we have to edit line #109 of irrecord.c

  • #define MAX_SIGNALS 200

this defines the maximum signal length that irrecord shall consider as valid. We shall change that to :

  • #define MAX_SIGNALS 600 (to have some reserve and make sure we cover all ACs with code length over 500 bits)

After changing the file we have to compile LIRC by issuing:

./configure
make
make install

*My configuration for the above procedure was a Laptop running Ubuntu Linux 14.04 LTS
*In Windows the user needs to download WinLIRC, edit the irrecord.c file and recompile the software

After the install process finishes we should be able to use the Irdroid USB IR Transceiver or the Irdroid-Rpi (infrared transceiver for Raspberry Pi) in combination with irrecord to record any AC infrared remote control code in RAW form.

The irrecord syntax:

irrecord -f -d /dev/ttyACMx /etc/lirc/lircd.conf

*depending on your configuration and the number of the serial ACM devices used in your system the ttyACMx can be ttyACM0 or any other number depending on the number of serial ACM devices in enumerated in your system.

the irrecord -f option forces the program to go in a RAW IR record mode (it will not try to decode any of the known IR protocols like RC5, RC6 etc)

Example lircd.conf file with a scanned toshiba Air Conditioner ON command :

begin remote

name Toshiba
flags RAW_CODES
eps 30
aeps 100

gap 1000000

begin raw_codes

name ON
3285 1578 447 405 405 405
426 1173 469 383 426 1173
469 383 426 383 426 383
426 1173 469 1173 469 383
426 383 426 383 426 1173
426 1194 426 405 405 405
405 447 383 447 383 405
405 405 405 405 405 405
405 405 405 405 405 405
405 405 405 405 405 1215
405 405 405 405 405 405
405 405 405 405 405 405
405 405 405 1215 405 405
405 405 405 405 405 405
405 1215 405 405 405 405
405 405 405 405 405 405
405 405 405 1237 405 405
405 1215 405 1215 405 1215
405 1215 405 1215 405 1215
405

end raw_codes

end remote

*The above example represents a ON command, and the current remote state (mode heat,22 degrees celsius, swing mode). You maybe noticed that there are repeating codes like 405, 1215, 1173 , these are the bit representations normally a sequence of zero’s and one’s . these numbers also represent the pusle / space IR signal length in microseconds. The big number in the begining is the so called “lead-in” “informing” the receiver that a infrared command starts.

Initially the program will try to identify the so-called “IR Gap” , it will ask you to press different buttons from the physical remote control. Even if the Gap is not found you can still continue and record button presses from the target remote and store them in a flat lircd.conf file, which is later used by lircd for reproducing the recorded infrared signals.

*The recorded remote control in the above example was for an old Toshiba Air Conditioner. A friend of mine asked me whether he can use one of the Irdroid modules to control (Turn On and Off) the Air Conditioner at his office. In particular to do that using WinLirc in Windows. I have successfully scanned the physical remote control and tested successfully with the target AC. Later on I find out a nice automation utility for windows which has plugins for LIRC and a Scheduler, giving the option to schedule infrared remote control commands. Convenient , isn’t it?

Downloads:

Hardware:

Infrared task automation in Linux using the Irdroid USB Infrared Transceiver

This is a Blog post with example usage of the Irdroid USB Infrared Transceiver in Linux for Infrared Task Automation. In the past we had a number of project that inluded creating scripts and cron jobs for executing sequences of infrared commands one after another , defined in scripts / macro’s .

In particular we had a client who needed to send a IR command to a number of STBs (IPTV distribution company) to wake them up from “sleep mode” every couple of hours, before the STB goes sleep mode.

The above task is achievable using the Irdroid USB Infrared Transceiver in Linux, or using the Irdroid-Rpi in combination with a Raspberry Pi.

In practice the client’s hardware configuration consisted of a transcoding server, running Ubuntu 14.04 and a LIRC Daemon for sending / receiving infrared commands. In this particular project my task was to set this box to work with the Irdroid USB Infrared Transceiver and issue a “Menu” command for the particular STB every 5 hours (which avoids the unit/s entering “sleep mode”) .

Tools used:

Tasks:

  • Compiling and installing LIRC on the Linux transcoding machine
  • Digitizing the Infared Remote Control used to control these STBs
  • Setting a CRON Job to send a infrared command every 5 hours

 

First I had to download a patched version of LIRC, compatible with the Irdroid USB Infrared Transceiver from the Irdroid.com download section (see the links at the end of this article). To use the patched version of LIRC , I had to compile it using the standard commands in linux:

  1. ./configure
  2. make
  3. make install

After installing LIRC, you will need a lircd.conf file which holds the remote control commands either in RAW form (pulse / space sequences) or a decoded HEX values / depending on the protocol these can be with different length.

For the above project the original remote control was not already available in the LIRC database (http://lirc.sf.net/remotes) , therefore I had to scan and record the remote control using the “irrecord” utility. The Irrecord utility comes with the LIRC package and it is used to record, decode and store the infrared signals from any (almost) infrared remote.

The Irdroid USB Infrared Transceiver enumerates as a standard Serial ACM device and if you dont have other serial ACM devices in the system it should enumerate automatically as ttyACM0 available as /dev/ttyACM0 .

To record the target remote I have used the command “irrecord -d /dev/ttyACM0 /etc/lirc/lircd.conf” . Once that command is issued you will be asked (in console mode) to make random button presses, which allows irrecord to analize and try to decode the target remote control protocol, then you will be asked to push and name every single button and at the end to save the configuration file and exit. Once done you should end up with a lircd.conf file located at /etc/lirc/lircd.conf .

To start LIRC issue “sudo lircd –device=/dev/ttyACM0 –listen=8765” this will instruct LIRC to listen on port 8765 on All interfaces .

Then you should be able to issue commands :

“irsend SEND_ONCE Remote_name Button_name”

Finally I had to set a cron job to run every 5 hours and issuing the “Menu” command in order to avoid the STBs going in “sleep mode”

That is done via Cron :

0 */5 * * * irsend SEND_ONCE Remote_NAME Remote_COMMAND

The above will send our command every 5 hours.

Downloads:

 


Dont have a Irdroid USB Infrared Transceiver?

- You can purchase one from HERE

Discover how to turn Raspberry Pi into a Infrared Remote control using the Irdroid-Rpi

This Blog post is a continuation of my previous Blog post for turning raspberry Pi into a Infrared Remote Control using the Irdroid USB Infrared Transceiver. This time we will be using the Irdroid-Rpi Infrared Transceiver HAT for Raspberry Pi. The Irdroid-Rpi Transceiver HAT has three powerful IR leds , that will allow wider remote control angle (you dont need to point it to the target IR controlled appliance – it can be behind it ) and improoved Infrared Remote control Range – more than 15 meters. The module also has a sensitive Infrared Receiver that will allow you to scan and digitize infrared remote controls of your choise.

In this example we will be using a Raspberry Pi model B+ with 512 MB of RAM as a system for running the open source software LIRCd , responsible for sending and receiving infrared commands in Linux.

I am using the following tools ( Hardware ) for our tests:

I also use the following software tools :

  • The latest version of LIRC

  • We will also use Raspbian , installed using NOOBS on a 16 GB sdcard.

  • The Irdroid-Rpi Infrared Transceiver HAT uses the Lirc-rpi and lirc-dev kernel modules, that normally comes with Raspbian

Below are the steps for configuring Irdroid-Rpi with LIRC on Raspbian:

  1. Attach the Irdroid-Rpi Infrared Transceiver HAT to your PI and turn your it on.

  2. After it boots issue “sudo apt-get install lirc lirc-x” and wait until the lirc packages are installed on Raspbian.

  3. cd to /boot and edit the config.txt file using your favourite text editor and uncomment “dtoverlay=lirc-rpi” . This will enable the lirc-rpi gpio kernel driver, and it will allow us to use the default IR Transmit and Receive GPIOs which are GPIO17 and GPIO18 (The Irdroid-Rpi board uses GPIO17 for IR TX and GPIO18 for IR RX , so you don’t need to change the pins.

  4. cd into /etc and edit “modules” using your favourite text editor add “lirc_dev” and under it “lirc_rpi” then save the file.

  5. cd into “/etc/lirc” and edit the file “hardware.conf” with your favourite text editor add “–listen”  as follows in “LIRCD_ARGS=”–uinput –listen”  then save the file . That will instruct lirc to listen on the default port (which is tcp port 8765), allowing connections from the local network (We will need that later for our lirc client application).

  6. Download an example lircd configuration file which includes some sample remotes. Issue “cd /etc/lirc” then issue “sudo wget http://irdroid.com/db/t.conf -O lircd.conf ” to download a sample config file with a sample “remote controls in it”

  7. Reboot your Raspberry Pi and make sure lircd is running , if not start it by issuing “sudo /etc/init.d/lirc restart”

Now you can play with the LIRCd Android clients like “Amote”  , and configure your smartphone as a custom user interface for controlling IR appliances using your newly configured Raspberry Pi Infrared Remote control.

As in my previous post I will again use the “Amote” lirc client application for Android in order to control my new Raspberry Pi infrared Transceiver.

The Amote app will allow you to:

  • Configure the network settings to connect to The lircd that runs innside Raspberry Pi

  • Allow you to connect to that lirc daemon and query for the remotes.

  • To assign and make custom buttons and interface for any of the remotes in the Lirc database . Below are some screenshots and videos.

We have a special discount ( 20% Off )offer for Raspberry Pi owners, you can purchase a Irdroid-Rpi Infrared Transceiver HAT with discount using the link below and applying the “raspberry” coupon on checkout .

http://www.irdroid.eu/product/irdroid-rpi-infrared-transceiver-raspberry-pi/

We also provide a ready configured and tested install of the LIRC daemon on a sdcard so that you can directly plug the card to your Raspberry Pi (for model B+) and save you some typing in the terminal. You can purchase a 16 Gigs SDcard with Raspbian and LIRCd configured for Irdroid from the link below:

Click here to grab a configured and tested install of Lircd, configured with the Irdroid-Rpi Infrared  Transceiver HAT  on a sdcard ready for running on your Raspberry Pi model B+

Downloads:

 

How to turn your Raspberry Pi into a fully functional infrared remote control

Irdroid USB and Raspberry Pi

Irdroid USB and Raspberry Pi

We have received many requests for assistance with making the Irdroid USB Infrared Transceiver to work with the Raspberry Pi and in particular with Raspbian Linux OS distribution. Below we provide a step by step guide for making the Irdroid USB Infrared Transceiver working with the Raspberry Pi. In this particular example we will be using a Raspberry Pi model B+ with 512 MB of RAM as a medium for running the open source software LIRCd , responsible for sending and receiving infrared commands in Linux.

I am using the following tools ( Hardware ) for our tests:

I also use the following software tools :

  • A custom port of LIRC for the Irdroid USB Infrared Transceiver (Source code available for download – see the links at the end of this Blog post)
  • We will also use Raspbian , installed using NOOBS on a 16 GB sdcard.
  • The Irdroid USB Infrared transceiver uses the standard Serial ACM drivers in Linux that come with most Linux Distributions. Raspbian also has this driver built-in , so we do not need to compile custom drivers etc for making it work with this Linux Distro.
  • You will have to download the custom version of LIRC (that support the Irdroid USB IR transceiver) from our website, so step #1 is downloading LIRC
Below are the steps for compiling and installing LIRCd for the USB Infrared Transceiver  on your system:
  1. Open a console via SSH to your Raspberry Pi, and type the following command to download LIRC:sudo wget http://www.irdroid.com/wp-content/uploads/downloads/2014/01/USB_transceiver_LIRC.tar.gz
  2. Extract the archive and “cd” in the “irtoy” directory
  3. Type “./configure.sh” Once it completes issue:
  4. “sudo make install” , this will compile LIRC and it will install it. Once the operation completes. You have a LIRC installed on your system, we still have to make install a lircd.conf file with the remote control “database” in it , so that LIRC can generate IR commands and blast the commands over the Irdroid USB IR Transceiver module.
  5. Issue the following command “cd /etc” then issue “sudo mkdir lirc” “cd /lirc”
  6. Then Issue “sudo wget http://irdroid.com/db/t.conf -O lircd.conf ” to download a sample config file with a sample “remote controls database”
  7. Then insert the Irdroid USB infrared transceiver module in a free USB port on your Raspberry Pi, the module should be enumerated and it should show in the system as a serial ACM device (by default if no other serial ACM devices enumerated it should be ttyACM0)
  8. to start LIRC issue “sudo lircd –device=/dev/ttyACM0 –listen=8765” this will instruct LIRC to listen on port 8765 on All interfaces

You can also add the command above into the rc.local file , so that you have a lircd running on boot. (before that command you need to add “sudo mkdir /var/run/lirc” so that allowing lircd to create its pid file in that directory).You should be able to connect to the LIRC daemon on the Raspberry Pi IP and Port 8765
Now you can play with the LIRCd Android clients like “Amote” and also Irdroid Macro Remote / NFC Remote , and configure your smartphone as a custom user interface for controlling IR appliances using your newly configured Raspberry Pi Infrared Remote control.

In my particular configuration, my WiFi router is in a room where there was no TV. I had to find a way to assure one ethernet port available in the living room in order to connect to my Raspbeery Pi board. I have found that I have two SMC powerline adapters, that work in transparent bridge mode, so voila I got that remote ethernet port for my Pi.

In my case the Raspberry Pi board is connected to my home WiFi router and the router has provided the Pi with a 192.168.1.4 IP address. To use it as a remote control with Any android device you will need to download the “Amote” application for android which will allow you to setup the lirc client network setting, and to configure a custom remote with layout and button naming.

The amote app will allow you to.

  • Configure the network settings to connect to The lircd that runs in the Raspberry Pi
  • Allow you to connect to that lirc daemon and query for the remotes in its lircd.conf file.
  • To assign and make custom buttons and interface for any of the remotes in the Lirc database . Below are some screenshots and videos.

For convenience you can make the LIRC daemon to start on boot as a service.

We have a special discount ( 20% Off )offer for Raspberry Pi owners, you can purchase a Irdroid USB IR Transceiver with discount using the link below and applying the “raspberry” coupon on checkout .

http://www.irdroid.eu/product/usb-infrared-transceiver/

We also provide a ready configured and tested install of the LIRC daemon on a sdcard so that you can directly plug the card to your Raspberry Pi (for model B+) and save you some typing in the terminal. You can purchase a 16 Gigs SDcard with Raspbian and LIRCd configured for Irdroid from the link below:

Click here to grab a configured and tested install of Lircd, configured with the Irdroid USB Infrared Transceiver on a sdcard ready for running on your Raspberry Pi model B+

Downloads:

Flashing new firmware to Irdroid USB Infrared Transceiver

Flashing NEW Firmware to Irdroid USB IR Transceiver

Flashing NEW Firmware to Irdroid USB IR Transceiver

 

The Irdroid USB Infrared transceiver does not have a bootloader and firmware update is only possible via a ICSP serial programmer. The firmware can be updated using MPLAB and a PIC programmer. In order to program the module you will have to remove the plastic cover. To attach to the module you wil also need a 5×1 male pin header. Attach the pin header to the PIC programmer , then connect to the USB Infrared transceiver board as shown on the pictures below. You need to provide  power to the module with the PIC programmer. That option has to be ticked in the PIC programmer settings in MPLAB. The import the target HEX file and program the module. After a successful programming the Irdroid USB blue led should be lit.

 

Providind power using the PIC programmer

Providind power using the PIC programmer


Tools used:

  • PICKit3 programmer
  • 5×1 male pin header
  • MPLAB 8.92

Downloads:

Irdroid-Rpi Infrared Transceiver for Raspberry Pi

We have received a number of requests for making Infrared Transmitter / Receiver modules compatible with Raspberry Pi.  Our USB Infrared Transceiver module is compatible with Rpi , however we have decided to actually make a add-on Infrared Transceiver board / HAT for Rpi. The board is designed with Infrared Transmitter , Infrared Receiver and Olimex UEXT interconnect sections.

Irdroid-Rpi Infrared Transceiver Features:

  • Infrared Transceiver add-on / HAT for Raspberry Pi
  • Infrared Transmitter @940nm with 10+ meters range
  • Infrared Receiver up to 40khz and 10+ meters of receive range
  • On-board UEXT Interconnect for connecting Olimex sensors and boards.
  • Open Source Hardware.

We have completed the design of the board. We expect to have it in stock in mid April 2016.

Read more by following the link below ( http://www.irdroid.eu )

 

Custom Designed Infrared Remote control Apps for Android™

If you need an custom designed infrared remote control App for Android, we offer an inexpensive infrared remote control App Development service. You can order a custom designed application for your infrared remote control appliances right away at very competitive cost.

What’s Included?

  •  Design of the App user interface
  •  Digitizing your product infrared remote control
  •  Programming your Infrared Remote control App.
  •  Testing and Delivery of APK files
  •  Publishing in Google Play (*on request)

How it Works?

Once you make an order for your custom design application, we will send you a customer questionnaire that you have to fill. The customer questionnaire includes some standard inputs that we need to have in order to develop your application. For more information you may also visit : http://goo.gl/RE5Q0O

We will also request:

  • The Product / Appliance infrared remote control and / or the infrared codes.
  • The App Name that you choose.
  • Logo for the Application.

Any Samples? How will it look like?

We have the possibility to practically digitize your physical remote control, and therefore the App user interface will look like the physical IR remote control.
The video below demonstrates an app, developed by us for controlling a TESY MC2014 home panel heater unit. The App was developed using the same technique we have described above.

Video

 

How long will it take?

After the order is placed, we have 30 days to develop the App for you . We start counting the days after the day we receive the physical infrared remote control from the customer or when we receive the infrared remote control codes.

How much does it costs?

The cost for the above service is fixed to $800. To make an order you have to pay 50% of the above price in advance and the remaining amaunt when we deliver the APK files to you.

Order Now

Price : $400

The above proposal is valid for developing an Infrared Remote Control Application for Smartphones with Android that have a built in Infrared Transmitter / Blaster. Most of the high-end Android Smartphones like Samsung Galaxy S5, S6, HTC One M8, HTC One M9 etc support this feature. We also provide the above service for Smartphones that lacks infrared transmitter / blaster. In this case a module like the Irdroid WiFi to Infrared adapter or the Irdroid Bluetooth has to be used in order to provide ability for Infrared transmission.

Rapid Infrared Remote Control App development with Irdroid

In this blog post I will share my experience on how to rapidly develop custom infrared remote controls for Android using the Irdroid Hardware modules, and in particular the Irdroid WiFi to Infrared adapter module and the Irdroid USB Infrared Transceiver module.

You will learn how to:

  • Rapidly develop Infrared remote control Apps for Android
  • Design custom remote control screens / templates.

The winter is coming and i have decided to purchase additional heater unit for our living room.After i made a short investigation on the Internet I found that there are plenty of home heating units, with ability to be controlled  via small infrared remote controls like this one. In my particular case the heating unit is Tesy (Bulgarian brand) MC 2014. The unit comes with a small infrared remote control, that allows the user to set the heater temperature, to turn on/off the unit, to set a on/off timer as well as to set the unit to work @ 1000W or 2000W.

Immediatly after i purchased I have decided to make a simple App for Android, showing the same small remote control interface on the Android Smartphone screen, and to allow the user to control the unit via the APP over WIFI, using the Irdroid WiFi to infrared adapter module.

So far so good , but how to transmit the same codes that the remote transmits to the Tesy MC 2014 unit ?

Well, the Irdroid WiFi to Infrared adapter consist of two modules – the main wifi unit and the USB Infrared Transceiver unit. The Irdroid USB Infrared Transceiver unit can be used to transmit and receive infrared signals. So I used the Irdroid USB Infrared transceiver to scan the remote codes, using Winlirc / LIRC . In my particular case I have used Winlirc and the built in irrecord command line tool to record the infrared remote control codes and to generate a file with that codes.

To be able to scan infrared remote codes under Windows you need to  install the Irdroid USB IR transceiver ACM driver for Windows by downloading it from here http://www.irdroid.com/downloads/?category=5 , you will also need to download and configure WinLirc (Which is described here : http://www.irdroid.com/downloads/?did=17)

After I have scanned the Infrared remote control buttons of Tesy MC 2014, I ended up with the following file:

 # Please make this file available to others
 # by sending it to <lirc@bartelmus.de>
 #
 # this config file was automatically generated
 # using lirc-0.9.0(IRdroid USB IR Transceiver) 
 #
 # contributed by
 #
 # brand:                       Tesy MC2014
 # model no. of remote control:
 # devices being controlled by this remote:
 #
 begin remote
 name  Tesy
 bits           16
 flags SPACE_ENC
 eps            30
 aeps          100
 header       8969  4395
 one           599  1607
 zero          599   489
 ptrail        604
 repeat       8981  2156
 pre_data_bits   16
 pre_data       0xFF
 gap          39670
 repeat_gap   95433
 toggle_bit_mask 0x0
 begin codes
 power                    0x50AF
 plus                     0x20DF
 minus                    0xE01F
 timer                    0xF807
 temp                     0x08F7
 end codes
 end remote

The above file is used by LIRC to regenerate the Infrared Signals transmitted by the TESY MC 2014 remote. This file is to be downloaded to the Irdroid WiFi to infrared adapter. The procedure for adding new lirc conf files to the Irdroid / LIRC database include sending an email with the file to info@irdroid.com and adding the file in the Irdroid WIFI database. After that I have added the Tesy lirc conf file to the Irdroid WiFi to infrared adapter by visiting the link http://www.irdroid.com/db/database/index.php?dir=Tesy%2F and clicking on the file Tesy.conf (make sure that you are connected to the Irdroid WiFI to infrared adapter and the adapter itself is connected via ethernet cable to your home router)

So finally the Tesy.conf file is in the Irdroid WiFi to infrared adapter unit and I can now connect to the adapter using the Amote app for android and control the Tesy MC 2014 from the Amote App.

That is OK but i want to have the same UI design as the original remote, so what to do ?

I have decided to take a picture of the remote, I have used GIMP to edit that picture in order to use it directly as a base for my Tesy remote UI. So now I have the same picture of the Tesy MC 2014 remote , but how to make the buttons on the picure clickable / tapable. I decided to use a second picture loaded the same way as the main ui picture but not visible defining color regions at the places where the buttons are on the original Tesy Remote picture. The user sees the remote control picture and after he tap on the relevant button it is recognized by color from the reference picture and a particular action is assigned for every button.

Once started the application main activity uses the JAVA LIRC client library to connect to the Irdroid WiFi to infrared adapter and to establish a connection with the listening LIRC server Establishing a socket connection the the Irdroid WiFi to infrared adapter is very easy. You need to add the following in your onCreate() method:

client = new LircClient(“192.168.2.1″,8765, true, 3000);

After a connection is estavlished you may start sending commands to the listening LIRC server by issuing:

client.sendIr1Command(“Remote_NAME”,    ”Remote_Command”, 1);

For the five buttons that we have on the Tesy MC 2014 we assign the following lirc commands as per the LIRC conf file that we previously made:

client.sendIr1Command(“Tesy”,    ”timer”, 1);    // Set unit timer
client.sendIr1Command(“Tesy”,    ”temp”, 1);     // Set unit Temperature
client.sendIr1Command(“Tesy”,   “power”, 1);    // Power On / Off
client.sendIr1Command(“Tesy”,    ”minus”, 1);    // minus
client.sendIr1Command(“Tesy”,    ”plus”, 1);     // plus

Every command has an assigned color from the mask image loaded in parallel with the main UI image, once the user tap in that color region the relevant command is fired up to the
Irdroid WiFi to infrared adapter and the relevant Infared code is transmitted.

So, voila we have a custom remote control, developed in 2 hours and a nice heater for the cold winter nights :)

Video

Downloads:

Tesy.conf – LIRC remote control conf file
Tesy App – APK file (Signed)
Tesy App  - Source Code

You dont have a Irdroid WiFi to Infrared adapter?

Purchase one from the links below.