1

Merhaba arkadaşlar, Arduino uygulamalarına devam ediyoruz. Arduino ile Tv, DVD ve Ses Sistemi kontrol etmeyle ve Android için App Invertor ile uygulama üretmekle ilgili olan bu projeyi sizinle paylaşmak istiyorum.

Proje iki parçaya bölünmüştür, ilk parça uzaktan kumanda kodlarını elde etmek ve ikinci parça ise cihazları kontrol eden asıl projedir.

Genel Bölüm Listesi:

  • (1) Arduino One
  • (1) Devre Tahtası
  • (1) Ir Alıcı Tsop1838 veya eşdeğeri (Kontrol projesinde kullanılmayan kodları yakalamak için)
  • (2) IR Ledleri
  • (1) HC-05 Bluetooth modülü
  • (2) 220 ohm direnç.
  • Jumper kabloları.
  • (1) Uzaktan kumanda (Kontrol projesinde kullanılmayan kodları yakalamak için)

 

1. Adım : Düğmeler için kodları elde etmek (I)

 

2

113 33

 

Öncelikle, uzaktan kumandamızın her düğmesi için kodları elde etmek zorundayız.
Yani, devrenin breadboard üzerine inşa edilişi şekilde gösterildiği gibidir :
Ir alıcı TSOP 1738‘in üç pimi vardır.
İlk olan çıkış pimi Arduinodaki pin 11’e bağlıdır.
İkincisi toprağa gider ve üçüncüsü + 5V ile bağlanır.
Ken Shirriff tarafından yazılan IrRemote kütüphanesini indirin. Bu kütüphane Nec, Philips RC5, Philips RC6 ve raw gibi IrRemote kodlarını çoklu protokollerde bize gönderebilir ve almanızı sağlar.
Herhangi bir dijital giriş pimine TSOP 1738 gibi bir kızılötesi sensör bağlamak zorundayız.

Buradan indirebilirsiniz :

https://www.dropbox.com/s/h9zgj69lrb8sg6e/probarCodigosRaw.ino?dl=0

Gerekli Kodlar :

#include 
int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup() {

Serial.begin(9600);

irrecv.enableIRIn(); // Start the receiver

}

// Dumps out the decode_results structure.

// Call this after IRrecv::decode()

// void * to work around compiler issue

//void dump(void *v)

{ // decode_results *results = (decode_results *)v

void dump(decode_results *results)

{ int count = results->rawlen;

if (results->decode_type == UNKNOWN)

{ Serial.print("Unknown encoding: ");

}

else if (results->decode_type == NEC)

{ Serial.print("Decoded NEC: ");

} else if (results->decode_type == SONY)

{ Serial.print("Decoded SONY: ");

}

else if (results->decode_type == RC5)

{ Serial.print("Decoded RC5: "); }

else if (results->decode_type == RC6)

{ Serial.print("Decoded RC6: "); }

else if (results->decode_type == PANASONIC)

{ Serial.print("Decoded PANASONIC – Address: ");

Serial.print(results->panasonicAddress,HEX);

Serial.print(" Value: "); }

else if (results->decode_type == JVC)

{ Serial.print("Decoded JVC: "); }

Serial.print(results->value, HEX);

Serial.print(" (");

Serial.print(results->bits, DEC);

Serial.println(" bits)");

Serial.print("Raw (");

Serial.print(count, DEC);

Serial.print("): ");

for (int i = 0; i < count; i++)

{ if ((i % 2) == 1)

{ Serial.print(results->rawbuf[i]*USECPERTICK, DEC); }

else

{ Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC); }

Serial.print(" "); }

Serial.println(""); }

void loop()

{

if (irrecv.decode(&results))

{

Serial.println(results.value, HEX);

dump(&results);

irrecv.resume(); // Receive the next value

}

}

 

Adım 2: Kodları Elde Etme (II) 

 

4

 

