Rabu, 31 Oktober 2012

Pemrograman Berbasis Arduino

Pada posting kali ini kita akan membahas tentang tata cara menggunakan arduino untuk mengedipkan lampu LED pada suatu rangkaian. Alat yang akan kita gunakan adalah :


1. Arduino
Arduino menggunakan pemrograman dengan bahasa C. Berikut ini adalah sedikit penjelasan yang ditujukan kepada anda yang hanya mempunyai sedikit pengalaman pemrograman dan membutuhkan penjelasan singkat mengenai karakter bahasa C dan software Arduino:

A. Struktur
Setiap program Arduino (biasa disebut sketch) mempunyai dua buah fungsi yang harus ada.
·         void setup( ) {   }
Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika program Arduino dijalankan untuk pertama kalinya.
·         void loop( ) {   }
Fungsi ini akan dijalankan setelah setup (fungsi void setup) selesai. Setelah dijalankan satu kali fungsi ini akan dijalankan lagi, dan lagi secara terus menerus sampai catu daya (power) dilepaskan.

B. Syntax
Berikut ini adalah elemen bahasa C yang dibutuhkan untuk format penulisan.
·         //(komentar satu baris)
Kadang diperlukan untuk memberi catatan pada diri sendiri apa arti dari kode-kode yang dituliskan. Cukup menuliskan dua buah garis miring dan apapun yang kita ketikkan dibelakangnya akan diabaikan oleh program.
·         /*   */(komentar banyak baris)
Jika anda punya banyak catatan, maka hal itu dapat dituliskan pada beberapa baris sebagai komentar. Semua hal yang terletak di antara dua simbol tersebut akan diabaikan oleh program.
·         {   }(kurung kurawal)
Digunakan untuk mendefinisikan kapan blok program mulai dan berakhir (digunakan juga pada fungsi dan pengulangan).
·         ;(titk koma)
Setiap baris kode harus diakhiri dengan tanda titik koma (jika ada titik koma yang hilang maka program tidak akan bisa dijalankan).

C. Variabel
Sebuah program secara garis besar dapat didefinisikan sebagai instruksi untuk memindahkan angka dengan cara yang cerdas. Variabel inilah yang digunakan untuk memindahkannya.
·         int (integer)
Digunakan untuk menyimpan angka dalam 2 byte (16 bit). Tidak mempunyai angka desimal dan menyimpan nilai dari -32,768 dan 32,767.
·         long (long)
Digunakan ketika integer tidak mencukupi lagi. Memakai 4 byte (32 bit) dari memori (RAM) dan mempunyai rentang dari -2,147,483,648 dan 2,147,483,647.
·         boolean (boolean)
Variabel sederhana yang digunakan untuk menyimpan nilai TRUE (benar) atauFALSE (salah). Sangat berguna karena hanya menggunakan 1 bit  dari RAM.
·         float (float)
Digunakan untuk angka desimal (floating point). Memakai 4 byte (32 bit) dari RAM dan mempunyai rentang dari -3.4028235E+38 dan 3.4028235E+38.
·         char (character)
Menyimpan 1 karakter menggunakan kode ASCII (misalnya ‘A’ = 65). Hanya memakai 1 byte (8 bit) dari RAM.

D. Operator Matematika
Operator yang digunakan untuk memanipulasi angka (bekerja seperti matematika yang sederhana).
·         Tanda =
Membuat sesuatu menjadi sama dengan nilai yang lain (misalnya: x = 10 * 2, x sekarang sama dengan 20).
·         Tanda %
Menghasilkan sisa dari hasil pembagian suatu angka dengan angka yang lain (misalnya: 12 % 10, ini akan menghasilkan angka 2).
·         Tanda +
Penjumlahan
·         Tanda -
Pengurangan
·         Tanda *
Perkalian
·         Tanda /
Pembagian


E. Operator Pembanding
Digunakan untuk membandingkan nilai logika.
·         Tanda ==
Sama dengan (misalnya: 12 == 10 adalah FALSE (salah) atau 12 == 12 adalah TRUE (benar))
·         Tanda!=
Tidak sama dengan (misalnya: 12 != 10 adalah TRUE (benar) atau 12 != 12 adalah FALSE (salah))
·         Tanda <
Lebih kecil dari (misalnya: 12 < 10 adalah FALSE (salah) atau 12 < 12 adalah FALSE (salah) atau 12 < 14 adalah TRUE (benar))
·         Tanda >
Lebih besar dari (misalnya: 12 > 10 adalah TRUE (benar) atau 12 > 12 adalah FALSE (salah) atau 12 > 14 adalah FALSE (salah))


