Android+Arduino+BlueTooth+IR led üzerinden Lamba Kontrolü

Evet Arkadaslar uzun süreden beri Proje çalışmam olmuyordu.Nihyetinde yine bir Proje ile karşınızdayım. Bu arada Android Programlamaya başladım ufak tefek birşeyler çıkartabiliyorum, ama hala ögrenmem gereken şey çok.

Neyse bu seferki Projem şöyle: Oturma odasındakı Lamba(üzerinde kırmızı,yeşil,mavi Ledler bulunuyor) IR Remote(Uzaktan Kumanda) ile kontrol ediliyor. Ben bunu Elimdeki Android işletim sistemli Samsung Galaxy üzerinden açıp kapamak, Ledleri ayrı ayrı yakıp söndürmek istedim.Öyleyse hem Android için bir App yazmaliyim, Hemde BlueTooth ve IR üzerinden gelip gidecek sinyallere göre Atmage328 için program yazmalıyım.Ha yeri gelmişken söyleyim, Arduino ile tanıştım gayet hızlı ve güzel projeler yapilabiliniyor.

 

Buda Arduino ve Atmega328 ile ilk çalışmam.

Yani Proje Resim ile anlatılacak olursa şöyle:

 

Arduino üzerindeki şeması:

 

Arduino icin yazdığım Kod:

#include <IRremote.h>
 #include <SoftwareSerial.h>
 SoftwareSerial myBluetooth(0, 1); // RX, TX

int ledpin=9;
 char BlueToothDeger;

// Infraredden gönderilecek değerler
 IRsend irsend;
 //ON_OFF
 unsigned int on[100] = {1300,400,1300,350,500,1200,1300,350,1300,350,1300,400,450,1200,450,1200,500,1200,450,1200,1250,400,1300,7050,1300,350,1300,400,450,1200,1300,350,1300,400,1300,350,450,1200,500,1200,450,1200,500,1200,1300,350,1250,7100,1300,350,1300,350,500,1200,1300,350,1300,350,1300,400,450,1200,450,1200,500,1200,450,1200,1300,350,1300,7050,1300,400,1250,400,450,1200,1300,400,1300,350,1250,400,500,1200,450,1200,450,1200,500,1200,1300,350,1300,7050,1300,350,1300,};
 //LAMP
 unsigned int lamp_on[100] = {1300,400,1300,350,450,1200,1300,400,1300,350,450,1200,500,1200,450,1200,450,1200,500,1200,1300,350,450,7900,1300,350,1300,350,450,1250,1300,350,1300,350,500,1200,450,1200,450,1250,450,1200,450,1200,1300,400,450,7850,1300,400,1300,350,450,1200,1300,400,1300,350,450,1200,450,1250,450,1200,450,1200,500,1200,1300,350,450,7900,1300,350,1300,400,450,1200,1300,350,1300,400,450,1200,450,1200,500,1200,450,1200,450,1200,1300,400,450,7850,1300,400,1300,};
 //LEDs
 unsigned int led_on[96] = {1300,350,1350,350,450,1200,1300,350,1350,350,450,1200,500,1150,1350,350,450,1200,500,1150,500,1200,450,7850,1350,350,1300,350,500,1150,1350,350,1300,350,500,1150,500,1200,1300,350,500,1150,500,1200,500,1150,500,7850,1300,350,1350,350,450,1200,1300,350,1350,350,450,1200,500,1150,1350,350,500,1150,500,1150,500,1200,500,7800,1350,350,1300,350,500,1200,1300,350,1300,350,500,1200,450,1200,1300,350,500,1200,450,1200,500,1150,500,};

//A - Kirmizi
 unsigned int led_a[96] = {1300,350,1300,400,450,1200,1250,400,1300,400,450,1200,450,1200,500,1200,1300,350,450,1200,500,1200,450,7850,1300,400,1300,350,450,1200,1300,400,1300,350,450,1250,450,1200,450,1200,1300,400,450,1200,450,1200,500,7850,1250,400,1300,400,450,1200,1300,350,1300,400,450,1200,450,1200,500,1200,1300,350,450,1200,500,1200,400,7950,1250,400,1300,350,450,1250,1250,400,1300,350,500,1200,450,1200,450,1200,1300,400,400,1250,450,1200,500,};
 //B - Yesil
 unsigned int led_b[100] = {1300,350,1300,400,450,1200,1300,350,1300,400,450,1200,450,1200,500,1200,450,1200,1300,350,500,1200,450,7850,1350,350,1300,350,500,1200,1300,350,1300,350,500,1200,450,1200,450,1200,500,1200,1300,350,450,1200,500,7850,1300,350,1300,400,450,1200,1300,350,1300,400,450,1200,450,1250,450,1200,450,1200,1300,350,500,1200,450,7900,1300,350,1300,350,500,1200,1300,350,1300,350,500,1200,450,1200,450,1200,500,1200,1300,350,450,1200,500,7850,1300,350,1350,};
 //C - Mavi
 unsigned int led_c[96] = {1300,350,1300,400,450,1200,1300,350,1300,400,450,1200,450,1200,500,1200,450,1200,450,1200,500,1200,1300,7000,1300,400,1300,350,450,1250,1250,400,1300,350,450,1200,500,1200,450,1200,500,1200,450,1200,450,1200,1300,7050,1250,400,1300,400,450,1200,1300,350,1300,400,450,1200,450,1200,500,1200,450,1200,450,1200,500,1200,1300,7000,1300,400,1300,350,500,1200,1300,350,1300,350,450,1250,450,1200,450,1200,500,1200,400,1250,450,1200,1300,};