Kodları yakalamak için devreyi inşa ettikten sonra, Arduino IDE’de seri monitörü açın, uzaktan kumanda edebilmek için istenen düğmeye basın ve resimde görüldüğü gibi arduinonun hangi değerleri aldığını görün. Arduino protokolü, yani kodu ve raw kodlarını alacak.

Örneğin; Bunlar benim dvd oynatıcı uzaktan kumandamda güç ve aç / kapa düğmelerine bastığımda ortaya çıkan kodlardır :

  • Cihazları kontrol etmek için kullanacağınız istenilen her düğme için alınan kodları kaydedin veya kopyalayın.
  • Benim televizyon için kullandığım taslakta : güç, ses kuvveti +, ses kuvveti -, kanal + ve kanal – ve TV / DVD düğmeleri var.
  • Dvd, güç, açık / kapalı, oynat ve durdur için.
  • Ses sistemi için ben sadece; gücü kontrol etmek, cd ve hafızalı düğmeleri oynatmak istiyorum.
  • Bu kodlar sonraki taslakta kullanılacaktır.

Adım 3: Devre  Şeması 

5

 

 

6

Gördüğünüz gibi, ihtiyaç duyduklarımız:

  • Arduino kartı.
  • Bluetooth modülü HC-05.
  • Kızılötesi ledler. (televizyon, dvd ve müzik setlerinin eğilimi için iki tane kullandım, kızılötesi led sayısı cihazlarınızın eğilimine bağlıdır).Not: Kızılötesi led, Arduino pin # 3 ile bağlıdır. Çünkü kütüphane kurulumu bu şekilde gerçekleşir.

 

Arduinonun sadece üç pini kullanılır:

Pin;

  • 3 – Ledler için
  • 0 – BT modülü pim Tx
  • 1 – BT modülü pim Rx

Arduinoya taslağını yüklediğinizde, bluetooth modülü bağlantısının iptal edilmesi gerektiğini unutmayın.

 

Adım 4: Arduino Kodu

 

#include "<\IrRemote.h\>";

IRsend ir;

int estado=0;

char dato;

//These codes are for controlling the Audio System

unsigned int powerEquipo[32]={300,750,300,1800,300,700,350,700,350,1750,350,700,300,1800,250,1800,350,700,300,1800,350,700,300,700,350,700,350,1750,300,750,300}; //unsigned int chEmisoraUp[32]= {300,750,300,750,300,1750,250,800,300,750,300,750,250,800,300,750,250,1800,250,1850,300,750,250,800,200,800,300,1800,300,750,300}; unsigned int chEmisoraUp[32] ={300,750,300,750,300,1800,200,850,300,750,250,750,300,750,300,750,300,1800,300,1750,300,750,300,750,300,750,300,1800,250,750,300}; unsigned int chEmisoraDown[32] = {350,700,400,650,300,1750,350,700,350,700,350,700,300,750,300,700,350,700,300,750,350,1750,400,650,300,700,350,1750,300,750,300};

unsigned int playCd[32] = {400,650,400,650,350,1750,350,700,350,650,350,1750,350,1750,300,1750,400,1700,350,1750,350,700,350,650,400,650,350,1750,450,600,350};

//These codes are for controlling the Tv

