Introduction: Aergia: Android Controlled TV Remote(with Speech Recognition)

Picture of Aergia: Android Controlled TV Remote(with Speech Recognition)

Have you ever faced this situation while sitting on your favorite spot on the couch or recliner, comfortably watching your favorite TV program? You're snugly tucked under the blanket, the air conditioning is pleasantly cool, the sun outside is shining it's delicate warm golden rays on the closed window, the air (from the air vents) is refreshing and gravity seems infinite...... It's almost like nature doesn't want you to get off your couch.......

Then all of a sudden a horrible commercial pops up on the TV and you desire to switch the channel immediately. However, the TV remote which is located just beyond your arm's length seems to be many miles away and you do not have the energy nor the will power to reach for it. You then look with disappointment at your aging Android phone which is near you and hope that you could use it to control your TV. If you're like me, then you're faced with this situation quite often......... in fact EVERYDAY!

As a solution to this quite serious problem, I have devised 'Aergia' (named after the Greek goddess of laziness and sloth), a gadget which with the help of an Android phone can control my TV, set top box, stereo or any other device which uses an IR remote. Besides, this device can be built at a cost of just $20 and the skills required to build it are bare minimum (basic knowledge about electronics and the Arduino IDE).

So let's get lazing....... I mean building!

Step 1: Parts Needed

Picture of Parts Needed

The following parts are needed to build this project :-

Supplies :

1. Arduino Uno

2. Bluetooth Module (I have used the HC-05)


4. IR Receiver

5. Resistors (1pc 100 ohms, 1pc 10K ohms and 1pc 20K ohm)

6. PCB

7. Electrical Wire

8. 9v Battery

9. 9v Battery Snap

10. Male Header Pins (both straight and bent)

11. Steel Wire

12. Insulation Tape

13. Heat Shrink

14. Project Enclosure

Tools :

1. Soldering Wire

2. Soldering Iron

3. Soldering Wax

4. Drill

5. Hacksaw

Step 2: Preparing the Project Enclosure

Picture of Preparing the Project Enclosure

In this step you will drill the holes on the project enclosure to mount the Arduino, IR LED and IR Receiver.

A lot of the auto-makers these days follow a design language. For instance, the Lincolns which look like a baleen whale, and the BMWs which look like a daredevil pig hat has smashed its nose against a wall. I too follow a design language in my projects which I call the 'Lunch Box' Design. I have carried forward the same design language to this instructable as well and hence used a 'Lunch Box' as my project enclosure.

1. Drill four holes at the bottom of the project enclosure to secure the Arduino Uno.

2. Drill a hole on the left wall of the enclosure big enough for the USB port of the Arduino to protrude out of the enclosure (Refer to pic. 1).

3. Drill a hole on the right wall for the IR Receiver (Refer to pic. 2).

4. Drill four holes on the right wall for the IR LED stem. Two of the drilled holes are for the IR LED, while the other two are to anchor the IR LED Stem to the project enclosure (Refer to pic. 2).

Step 3: Power Supply Circuit

Picture of Power Supply Circuit

The Arduino Uno used in this project is powered by a 9v battery. The Arduino has an on board regulator which can receive an input voltage within the range of 6v - 20v. Due to this, we do not need any additional circuit to regulate the input voltage to the Arduino when connected to a 9v battery.

1. Solder the bent Male Header Pins to the two wires of the 9v battery snap.

2. Cover the soldered points on the wire with insulation tape or heat shrink. The header pins soldered to the battery snap must look like pic. 2.

You are now done with the power supply circuit for the Arduino.

Step 4: IR Receiver Circuit

Picture of IR Receiver Circuit

The IR Receiver is used to detect and decode the IR pulses sent from the TV remote. The decoded IR signals are then stored in the Arduino Uno.

1. Carefully bend the three leads of the IR Receiver backwards at a right (90 degrees) angle (Refer to pic. 2 and pic. 3).

2. Solder three wires to the leads of the IR Receiver. Ensure that you insulate each of the leads of the IR Receiver so that there no possibility of the pins shorting in case they come in contact with each other (Refer to pic. 4).

3. Solder the bent Male Header Pins to the other end of the wires. The completed circuit must look like pic. 1.

Step 5: Bluetooth Transceiver - Part 1: Bluetooth Module

Picture of Bluetooth Transceiver - Part 1: Bluetooth Module

The Bluetooth Module enables the Arduino to connect and communicate wirelessly with the Android phone. I strongly suggest to purchase a Bluetooth Module which is soldered to a breakout board. Purchasing only the Bluetooth Module without the breakout board means that you will have to do the tricky soldering part which could damage the module if it is not done witht the right tools. If you have only purchased the Bluetooth Module, visit Step 4 of this instructable for details about the soldering.

