bab ii tinjauan pustaka 2.1 state of the art...
TRANSCRIPT
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
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).
VCC ANT
D+
D-
GND
USB
VCC
D+
D-
GND
USB
PC HM-TRP
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 Nomor Pin Fungsi Khusus No Nomor Pin Fungsi Khusus 1 0 Rx serial 0 11 3 Interrupt 1 2 1 Tx serial 0 12 21 Interrupt 2/SCL 3 19 Rx serial 1 13 20 Interrupt 3/SDA 4 18 Tx serial 1 14 19 Interrupt 4 5 17 Rx serial 2 15 18 Interrupt 5 6 16 Tx serial 2 16 0 - 13 PWM 7 15 Rx serial 3 17 50 MISO 8 14 Tx serial 3 18 51 MOSI 9 2 Interrupt 0 19 52 SCK 10 A0-A15 ADC 20 53 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 berasal dari
mikrokontroler.
Gambar 2.16 ESC (Electronics Speed Controller)
(Sumber: HobbyKing.2014)
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 men-
develop 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 ; <optional> While (kondisi) { Pernyataan; Iterasi; <optional> }
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 <optional> Do { Pernyataan ; Iterasi ; <optional> } 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)