Teknik Elektro LinksBarrier-Gate & Turnstile Interface, Thermostat, Relay Driver, Microcontroler Board

Membaca Data Remote Infra Merah Melalui Port Serial RS232

Meremote sebuah komputer menggunakan remote infra merah sangatlah mudah, yang kita butuhkan hanyalah sebuah program antarmuka dan rangkaian sensor infra merah yang dilengkapi dengan rangkaian antarmuka komunikasi serial RS232 seperti gambar berikut ini.

serial_ir

Komponen utama rangkaian di atas adalah TSOP 1738 yakni sebuah modul penerima infra merah yang mampu menerima cahaya infra merah yang termodulasi di kisaran 40kHz. Komponen ini banyak tersedia di toko-toko komponen elektronik karena termasuk spare-part televisi. Rangkaian di atas mengambil daya dari port serial sehingga tidak memerlukan catudaya eksternal. Sebagai “penyesuai” tegangan, digunakan komponen regulator tegangan 78L05. Komponen 78L05 adalah regulator tegangan 5V dengan kemasa TO-92 (sama seperti transistor FCS9012, BC547, 2N2222).

Pada eksperimen ini saya merangkai skematik rangkaian di atas menggunakan project-board. Remote infra merah yang saya gunakan adalah remote DVD Toshiba. Dari beberapa tipe modul sensor infra merah, TSOP 1738 adalah yang terbaik menurut saya (dari hasil eksperimen). Tapi Anda juga bisa menggunakan modul dengan tipe lain seperti Sharp atau tipe gak jelas seperti yang saya gunakan berikut ini.

serial infra merah winlirc

WinLIRC

WinLIRC adalah sebuah paket program yang dapat kita gunakan untuk menerima dan mengirim sinyal standard remote control infra merah seperti remote TV, DVD Player atau yang lain. Jadi kita dapat mengontrol komputer kita dengan remote control infra merah yang kita miliki. Dan, kita juga dapat mengendalikan perangkat elektronik kita menggunakan komputer.

WinLIRC merupakan versi Windows dari LIRC (Linux Infrared Remote Control). Jadi, bagi Anda pengguna Linux dapat memperoleh paket program dari situs tersebut.

Nah, agar komputer dapat membaca data dan mengenali tombol remote infra merah, langkah-langkahnya adalah sebagai berikut:

  1. Buat rangkaian antarmuka seperti skematik di atas.
  2. Download dan instal program WinLIRC.
  3. Lakukan perekaman data remote control untuk mendapatkan tabel tombol-tombol remote control. Proses perekaman dapat Anda pelajari dari dokumentasi WinLIRC.
  4. Jalankan server WinLIRC.
  5. Buat program untuk berkomunikasi dengan server WinLIRC.

Program Komunikasi WinLIRC

WinLIRC menggunakan socket untuk berkomunikasi. Saya membuat program komunikasi ini menggunakan Lazarus versi 0.9.28 dengan kompiler FreePascal versi 2.2.4. Jika Anda pengguna Delphi, maka Anda dapat menemukan komponen TSocketServer dan TSocketClient pada deretan panel komponen Delphi.

Untuk Lazarus/FreePascal, kita harus melakukan instalasi komponen TSocketClient secara manual. Pada eksperimen ini saya menggunakan komponen versi 0.2.0 yang dapat di download di sini.

Komponen ini dibuat dengan Lazarus 0.9.6 yang menggunakan FPC 1.9.8, oleh karenanya proses kompilasi paket komponen ini menggunakan Lazarus 0.9.28 dengan FPC 2.2.4 akan memunculkan kesalahan sebagai berikut:

C:\lazarus\components\sockets\socketclient.pas(262,33) Error: Illegal qualifier
C:\lazarus\components\sockets\socketclient.pas(262,55) Error: Illegal qualifier
C:\lazarus\components\sockets\socketclient.pas(262,77) Error: Illegal qualifier
C:\lazarus\components\sockets\socketclient.pas(262,99) Error: Illegal qualifier

Untuk mengatasi hal tersebut, edit file socketclient.pasbaris 262, dan ubahlah perintah “tmp[1]” menjadi “tmp.s_bytes[1]“. Demikian juga dengan “tmp[2]“, “tmp[3]“, dan “tmp[4]“.

Setelah itu simpan, kompilasi ulang dan lakukan intalasi. Dan selanjutnya kita bisa membuat contoh aplikasi untuk membaca data sinyal dari remote control yang dikirimkan oleh server WinLIRC.

Program saya buat secara sederhana saja dengan tampilan seperti screenshot berikut ini. Program ini hanya sekedar menguji saja apakah program dapat mengenali penekanan tombol remote control ataukah tidak.

lazarus sensor infra merah

WinLIRC Host Address adalah alamat IP dari komputer dimana rangkaian sensor dihubungkan. Karena eksperimen ini dilakukan tanpa jaringan intranet, maka alamat IP yang digunakan adalah 127.0.0.1 atau localhost.

Port Number adalah nomor port TCP yang digunakan. Nomor port default dari server WinLIRC adalah 8765.

Jika alamat IP dan nomor port perlu disesuaikan, tekan tombol Update Host Adress untuk mengupdate alamat IP dan nomor port TCP agar komunikasi dapat terhubung dengan benar.

Memo digunakan untuk menampilkan data yang dikirim oleh server WinLIRC setiap kali menerima data dari remote infra merah.

Sederhana, bukan? Dan listing program selengkapnya adalah sebagai berikut.

unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
 StdCtrls, SocketClient;

type

 { TForm1 }

 TForm1 = class(TForm)
 Button1: TButton;
 Button2: TButton;
 Edit1: TEdit;
 Edit2: TEdit;
 Label1: TLabel;
 Label2: TLabel;
 Label3: TLabel;
 Label4: TLabel;
 Memo1: TMemo;
 SocketClient1: TSocketClient;
 procedure Button1Click(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 procedure SocketClient1EndOfLineReceived(Sender: TObject);

 private
 { private declarations }
 public
 { public declarations }
 end; 

var
 Form1: TForm1; 

implementation

{ TForm1 }



procedure TForm1.SocketClient1EndOfLineReceived(Sender: TObject);
var
 s: String;
begin
 SocketClient1.readline(s);
 //Sleep(100);
 Memo1.Lines.Add(s);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 try
   SocketClient1.Active:= True;
 except
   ShowMessage('Error: Connection failed!');
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if SocketClient1.Active then
   SocketClient1.Active:= False;
 SocketClient1.Host:= Edit1.Text;
 SocketClient1.Port:= StrToInt(Edit2.Text);
 try
   SocketClient1.Active:= True;
 except
   ShowMessage('Error: Connection failed!');
 end;
end;

initialization
 {$I unit1.lrs}

end.

Pada eksperimen ini saya hanya mendefinisikan empat buah tombol saja yakni Up, Down, Left, dan Right – sekedar untuk membuktikan bahwa:

  1. Rangkaian penerima infra merah dan WinLIRC berfungsi dengan baik.
  2. Komponen TSocketClient dapat sukses diinstalasi menggunakan Lazarus 0.9.28 dan FPC 2.2.4.
  3. Komponen TSocketClient berfungsi dengan baik dalam program aplikasi.

Nah, dengan demikian, selanjutnya kita dapat membuat program aplikasi yang dapat dikontrol dari jarak jauh menggunakan remote infra merah. Contoh aplikasi sederhananya adalah kontrol volume aplikasi WinAmp. Contoh lain adalah remote untuk slide program presentasi.

Terima kasih sudah membaca tulisan saya, semoga bermanfaat.

Selamat berkarya.

 

Add a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>