Mengenal Common Gateway Interface



Common Gateway Interface, disingkat CGI, merupakan kumpulan standard yang digunakan untuk menjabarkan dan menentukan bagaimana pertukaran informasi antara web server dengan custom script. CGI menjadi standard untuk program external gateway sebagai interface dengan server, semisal HTTP server.
Untuk lebih memahami prinsip dari CGI, dapat dicoba dengan melakukan click pada suatu link halaman web atau URL.
  • Setelah melakukan click link suatu halaman web, browser akan menghubungi HTTP web server dan meminta URL
  • Selanjutnya web server akan melakukan parsing URL dan akan mencari berkas link tersebut, bila ditemukan informasi tersebut akan diteruskan ke browser, sebaliknya bila tidak ditemukan akan diberikan pesan error yang menandakan bahwa ada kesalahan permintaan
  • Kemudian web browser akan menampilkan hasilnya, baik URL yang diminta oleh pengguna maupun pesan error berkas tidak ditemukan
Meski begitu, dimungkinkan untuk mengatur suatu HTTP server untuk membatasi, tidak memberikan akses beberapa jenis berkas yang diminta. Fungsi tersebut disebut dengan istilah Common Gateway Interface, atau CGI, dan untuk program yang dipanggil disebut CGI script. Berikut ini adalah gambar untuk memperjelas dalam memahami arsitektur program CGI

<img src="cgi_architecture_program.png" alt="cgi_architecture_program">


Untuk program CGI tersebut dapat berupa script Python, PERL, Shell, C, C++, atau script lainnya.

Tutorial Dasar Arduino Mengendalikan Motor Servo



Pada tutorial Arduino kali ini akan diulas mengenai dasar mengendalikan motor servo. Motor servo merupakan sebuah motor dengan sistem feedback close loop. Dimana posisi dari motor servo akan disampaikan kembali ke rangkaian kendali yang ada di dalam motor servo tersebut. Poros motor dihubungkan dengan rangkaian kendali, sehingga jika putaran poros belum sampai pada posisi yang diperintahkan maka rangkaian kendali akan terus memberikan perbaikan posisi, hingga poros motor mencapai posisi yang diperintahkan. Dalam tutorial ini akan dibahas tentang bagaimana mengendalikan motor servo dengan menggunakan potentiometer maupun melalui komunikasi serial dengan komputer.

Mengendalikan Motor Servo dengan Potentiometer
Percobaan pertama ialah mengendalikan motor servo dengan potentiometer yang terhubung ke board Arduino. Arduino akan membaca nilai tegangan dari potentiometer sebagai data ADC. Nilai data ADC tersebut akan dipetakan dalam perbandingan sudut antara 0 hingga 179 derajat. Semakin besar tegangan, semakin besar nilai ADC, sehingga semakin besar pula sudut yang dibentuk oleh poros motor servo tersebut.
Untuk pengkabelan ialah sebagai berikut.
  • Pin Arduino 9 dihubungkan dengan kabel signal data motor servo
  • Pin GND Arduino dihubungkan dengan kabel ground motor servo juga salah satu potentiometer
  • Pin VCC 5 volt Arduino dihubungkan dengan kabel sumber tegangan motor servo juga salah satu potentiometer
  • Pin analog A0 Arduino membaca tegangan dari potentiometer
Sedangkan untuk source code (sketch) Arduino mengendalikan motor servo dengan potentiometer ialah sebagai berikut.

/*
Program mengendalikan motor servo
menggunakan potentiometer

Loki Lang
*/

#include <Servo.h>

Servo langServo;
int val;

void setup()
{
  Serial.begin(9600);
  langServo.attach(9);
}

void loop()
{
  val = analogRead(A0);
  val = map(val, 0, 1023, 0, 179);
  Serial.print("Sudut motor servo ");
  Serial.println(val);
  langServo.write(val);
  delay(15);
}



Pemetaan untuk sudut motor servo dari nilai ADC 0 hingga 1023 dipetakan menjadi antara 0 hingga 179 derajat.

Mengendalikan Motor Servo malalui Serial Monitor
Percobaan kedua ialah mengendalikan motor servo dengan komputer via komunikasi serial. Dengan menggunakan Serial Monitor Arduino IDE, untuk memberikan input nilai sudut dari motor servo tersebut.
Untuk pengkabelan ialah sebagai berikut.
  • Pin Arduino 9 dihubungkan dengan kabel signal data motor servo
  • Pin GND Arduino dihubungkan dengan kabel ground motor servo
  • Pin VCC 5 volt Arduino dihubungkan dengan kabel sumber tegangan motor servo
Sedangkan untuk source code (sketch) Arduino mengendalikan motor servo melalui Serial Monitor ialah sebagai berikut.

/*
Program mengendalikan motor servo
melalui Serial Monitor Arduino IDE

Loki Lang
*/

#include <Servo.h>

Servo langServo;
int val;
String langString = "";

void setup()
{
  Serial.begin(9600);
  langServo.attach(9);
}

void loop()
{
  int degree;
  Serial.print("Masukkan sudut motor servo ");
  int langChar = Serial.read();
  if(isDigit(langChar))
  {
    langString += (char)langChar;   
  }
  if(langChar == '\n')
  {
    val = langString.toInt();
    Serial.println(val);
    langString = "";
    if(val > 179)
    {
      val = 179;
    }
    for(degree = 0; degree = val; degree++)
    {
      langServo.write(degree);
      delay(15);
    }
    for(degree = val; degree = 0; degree--)
    {
      langServo.write(degree);
      delay(15);
    }
  }
}



Berbeda dengan cara yang pertama, pada cara yang kedua, selain menggunakan Serial Monitor Arduino IDE, perubahan sudut motor servo juga dilakukan secara bertahap. Dengan menggunakan perulangan for(), memungkinakn perubahan sudut motor servo sebesar 1 derajat, hingga mencapai set point sudut yang diinginkan. Hal ini akan menghasilkan perubahan sudut yang relatif lebih halus dibandingkan dengan cara yang pertama.