void setup() {
 //Serial.begin(9600); // Eger Serial Port üzerinden veri alış-verişi yapacak isek
 myBluetooth.begin(9600); // Bluetooth üzerinden veri alış-verişi yapacak isek
 pinMode(ledpin,OUTPUT);
 }

void loop() {
 if (myBluetooth.available())
 {
 BlueToothDeger=myBluetooth.read();
 switch(BlueToothDeger)
 {
 //ON_OFF
 case 'x':
 irsend.sendRaw(on,100,38);
digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
 digitalWrite(ledpin,LOW); //Ledpin sönsüm
 break;

case 'q':
 irsend.sendRaw(on,100,38);
 digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
 digitalWrite(ledpin,LOW); //Ledpin sönsün

//LAMP
 case 'y':
 irsend.sendRaw(lamp_on,100,38);
 digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
 digitalWrite(ledpin,LOW); //Ledpin sönsüm
 break;

case 'w':
 irsend.sendRaw(lamp_on,100,38);
 digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
 digitalWrite(ledpin,LOW); //Ledpin sönsün

//LED
 case 'c':
 irsend.sendRaw(led_on,96,38);
 digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
 digitalWrite(ledpin,LOW); //Ledpin sönsüm
 break;

case 'v':
 irsend.sendRaw(led_on,96,38);
 digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
 digitalWrite(ledpin,LOW); //Ledpin sönsün

//A
 case 'r':
 irsend.sendRaw(led_a,96,38);
 digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
 digitalWrite(ledpin,LOW); //Ledpin sönsüm
 break;

case 'e':
 irsend.sendRaw(led_a,96,38);
 digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
 digitalWrite(ledpin,LOW); //Ledpin sönsün

//B
 case 'b':
 irsend.sendRaw(led_b,100,38);
 digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
 digitalWrite(ledpin,LOW); //Ledpin sönsüm
 break;

case 't':
 irsend.sendRaw(led_b,100,38);
 digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
 digitalWrite(ledpin,LOW); //Ledpin sönsün

//C
 case 'n':
 irsend.sendRaw(led_c,96,38);
 digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
digitalWrite(ledpin,LOW); //Ledpin sönsüm
 break;

case 'z':
 irsend.sendRaw(led_c,96,38);
 digitalWrite(ledpin,HIGH); //Ledpin yansın
 delay(50);
 digitalWrite(ledpin,LOW); //Ledpin sönsün

default:
 delay(50);// bir sonraki veriyi hazırlamak için
 }
 }
 }

 

Devrenin yapilmis hali:

 

ve Samsung Galaxy icin yazdigim Android App:

Kisaca calismasi söyle:

Android üzerindeki Buttonlara tıklandığında Samsung Glaxy içindeki Bluetoth üzerinden , karşıdaki Devredeki Bluetooth HC-05 Modulüne Char tipinde veri gidiyor.Her button ayri bir Char tipinde veri gönderiyor.

Bu gelen Char tipindeki veriler HC-05 tarafindan alınıp TX-TX bağlantısı veya Serial iletişim ile  Atmage328’e gidiyor. Atmage328 bu gelen veriye göre IR Led üzerinden Oturma odadasındaki Lambanın anlayacağı sinyali (Dezimal sayi dizisi halinde ) gönderiyor.

Oturma odası Lambasının IR uzaktan kumandasının orjinal kodlarını Deceoder Edip bunlari çözümlemeyi yine Arduino üzerine takdığım IR alıcı bir ayrı devre ile gerçekleştirdim.Bu işlemi yapabilmek için öncelikle bizim orjinal IR uzaktan kumandanın gönderdiği sinyalin Decoder edilmesi gerekiyor.Bu ayri bir konu youtubede Arduino IR Decoder yazarsanız bir çok örnek bulabilirsiniz. Bu işi eğer başarırsanız artik Akıllı Telefonlarla(Android işletim sistemli) Robot veya başka küçük eşyaları kontrol edebiliriz.

Güzel olmaz mı?

3 Antworten auf „Android+Arduino+BlueTooth+IR led üzerinden Lamba Kontrolü“

  1. merhaba. bu şekilde hobi uygulamalarımda kullanmak için android program yazmayı öğrenmek istiyorum. tavsiye edebileceğiniz kaynak varmı? kitap olarak

Kommentare sind geschlossen.