Project tutorial
Use Your Phone as a VOICE remote

Use Your Phone as a VOICE remote © GPL3+

Make a simple device that actually lets you speak to your TV.

  • 1,928 views
  • 2 comments
  • 15 respects

Components and supplies

A000066 iso both
Arduino UNO & Genuino UNO
×1
Bluetooth Low Energy (BLE) Module (Generic)
×1
IR transmitter (generic)
×1
IR receiver (generic)
×1

About this project

In this project we will be making a simple device using which you can actually speak with your TV no matter which brand or which model your TV belongs to the device can be made universal to any device, yes you can also make voice remote even for your ancient TV.

The project doesn't require any advanced programming anyone is a basic knowledge in arduino can master this project easily. The price of making is very cheap which is less than buying iR TV remote.

Let's start making!!!

Taking Data From IR TV Remote

USE CODE 1 PROVIDED

So this is our first step of our making we gonna make the initialisation process that is we are going to collect the data stored in your IR remote which your TV can understand using our IR Decoder and we are going to use this decoded information in our device to use this data to communicate with your TV. Thus this step proves that any TV that uses an IR remote can be used in this project so there is no restrictionfor this project that only it supports High end TV.

This step is actually very simple you are going to use your TV remote to decode the data in the button which ever you want to use in the device that is you can choose only the important buttons like increase volume, increase channel, power, input.....

To decode the data you need to follow the below steps for each of the buttons you want:

1. Make the circuit connections as shown in the picture above.

2. upload the code to the arduino which is given below (code1.ino).

3. Now choose which button you need to decode and open the serial monitor on your arduino IDE software.

4. Flash the remote towards the IR receiver by pressing the button.

5. You will be getting a series of data on your serial monitor.

6. copy the entire content in the serial monitor and paste in a word pad for later reference.

7. similarly collect the data for all the important buttons you want.

Making the Wireless IR Blaster

The project uses a mobile app to recognize the voice and decode it and send the respective code to the arduino containing the Ir transmitter via Bluetooth.

The circuit connection for the device is explained in the images displayed above.

Thus the connections will be very simple and less or you can also use a solder to avoid the usage of wires and reduce the size of the project.

You will be keeping this device in front of the tv's IR receiver.

Coding the Receiver Device

Open the code2 given below using your arduino IDE software.

In this try to read the comments given in the sides which will be explaining the code clearly.Here you need to put in the entire set of content that you have taken from your Ir remote and stored in a word pad during your STEP3.

This is so simple, create a function for your button by giving a suitable name for it and put in the data from teh word pad into the block correspondingly.

Modifying the Android App

https://cdn.instructables.com/ORIG/F04/0F6P/JI4UCD2F/F040F6PJI4UCD2F.aia

I have created a basic app using the mit app inventor for doing the speech recognition and sending the data to the arduino receiver via Bluetooth.

You can use the same app only by making a few modifications in it to suit your TV.

I have provided the editable format of my app which is operable at the mit app inventor.

http://appinventor.mit.edu/explore/

sign up in the above link and open the app by clicking the import file option.

The modifications to be performed are explained briefly below:

  • change the channel names which are rounded in the image 1 to your liking.
  • The name you give here will be your voice command so you need to speak this word inorder to activate the task.
  • Once the task is activated(say increase volume) then the code saved in it will be transmitted to the arduino via bluetooth.
  • So you need to match the number in the app with the number on the arduino receiver coding.
  • These are the main modifications to be performed you can also share your own creativity in this.

you can also change the background and the icon of the application make it suit your way and enjoy the app.

Enjoy Smartly!

Now you can enjoy the smart TV experience with any type of TV. Try debugging your work if any error persists please let me know.

You need to keep the bluetooth on during the usage of the app.

Hope the instructable would be helpful to you and I will be happy to have any queries or doubts!

THANK YOU for reading! HAPPY MAKING!

My Instructable link:

https://www.instructables.com/id/Convert-Phone-Into-TV-Voice-Remotesimple-Arduino/

Code

code 1Arduino
use in the first for decoding ir .
#define IRpin_PIN      PIND
#define IRpin          2
 
// the maximum pulse we'll listen for - 65 milliseconds is a long time
#define MAXPULSE 65000
 
// what our timing resolution should be, larger is better
// as its more 'precise' - but too large and you wont get
// accurate timing
#define RESOLUTION 20 
 
// we will store up to 100 pulse pairs (this is -a lot-)
uint16_t pulses[100][2];  // pair is high and low pulse 
uint8_t currentpulse = 0; // index for pulses we're storing
 
void setup(void) {
  Serial.begin(9600);
  Serial.println("Ready to decode IR!");
}
 