If you have purchased the Bluetooth Module with the breakout board but do not have the Female Header Pins to connect to the module, then you can use the following Top Tip: Briefly heat the ends of the wire over a candle to partially melt and loosen up the insulation on the wire. Then force each of the wires into the Vcc, Gnd , Tx and Rx pins of the Bluetooth Module.

Connect the Female Header Pins to the Vcc, Gnd , Tx and Rx pins of the Bluetooth Module.

Step 6: Bluetooth Transceiver - Part 2: Level Shifter Circuit

Picture of Bluetooth Transceiver - Part 2: Level Shifter Circuit

The Arduino Uno has a serial input/output of 5v through its pins, whereas the Bluetooth Module operates at 3.3v logic. Due to this, a voltage divider circuit ( level shifter ) is required to convert this 5v output to 3.3v.

1. Cut a small piece of PCB and solder two Male Header Pins (Straight) to it. Refer to pic. 2

2. Solder the 10K ohms and 20K ohms resistors according to the circuit diagram in pic.5

3. The final completed circuit should look like one in pic. 4

You have now completed the Bluetooth Transceiver.

Step 7: IR LED Stem

Picture of IR LED Stem

The decoded IR pulses stored in the Arduino is transmitted back to the TV using the IR LED.

1. Solder two long electrical wires of equal length to the leads of the IR LED (Refer to pic. 2).

2. Cut a length of the steel wire slightly longer than the electrical wire.

3. Firmly wrap the steel wire to the two electrical wires. This creates a flexible stem for the IR LED which can be directly positioned in front if the IR Receiver of the TV (Refer to pic. 1 and pic. 3).

4. Cut a small piece of the PCB and solder a Male Header Pin and the 100 ohms resistor to it. The resistor will connect to the positive lead of the IR LED while the Header Pin will connect to Arduino Pin 3 (Refer to pic. 4).

Step 8: Final Assembly

Picture of Final Assembly

Now that all the component modules are complete, you can begin the final assembly of 'Aergia'.

1. Place the Arduino Uno in the project enclosure and fasten it with screws or zip tie (Refer to pic. 1).

2. In order to connect the IR Receiver module, draw the three wires of the IR Receiver through the hole drilled in the project enclosure. Connect OUT pin and Vcc pin of the IR Receiver to Arduino pin 11 and +5v pin respectively. Connect the Gnd pins of both the IR Receiver and Arduino with each other (Refer to pic. 2 ,pic. 3 and pic. 4).

3. For attaching the IR LED stem , connect the Male Header Pin having the 100ohms resistor to pin 3 of the Arduino (Refer to pic. 5). Connect the Header Pin having a wire to the Gnd pin of the Arduino. Draw the two wires of the Header Pins through the holes drilled in the project enclosure and use wire connectors on the ends of the wire (Refer to pic.6). Connect the positive wire of the IR LED to the wire which connects to pin 3 of the Arduino. Connect the negative wire of the IR LED to wire which connects to Gnd pin (Refer to pic.7 and pic. 8).

4. Connect the Tx pin of the Bluetooth Transceiver to Arduino pin 6. The Rx pin of the Bluetooth module connects to the level shifter between the 10k ohms and 20k ohms resistors. The 10k ohms resistor of the level shifter connects to Arduino pin 7 and the 20k ohms resistors connects to the common ground pin of the Arduino. The Vcc pin of the Bluetooth module connects to the 3.3v output pin of the Arduino. The Gnd pin of the Bluetooth module connects to the Gnd pin on the Arduino. Place the Bluetooth Trasceiver circuit inside the enclosure (Refer to pic.9 and pic. 10).

5. Connect the positive wire from the Power Supply circuit to the Vin pin and the negative wire to the Gnd Pin of the Arduino. Then place the 9v Battery Snap into the project enclosure (Refer to pic. 11, pic. 12 and pic. 13).

The hardware assembly of 'Aergia' is now completed.

Step 9: Programming the Arduino

Picture of Programming the Arduino

Before you can program the Arduino Uno, you must first install the IR library (by Ken Shirriff) for handling the IR Receiver and IR LED.

These are the steps to install the library :-

1. Download the Tiny GPS library for the Arduino (link).

2. Extract the zip file to the folder: " Libraries/Documents/Arduino/libraries "

3. Now you would see the library under " Sketch --> Import Library " in the Arduino IDE.

4. You can now proceed with programming the Arduino Uno.

The following is the source code for the Arduino. Download the code below, open it in the Arduino IDE and upload it to the Arduino.

Step 10: Android Bluetooth Remote App

Picture of Android Bluetooth Remote App

I have created an Android app which acts as a universal bluetooth remote. It helps the Android phone communicate with 'Aergia'. In addition to all the basic buttons an IR Remote has, the app also features a voice recognition system and 12 user programmable buttons.

