6
BAB II TINJAUAN PUSTAKA 2.1 State of The Art Review Telah banyak penelitian mengenai quadcopter yang dilakukan hingga saat ini, baik itu membahas mengenai metode untuk membuat sistem kestabilan maupun membahas pemanfaatan quadcopter sebagai alat monitoring. Namun dari penelitian yang telah dilakukan tersebut, belum ada yang membahas mengenai perancangan sistem full autopilot dari quadcopter robot yang dapat memudahkan penggunaan quadcopter di dalam berbagai hal, karena sebagian besar quadcopter saat ini masih dikendalikan secara manual menggunakan remote control. Dari penelitian mengenai rancang bangun sistem autopilot quadcopter robot menggunakan penentuan posisi berbasis GPS nantinya diharapkan dapat mempermudah operator dalam pengoperasian quadcopter, karena operator hanya perlu menginputkan data koordinat sebelum quadcopter terbang, selanjutnya operator hanya perlu memantau kondisi dari quadcopter robot melalui antarmuka ground control station pada laptop. Berikut ini beberapa referensi yang dapat dijadikan sebagai acuan untuk menjelaskan penelitian mengenai quadcopter robot. 1.
Pada penelitian yang dilakukan oleh Swamardika yang dipublikasikan pada sebuah proseding seminar nasional dari Universitas Trunojoyo Madura pada tahun 2013 yang berjudul Implementasi Hand Motion Control Terhadap Pergerakan Quadcopter Robot Dengan Menggunakan Sensor Accelerometer ADXL335 dan Wireless Xbee-Pro Series 160 mW Berbasis Mikrokontroler Atmega32, diperoleh bahwa pergerakan tangan manusia dapat digunakan untuk mengendalikan gerakan dari quadcopter sesuai dengan sudut kemiringan tangan. (Swamardika 2014).
2.
Pada penelitian yang dilakukan oleh Hendriawan, dkk yang dipublikasikan pada The 14th Industrial Electronics Seminar 2012 (IES 2012) pada 24 oktober 2012 yang diadakan oleh EEPIS dengan judul Sistem Kontrol
6
7
Altitude Pada UAV Model Quadcopter Dengan Metode PID, diperoleh bahwa stabilitas quadcopter menjadi lebih baik menggunakan metode PID dengan parameter Kp=0.45000, Kd=0.025, dan Ki=0.001 dan quadcopter dapat
menjaga
stabilitas
altitude
sesuai
dengan
yang
diharapkan.
(Hendriawan, dkk 2012). 3.
Pada penelitian yang dilakukan oleh Wiguna , dkk yang dipublikasikan pada Jurnal Rekayasa dan Teknologi Elektro (ELECTRICAN), Vol. 7, No. 1, pada Januari 2013 yang berjudul Sistem Kendali Holding Position Pada Quadcopter Berbasis Mikrokontroler Atmega 328p, diperoleh bahwa quadcopter mampu mempertahankan posisi (holding position) ketika mode holding position diaktifkan dari salah satu chanel remote control pada pilot, dan mampu mengirimkan data telemetri ke GCS dalam bentuk GUI melalui radio frekueansi 900Mhz. (Wiguna, dkk 2013).
2.2 Quadcopter Robot Quadcopter memiliki 6 degree of freedom (DOF) yang menentukan attitude dari quadcopter. Quadcopter memiliki 4 buah motor brushless yang dipasang dengan propeller sebagai penggerak yang digunakan untuk menghasilkan gaya angkat. Tipe dari quadcopter sendiri terdiri dari 2 jenis, yaitu tipe X dan tipe +. Untuk dapat bergerak naik dan stabil, diperlukan kecepatan yang sama dan cukup besar pada keempat rotornya. Terlihat pada gambar 2.1, pengaruh kecepatan rotor terhadap gerakan quadcopter. Adalah sebagai berikut:
Gambar 2.1 Arah Putaran Motor Pada Quadcopter Tipe X (Sumber: Fahmizal.2013)
8
Gambar 2.2 Desain Quadcopter (Sumber: Andika.F.2012)
Dari gambar 2.1 terlihat quadcopter dengan konfigurasi X, tanda merah menunjukkan motor bergerak dengan putaran yang cepat, tanda hijau menunjukkan motor bergerak dengan kecepatan lambat. Tanda panah kuning menunjukan arah pergerakan dari quadcopter. Dengan melihat pada gambar 2.1 dapat diketahui bagaimana sistem pergerakan pada quadcopte tipe X. 2.3 Behavior Based Robotic Pada sistem kendali robot, pendekatan yang biasa digunakan adalah dengan menguraikan setiap masalah kedalam rangkaian unit fungsional sebagaimana ditunjukkan pada Gambar 2.2
Gambar 2.3 Teknik Penguraian Sistem Kendali Robot Kedalam Unit-unit Fungsional (Sumber:Andika.F.2012)
Dari gambar 2.3 dapat dijelaskan bahwa dalam merancang sebuah sistem kendali, salah satu metode yang dapat digunakan adalah behavior based robotic. Tahapan yang pertama adalah membaca nilai sensor sebagai inputan kedalam sistem, kemudian persepsikan nilai tersebut sebagai suatu satuan (perception) dan memodelkannya kedalam bentuk suatu persamaan (modeling) sehingga dapat
9
direncanakan (planning) pergerakan robot. Tahap selanjutnya mengeksekusi perencanaan yang telah dilakukan (task execution) untuk mengendalikan motor sebagai actuator robot (motor control) (Andika.F.2012). 2.4 Komponen Elektronika 2.4.1
Inersia Moment Unit MPU-6050 MPU-6050 adalah yang pertama mengintegrasikan 6 axis alat pendeteksian
gerak yang dikombinasikan dari 3 axis sensor gyro, 3 axis sensor accelero, dan ditambah dengan Digital Motion Procesor (DMP) semuanya berada dalam satu keping IC berukuran 4x4x0.9mm. Dengan menggunakan jalur komunikasi I2C, memungkinkan untuk menerima inputan sensor kompas external 3 axis sehingga menjadikan sensor ini komplit memiliki 9 axis penggabungan pergerakan pada outputnya. Sensor ini juga di desain untuk antarmuka dengan berbagai sensor lainnya seperti sensor tekanan, dan semuanya menggunakan jalur I2C. MPU-6050 dilengkapi fitur 3x16-bit analog to digital converters (ADCs) untuk merubah output dari gyro menjadi digital dan 3x16-bit ADCs untuk accelero. Chip dari MPU-6050 menggunakan tegangan kerja 3,3V DC. Dalam satu board sensor MPU-6050 sudah dilengkapi dengan voltage regulator 3,3 V DC, jadi untuk menggunakannya dapat diinputkan tegangan 5V DC pada pin VCC yang ada di board sensor. (InvenSense, 2013)
Gambar 2.4 Orientasi Dari Sensitivitas Sudut Dan Putaran MPU-6050 (Sumber:InvenSense.2013)
10
Gambar 2.5 Konfigurasi Pin Sensor MPU-6050 (Sumber:InvenSense.2013)
Gambar 2.6 Skema Pemasangan Sensor MPU-6050 (Sumber:Stan.2014)
2.4.2
Digital Pressure Sensor BMP180 (Barometer) BMP180 adalah penyempurnaan fungsi dari seri sebelumnya BMP085,
generasi terbaru dari sensor tekanan digital dengan ketelitian tinggi untuk pengguna. Konsumsi daya rendah dan menggunakan tegangan rendah, sensor ini optimal digunakan pada mobile phone’s, PDAs, peralatan navigasi GPS, dan perangkat di luar ruangan. Dengan noise altitude yang rendah sekitar 0,25m pada waktu konversi cepat, BMP180 menawarkan kinerja yang unggul. Interface I2C
11
memungkinkan
untuk
mudah
dalam
pengintegrasian
sistem
dengan
mikrokontroler. BMP180 didasari oleh teknologi Piezo-resistive untuk ketahanan EMC, akurasi tinggi dan kestabilan yang bagus untuk jangka waktu panjang. (Bosch, 2013) Gambar 2.7 merupakan skema pemasangan sensor BMP180 pada mikrokontroler.
Gambar 2.7 Skema Pemasangan Sensor BMP-180 Pada Mikrokontroler (Sumber: Bosch.2013)
Gambar 2.8 Bentuk BMP-180 (Sumber: Bosch.2013)
12
2.4.3
Radio Telemetry HM-TRP Series 100mW V1.0 (RCTimer 433Mhz) Radio Telemetry RCTimer sistem dasarnya menggunakan 3DR Radio
System dan 100 persen kompatibel. Alat ini di rancang sebagai open source pengganti radio Xbee set, menawarkan harga yang lebih murah, jangkauan yang lebih panjang dan kinerja yang lebih unggul dari radio Xbee. Menggunakan frekwensi 433Mhz. sistem ini menyediakan saluran full duplex menggunakan modul HopeRF HM-TRP yang di kostumisasi. Interface yang dapat terhubung menggunakan tegangan 5V TTL serial atau Serial USB FTDI. (Hoperf, 2006) Tabel 2.1 Spesifikasi HM-TRP Radio Telemetry
No
Spesifikasi
1
Tersedia pada Frekwensi 433Mhz
2
Sensitifitas penerima sampai -121dBm
3
Kekuatan pengiriman sampai 20dBm (100mW)
4
Data rate di udara sampai 250kbps
5
Frequency hopping spread spectrum (FHSS)
6
Adaptive time division multiplexing (TDM)
7
Open source firmware (Sumber: Hoperf.2006)
Berikut adalah skema pemasangan HM-TRP radio telemetry dan bentuk fisiknya:
Gambar 2.9 Radio Telemetry HM-TRP (RCTimer) Skema air station (Sumber: Hoperf.2006)
13
VCC
D+
D+
D-
D-
GND
ANT
USB
USB
VCC
GND
PC
HM-TRP
Gambar 2.10 Radio Telemetry HM-TRP (RCTimer) Skema Ground Station (Sumber: Hoperf.2006)
(c) Gambar 2.11 Bentuk Fisik HM-TRP (Sumber: Hoperf.2006)
2.4.4
Sensor Kompas HMC5883L Sejak dulu kala, kompas digunakan untuk mengetahui arah mata angin.
Kompas ini bekerja berdasarkan medan magnet yang dihasilkan oleh bumi. Seiring dengan kemajuan jaman, telah dikembangkan sebuah rangkaian dan sensor medan magnet yang digunakan untuk mengukur medan magnet bumi sehingga berfungsi sebagai kompas digital. Banyak jenis kompas digital yang diproduksi khusus untuk keperluan robotika, salah satu yang sangat popular adalah HMC5883L Magnetic Compas . Kompas digital ini hanya memerlukan supply tegangan sebesar 5 Vdc dengan konsumsi arus 15mA. Pada HMC5883L, arah mata angin dibagi dalam bentuk derajat yaitu : Utara (00), Timur (900), Selatan (1800), dan Barat (2700).
14
Cara untuk mendapatkan informasi arah dari modul kompas digital ini yaitu dengan membaca data interface I2C pada pin SDA dan SCL. Data yang diperoleh dari kompas digital ini merupakan sudut yang dibentuk terhadap mata angin arah utara (00). Sebagai contoh, bila pembacaan adalah 600 U, berarti sudut kompas membentuk sudut 600 terhadap mata angin utara. Berikut adalah skema pemasangan HMC5883L beserta tampilan fisiknya :
Gambar 2.12 Modul Kompas HMC5883L (Sumber: Anonim.2014)
2.4.5
Arduino Mega 2560 Arduino Mega 2560 adalah board mikrokontroler yang menggunakan
Atmega2560 sebagai komponen utamanya. Memiliki 54 pin digital I/O (14 pin tersebut dapat digunakan sebagai PWM), 16 input pin analog, 4 UARTs (komunikasi serial), 16 Mhz crystal, koneksi USB, DC Jack power, ICSP header, dan tombol reset. Arduino mega2560 dapat dinyalakan
melalui koneksi USB atau
menggunakan eksternal power supply. Sumber power dipilih secara otomatis. Arduino mega dapat beroperasi pada tegangan power supply 6V sampai 20V. jika diberikan tegangan kurang dari 7V, maka pin akan mengeluarkan tegangan kurang dari 5V, namun jika diberikan tegangan lebih dari 12V, maka IC regulator tegangan akan sangat panas dan berbahaya terhadap board. Direkomendasikan tegangan antara 7V sampai 12V.
15
Arduino
Mega2560
berbeda
dengan
generasi
sebelumnya
yang
menggunakan chip FTDI sebagai antarmuka komunikasi antara PC dengan Atmega, kini menggunakan Atmega8UA sebagai USB to Serial Converter. Atmega2560 memiliki 256 KB flash memory untuk penyimpanan kode (8Kb digunakan sebagai bootloader), 8 KB SRAM, dan 4 KB EEPROM. Tabel 2.2 Keterangan Pin Arduino Mega 2560
No 1 2 3 4 5 6 7 8 9 10
Nomor Pin 0 1 19 18 17 16 15 14 2 A0-A15
Fungsi Khusus Rx serial 0 Tx serial 0 Rx serial 1 Tx serial 1 Rx serial 2 Tx serial 2 Rx serial 3 Tx serial 3 Interrupt 0 ADC
No 11 12 13 14 15 16 17 18 19 20
Nomor Pin 3 21 20 19 18 0 - 13 50 51 52 53
Fungsi Khusus Interrupt 1 Interrupt 2/SCL Interrupt 3/SDA Interrupt 4 Interrupt 5 PWM MISO MOSI SCK SS
Arduino Mega 2560 memiliki sejumlah fasilitas untuk berkomunikasi dengan komputer, Arduino lain, atau mikrokontroler lainnya. Atmega2560 menyediakan 4 komunikasi serial UARTs untuk TTL (5V). Atmega 2560 juga mendukung komunikasi I2C (TWI) dan SPI. Arduino mega memiliki polyfuse reset yang melindungi port USB komputer dari korsleting pendek dan arus berlebih. Meskipun sebagian besar komputer memberikan perlindungan internal mereka sendiri, sekering ini menyediakan lapisan tambahan untuk perlindungan. Jika lebih dari 500 mA arus masuk ke port USB, sekring otomatis akan memutus sambungan sampai kelebihan arus tersebut terhenti. (ArduinoTM, t.t)
16
Gambar 2.13 Arduino Mega2560 (Sumber: ArduinoTM.t.t.)
2.4.6
GPS (Global Positioning System) U-Blok NEO-6 Modul berukuran ringkas ini (25x35mm untuk modul, 25x25mm untuk
antena) berfungsi sebagai penerima GPS (Global Positioning System) yang dapat mendeteksi lokasi dengan menangkap dan memproses sinyal dari satelit navigasi. Aplikasi dari modul ini melingkupi sistem navigasi, sistem keamanan terhadap kemalingan pada kendaraan / perangkat bergerak, akuisisi data pada sistem pemetaan medan, penjejak lokasi / location tracking. Modul ini kompatibel dengan APM2 dan APM2.5 dengan EEPROM terpadu yang dapat digunakan untuk menyimpan data konfigurasi. Antarmuka menggunakan serial TTL (RX/TX) yang dapat diakses dari mikrokontroler yang memiliki fungsi UART atau emulasi serial TTL (pada Arduino dapat menggunakan pustaka komunikasi serial / serial communication library yang sudah tersedia dalam paket Arduino IDE). Baud rate diseting secara default di 9600 bps.
17
GPS Processor dari modul ini menggunakan U-blox NEO-6 GPS Module dengan mesin penjejak posisi yang berkinerja tinggi dengan versi ROM terbaru (ROM7.03). Modul ini dapat memproses hingga 50 kanal sinyal secara cepat dengan waktu Cold TTFF (Cold-Start Time-To-First-Fix, waktu yang diperlukan untuk menentukan posisi dari kondisi mati total) kurang dari 27 detik (sebagai pembanding, rata-rata GPS navigator yang umum dijual di toko variasi mobil memiliki waktu Cold TTFF lebih dari 50 detik), dapat dipercepat dengan fitur pemandu (aiding) hingga kurang dari 3 detik. Pada kondisi hot start, waktu TTFF yang dibutuhkan mencapai kurang dari 1 detik. Kinerja tinggi ini dicapai dengan didedikasikannya prosesor khusus untuk mengumpulkan data sinyal satelit yang memiliki hingga 2 juta korelator yang sanggup memproses data waktu dan frekwensi secara masif dengan sangat cepat sehingga mampu menemukan sinyal dari satelit navigasi secara instan. Prosesor ini juga menerapkan teknologi DSP terkini untuk meredam sumber pengacak (jamming sources) dan mengurangi secara signifikan efek interferensi multi-jalur. Sumber tenaga dapat menggunakan catu daya antara 3 Volt hingga 5 Volt, ideal untuk digunakan pada berbagai development board mulai dari aneka macam Arduino Board, Raspberry Pi, dan lain sebagainya. (Ublok, 2011) Spesifikasi Teknis u-blox NEO-6M •
Tipe penerima: 50 kanal, GPS L1 frekuency, C/A Code. SBAS: WAAS, EGNOS, MSAS
•
Sensitivitas penjejak & navigasi: -161 dBm (reakuisisi dari blank-spot: 160 dBm)
•
Sensitivitas saat baru memulai: -147 dBm pada cold-start, -156 dBm pada hot start
•
Kecepatan pembaharuan data / navigation update rate: 5 Hz
•
Akurasi penetapan lokasi GPS secara horisontal: 2,5 meter (SBAS = 2m)
•
Rentang frekuensi pulsa waktu yang dapat disetel: 0,25 Hz hingga 1 kHz
18
•
Akurasi sinyal pulsa waktu: RMS 30 ns (99% dalam kurang dari 60 ns) dengan granularitas 21 ns atau 15 ns saat terkompensasi
•
Akurasi kecepatan: 0,1 meter / detik
•
Akurasi arah (heading accuracy): 0,5°
•
Batasan operasi: daya tarik maksimum 4x gravitasi, ketinggian maksimum 50 Km, kecepatan maksimum 500 meter / detik (1800 km/jam). red: dengan limit seperti ini, modul ini bahkan dapat digunakan di pesawat jet super-cepat sekalipun.
Gambar 2.14 GPS U-Blok NE 6 (Sumber: Anonim.2014)
Adapun cara pemasangan GPS U-blok Neo-6 pada arduino dapat dilihat pada gambar 2.15 berikut ini:
19
Gambar 2.15 Skema Pemasangan GPS U-Blok NEO 6 Pada Arduino (Sumber: Pawelsky.2013)
2.4.7
ESC (Electronics Speed Controller) ESC (Elektronic Speed Control) yang berfungsi sebagai pengatur kecepatan
motor,
selain
itu
juga berfungsi
untuk
menaikan
jumlah
arus
yang
diperlukan oleh motor. ESC dapat dikatakan juga sebagai driver motor dengan
mengeluarkan
pulsa
untuk
brushless motor
yang
mikrokontroler.
Gambar 2.16 ESC (Electronics Speed Controller) (Sumber: HobbyKing.2014)
berasal
dari
20
2.5 Komponen Penggerak 2.5.1
Brushless Motor Brushless motor merupakan Motor yang mempunyai permanen magnet
pada bagian "rotor" sedangkan elektro-magnet pada bagian "stator"-nya. Secara umum, kecepatan putaran brushless motor yang keluar dari ESC diatur oleh pulsa dari mikrokontroler, sehingga berbeda dengan brushed. BLDC motor atau dapat disebut juga dengan BLAC motor merupakan motor listrik synchronous AC 3 fasa. Perbedaan pemberian nama ini terjadi karena BLDC memiliki BEMF berbentuk trapezoid sedangkan BLAC memiliki BEMF berbentuk sinusoidal. Walaupun demikian keduanya memiliki struktur yang sama dan dapat dikendalikan dengan metode six-step maupun metode PWM. Dibandingkan dengan motor DC jenis lainnya, BLDC memiliki biaya perawatan yang lebih rendah dan kecepatan yang lebih tinggi akibat tidak digunakannya brush. Dibandingkan dengan motor induksi, BLDC memiliki efisiensi yang lebih tinggi karena rotor dan torsi awal yang dihasilkan terbuat dari magnet permanen. Secara umum motor BLDC terdiri dari dua bagian, yakni, rotor, bagian yang bergerak, yang terbuat dari permanen magnet dan stator, bagian yang tidak bergerak, yang terbuat dari kumparan 3 fasa. Walaupun merupakan motor listrik synchronous AC 3 fasa, motor ini tetap disebut dengan BLDC karena pada implementasinya BLDC menggunakan sumber DC sebagai sumber energi utama yang kemudian diubah menjadi tegangan AC dengan menggunakan inverter 3 fasa. Tujuan dari pemberian tegangan AC 3 fasa pada stator BLDC adalah menciptakan medan magnet putar stator untuk menciptakan gaya tarik dan tolak menolak dengan magnet rotor (Dharmawan, 2009). Keuntungan dari brushless motor adalah sebagai berikut: 1. Komputer dapat mengatur kecepatan motor lebih baik sehingga membuat brushless motor lebih efisien. 2. Tidak adanya storing/electrical noise. 3. Tidak menggunakan brushes yang dapat rusak setelah lamanya pemakaian.
21
4. Dengan posisi electromagnets di bagian stator, maka pendinginan motor menjadi lebih mudah. 5. Jumlah
electromagnets di
stator dapat
sebanyak
mungkin untuk
mendapatkan kontrol yang lebih akurat.
Gambar 2.17 Brushless Motor (Sumber:Anonim.2010)
2.5.2
Propeller Baling-baling atau propeller merupakan jenis kipas yang menghasilkan
tenaga dengan mengkonversi gerakan rotasi menjadi daya dorong
untuk
menggerakkan sebuah benda. Bilah-bilah dari propeller berperan sebagai sayap yang berputar menghasilkan sebuah perbedaan tekanan antara permukaan depan dan belakang bilah tersebut. Propeller dibagi menjadi dua tipe yaitu CW dan CCW.
Gambar 2.18 Propeller (Sumber:Anonim.2010)
22
2.6 PWM (Pulse Width Modulation) Pulse Width Modulation (PWM) secara umum adalah sebuah cara memanipulasi lebar sinyal yang dinyatakan dengan pulsa dalam suatu perioda, untuk mendapatkan tegangan rata-rata yang berbeda. Beberapa Contoh aplikasi PWM adalah pemodulasian data untuk telekomunikasi, pengontrolan daya atau tegangan yang masuk ke beban, regulator tegangan, audio effect dan penguatan, serta aplikasi-aplikasi lainnya.
Gambar 2.19 Sinyal PWM (Sumber:Anonim.2010)
Aplikasi PWM berbasis mikrokontroler biasanya berupa, pengendalian kecepatan motor DC, pengendalian motor servo, pengaturan nyala terang LED. Sinyal PWM pada umumnya memiliki amplitudo dan frekuensi dasar yang tetap, namun memiliki lebar pulsa yang bervariasi. Lebar pulsa PWM berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi. Artinya, sinyal PWM memiliki frekuensi gelombang yang tetap namun duty cycle bervariasi (antara 0% hingga 100%) Pada metode pembentukan sinyal PWM digital, setiap perubahan PWM dipengaruhi oleh resolusi dari PWM itu sendiri. Misalkan PWM digital 8 bit berarti PWM tersebut memiliki resolusi 28= 256, maksudnya nilai keluaran PWM ini memiliki 256 variasi, variasinya mulai dari 0 – 255 yang mewakili duty cycle 0–100% dari keluaran PWM tersebut.
23
Gambar 2.20 Sinyal PWM Dan Persamaan V Out PWM (Sumber:Anonim.2010)
Dengan metode analog setiap perubahan PWM-nya sangat halus, sedangkan menggunakan metode digital setiap perubahan PWM dipengaruhi oleh resolusi dari PWM itu sendiri. Resolusi adalah jumlah variasi perubahan nilai dalam PWM tersebut. Misalkan suatu PWM memiliki resolusi 8 bit berarti PWM ini memiliki variasi perubahan nilai sebanyak 28 = 256 variasi mulai dari 0 – 255 perubahan nilai yang mewakili duty cycle 0 – 100% dari keluaran PWM tersebut.
Gambar 2.21 Duty Cycle Dan Resolusi PWM (Sumber:Anonim.2010)
24
2.7 Microsoft Visual C# Pada tahun 2000, Microsoft meluncurkan bahasa pemrograman baru yang diberi nama C# programming language. C# dikembangkan oleh tim yang dipimpin Andreas Hejlsberg dan Scott Wiltamuth. C# memiliki kesamaan dengan bahasa C,C++ dan Java, sehingga memudahkan developer yang sudah terbiasa dengan bahasa C untuk menggunakannya. C# mengambil fitur-fitur terbaik dari ketiga bahasa tersebut dan juga menambahkan fitur-fitur baru. C# adalah bahasa pemrograman Object Oriented dan memiliki Class Library yang sangat lengkap yang berisi Prebuilt component, sehingga memudahkan programmer untuk mendevelop program lebih cepat. C# juga distandarkan oleh Ecma International pada desember 2002. Dengan menggunakan C#, dapat dibuat bermacam aplikasi seperti aplikasi console, aplikasi windows form, aplikasi web, aplikasi web service, dan aplikasi untuk mobile device. (Seputra, 2013) 2.7.1
Struktur Bahasa pada Visual C#
Berikut ini adalah penjelasan mengenai struktur bahasa pemrogramana pada visual C#: using System; using System.Windows.Forms;
listing program diatas berfungsi sebagai pendefinisian fungsi / library yang akan digunakan pada program namespace ProgramPerdana public partial class ProgramPerdana : Form
listing tersebut diatas berfungsi sebagai penamaan project dan kelas utama public ProgramPerdana() { InitializeComponent(); }
Listing tersebut diatas adalah konstruktor, digunakan untuk pemberian nilai awal pada saat sebuah object baru diciptakan private void tombol_Clik(object sender, EventArgs e)
25
{ Tulisan = MessageBoxButtons.AbortRetryIgnore; }
Listing diatas adalah contoh penanganan event pada visual C# 2.7.1.1 Struktur Percabangan Bentuk umum IF if (kondisi yang diseleksi) { Pernyataan 1;
Jika kondisi yang diseleksi benar, maka pernyataan 1 akan dikerjakan. Sedangkan jika kondisi tersebut tidak terpenuhi, maka program akan keluar dari struktur if. Jika lebih dari satu pernyataan, maka harus menggunakan tanda ‘{‘ dan ‘}’. Bentuk umum IF-ELSE if (kondisi yang diseleksi) { Pernyataan 1; } else { Pernyataan 2; }
Jika kondisi yang diseleksi bernilai benar atau terpenuhi, maka pernyataan pertama yang dilaksanakan dan jika kondisi yang diseleksi bernilai salah, maka pernyataan yang kedua yang dilaksanakan. Setiap pernyataan diakhiri tanda titik koma (;) walaupun sebelum else. Bentuk umum Nested If if (kondisi yang diseleksi){ Pernyataan 1; } else if (kondisi yang diseleksi){ Pernyataan 2; } else if (kondisi yang diseleksi){ Pernyataan 3;
26
} else { Pernyataan 4; }
Bentuk Umum Switch Case switch (ekspresi) { case konst-1: Pernyataan -1; break; case konst-2: Pernyataan -2; break; case konst-n: Pernyataan –n; break; default: Pernyataan –df; break; }
Struktur switch-case-default digunakan untuk penyeleksian kondisi dengan kemungkinan yang terjadi cukup banyak. “Ekspresi” dapat berupa konstanta integer atau karakter. Case digunakan sebagai label yang menandai awal eksekusi deret instruksinya hingga ditemukan pernyataan break. Default adalah label yang jika label-label case diatasnya tidak ada yang memenuhi, maka label ini yang akan dieksekusi. Break adalah perintah pengontrol alur program yang berfungsi untuk keluar dari suatu blok kondisi ataupun iterasi.
2.7.1.2 Struktur Perulangan Struktur FOR Struktur pengulangan for biasa digunakan untuk mengulang suatu proses yang telah diketahui jumlah pengulangannya. Bentuk umumnya adalah: For (inisialisasi;kondisi;iterasi) { Pernyataan; }
27
Keterangan: Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variable control Kondisi : ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan Iterasi : pengatur perubahan nilai variable control Struktur WHILE Pengulangan ini banyak digunakan bila jumlah pengulangannya belum diketahui. Proses pengulangan akan terus berlanjut selama kondisinya bernilai benar dan akan berhenti bila kondisinya bernilai salah. Bentuk umumnya adalah:
Inisialisasi ;
While (kondisi) { Pernyataan; Iterasi; }
Struktur Do…While Pengulangan ini digunakan bila jumlah pengulangan Do...While sama dengan struktur while, hanya saja pada proses seleksi kondisi letaknya berada dibawah batas pengulangan. Jadi, dengan menggunakan struktur do…while sekurang-kurangnya akan terjadi satu kali pengulangan. Berikut bentuk umumnya: Inisialisasi Do { Pernyataan ; Iterasi ; } while (kondisi);
2.8 Arduino IDE Arduino IDE adalah software yang digunakan untuk men-develop program yang akan di masukan ke dalam board arduino. Pada dasarnya bahasa yang digunakan pada arduino IDE adalah bahsa C, namun bahasa C tersebut sudah banyak dimodifikasi oleh pembuat arduino. Tujuannya agar para pengguna
28
arduino lebih mudah dalam membuat suatu project. Pada arduino IDE terdapat tools yang digunakan untuk mengkompile program kemudian mendownload program ke arduino board. (ArduinoTM, t.t) 2.8.1
Struktur Program 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. 2.8.2
Sintaks
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).
29
;(titk koma) Setiap baris kode harus diakhiri dengan tanda titik koma (jika ada titik koma yang hilang maka program tidak akan bisa dijalankan). 2.8.3
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.
30
2.8.4
Struktur Pengaturan Program sangat tergantung pada pengaturan apa yang akan dijalankan
berikutnya, berikut ini adalah elemen dasar pengaturan. 1. 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. 2. 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–.
2.8.5
Mode Digital
1. 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 adalah Input atau Output. 2. DigitalWrite(pin, value) Ketika sebuah pin ditetapkan sebagai OUTPUT, pin tersebut dapat dijadikan HIGH(ditarik menjadi 5 volts) atau LOW (diturunkan menjadi ground).
31
3. 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). 2.8.6
Mode 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. 1. 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). 2. AnalogRead(pin) Ketika pin analog ditetapkan sebagai Input anda dapat membaca keluaran tegangannya. Keluarannya berupa angka antara 0 (untuk 0 volts) dan 1024 (untuk 5 volts). 2.9 Avionics Instrument Avionics instrument adalah kumpulan dari peralatan Flight Monitoring yang terdapat pada pesawat terbang. Peralatan ini dapat menampilkan visualisasi dari kondisi pesawat saat melakukan penerbangan. (FAA, t.t.) Adapun komponen-komponen dari avionics instrument yaitu : 2.9.1
Artificial Horizon Indicator Artificial Horizon digunakan untuk menunjukkan Flight Attitude relative
terhadap cakrawala. Penamaan ini dimaksudkan untuk membuat pengertian mudah bahwa Artifical Horizon merupakan tiruan dari permukaan cakrawala yang
32
selalu tegak lurus. Prinsip kerja instrument ini menggunakan sistem Gyroscopic. Dengan instrument ini, dapat dilihat apakah sayap berada pada level yang sama atau tidak, dan apakah pesawat dalam Flight Attitude sedang pitch up (mengarah ke atas) atau pitch down (mengarah ke bawah). Adapun visualisasi dari artificial horizon adalah sebagai berikut:
Gambar 2.22 Visualisasi Artificial Horizon (Sumber:Chootair.2008)
2.9.2
Vertical Speed Indicator Instrumen ini digunakan untuk menunjukkan kecepatan vertikal pesawat.
Laju perubahan kecepatan diukur dengan perbedaan tekanan udara melalui sistem Pitot-Statis. Vertical Speed Indicator bekerja pada saat pesawat sedang menaik (climbing) dan menurun (descend) untuk mempertahankan tingkat kecepatan yang tepat saat climbing dan descend. Satuan kecepatan diukur dalam feet per minute (ft per min). Adapun visualisasi dari vertical speed indicator adalah sebagai berikut:
33
Gambar 2.23 Visualisasi Vertical Speed Indicator (Sumber:Chootair.2008)
2.9.3
Altimeter Indicator Altimeter digunakan untuk menunjukkan seberapa tinggi pesawat terbang
berada dari permukaan laut (sea level) atau permukaan tanah. Altimeter bekerja dengan mengukur tekanan udara yang masuk melalui sistem Pitot-Statis. Apabila tekanan udara meningkat pada sistem Pitot-Static maka Pesawat berada pada ketinggian yang mendekati sea level (semakin rendah), sebaliknya jika mengalami penurunan
maka
pesawat
berada
pada
ketinggian
yang
menjauhi sea
level (semakin tinggi). Altimeter dikenal juga dengan Altitude Meter. Satuan pengukuran Altimeter dalam Knots. Adapun visualisasi dari altimeter indicator adalah sebagai berikut:
Gambar 2.24 Visualisasi Altimeter Indicator (Sumber:Chootair.2008)
34
2.9.4
Heading Indicator Heading Indicator digunakan untuk memperlihatkan arah dari hidung
pesawat yang berhubungan dengan arah magnet kutub bumi. Ketika pesawat berbelok maka jarum pada instrumen akan menunjukkan arah mana dari hidung pesawat bergerak. Instrumen ini dikenal juga dengan Magnetic Directional Indicator. Satuan instrumen ini diukur dalam degrees dengan sudut 0 untuk Utara, 90 untuk Barat, 180 untuk Selatan, dan 270 untuk Timur.
Gambar 2.25 Visualisasi Heading Indicator (Sumber:Chootair.2008)