unsigned int pwrTv[68]={4600,4350,700,1550,650,1550,650,1600,650,450,650,450,650,450,650,450,700,400,700,1550,650,1550,650,1600,650,450,650,450,650,450,700,450,650,450,650,450,650,1550,700,450,650,450,650,450,650,450,650,450,700,400,650,1600,650,450,650,1550,650,1600,650,1550,650,1550,700,1550,650,1550,650}; // volume up unsigned int volUpTv[68]={4600,4350,650,1550,700,1500,700,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,450,700,400,700,400,700,400,700,450,650,450,650,450,650,1550,700,1500,700,1550,700,1500,700,1550,650}; // volume down unsigned int volDownTv[68]={4600,4350,700,1550,650,1550,700,1500,700,450,650,450,700,400,700,400,700,400,700,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,450,650,1550,700,400,700,400,700,450,700,400,700,400,700,400,700,1550,700,400,700,1500,700,1500,700,1550,700,1500,700}; // channel up unsigned int chUpTv[68]={4600,4350,700,1500,700,1500,700,1550,700,450,650,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,450,650,450,700,400,700,400,700,400,700,400,700,1550,700,400,700,400,700,1550,650,450,700,400,700,400,700,1550,650,450,650,1600,650,1550,650,450,700,1500,700,1500,700,1550,650}; // channel down unsigned int chDownTv[68]={4650,4300,700,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,700,400,700,400,700,400,700,450,650,450,650,1550,700,400,700,450,650,400,700,1550,700,1500,700,1550,700,1500,700,400,700,1550,650,1550,700,1500,700};

// Tv/Video unsigned int videoTv[68]={4500,4300,650,1600,650,1550,650,1600,650,500,600,500,650,500,650,500,650,500,600,1650,600,1600,650,1550,650,500,650,500,650,500,600,500,650,500,650,1600,600,500,650,500,650,500,650,500,600,550,600,500,650,500,650,500,650,1550,650,1600,650,1550,650,1600,650,1550,650,1600,650,1550,650};

void setup()

{

Serial.begin(9600);

}

void loop()

{

if(Serial.available()>0)

{ dato=Serial.read();

switch (dato)

{ case 'R':

ir.sendRaw(powerEquipo,32,38);

delay(500);

break;

case 'T':

ir.sendRaw(chEmisoraUp,32,38);

delay(100);

break;

case 'U':

ir.sendRaw(chEmisoraDown,32,38);

delay(100);

break;

case 'V':

ir.sendRaw(playCd,32,38);

delay(100);

break;

case 'K':

//Power the TV

ir.sendRaw(pwrTv,68,38);

delay(100);

break;

case 'L':

//Volume +

ir.sendRaw(volUpTv,68,38);

delay(100);

break;

case 'M':

//Volume -

ir.sendRaw(volDownTv,68,38);

delay(100);

break;

case 'N':

//Channel +

ir.sendRaw(chUpTv,68,38);

delay(100);

break;

case 'O':

//Channel -

ir.sendRaw(chDownTv,68,38);

delay(100);

break;

case 'P':

// Tv/Video

ir.sendRaw(videoTv,68,38);

delay(100);

break;

case 'A':

for (int i = 0; i < 3; i++)

{

ir.sendNEC(0xFF30CF, 32); // Power the DVD

delay(40);

}

break;

case 'B':

for (int i = 0; i < 3; i++)

{

ir.sendNEC(0xFF00FF, 32); // Open /Close

delay(40);

}

break;

case 'C':

for (int i = 0; i < 3; i++)

{

ir.sendNEC(0xFF52AD, 32); // Play

delay(40);

}

break;

case 'D':

for (int i = 0; i < 3; i++)

{

ir.sendNEC(0xFF728D, 32); // Stop

delay(40);

} break;

} // fin del switch

} //fin del if

}//fin del loop

 

Adım 5: Uygulama

 

7

 

 

8
App Invertor 2 ile yapılmış blok şeması:
Uygulamayı indirmek için aşağıya tıklayınız.

https://www.dropbox.com/s/gryunq9i60ludw8/Domo-Ardu.apk?dl=0

 

Bu uygulama kullanılan ögeler şunlardır:

  • Bluetooth istemcisi.
  • Birkaç düğme, etiketler ve liste seçiciler.
  • Gördüğünüz gibi çok basit, çalıştırıldığında cihaz seç seçeneğine basarak bluetooth bağlantısı seçmek zorundayız ve o bağlıyken yalnızca cihazı kontrol etmek için istenen düğmeye basmak zorundayız.Hepsi bu.Takip ettiğiniz için teşekkürler.

İlgili Video :