Temel IR İletişimi Kızılötesi (IR)
alıcı verici
Alıcı-verici sistemleri genellikle kızılötesi veya
radyo frekans sinyallerini kullanır. Kızılötesi alıcı verici sistemi LED teknolojisi
ile gerçekleştirilmektedir. LED’ler elektrik enerjisini elektromanyetik
enerjiye yani ışığa dönüştüren yarı iletken devre elemanıdır ve yaydığı elektromanyetik
dalga frekansı, spektrumun görünür ya da görünür olmayan ışık bölgesine denk düşer.
Görünür bölgeye ait sarı, yeşil, kırmızı, mavi renkte LED’ler olduğu gibi kızıl ötesi (IR) veya mor ötesi (UV) ışık
yayan LED'lerde bulunur. Verici devresinde belli bir frekansla elektromanyetik
dalga yayan bir LED vardır ve alıcı tarafında ise bu dalgayı algılayan ve
algılama sonucunu 1 ya da 0 gibi lojik çıkış vererek devamında bağlı olduğu bir eleman vardır.
Radyo frekansı ile haberleşme ise
elektromanyetik dalgalar yoluyla gerçekleştirilir ve haberleşme yapılan frekans
bandı telekomünikasyon kurumunun belirlediği Frekans Tahsis Tablosu'na göre seçilir. Telekomünikasyon kurumu tarafından yayınlanan "kısa mesafe
erişimli telsiz cihazlarının kurma ve kullanma esasları" hakkındaki
yönetmelikte, kurumun kabul ettiği standart ve teknik özelliklere uygun olmak
kaydıyla hangi frekans bantlarında ruhsatsız ve izinsiz olarak yayın
yapılabileceği belirtilmiştir. Buna göre, UHF bandının 433.05 MHz ile 434.79
MHz frekansları arasında 10 mW verici gücünü aşmamak koşuluyla radyo frekansı ile haberleşme
yapılabilir. Uzaktan kontrol sistemlerinde bilgi sinyali, şifrelenerek ortama
iletilir. Bu sayede, aynı frekans bandını kullanan diğer alıcı sistemlerin bu
sinyalden etkilenmemesi sağlanır. Şifreleme işlemi, özel kodlayıcı-kod çözücü
entegreler ile yapılabileceği gibi, mikrodenetleyici kullanılarak da yapılabilir.
IR Transmitter
IR LED, belirli kızılötesi frekans aralığında kızılötesi
ışık yayar. Bu ışığı insan gözüyle görmek mümkün değildir. Infrared dalga
boyu sadece 700nm - 1mm aralıklarında ve normal görünür ışık dışındadır. Isı
üreten her şey gibi insan vücudu da kızılötesi ışık yayar. Kızılötesi o
odaklı olabilir gibi yansıyan ve görünür ışık gibi polarize, görünür ışık ile
aynı özelliklere sahiptir. Kızılötesi ışık yaymak dışında, IR LED normal bir
LED’lere benzer ve aynı zamanda normal bir LED gibi çalışır, bir LED gibi 20 mA akım
tüketir yani 3 V gerilim üretir.
IR Alıcı ve Verici Simülasyonu |
IR Transmitter Devre Şeması
Bu devrede 1 K R1, R2 20 K ve 1 nF C1 kullanıldı. Bu formül kullanılarak devre eleman değerleri hesaplanabilir: 1.44 / ((R1 + 2 * R2) * C1)
IR Verici Devre Şeması |
IR Receiver
IR Receiver modülü kızılötesi dalgaları alır ve
çıkışını değiştirir. Alıcı 38 Khz frekans oranında kızılötesi dalgaları algılar. Alıcının çıkışı LOW ise bir kızılötesi dalgası algılanmamıştır. HIGH olduğu durumda ise kızılötesi dalgası algılandığı anlamına gelir. IR alıcının Ground, Vs ve çıkış pini olmak üzere üç pini vardır.
IR Receiver Devre Şeması
IR alıcı devresinde alıcıyı test etmek için,
IR Receiver çıkışına bir LED bağlamak gerekir. IR çıkışı OFF olduğunda LED kapalı, çıkış ON olduğunda, LED açık olacaktır. Bu devrede BC557 PNP transistör
kullanmak gerekir. PNP transistör tabanına gerilim uygulanamadığında kapalı bir anahtar gibi davranır. NPN transistör PNP transistörün tersine davranır. Yani normalde IR Receiver çıkışı HIGH olduğunda transistör açık anahtar bir gibi davranır ve LED kapalı olacaktır. IR Receiver kızılötesini algıladığında kısa sürede, çıkış LOW olur ve
transistör kapalı bir anahtar gibi davranır ve LED açık olacaktır. Transistör ile uygun akım sağlamak için 10 K direnç kullanılır ve bir 470 ohm akım sınırlandırıcı direnç kullanılır.
Yapılan uygulama ile SensoDuino Android uygulaması kullanılarak TV sesini üzerinde ayar yapmayı sağlıyor. TV markası Sony, NEC, Panasonic vb. gibi önde gelen üreticileri tarafından desteklenen birçok uzaktan kumanda protokolleri IRremote.h kütüphanesi içerisinde mevcuttur.
Arduino Sketch:
IR Alıcı Devre Şeması |
Yapılan uygulama ile SensoDuino Android uygulaması kullanılarak TV sesini üzerinde ayar yapmayı sağlıyor. TV markası Sony, NEC, Panasonic vb. gibi önde gelen üreticileri tarafından desteklenen birçok uzaktan kumanda protokolleri IRremote.h kütüphanesi içerisinde mevcuttur.
SensoDuino Uygulaması Kullanım Ekranı |
#include#define REMOTE_CODE 0x1CE3E817 //burayı cihazınız IR kodu ile değiştirin float val_1, val_2, val_3; IRsend irsend; void setup() { Serial.begin(9600); // 9600 varsayılan baud hızı (HC-06 Bluetooth modülü için) Serial.println("ANDROID SENSOR TIP NO"); Serial.println("1- ACCELEROMETER (m/s^2 - X,Y,Z)"); Serial.println("2- MAGNETIC_FIELD (uT - X,Y,Z)"); Serial.println("3- ORIENTATION (yaw, pitch, roll)"); Serial.println("4- GYROSCOPE (rad/s - X,Y,Z)"); Serial.println("5- LIGHT (SI lux)"); Serial.println("6- PRESSURE (hPa millibar)"); Serial.println("7- DEVICE TEMPERATURE (C)"); Serial.println("8- PROXIMITY (Centimeters or 1,0)"); Serial.println("9- GRAVITY (m/s^2 - X,Y,Z)"); Serial.println("10- LINEAR_ACCELERATION (m/s^2 - X,Y,Z)"); Serial.println("11- ROTATION_VECTOR (X,Y,Z)" ); Serial.println("12- RELATIVE_HUMIDITY (%)"); Serial.println("13- AMBIENT_TEMPERATURE (C)"); Serial.println("14- MAGNETIC_FIELD_UNCALIBRATED (uT - X,Y,Z)"); Serial.println("15- GAME_ROTATION_VECTOR (X,Y,Z)"); Serial.println("16- GYROSCOPE_UNCALIBRATED (rad/s - X,Y,Z)"); Serial.println("17- SIGNIFICANT_MOTION (1,0)"); Serial.println("95 - TIME (H,M,S)"); Serial.println("96 - DATE (Y,M,D)"); Serial.println("97 - AUDIO (Vol.)"); Serial.println("98 - GPS1 (lat., long., alt.)"); Serial.println("99 - GPS2 (bearing, speed, date/time)"); Serial.flush(); pinMode(13, OUTPUT); } void loop() { Serial.flush(); int sensorTip = 0; unsigned long logSayac = 0L; char getChar = ' '; // serialden okunan değer // seriale veri gelmesini bekle if (Serial.available() < 1) return; getChar = Serial.read(); if (getChar != '>') return; sensorTip = Serial.parseInt(); // sensör tipini oku logSayac = Serial.parseInt(); // tüm sensör okuma sayısı val_1 = Serial.parseFloat(); // 1. sensör değeri val_2 = Serial.parseFloat(); // 2. sensör değeri val_3 = Serial.parseFloat(); // 3. sensör değeri if (sensorTip != 97) return; // Sensör değeri okunmadığı zaman geri dön yeniden oku int sesValue = analogRead(A5); float volLimit = sesValue * (32000 / 1023.0); // SensoDuino Audio sensöründen dönen değer max 32K int sesSeviye = val_1; // SensoDuino ile okunan ses if (sesSeviye > volLimit) // potansiyometreden okunan değeri eşlik değerle karşılaştır { digitalWrite(13, HIGH); // IR gönderirken LED açık delay(200); for (int i = 0; i < 3; i++) { // IR kodunu gönderir. irsend.sendNEC(REMOTE_CODE , 32); delay(200); // uzaktan kumanda protokolü ile eşleşen IRremote //fonksiyonları (istenilen cihaz markasına uygun) // irsend.sendNEC(REMOTE_CODE, REMOTE_BIT); // irsend.sendSony(REMOTE_CODE, REMOTE_BIT); // irsend.sendRC5(REMOTE_CODE, REMOTE_BIT); // irsend.sendRC6(REMOTE_CODE, REMOTE_BIT); } } digitalWrite(13, LOW); // IR verici kapandığında LED kapalı }
IR Receiver ve Transmitter Fritzing Şeması |
Bir sonraki yazımda görüşmek üzere...