Old Tv V to Voice Based Smart TV

by arijitghosh2707 in Circuits > Arduino

133 Views, 1 Favorites, 0 Comments

Old Tv V to Voice Based Smart TV

Smart TV.jpeg

Using VC02 Module to create a smart voice assistant based TV. Most modern smart TV contains smart features like Voice channel search, online access to YouTube, Netflix and many more. I tried to make a five year old LED TV to a smart TV using offline voice based channel search that under 10$.


Supplies

Componets Smart TV.jpg

Arduino Nano x1

IR LED Infrared Emitters x1

TSOP4838 IR receiver x1

Resistor 100 Ohms x1

VC02 Module x1

PCB x1

Project Detail

This is a demonstration of a smart TV. Nowadays TVs come with smart features live voice channel search and many more. This project is to add smart features integrated in old TVs at affordable price.

The TV used as an example is an old TV(2019 model) with no smart features.

So I tried to make this a smart TV using VC 02 module by AI-Thinker and Arduino Nano as a processing unit.

Circuit Explaination

Smart_TV_Circuit_diagram_08052024170138.png
1.jpg
4.jpg
5.jpg
7.jpg

I used a prototype PCB board to connect the Arduino Nano and the VC02 module. The RX and TX of the Arduino Nano and the VC02 module are connected alternately. The VC02 module sends HEX Code according to the voice it listens and send it to the Arduino Nano. The Arduino then checks the HEX Code and send signals accordingly to the TV and the set top box. In this process it will also turn on the digital pin 13 of Arduino Nano which is the BUILTIN LED of Arduino Nano to indicate transmission of IR Data.

Working Principle

Suppose I want to change the channel to Star Sports 1(Whose channel number is 454) the VC 02 mode will recognize the voice command and send a HEX code that is previously stored. The Arduino Nano will receive the HEX code though the RX pin and check which command it is. Then it will send the IR codes of the remote one by one. In this case the channel number is 454, so it will send the code for button 4 then send the code for button 5 after 1 second delay and again code for button 4 after 1 second delay.

Collecting Remote Data

IR_Receiver_08052024170138.png

To receive the code from the remote connect the receiver according to the diagram and upload the receive example code as shown in the video.

VCO2 Firmware

For the voice command head over to http://voice.ai-thinker.com and create a product and select the board, type and write all the command and their reply as shown in the video.

Code

#include <IRremote.h>

const int IRsend = 11;
const int LED = 13;
unsigned int receivedValue = 0;

void setup() {
// Debug console
Serial.begin(9600);
IrSender.begin(IRsend);
pinMode(LED, OUTPUT);
}

void loop() {

if (Serial.available()) {
// Read the incoming bytes
byte highByte = Serial.read();
byte lowByte = Serial.read();

// Combine the two bytes into a single 16-bit value
receivedValue = (highByte << 8) | lowByte;

// Print the received value in HEX format
Serial.print("Received HEX value: 0x");
Serial.println(receivedValue, HEX);
}
//DD Bangla (CH 908)
if (receivedValue == 0xCC01){
IrSender.sendNEC(0xC00009, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
IrSender.sendNEC(0xC00000, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
IrSender.sendNEC(0xC00008, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
}
//Star Sports 1 (CH 454)
if (receivedValue == 0xCC02){
IrSender.sendNEC(0xC00004, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
IrSender.sendNEC(0xC00005, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
IrSender.sendNEC(0xC00004, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
}
//Star Sports 2 (CH 456)
if (receivedValue == 0xCC03){
IrSender.sendNEC(0xC00004, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
IrSender.sendNEC(0xC00005, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
IrSender.sendNEC(0xC00006, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
}

//Sony Live (CH 473)
if (receivedValue == 0xCC04){
IrSender.sendNEC(0xC00004, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
IrSender.sendNEC(0xC00007, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
IrSender.sendNEC(0xC00003, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
}

//Power On or Off
if (receivedValue == 0xAA01 || receivedValue == 0xAA00){
IrSender.sendNEC(0xFE50AF, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
}

//Mute or Unmute
if (receivedValue == 0xAB01 || receivedValue == 0xAB00){
IrSender.sendNEC(0xFED02F, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
}

//Previous Channel
if (receivedValue == 0xAC01){
IrSender.sendNEC(0xC00083, 32);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
}
else
delay(10);
receivedValue = 0;
}

GitHub Repository

Video

Voice based smart TV || Old TV to smart TS