The app is attached to this page and must be downloaded and installed on your Android Phone.

The following are the components and buttons of the Bluetooth Remote App :

  1. Speech Recognition Button : Click on this button and speak out the command button clearly. The voice interpreted by the app is displayed on a small label above this button.
  2. Power Button : Used to turn on/off the TV.
  3. Numpad : The numpad contains buttons numbered from 0 to 9. It also contains the Dash Button for entering double/triple digit channel numbers and the Previous Channel Button for navigated back to the previous channel.
  4. D-Pad : The Directional Pad (D-Pad) has 5 buttons to navigate the TV's channel/settings menu.
  5. Volume and Channel Buttons : The Volume Buttons are used to increase and decrease the volume of the TV. The Channel Buttons are used to switch channels.
  6. 3-Buttons Array : This array of buttons contains the Mute Button, Menu Button and Back Button.
  7. 12 Programmable Buttons : These are 12 buttons which you can configure according to the various functions your TV's IR remote offers.
  8. Bluetooth Configuration Section : This section contains the text box for entering the MAC address of your Bluetooth module. It also contains the Connect Button. The Bluetooth MAC address must only be entered once while opening the app for the first time. The next time you open the app, it will automatically connect to the Bluetooth module without the need of entering the address again.
  9. Settings Button : The Settings Button is used to configure all the other buttons of the app so that 'Aergia' can work with your TV.

Step 11: 'Aergia' in Action!

Picture of 'Aergia' in Action!

Having built the 'Aergia', you can begin using it with your Android phone and TV.

Kindly follow these steps for using 'Aergia' :-

1. Power on the 'Aergia' by connecting a 9v battery to the battery snap.

2. Turn on the bluetooth in your Android phone and pair with the 'Aergia'.

3. Open the Android app.

4. If you are using the 'Aergia' for the first time, then you must enter the Bluetooth MAC Address of the bluetooth module in the App's textbox. In order to obtain the MAC Address, download the App in this link and follow the instructions on its webpage. You will also have to setup the app for your TV. To setup the app, click the Setup button in the Android App.

5. The app now turns into setup mode and you can configure each button. In the setup mode, click on a button in the app, then while pointing the TV's IR Remote at 'Aergia', click on the corresponding button on the IR Remote.

6. Repeat the same steps for all the buttons on the IR Remote.

7. Once you have completed the app configuration, click on the Setup button once again to come back to the normal mode.

8. You can now use the app and 'Aergia'. Click on any button in the app and your TV will respond to it just like it would after receiving a signal from the Remote Control.

9. To use the Speech Recognition feature, click on the 'Microphone' button and clearly speak into the phone the command of the corresponding button on the remote.

Now that you know how to build 'Aergia', go ahead and build one yourself, and claim an 'eternal dibs' on your favorite spot on the couch!


SaventaenS (author)2016-07-08

This did not work, ... and confusing ....

SaventaenS (author)2016-07-08

This did not work, ... and confusing ....

SaventaenS (author)2016-06-18

whether this project to all remote tv?

because there is no program code eeprom?

please explain to me.


kavish laxkar (author)2016-01-16

grt insb. but tell me one thing...wil it work for all types of TC sets (different brands).
and all tv sets have different receiving codes for each buttons we press on remote.?

azharaamir (author)2015-10-31

Bro i also want to make an ir arduino remote n i am succesfull in getting ir pulse from remote but i dont know how to transmit them using arduino..can u help me thanks in advance i follow this site tutorial i want to use your code but i dont have a bt module plz help...

naveenr11 (author)2015-09-24

Hey Jayvis , this a great Idea, I see folks who are luck who got is working, But I am stuck at a point where the App does not connect it keeps flashing bluetooth device not connect, despite the HC 05 being paired over the phone, and the MAC add for HC 05 has been entered in the App ,, Please Advise !!!!!! Thanks a lot for this great Innovation, It's really fascinating if i get it to work !!!!

LoveleshP made it! (author)2015-03-01

My version uses the visiting card holder. I have not added the TSOP but it suites my needs.

KartikT (author)2014-09-04

I m getting this errors while compiling this code.

pls look over it n fix it as soon as possible

FIPH1G6HXTFTJUQ.ino:8:1: error: 'IRsend' does not name a type
FIPH1G6HXTFTJUQ.ino: In function 'void send_sorter(int, int, int)':
FIPH1G6HXTFTJUQ.ino:34:6: error: 'irsend' was not declared in this scope
FIPH1G6HXTFTJUQ.ino:39:6: error: 'irsend' was not declared in this scope
FIPH1G6HXTFTJUQ.ino:44:6: error: 'irsend' was not declared in this scope
FIPH1G6HXTFTJUQ.ino: In function 'void dump(decode_results*)':
FIPH1G6HXTFTJUQ.ino:76:36: error: 'LG' was not declared in this scope