void loop(void) {
  uint16_t highpulse, lowpulse;  // temporary storage timing
  highpulse = lowpulse = 0; // start out with no pulse length
 
 
//  while (digitalRead(IRpin)) { // this is too slow!
    while (IRpin_PIN & (1 << IRpin)) {
     // pin is still HIGH
 
     // count off another few microseconds
     highpulse++;
     delayMicroseconds(RESOLUTION);
 
     // If the pulse is too long, we 'timed out' - either nothing
     // was received or the code is finished, so print what
     // we've grabbed so far, and then reset
     if ((highpulse >= MAXPULSE) && (currentpulse != 0)) {
       printpulses();
       currentpulse=0;
       return;
     }
  }
  // we didn't time out so lets stash the reading
  pulses[currentpulse][0] = highpulse;
 
  // same as above
  while (! (IRpin_PIN & _BV(IRpin))) {
     // pin is still LOW
     lowpulse++;
     delayMicroseconds(RESOLUTION);
     if ((lowpulse >= MAXPULSE)  && (currentpulse != 0)) {
       printpulses();
       currentpulse=0;
       return;
     }
  }
  pulses[currentpulse][1] = lowpulse;
 
  // we read one high-low pulse successfully, continue!
  currentpulse++;
}
 
void printpulses(void) {
  Serial.println("\n\r\n\rReceived: \n\rOFF \tON");
  for (uint8_t i = 0; i < currentpulse; i++) {
    Serial.print("delayMicroseconds(");
    Serial.print(pulses[i][0] * RESOLUTION, DEC);
    Serial.print("); pulseIR(");
    Serial.print(pulses[i][1] * RESOLUTION, DEC);
    Serial.println(");");
  }
}
code 2Arduino
use secondly for transmitting ir.
int IRledPin =  3;
void setup()
{
  pinMode(IRledPin, OUTPUT);
  Serial.begin(9600);
}
void loop()
{
int  a;
  if(Serial.available()>0)
  {
    a=Serial.read();
  switch(a)
  {
    case 1: power();    //if it receives the number "1" from the app then the case one will be executed
             
            break;
    case 2:tvpower();
             
            break;
    case 3:chplus();
            
           break;
    case 4:chminus();
           break;
    case 5:volplus();
           break;
    case 6:volminus();
           break;
                             //all the data provided corresponds to my tv remote thus you have to modify to your needs
    case 10:  zero();        //if it receives the number "10" from the app then the case 10 will be executed thus the respective channel is switched
              delay(700);
              nine();
              delay(700);
              one();
              delay(700);
              zero();
              delay(700);
              break;          //channel number 910 will be switched
     
  }  
}
void pulseIR(long microsecs)
{
  cli();
  while (microsecs > 0)
  {
    digitalWrite(IRledPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(IRledPin, LOW);
    delayMicroseconds(10);
    microsecs -= 26;
  }
  sei();
}

void power()   /*the function stores the data for the power button taken from the step-1*/
{
  //the data is for my remote so update the data with yours
  delayMicroseconds(57608 );
  pulseIR( 2680 );
  delayMicroseconds(980 );
  pulseIR( 400 );
  delayMicroseconds(520 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 420 );
  delayMicroseconds(960 );
  pulseIR( 400 );
  delayMicroseconds(980 );
  pulseIR( 860 );
  delayMicroseconds(520 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(520 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 420 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 420 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(520 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 420 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(520 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 420 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 420 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(520 );
  pulseIR( 860 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(960 );
  pulseIR( 420 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(61644 );
  pulseIR( 2700 );
  delayMicroseconds(980 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 420 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(980 );
  pulseIR( 400 );
  delayMicroseconds(960 );
  pulseIR( 880 );
  delayMicroseconds(500 );
  pulseIR( 420 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 420 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(520 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(520 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 420 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(520 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 420 );
  delayMicroseconds(480 );
  pulseIR( 420 );
  delayMicroseconds(520 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 400 );
  delayMicroseconds(520 );
  pulseIR( 400 );
  delayMicroseconds(500 );
  pulseIR( 860 );
  delayMicroseconds(520 );
  pulseIR( 400 );
  delayMicroseconds(960 );
  pulseIR( 420 );
  delayMicroseconds(500 );
  pulseIR( 400 );



}
void chplus()
{
//put the data of your channel plus button in this section
}

void ch minus()
{

}
void one()
{
  
}
void two()
{
  
}
void three()
{
}
//add for all the 10 numbers.

//similarly you can add any no of functions for each buttons

Schematics

Bluetooth module
Frokxghjlquvdqx tt5nobxfqa
ir transmitter
Fm3cpvpjlquvdqw kwqfiusln9
ir decoder
Fcujznaji4uc8fi r1fnt901pb

Comments

Similar projects you might like

Using Android Smart Phone to Remote Controller

Project tutorial by Team Makewith

  • 1,464 views
  • 1 comment
  • 6 respects

Voice Controlled Robot using your Smart Phone

Project tutorial by Ahmed Yassin

  • 3,058 views
  • 0 comments
  • 7 respects

Infrared Remote

Project tutorial by 4 developers

  • 3,150 views
  • 0 comments
  • 36 respects

Convert Your Old Phone to a Remote Switch

Project tutorial by Vishwas Navada

  • 10,512 views
  • 5 comments
  • 35 respects

Remote and Voice Controlled Smart Fan

Project tutorial by Paul Trebilcox-Ruiz

  • 4,052 views
  • 3 comments
  • 19 respects

TV remote controlled Light and Fan

Project tutorial by Rishabh

  • 18,825 views
  • 13 comments
  • 63 respects
Add projectSign up / Login