F. Struktur Pengaturan
Program sangat tergantung pada pengaturan apa yang akan dijalankan berikutnya, berikut ini adalah elemen dasar pengaturan (banyak lagi yang lain dan bisa dicari di internet):
·         if..else, dengan format seperti berikut ini:
if (kondisi) { }
else if (kondisi) { }
else { }
Dengan struktur seperti diatas program akan menjalankan kode yang ada di dalam kurung kurawal jika kondisinya TRUE, dan jika tidak (FALSE) maka akan diperiksa apakah kondisi pada else if dan jika kondisinya FALSE maka kode pada else yang akan dijalankan.
·         for, dengan format seperti berikut ini:
for (int i = 0; i < #pengulangan; i++) { }
Digunakan bila anda ingin melakukan pengulangan kode di dalam kurung kurawal beberapa kali, ganti #pengulangan dengan jumlah pengulangan yang diinginkan. Melakukan penghitungan ke atas dengan i++ atau ke bawah dengan i–.


G.Digital

·         pinMode(pin, mode)
Digunakan untuk menetapkan mode dari suatu pin, pin adalah nomor pin yang akan digunakan dari 0-19 (pin analog 0-5 adalah 14-19). Mode yang bisa digunakan adalahINPUT atau OUTPUT.
·         digitalWrite(pin, value)
Ketika sebuah pin ditetapkan sebagai OUTPUT, pin tersebut dapat dijadikan HIGH(ditarik menjadi 5 volts) atau LOW (diturunkan menjadi ground).
·         digitalRead(pin)
Ketika sebuah pin ditetapkan sebagai INPUT maka anda dapat menggunakan kode ini untuk mendapatkan nilai pin tersebut apakah HIGH (ditarik menjadi 5 volts) atau LOW(diturunkan menjadi ground).

H. Analog
Arduino adalah mesin digital tetapi mempunyai kemampuan untuk beroperasi di dalam alam analog (menggunakan trik). Berikut ini cara untuk menghadapi hal yang bukan digital.
·         analogWrite(pin, value)
Beberapa pin pada Arduino mendukung PWM (pulse width modulation) yaitu pin 3, 5, 6, 9, 10, 11. Ini dapat merubah pin hidup (on)atau mati (off) dengan sangat cepat sehingga membuatnya dapat berfungsi layaknya keluaran analog. Value (nilai) pada format kode tersebut adalah angka antara 0 ( 0% duty cycle ~ 0V) dan 255 (100% duty cycle ~ 5V).
·         analogRead(pin)
Ketika pin analog ditetapkan sebagai INPUT anda dapat membaca keluaran voltase-nya. Keluarannya berupa angka antara 0 (untuk 0 volts) dan 1024 (untuk 5 volts).

Untuk penjelasan yang lebih mendalam, web Arduino.cc adalah sumber yang lengkap.


2. Kabel Data
Kabel data digunakan untuk mentransfer sketch atau program dari PC ke board arduino.

3. Computer atau PC
Computer atau PC digunakan untuk membuat sketch atau program menggunakan software arduino.

4. PCB (Print Circuit Board)
PCB digunakan untuk membuat suatu rangkaian komponen elektronika. Komponen ini lah yang akan di uji menggunakan pemrograman berbasis arduino.


Berikut ini adalah program yang telah saya uji untuk menyalakan 4 buah LED, kemudian LED tersebut akan berubah polanya ketika kita memutar potensio yang ada di PCB. Jika nilai potensio lebih dari 500, maka 4 lampu LED akan menyala dan mati secara bersamaan, kemudian jika nilai potensio kurang dari 500, maka 4 lampu LED akan menyala secara bergantian.

/*
  Program ini dibuat oleh Rio Sutanto
 */
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int ledPin4 = 10;
void setup() 
{                
  pinMode(ledPin1,OUTPUT);  //deklarasi led output
  pinMode(ledPin2,OUTPUT);
  pinMode(ledPin3,OUTPUT);
  pinMode(ledPin4,OUTPUT);
  Serial.begin(9600);      //connect serial port
}

void loop() 
{
  int val = analogRead (A5);
  Serial.println(val, DEC);
  if(val >= 500)
  {
  digitalWrite(ledPin1, LOW);   // LED menyala
  digitalWrite(ledPin2, LOW);   // LED menyala
  digitalWrite(ledPin3, LOW);   // LED menyala
  digitalWrite(ledPin4, LOW);   // LED menyala
  delay(val);              
  digitalWrite(ledPin1, HIGH);    // LED padam
  digitalWrite(ledPin2, HIGH);    // LED padam
  digitalWrite(ledPin3, HIGH);    // LED padam
  digitalWrite(ledPin4, HIGH);    // LED padam
  delay(val);              
}
else
{
  digitalWrite(ledPin1, LOW);    // LED menyala
  digitalWrite(ledPin2, HIGH);   // LED padam
  digitalWrite(ledPin3, HIGH);   // LED padam 
  digitalWrite(ledPin4, HIGH);   // LED padam
  delay(val);             
  digitalWrite(ledPin1, HIGH);   // LED padam
  digitalWrite(ledPin2, LOW);    // LED menyala
  digitalWrite(ledPin3, HIGH);   // LED padam 
  digitalWrite(ledPin4, HIGH);   // LED padam
  delay(val);             
  digitalWrite(ledPin1, HIGH);   // LED padam
  digitalWrite(ledPin2, HIGH);   // LED padam
  digitalWrite(ledPin3, LOW);    // LED menyala
  digitalWrite(ledPin4, HIGH);   // LED padam
  delay(val);             
  digitalWrite(ledPin1, HIGH);   // LED padam
  digitalWrite(ledPin2, HIGH);   // LED padam
  digitalWrite(ledPin3, HIGH);   // LED padam
  digitalWrite(ledPin4, LOW);    // LED menyala
  delay(val);              
}
  }




 video hasil percobaan

Selasa, 02 Oktober 2012

Robotik

             Robot adalah sebuah alat mekanik yang dapat melakukan tugas fisik, baik menggunakan pengawasan dan kontrol manusia, ataupun menggunakan program yang telah didefinisikan terlebih dulu (kecerdasan buatan). Istilah robot berawal bahasa Cheko “robota” yang berarti pekerja atau kuli yang tidak mengenal lelah atau bosan. Robot biasanya digunakan untuk tugas yang berat, berbahaya, pekerjaan yang berulang dan kotor. Biasanya kebanyakan robot industri digunakan dalam bidang produksi. Berikut ini adalah komponen utama sebuah robot:



1. Komponen Mekanik

               Komponen mekanik adalah komponen yang menghasilkan gerakan pada robot. Jumlah dari komponen ini tidak terlalu banyak jika dibandingkan dengan komponen elektriknya. Berikut ini adalah contoh komponen mekanik :

a). Dinamo
               Dinamo merupakan motor listrik yang dapat menghasilkan putaran mekanik. Namun putaran yang dihasilkan dinamo ini tidak dapat dikontrol. Gerakannya hanya ke depan atau ke belakang saja dengan kecepatan  sesuai dengan kapasitas motornya.
 gambar dinamo


