CGI Common Gateway Interface,
adalah suatu Antarmuka
(interface) untuk menjalankan program dari luar, software atau gateaway di
Server. Suatu cara bagaimana Server Web memperoleh data dari dan mengirim data
ke database, dokumen atau program lainnya, dan menayangkannya ke pemakai. Atau
CGI adalah sistim program untuk Web CGI ditulis dalam bahasa program Perl Practical Extraction
and Report Language, dan merupakan himpunan
protocols (aturan) yang memungkinkan client web menjalankan program2
di Server Web dan memperoleh hasilnya.
Interface ini telah digunakan oleh WWW sejak 1993.-
Bekerjanya CGI secara umum adalah seperti: client Web (pengguna) memasukan
masukan data (bila dibutuhkan, beberapa program CGI tidak membutuhkan masukan,
seperti contoh terdahulu), yang dikirim ke server berlandaskan beberapa protocol.
Server menampung masukan, lalu menyalurkannya ke program CGI. Kemudian program
CGI dijalankan (mis: mengirim e-mail atau menjalankan program pelacak (search).
Gambaran
tentang bagaimana konsep kerja CGI adalah:
Gambar 1.
A. Arduino
Arduino
adalah kit elektronik atau papan rangkaian elektronik open source
yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler
dengan jenis AVR dari perusahaan Atmel.
Mikrokontroler
itu sendiri adalah chip atau IC (integrated circuit) yang bisa diprogram
menggunakan komputer. Tujuan menanamkan program pada mikrokontroler adalah agar
rangkaian elektronik dapat membaca input, memproses input tersebut dan kemudian
menghasilkan output sesuai yang diinginkan. Jadi mikrokontroler bertugas sebagai
‘otak’ yang mengendalikan input, proses dan output sebuah rangkaian elektronik.
Mikrokontroler
ada pada perangkat elektronik di sekeliling kita. Misalnya handphone, MP3
player, DVD, televisi, AC, dll. Mikrokontroler juga dipakai untuk keperluan
mengendalikan robot. Baik robot mainan, maupun robot industri. Karena komponen
utama Arduino adalah mikrokontroler, maka Arduino pun dapat diprogram menggunakan
komputer sesuai kebutuhan kita.
Kegunaan
Arduino tergantung kepada kita yang membuat program. Arduino bisa digunakan
untuk mengontrol LED, bisa juga digunakan untuk mengontrol helikopter. Contoh
yang sudah pernah dibuat adalah MP3 player, pengontrol motor, mesin CNC,
monitor kelembaban tanah, pengukur jarak, penggerak servo, balon udara,
pengontrol suhu, monitor energi, statiun cuaca, pembaca RFID, drum elektronik,
GPS logger, monitoring bensin dan masih banyak lagi. Silahkan buka Google,
Youtube atau lihat di
http://www.freeduino.org
Kelebihan Arduino
- Tidak perlu perangkat chip programmer karena di
dalamnya sudah ada bootloader yang akan menangani upload program dari
komputer.
- Sudah memiliki sarana komunikasi USB, sehingga
pengguna Laptop yang tidak memiliki port serial/RS323 bisa menggunakan
nya.
- Bahasa pemrograman relatif mudah karena
software Arduino dilengkapi dengan kumpulan library yang cukup lengkap.
- Memiliki modul siap pakai (shield) yang bisa
ditancapkan pada board Arduino. Misalnya shield GPS, Ethernet, SD Card,
dll.
Bahasa Pemrograman Arduino Bahasa
pemrograman Arduino adalah bahasa C. Tetapi bahasa ini sudah dipermudah
menggunakan fungsi-fungsi yang sederhana sehingga pemula pun bisa
mempelajarinya dengan cukup mudah.
B.
Penjelasan
Singkat dalam pembuatan Simolator Lampu
Langkah awal dalam
membuat projek dan estensi.cgi kita dapat menggunakan bahasa pemograman c/c++
dari microsoft visual studio, dengan mengetik score coding sebagai berikut.
#using <System.dll>
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <conio.h>
#include <string>
using namespace System;
using namespace System::IO::Ports;
using namespace std;
int main(){
char *data;
int a,b,c,d,e;
cout<<"Content-Type:b
text/html"<<endl<<endl;
cout<<"<title>Loding</title>"<<endl;
//cout<<"<h3>Loding</h3>"<<endl;
data = getenv("QUERY_STRING");
if(data==NULL)
{
cout <<"<p>Kesalahan
pada pengiriman data<p>"<<endl;
}
else if
(sscanf (data,"a=%ld & b=%ld & c=%ld
& d=%ld & e=%ld",&a,&b,&c,&d,&e) !=5)
{
cout <<"<p>
Data salah, masukkan data numerik</p> "<<endl;
}
else
{
if (a==1){
SerialPort^ mySerialPort = gcnew
SerialPort("COM1");
mySerialPort->BaudRate = 9600;
mySerialPort->Parity = Parity::None;
mySerialPort->StopBits = StopBits::One;
mySerialPort->DataBits = 8;
mySerialPort->Handshake =
Handshake::None;
mySerialPort->Open();
mySerialPort->Write("c");
mySerialPort->Close();
}else{
SerialPort^ mySerialPort = gcnew
SerialPort("COM1");
mySerialPort->BaudRate = 9600;
mySerialPort->Parity = Parity::None;
mySerialPort->StopBits = StopBits::One;
mySerialPort->DataBits = 8;
mySerialPort->Handshake =
Handshake::None;
mySerialPort->Open();
mySerialPort->Write("d");
mySerialPort->Close();
}
if (b==1){
SerialPort^ mySerialPort = gcnew
SerialPort("COM1");
mySerialPort->BaudRate = 9600;
mySerialPort->Parity = Parity::None;
mySerialPort->StopBits = StopBits::One;
mySerialPort->DataBits = 8;
mySerialPort->Handshake =
Handshake::None;
mySerialPort->Open();
mySerialPort->Write("e");
mySerialPort->Close();
}else{
SerialPort^ mySerialPort = gcnew
SerialPort("COM1");
mySerialPort->BaudRate = 9600;
mySerialPort->Parity = Parity::None;
mySerialPort->StopBits = StopBits::One;
mySerialPort->DataBits = 8;
mySerialPort->Handshake =
Handshake::None;
mySerialPort->Open();
mySerialPort->Write("f");
mySerialPort->Close();
}
if (c==1){
SerialPort^ mySerialPort = gcnew
SerialPort("COM1");
mySerialPort->BaudRate = 9600;
mySerialPort->Parity = Parity::None;
mySerialPort->StopBits = StopBits::One;
mySerialPort->DataBits = 8;
mySerialPort->Handshake =
Handshake::None;
mySerialPort->Open();
mySerialPort->Write("g");
mySerialPort->Close();
}else{
SerialPort^ mySerialPort = gcnew
SerialPort("COM1");
mySerialPort->BaudRate = 9600;
mySerialPort->Parity = Parity::None;
mySerialPort->StopBits = StopBits::One;
mySerialPort->DataBits = 8;
mySerialPort->Handshake =
Handshake::None;
mySerialPort->Open();
mySerialPort->Write("h");
mySerialPort->Close();
}
if (d==1){
SerialPort^ mySerialPort = gcnew
SerialPort("COM1");
mySerialPort->BaudRate = 9600;
mySerialPort->Parity = Parity::None;
mySerialPort->StopBits = StopBits::One;
mySerialPort->DataBits = 8;
mySerialPort->Handshake =
Handshake::None;
mySerialPort->Open();
mySerialPort->Write("a");
mySerialPort->Close();
}else{
SerialPort^ mySerialPort = gcnew
SerialPort("COM1");
mySerialPort->BaudRate = 9600;
mySerialPort->Parity = Parity::None;
mySerialPort->StopBits = StopBits::One;
mySerialPort->DataBits = 8;
mySerialPort->Handshake =
Handshake::None;
mySerialPort->Open();
mySerialPort->Write("b");
mySerialPort->Close();
}
if (e==1){
SerialPort^ mySerialPort = gcnew
SerialPort("COM1");
mySerialPort->BaudRate = 9600;
mySerialPort->Parity = Parity::None;
mySerialPort->StopBits = StopBits::One;
mySerialPort->DataBits = 8;
mySerialPort->Handshake =
Handshake::None;
mySerialPort->Open();
mySerialPort->Write("i");
mySerialPort->Close();
}else{
SerialPort^ mySerialPort = gcnew
SerialPort("COM1");
mySerialPort->BaudRate = 9600;
mySerialPort->Parity = Parity::None;
mySerialPort->StopBits = StopBits::One;
mySerialPort->DataBits = 8;
mySerialPort->Handshake =
Handshake::None;
mySerialPort->Open();
mySerialPort->Write("j");
mySerialPort->Close();
}
cout<<"<meta
http-equiv='refresh' content='2; url=http://192.168.1.2/lampu.php?a="
<<a<< "&b="
<<b<< "&c="
<<c<< "&d="
<<d<< "&e="
<<e<<"/'>"<<endl;
return 0;}
}
Setelah score coding telah selesai
di ketik, langkah selanjutnya, lakukan pengcompilan atau program di run... lalu
pada bagian projek file kita rubah file exe menjadi cgi. Kemudian filenya di
copy kedalam folder cgi di program file micrsosft.
Gambar 2. Sketch Arduino 0022
int
led1 = 11;
int
led2 = 12;
int
led3 = 13;
void
setup(){
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
Serial.begin(9600);
}
void
loop(){
int data = Serial.read();
if (data=='a'){
digitalWrite(led1,HIGH);
}else if(data=='s'){
digitalWrite(led1,LOW);
}else if(data=='d'){
digitalWrite(led2,HIGH);
}else if(data=='f'){
digitalWrite(led2,LOW);
}else if(data=='g'){
digitalWrite(led3,HIGH);
}else if(data=='h'){
digitalWrite(led3,LOW);
}
}
1. Tampilan Web CGI pertama kali dijalankan, dengan menggunakan aplikasi web browser mozila ferifok, selanjutnya mamasukan alamat ip address 192.168.1.2/lampu.
Gambar. Awal Web CGI dijalankan
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>CGI</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<style type="text/css">
<!--
body {
background-image: url(gambar1.jpg);
}
.style1 {
color: #FFFFFF;
font-weight: bold;
font-size: 14px;
}
-->
</style></head>
<body>
<div align="center" id="x"> Lamp Controller</div>
<a href="proses.php?a=0&b=0&c=0"></a>
<div id="tombol">
<div align="left">
<p align="center"><a href="proses.php?a=0&b=0&c=0"><img src="image.jpg" alt="" width="98" height="98"></a></p>
</div>
</div>
<p><a href="proses.php?a=0&b=0&c=0"></a></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p class="style1">Created By : Kelompok CGI >>> Tengku Musri >> Syahrizan >> Sukarno </p>
</body>
</html>
Gambar. Main menu Web CGI
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>CGI</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<style type="text/css">
<!--
body {
background-image: url(Led%20Berjalan.JPG);
}
-->
</style></head>
<body>
<div align="center" id="x"><blink> Lamp Controller is Ready</blink></div>
<div id="wrapper">
<div id="row">
<div id="row_2">
<a href="http://192.168.1.2/cgi-bin/control_lampu.cgi?a=1&b=0&c=0"><div id="merah_off"></div></a>
</div>
</div>
<div id="row">
<div id="row_2">
<a href="http://192.168.1.2/cgi-bin/control_lampu.cgi?a=0&b=1&c=0"><div id="kuning_off"></div></a>
</div>
</div>
<div id="row">
<div id="row_2">
<a href="http://192.168.1.2/cgi-bin/control_lampu.cgi?a=0&b=0&c=1"><div id="hijau_off"></div></a>
</div>
</div>
</div>
</body>
</html>
Gambar. Main menu Web CGI
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>CGI</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<style type="text/css">
<!--
body {
background-image: url(Led%20Berjalan.JPG);
}
-->
</style></head>
<body>
<div align="center" id="x"><blink> Lamp Controller is Ready</blink></div>
<div id="wrapper">
<div id="row">
<div id="row_2">
<a href="http://192.168.1.2/cgi-bin/control_lampu.cgi?a=1&b=0&c=0"><div id="merah_off"></div></a>
</div>
</div>
<div id="row">
<div id="row_2">
<a href="http://192.168.1.2/cgi-bin/control_lampu.cgi?a=0&b=1&c=0"><div id="kuning_off"></div></a>
</div>
</div>
<div id="row">
<div id="row_2">
<a href="http://192.168.1.2/cgi-bin/control_lampu.cgi?a=0&b=0&c=1"><div id="hijau_off"></div></a>
</div>
</div>
</div>
</body>
</html>