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:


    Kodlar aşağıda:


    #include
    #include
    #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; i if(buf[i]>0x19 && buf[i]<0x7F){<br /> 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);
    }
    }

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.