b). Servo
                 Servo adalah dinamo yang dikontrol dengan menggunakan microchip. secara fisik, bentuk servo sama dengan dinamo namun ada beberapa servo yang telah di-bundle dengan microchipnya. pada servo parameter yang dapat dikontrol adalah arah putaran, banyak putaran dan kecepatan putaran.

gambar servo

c). Stepper Motor 
              Stepper motor adalah motor yang sifatnya sama dengan servo, yaitu dapat dikontrol, namun parameter yang dapat dikontrol dengan stepper motor ini bertambah dengan kemampuan stepper motor untuk mengubah pulsa elektronis menjadi rotasi mekanikal diskrit sehingga dapat berputar dengan mengambil satuan derajat. Dengan menggunakan stepper motor, robot dapat bergerak lebih dinamis dan interaktif.
gambar stepper motor

2. Komponen Elektronik

                    Komponen Elektronik berfungsi sebagai pusat pengolahan data dan input data atau rangsangan dari lingkungan. komponen elektronik pada robot biasanya digunakan sebagai controller atau sensor. berikut ini adalah contoh komponen elektronik:

a). Controller 
                     Komponen elektronik yang biasa digunakan sebagai controller pada robot berupa microchip. Microchip ini ada yang berfungsi sebagai pusat pengolahan data (brain) pada robot atau pengontrol pada servo. contoh microchip robot salah satunya yaitu ATMEGA, arduino dll.


gambar arduino


b). Sensor
                       Sensor pada robot umumnya dibuat dengan meniru cara kerja dan fungsi dari indera manusia. Dengan sensor, sebuah robot dapat menerima rangsangan dari lingkungannya sama seperti halnya manusia menerima rangsangan melalui inderanya. Berikut ini adalah berbagai jenis sensor:
    >Sensor Panas
    >Sensor Cahaya
    >Sensor Pengelihatan
    >Sensor Suara
    >Sensor Tekanan (benturan)
gambar sensor panas

3. Contoh Robot

a). Line Follower
                   Robot Pengikut Garis merupakan suatu bentuk robot bergerak otonom yang mempunyai misi mengikuti suatu garis pandu yang telah ditentukan secara otonom. Dalam perancangan dan implementasinya, masalah-masalah yang harus dipecahkan adalah sistem penglihatan robot, arsitektur perangkat keras yang meliputi perangkat elektronik dan mekanik, dan organisasi perangkat lunak untuk basis pengetahuan dan pengendalian.

                      Sensor pendeteksi garis yang digunakan dalam robot pengikut garis biasanya mendasarkan pada prinsip pemantulan cahaya untuk membedakan warna garis dengan latar belakangnya. Pada warna gelap penyerapan cahaya lebih besar daripada warna putih sehingga cahaya terpantul ke sensor menjadi lebih kecil. Cahaya yang digunakan untuk pengenalan garis biasanya adalah cahaya tampak dan infra-merah. Sensor untuk cahaya tampak yang umum digunakan adalah LDR (Light Depending Resistance), sedangkan untuk inframerah adalah transistor cahaya (phototransistor) dan dioda foto (photodiode). Berikut ini adalah gambar robot line follower:

gambar robot line follower