LoveleshP (author)KartikT2015-03-01

Remove the Robotremote library from Arduino\libraries.

I got the same error and this worked for me.

xlm13x (author)2014-08-04

can you please provide source code of your bluetooth control app? It will be very useful for me for another projects.

me too

Hi, I'll pm you the app details

I need it too.

Me too

Lendalki (author)Metanol2014-09-27

Can you send me the app code too please

atuls94 (author)2015-01-01

FIPH1G6HXTFTJUQ.ino:8:1: error: 'IRsend' does not name a type
FIPH1G6HXTFTJUQ.ino: In function 'void send_sorter(int, int, int)':
FIPH1G6HXTFTJUQ.ino:34:6: error: 'irsend' was not declared in this scope
FIPH1G6HXTFTJUQ.ino:39:6: error: 'irsend' was not declared in this scope
FIPH1G6HXTFTJUQ.ino:44:6: error: 'irsend' was not declared in this scope
FIPH1G6HXTFTJUQ.ino: In function 'void dump(decode_results*)':
FIPH1G6HXTFTJUQ.ino:76:36: error: 'LG' was not declared in this scope

how fix it!!!!

plzzzz help me!!!!!

DockA (author)2014-11-23

Hi, this is a great idea. Before I go any further, can this be operated solely by voice commands? It would be for a paralyzed man with Lou Gehrig's disease, who has no movement from the neck down. He is using a Very limited voice activated remote now, (off/on and maybe 15 stations preprogrammed) and we would like something with more functionality. (Volume, any station, On-demand menu etc.). Do you think your unit would work for him? His voice is thankfully still strong so that shouldn't be an issue. Thank you for your help :-)

echao (author)2014-10-03

this code can not use, help me!

Aergia is ready!

Bluetooth Module is ready to receive commands


Configuration mode entered

Button configuration started.....



Decoded NEC: FFE01F (32 bits)

Raw (68): 6784 9200 -4200 850 -300 800 -300 800 -350 800 -300 800 -350 750 -350 800 -300 800 -350 750 -1450 750 -1500 750 -1500 750 -1500 650 -1600 650 -1600 600 -1600 650 -1600 650 -1600 600 -1650 600 -1600 650 -500 550 -550 600 -550 550 -550 550 -600 550 -550 550 -550 600 -550 550 -1700 550 -1650 600 -1650 550 -1700 550 -1700 550

Button configured......

Sending Button Info...

Button configuration started.....

Exiting loop and entering normal mode


Command received from Phone:





...i USE the Arduino-IRremote-master example IRrecord.ino...the IR LED had output but i used Bluetooth_Remote_Program.ino...the IR LED no output

can you help me ?

Jorge IvanL (author)2014-09-28

Hola, me ha encantado tu proyecto y me gusto demasiado la aplicación, no se si es posible me proporcionaras el código para la aplicación móvil

hgevariya (author)2014-08-27

hey give me more details about ir receiver

Metanol (author)2014-08-21

I need more details in the step 6,the points that RickD2 cited

TrollFaceTheMan (author)2014-08-08

I'm glad that my phone already comes with an IR Blaster (Something I didn't even realize existed until recently) So I can use it as a remote directly. But this is still a very cool project, keep up the good work!

RickD2 (author)2014-07-26

Jayvis: Could you post a more detailed step by step (preferably with pictures) on step 6:part 2 regarding the soldering of the 10 and 20 ohm resistors to the PCB board? I found that part confusing...have no prior experience with creating these types of circuits but I would love to learn how! Thanks for sharing your genius with us! :)

Thanks for pointing that out. I'll further elaborate that step to make it easier for everyone to understand.

mastersoncraft (author)2014-07-27

This sure beats getting off the couch to fish our the remote from under the cushions!

mastersoncraft (author)2014-07-27

This sure beats getting off the couch to fish our the remote from under the cushions!

Metanol (author)2014-07-22

cool project, congratulations. But, I am interested in your app, for a future project. There is the possibility to send me the source code?

liamjones1989 (author)2014-07-22

Could this be used with an iphone

Although you can use an iphone in this project, you'll have to create a bluetooth remote app for your iphone.

lbuitron (author)2014-07-22

Can this be built by a girl tha ?...

Yes, you too can build 'Aergia'! Just follow the steps in this instructable, and if you run into a roadblock while building this project, feel free to write a comment and I'll answer it.

About This Instructable




More by Jayvis Vineet Gonsalves:Aergia: Android controlled TV Remote(with Speech Recognition) Athena: The Global Car Tracking System(3D Images)Blitzkrieg: The Bluetooth Controlled 110lb Combat Robot.
Add instructable to: