Arduino Ses Kontrol Ile Tv Kontrolü

Arduino da “Elechouse Voice Recognition V3 Module” ünü ve IR transmiti birleştirerek Samsung Tv üzerinde temel fonksiyonları kullandım. Bağlantılar şöyle; http://i.hizliresim.com/J7OnAE.png IR ledinin anot ucu digital 3’e,katotu gnd ye. Modülün RXD si kodda belirtilen 8’e,TXD’si ise 7 ye.GND gnd’ye,Vcc 5v’a olucak şekilde. VoiceRecognitionV3 kütüphanesini indirip train örenğini açarak ses tanıtma işlemini yapıyorsunuz.Mesela train 1 2 3 4 5 diye Serial Port a yazdınız.Sırasıyla 5 kez farklı sesler söylüyüceksiniz.Daha sonra aşağıdaki kodda #define fonksiyondeneme (1) diyerek 1.train de söylediğiniz şeyi aradığınızı belirtmiş olursunuz bir nevi. Video: http://www.youtube.com/watch?v=65cki6UZwEA Kodlar aşağıda: #include <irremote.h>
#include <softwareserial.h>
#include “VoiceRecognitionV3.h”
VR myVR(7,8); // TX:7,RX=8,IR Emit=3 olacak şekilde
IRsend irsend;
uint8_t records[7]; // kayıtları kaydeder
uint8_t buf[64];
#define programileri (8)
#define programgeri (9)
#define sesiackapa (10)
#define onoff (11)
#define sesyukselt (12)
#define sesalcalt (13)
void printSignature(uint8_t *buf, int len)
{
int i;
for(i=0; i0x19 && buf[i]<0x7F){
Serial.write(buf[i]);
}
else{
Serial.print(“[”);
Serial.print(buf[i], HEX);
Serial.print(“]”);
}
}
}

/**
@brief Print signature, if the character is invisible,
print hexible value instead.
@param buf –> VR module return value when voice is recognized.
buf[0] –> Group mode(FF: None Group, 0x8n: User, 0x0n:System
buf[1] –> number of record which is recognized.
buf[2] –> Recognizer index(position) value of the recognized record.
buf[3] –> Signature length
buf[4]~buf[n] –> Signature
*/
void printVR(uint8_t *buf)
{
Serial.println(“VR Index\tGroup\tRecordNum\tSignature”);

Serial.print(buf[2], DEC);
Serial.print(“\t\t”);

if(buf[0] == 0xFF){
Serial.print(“NONE”);
}
else if(buf[0]&0x80){
Serial.print("UG ");
Serial.print(buf[0]&(~0x80), DEC);
}
else{
Serial.print(“SG “);
Serial.print(buf[0], DEC);
}
Serial.print(”\t”);

Serial.print(buf[1], DEC);
Serial.print(“\t\t”);
if(buf[3]>0){
printSignature(buf+4, buf[3]);
}
else{
Serial.print(“NONE”);
}
Serial.println(“\r\n”);
}
void setup()
{
myVR.begin(9600);
Serial.begin(115200); // Com seri bandını 115200 seç,Diğer özelliği New Line seç
Serial.println(“Elechouse Voice Recognition V3 Module\r\nControl LED sample”);
if(myVR.clear() == 0){
Serial.println(“Recognizer cleared.”);
}else{
Serial.println(“Ses Tanima Modulu Bulunamadi”);
Serial.println(“Baglantini Kontrol Et”);
while(1);
}

if(myVR.load((uint8_t)programileri) >= 0){
Serial.println(“Program Ileri Fonksiyonu Hazir”);
}

if(myVR.load((uint8_t)programgeri) >= 0){
Serial.println(“Program Geri Fonksiyonu Hazir”);
}
if(myVR.load((uint8_t)sesiackapa) >= 0){
Serial.println(“Ses Ac Kapa Fonksiyonu Hazir”);
}
if(myVR.load((uint8_t)onoff) >= 0){
Serial.println(“TV Kapa Fonksiyonu Hazir”);
}
if(myVR.load((uint8_t)sesyukselt) >= 0){
Serial.println(“Ses Yukseltme Fonksiyonu Hazir”);
}
if(myVR.load((uint8_t)sesalcalt) >= 0){
Serial.println(“Ses Alcaltma Fonksiyonu Hazir”);
}
}
// E0E048B7-Program Ileri E0E008F7-Program Geri
void loop()
{
int ret;
ret = myVR.recognize(buf, 50);
if(ret>0){
switch(buf[1]){
case programileri: // Acil fonksiyonu icin olusacak seyler
for (int i = 0; i < 3; i++) {
irsend.sendNEC(0xE0E048B7,32);
delay(40);
}
break;
case programgeri:
for (int i = 0; i < 3; i++) {
irsend.sendNEC(0xE0E008F7,32);
delay(40);
}
break;
case onoff:
for (int i = 0; i < 3; i++) {
irsend.sendNEC(0xE0E040BF,32);
delay(40);
}
break;
case sesyukselt:
for (int i = 0; i < 3; i++) {
irsend.sendNEC(0xE0E0E01F,32);
delay(40);
}
break;
case sesalcalt:
for (int i = 0; i < 3; i++) {
irsend.sendNEC(0xE0E0D02F,32);
delay(40);
}
break;
case sesiackapa:
for (int i = 0; i < 3; i++) {
irsend.sendNEC(0xE0E0F00F,32);
delay(40);
}
break;
default:
Serial.println(“Boyle bir fonksiyon belirlenmedi”);
break;
}
printVR(buf);
}
}</softwareserial.h></irremote.h>