Professional Documents
Culture Documents
HALIM
06/197798/PA/11245
Diajukan sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains
Program Studi Elektronika dan Instrumentasi
HALIM
06/197798/PA/11245
Dengan ini saya menyatakan bahwa Skripsi ini tidak terdapat karya yang
pernah diajukan untuk memperoleh gelar Ahli Madya/kesarjanaan di suatu
Perguruan Tinggi, dan sepanjang pengetahuan saya juga tidak terdapat karya atau
pendapat yang pernah ditulis atau diterbitkan oleh orang lain, kecuali yang secara
tertulis diacu dalam naskah ini dan disebutkan dalam daftar pustaka
Halim
iii
All our dreams can come true,
iv
PRAKATA
v
6. Dosen-dosen penulis di program studi elektronika dan instrumentasi yang
tidak bisa disebutkan namanya satu persatu, yang telah menularkan banyak
ilmu dan bimbingan bagi penulis.
7. Fauzi Marjalih dan Wahyu Rahmaniar yang telah bersedia berbagi ilmu
dengan penulis.
8. Teman-teman Elins angkatan 2006 yang tidak bisa penulis sebutkan satu
persatu, terima kasih atas kebersamaannya selama ini.
9. Semua pihak yang selama ini telah mendukung dan menyemangati penulis
yang tidak dapat disebutkan satu persatu. Terima kasih, semoga Allah SWT
membalas kebaikan Anda semua.
Yogyakarta, 2010
Penulis
vi
DAFTAR ISI
Halaman
HALAMAN JUDUL........................................................................................ i
HALAMAN PENGESAHAN .......................................................................... ii
PERNYATAAN ............................................................................................... iii
MOTTO ........................................................................................................... iv
PRAKATA ....................................................................................................... v
DAFTAR ISI .................................................................................................... vii
DAFTAR GAMBAR ....................................................................................... ix
DAFTAR TABEL ............................................................................................ xi
INTISARI......................................................................................................... xii
ABSTRACT ..................................................................................................... xiii
vii
5.2.1. Software bagian transmitter .................................................. 58
5.2.2. Pengaturan bagian transmisi (Xbee-PRO) ............................. 69
5.2.3. Software bagian receiver ....................................................... 70
LAMPIRAN ..................................................................................................... 97
L.1. Listing Program Mikrokontroler ..................................................... 97
L.2. Listing Program Visual Basic ......................................................... 107
L.3. Datasheet Mikrokontroler ATMega3 .............................................. 113
L.4. Datasheet Sensor MX2125 .............................................................. 118
L.5. Datasheet Xbee-PRO....................................................................... 124
viii
DAFTAR GAMBAR
Halaman
ix
Gambar 5.3 Sistem minimum mikrokontroler AVR ATMega32 .................. 50
Gambar 5.4 Rangkaian crystal ....................................................................... 51
Gambar 5.5 Rangkaian reset .......................................................................... 51
Gambar 5.6 Sensor MX2125.......................................................................... 53
Gambar 5.7 Rangkaian penampil LCD .......................................................... 54
Gambar 5.8 Rangkaian keypad empat tombol ............................................... 55
Gambar 5.9 Rangkaian buzzer ....................................................................... 55
Gambar 5.10 Rangkaian Xbee-PRO ................................................................ 56
Gambar 5.11 Hardware bagian receiver .......................................................... 57
Gambar 5.12 Tampilan software X-CTU......................................................... 69
Gambar 5.13 Tampilan form1 .......................................................................... 71
Gambar 6.1 Bentuk gelombang output sensor MX2125................................ 81
Gambar 6.2 Hasil pengujian telemetri pada hyperterminal ........................... 82
Gambar 6.3 Hasil pembacaan sensor ............................................................. 83
Gambar 6.4 Mekanisme pengujian bagian transmitter .................................. 83
Gambar 6.5 Grafik nilai sudut aktual vs pembacaan sensor .......................... 85
Gambar 6.6 Konfigurasi tombol .................................................................... 86
Gambar 6.7 Tampilan range sudut................................................................. 86
Gambar 6.8 Bentuk fisik bagian transmitter .................................................. 87
Gambar 6.9 Bentuk fisik bagian receiver ...................................................... 87
Gambar 6.10 Tampilan form program antarmuka............................................ 88
Gambar 6.11 Messagebox ketika terjadi kesalahan port .................................. 88
Gambar 6.12 Tampilan form pada saat perekaman data .................................. 89
Gambar 6.13 Koneksi terputus......................................................................... 90
Gambar 6.14 Konfirmasi untuk menyimpan data tabel ................................... 90
Gambar 6.15 Tampilan data pada Microsoft Excel ......................................... 91
Gambar 6.16 Messagebox konfirmasi untuk menghapus data ......................... 91
Gambar 6.17 Messagebox konfirmasi untuk mencetak grafik ......................... 92
x
DAFTAR TABEL
Halaman
Tabel 2.1 Tingkat efektifitas beberapa sensor (Walter dkk., 2008) ............... 6
Tabel 3.1 Konstanta sensor (Dao, 2005) ........................................................ 15
Tabel 3.2 Penjelasan pin-pin MX2125 (Anonim, 2009c)............................... 16
Tabel 3.3 Penjelasan pin-pin LCD (Anonim, 2009b) ..................................... 19
Tabel 3.4 Fungsi khusus port A (Anonim, 2009a) ......................................... 23
Tabel 3.5 Fungsi khusus port B (Anonim, 2009a) ......................................... 24
Tabel 3.6 Fungsi khusus port C (Anonim, 2009a) ......................................... 24
Tabel 3.7 Fungsi khusus port D (Anonim, 2009a) ......................................... 25
Tabel 3.8 Bluetooth vs Zigbee (Widiasrini,2005) .......................................... 26
Tabel 3.9 Konfigurasi pin Xbee-PRO (Anonim, 2008b) ................................ 29
Tabel 3.10 Spesifikasi Xbee vs Xbee-PRO (Anonim, 2008b) ......................... 36
Tabel 5.1 Nilai range A(g) ............................................................................. 62
Tabel 6.1 Hasil pembacaan sensor MX2125.................................................. 84
xi
INTISARI
Oleh
HALIM
06/197798/PA/11245
Banyaknya kerugian harta benda dan korban jiwa yang ditimbulkan oleh
tanah longsor telah menginspirasi penulis untuk membuat suatu rancang bangun
sistem peringatan dini (early warning system) untuk meningkatkan kewaspadaan
warga masyarakat yang tinggal dilokasi rawan longsor terhadap bahaya yang
datangnya secara tiba-tiba sehingga segala kerugian terutama korban jiwa dapat
diminimalisir.
Rancang bangun sistem ini terdiri dari dua bagian, yaitu bagian transmitter
(pemancar) dan bagian receiver (penerima). Bagian transmitter diletakkan di
lokasi yang akan dipantau tingkat kemiringannya dan berfungsi sebagai pembaca
pergerakan permukaan tanah. Pada bagian ini terdapat sensor akselerometer
(MX2125) sebagai pengukur sudut untuk memantau pergerakan permukaan tanah
dan memberikan peringatan berupa suara alarm berdasarkan perkembangan
pergerakan tanah yang dipantau tersebut. Sensitivitas sistem peringatan dini ini
bisa diatur sesuai dengan kebutuhan di lapangan dengan cara memasukkan range
sudut (berupa batas minimal dan batas maksimal) kemiringan posisi transmitter.
Alarm akan berbunyi ketika permukaan tanah mengalami pergerakan yang
menyebabkan posisi kemiringan sistem berubah sampai diluar range sudut
tersebut. Data kemiringan transmitter kemudian dikirim ke bagian receiver secara
wireless melalui protokol Zigbee. Dari receiver, data tersebut dikirim ke komputer
melalui port serial dan ditampilkan dalam bentuk tabel dan grafik sehingga
pemantauan terhadap pergerakan tanah dapat dilakukan setiap saat. Software
Visual Basic 6 digunakan sebagai tampilan antarmuka untuk memantau
pergerakan tanah.
xii
ABSTRACT
By
HALIM
06/197798/PA/11245
xiii
BAB I
PENDAHULUAN
1
2
Saat ini telah dikembangkan beberapa metode sistem peringatan dini tanah
longsor (Landslide Early Warning System), misalnya dengan menggunakan
extensometer untuk memantau kecepatan gerakan tanah, rain gauge untuk
mengukur curah hujan, piezometer untuk memantau tinggi permukaan tanah,
inclinometer untuk memantau arah garakan tanah, dan lain-lain. Salah satu cara
yang dinilai cukup efektif untuk mengembangkan sistem deteksi dini longsor
adalah dengan memantau dan mengukur pergeseran permukaan tanah melalui
sensor akselerometer yang ditempatkan pada beberapa titik di permukaan lereng
yang bergerak.
Walter dkk. (2008) dari Rostock University, Jerman, menggabungkan
beberapa sensor dalam satu sistem jaringan sensor (sensor network) yang disebut
Geosensor Web Enablement sebagai sistem peringatan dini tanah longsor. Sensor
yang tergabung dalam sensor network ini diantaranya akselerometer,
inclinometer, dan displacement tranducer (extensometer). Mereka menggunakan
Geosensor Network (GSN) sebagai media transmisi pengiriman data secara
wireless dari lokasi yang dimonitor ke lokasi pemantauan. Tabel 2.1 menunjukkan
tingkat efektifitas penggunaan beberapa sensor yang digunakan dalam sistem
peringatan dini tanah longsor (Walter dkk., 2008).
5
6
Rotational
and Lateral
Sensors Falling Topple
Translation Spread
Slide
Suitable to
Good – very Good – very only limited
Accelerometer Very good
good good extent –
good
Suitable to Suitable to
Inclinometer only limited Very good Good only limited
extent extent
Displacement
Very good Very good Good Very good
Tranducer
Suitable to
Accoustic
Good Good Good only limited
sensors
extent
Suitable to
Altimeter Very good Good Good only limited
extent
Suitable to Suitable to Suitable to
Temperature
only limited only limited Good only limited
sensor
extent extent extent
Suitable to Suitable to
Humidity Good Good
only limited only limited
sensor
extent extent
Pore water Suitable to Suitable to
pressure only limited only limited Good Good
sensor extent extent
Suitable to Suitable to Suitable to
Geophysical
only limited only limited Good only limited
sensor
extent – good extent – good extent
GPS Good Good Very good Very good
Suitable to
UWB only limited Good Very good Very good
extent
7
Keterangan :
- Falling : jatuhan.
- Topple : ambrukan.
- Rotational and translational slide : longsoran translasi dan rotasi.
- Lateral spread : Penyebaran secara lateral (gerak horizontal).
Sistem peringatan dini yang dikembangkan oleh Fakultas Teknik UGM ini
belum dilengkapi dengan sistem telemetri secara wireless sehingga pencatatan
terhadap data yang diperoleh dari extensometer dan rain gauge hanya dilakukan
melalui kertas di lokasi pemasangan.
BAB III
LANDASAN TEORI
10
11
2. Longsoran Rotasi
Longsoran rotasi adalah bergerak-nya massa tanah dan batuan pada bidang
gelincir berbentuk cekung.
3. Pergerakan Blok
Pergerakan blok adalah perpindahan batuan yang bergerak pada bidang
gelincir berbentuk rata. Longsoran ini disebut juga longsoran translasi blok
batu.
4. Runtuhan Batuan
Runtuhan batu terjadi ketika sejumlah besar batuan atau material lain
bergerak ke bawah dengan cara jatuh bebas. Umumnya terjadi pada lereng
yang terjal hingga menggantung terutama di daerah pantai. Batu-batu besar
yang jatuh dapat menyebabkan kerusakan yang parah.
5. Rayapan Tanah
Rayapan tanah adalah jenis tanah longsor yang bergerak lambat. Jenis
tanahnya berupa butiran kasar dan halus. Jenis tanah longsor ini hampir tidak
dapat dikenali. Setelah waktu yang cukup lama longsor jenis rayapan ini bisa
menyebabkan tiang-tiang telepon, pohon, atau rumah miring ke bawah.
Dari Gambar 3.7, arah dan percepatan akselerometer pada bidang miring
di atas dapat dirumuskan persamaan berikut :
Keterangan :
𝑎𝑥 = Percepatan akselerometer pada bidang miring (m/s2)
𝑔 = Percepatan gravitasi bumi sebesar 9,8 m/s2
𝜃 = Sudut bidang miring
ax (g)
Sudut θ (°)
Grafik gambar 3.8 memperlihatkan bahwa sudut yang lebih besar dari 60°,
menghasilkan perubahan yang sangat kecil pada output akselerometer.
Karakteristik fungsi sinus tersebut menjelaskan mengapa akurasi pengukuran
sudut tidak memungkinkan untuk sudut yang mendekati 90° dari posisi horizontal.
Dari grafik gambar 3.8 dapat dilihat juga bahwa untuk sudut kemiringan
yang kecil, fungsi sinus sangat mendekati fungsui linear.
𝜃 = 𝑘. 𝑎𝑥 (3.4)
15
Dimana:
A(g) = Output sensor MX2125
T1 = Durasi pulsa high sensor MX2125
T2 = Perioda output sensor MX2125
𝑆𝑢𝑑𝑢𝑡 = 𝐴 𝑔 . 𝑘 (3.6)
R/W, merupakan pin read/write signal. Bila diberi logika „0‟, maka akan
terpilih write. Dan bila diberi logika „1‟, maka akan terpilih read.
E, merupakan sinyal enable yang berfungsi mengaktifkan write/read data.
DB0 / pin 7 – DB7 / pin 14, merupakan pin data 4 bit untuk LCD.
V+BL (pin 15) dan V-BL (pin 16), merupakan pin catu daya untuk
backlight LCD.
dan kecepatan prosesnya 10 kali lebih cepat dari pada mikrokontroler CISC biasa.
Berikut adalah blok diagram Mikrokontroler AVR ATMega32.
g. AVCC
Pin dari AVCC merupakan sumber tegangan untuk ADC. Pin AVCC
harus tetap disambungkan ke VCC meskipun tidak menggunakan konfigurasi
dari ADC.
h. AREF
AREF merupakan pin tegangan analog referensi untuk ADC.
i. Reset
Input reset. Jika pin ini mendapat logika “low”, maka akan
menjalankan reset (meskipun clock tidak aktif). Pulsa yang pendek tidak akan
menjamin dapat menjalankan reset ini.
26
j. XTAL1
XTAL1 merupakan pin untuk inverting oscillator amplifier dan input
dari rangkaian internal clock.
k. XTAL2
XTAL2 merupakan output dari inverting oscillator amplifier.
3.3.4. ZigBee
Teknologi ZigBee merupakan teknologi dengan data rate rendah (Low
Data Rate), biaya murah (Low cost), protokol jaringan tanpa kabel yang
ditujukan untuk otomasi dan aplikasi remote control. ZigBee diharapkan
mampu memberikan biaya yang murah serta daya yang rendah untuk
koneksitas antara peralatan dengan konsumsi daya baterai hingga beberapa
bulan atau bahkan beberapa tahun tetapi tidak memerlukan transfer data
setinggi yang digunakan Bluetooth.
ZigBee memiliki 3 topologi model jaringan yaitu topologi star, mesh (Peer
to Peer) serta cluster tree.
a. Topologi star
Pada topologi star komunikasi dilakukan antara perangkat dengan
sebuah pusat pengontrol tunggal, disebut sebagai koordinator PAN (Personal
Area Network). Aplikasi dari topologi ini bisa untuk otomasi rumah, perangkat
personal computer (PC), serta mainan anak-anak. Setelah sebuah FFD (Full-
Function Device) diaktifkan untuk pertamakali maka ia akan membuat
jaringannya sendiri dan menjadi koordinator PAN. Setiap jaringan star akan
memilih sebuah pengenal PAN yang tidak sedang digunakan oleh jaringan lain
didalam jangkauan radionya. Ini akan mengijinkan setiap jaringan star untuk
bekerja secara tersendiri.
b. Topologi mesh (peer to peer)
Dalam topologi peer to peer juga hanya ada satu koordinator PAN.
Berbeda dengan topologi star, setiap perangkat dapat berkomunikasi satu sama
lain sepanjang ada dalam jarak jangkauannya. Peer to peer dapat berupa ad
hoc, self-organizing dan self healing. Penerapannya seperti pengaturan di
industri dan pemantauan, jaringan sensor tanpa kabel, pencarian aset dan
inventory yang akan mendapat keuntungan dengan memakai topologi ini.
28
3.3.5. XBee-PRO
XBee merupakan suatu modul yang didesain untuk memenuhi standar
zigbee/IEEE 802.15.4 yang biasa digunakan untuk aplikasi jaringan sensor yang
berbiaya dan berdaya rendah. Modul ini membutuhkan daya minimal dan
menyediakan transfer data yang handal antara dua device. Modul XBee yang
digunakan dalam sistem ini adalah XBee-PRO.
Spesifikasi XBee-PRO
Tabel 3.10 Spesifikasi XBee vs XBee-PRO (Anonim, 2008b)
Pengoperasian XBee-PRO
Modul XBee-PRO dihubungkan dengan host melalui level logika port
serial asinkron. Melalui port serial ini, modul XBee-PRO dapat berkomunikasi
dengan logika dan tegangan yang kompatibel dengan UART atau melalui level
translator ke sembarang device serial, seperti RS-232/485/422 atau USB.
Device yang mempunyai UART interface dapat langsung dihubungkan
secara langsung dengan pin-pin modul XBee seperti di tunjukkan gambar 3.19.
31
Gambar 3.19 Diagram sistem aliran data pada XBee (Anonim, 2008b)
Data diterima oleh modul XBee-PRO melalui pin DI (pin 3) sebagai sinyal
serial asinkron. Sinyal harus berada pada kondisi idle high ketika tidak ada data
yang harus ditransmisikan. Setiap byte data terdiri dari satu bit start (low), 8 bit
data (dengan LSB terlebih dahulu), dan satu bit stop (high). Gambar 3.20
mengilustrasikan pola bit data serial dari XBee-PRO. Paket data 0x1F (bilangan
desimal “31”) yang ditransmisikan memalui XBee-PRO. Contoh format data
adalah 8-N-1 (bits – parity – jumlah bit stop).
Ketika data serial masuk melalui pin DI, maka data tersebut akan disimpan
di dalam DI buffer sampai data tersebut bisa ditransmisikan. Jika XBee tidak
segera mentransmisikan data (contohnya ketika telah menerima data RF), data
serial akan terus disimpan di DI buffer. Ketika DI buffer telah penuh, flow control
hardware dan software harus diimplementasikan untuk mencegah overflow
(hilangnya data antara host dan modul XBee). Berikut adalah hal-hal yang perlu
diperhatikan untuk mengeliminasi kebutuhan akan flow control.
Data yang dikirim harus lebih kecil dari ukuran DI buffer.
Gunakan baud rate yang paling rendah.
Kasus dimana DI buffer menjadi penuh dan kemungkinan overflow terjadi
jika penerimaan data melalui pin DI buffer berlangsung secara terus menerus.
Data yang berada di dalam DI buffer akan ditransmisikan melalui udara ketika
XBee tidak lagi menerima data. Ketika data RF diterima, data selanjutnya
diterima oleh DO buffer dan kemudian mengirim data tersebut ke host melalui
port serial. Ketika DO buffer mencapai kapasitas maksimalnya, data selanjutnya
yang datang ke DO buffer akan hilang.
Dua kasus dimana DO buffer menjadi penuh dan mengalami overflow:
Jika kecepatan aliran data di-set lebih tinggi dari kecepatan data modul
XBee. Proses penerimaan data oleh XBee akan lebih cepat daripada proses
pengiriman data dari XBee ke host.
33
Jika host tidak mengijinkan modul untuk mentransmisikan data keluar dari
DO Buffer karena di hold oleh hardware dan software flow control.
Ada 2 mode operasi dari XBee, yaitu mode Transparent (AT) dan mode
API (Packet). Mode transparent (AT) digunakan jika diinginkan konfigurasi
point-to-point yang sederhana, dimana XBee bertindak sebagai modem serial
wireless antara komputer atau mikrokontroler dengan remote device. Mode
transparent (AT) menggunakan komunikasi serial yang sederhana. Fitur dari
mode transparent adalah sebagai berikut:
Sederhana
Kompatibel dengan semua peralatan yang menggunakan komunikasi serial
Terbatas hanya untuk komunikasi point-to-point antara 2 XBee
Mode operasi API (packet) mempunyai kemampuan yang lebih baik
namun lebih kompleks dari dari mode transparent. Dengan mode API,
memungkinkan untuk membuat jaringan yang terdiri dari beberapa XBee dan
antar XBee yang satu dengan yang lainnya dapat saling berkomunikasi secara
individual. Fitur dari mode API adalah sebagai berikut:
I/O line passing, yaitu menerima data dari remote XBee yang berdiri
sendiri (stand-alone remote Xbee)
Memungkinkan untuk komunikasi broadcast dan komunikasi dengan lebih
dari satu XBee
Menerima acknowledgement bahwa paket telah dikirim dengan baik
Memungkinkan konfigurasi jarak jauh
Agar 2 buah XBee atau lebih dapat saling berkomunikasi, maka XBee
tersebut harus:
Mempunyai channel ID (CH) yang sama.
Mempunyai network ID PAN ID) yang sama.
Source ID XBee penerima harus sesuai dengan destination ID dari XBee
pengirim.
Pengalamatan (Addressing)
Pengalamatan digunakan untuk membedakan satu XBee dengan XBee
lainnya dan mencegah duplikasi paket data. Setiap modul XBee mempunyai
source address (alamat asal) untuk mencegah agar pesan non-duplikat tidak
dianggap sebagai pesan duplikat.
35
Pengalamatan 64 bit cocok digunakan untuk jaringan yang besar dan open-
ended dimana modul XBee dapat ditambahkan sewaktu-waktu. Pengalamatan 64
bit mempunyai 264 atau 18,4518 alamat unik.
Nilai source address dapat ditentukan dengan membaca nilai SH dan SL
dari setiap modul XBee. Agar dapat mengirim data ke modul XBee tertentu, nilai
DH dan DL dari XBee pengirim harus di-set menjadi nilai SH dan SL dari XBee
penerima (DH=SH dan DL=SL). Sementara itu, MY harus di-set 0xFFFF atau
FFFE.
3.3.6. CDC-232
CDC-232 membuat COM port virtual pada komputer yang tidak
mempunyai RS-232 port yang sebenarnya. Hal ini memungkinkan terjadinya
komunikasi RS-232C (tanpa jalur kontrol), setelah menghubungkan device dan
meng-install driver. Gambar 3.23 menunjukkan COM port virtual melalui
software USB.
7. Visual Basic 6 memiliki beberapa versi atau edisi yang telah disesuaikan
dengankebutuhan pemakainya.
Seperti aplikasi-aplikasi komersil lainnya, Visual Basic 6 juga dipasarkan
dalam beberapa versi atau jenis. Beberapa versi Visual Basic 6 yang ada dipasaran
adalah:
1. Standard Edition/Learning Edition : ini adalah versi standar yang sudah
mencakup berbagai sarana dasar dari Visual Basi 6 untuk mengembangkan
aplikasi.
2. Profesional Edition : versi ini memberikan berbagai sarana ekstra yang
dibutuhkan oleh para programmer professional, misalnya kontrol-kontrol
tambahan, dukungan untuk program internet, compiler untuk membuat file
Help, serta sarana pengembangan database yang lebih baik.
3. Enterprise Edition : versi ini dikhususkan untuk para programmer yang ingin
mengembangkan aplikasi remote computing atau client server. Biasanya versi
ini digunakan untuk membuat aplikasi pada jaringan.
BAB IV
ANALISIS DAN RANCANGAN SISTEM
Transmitter Receiver
MX2125 Keypad
Gambar 4.1 Blok diagram rangcang bangun sistem peringatan dini tanah
longsor
40
41
Mulai
Baca Input X
T Tombol menu
Baca Input Y
ditekan ?
Hitung sudut X Y
Masukkan range sudut
Hitung sudut Y
Range
min<sudut T
Tampilkan sudut X pada LCD Bunyikan alarm
aktual<Range
max?
A(g) = ((Durasi pulsa X high / perioda X) – 0,5) / A(g) = ((Durasi pulsa Y high / perioda Y) – 0,5) /
0,125 0,125
Return Return
Tombol Menu T
ditekan ?
Tombol Menu T
Y ditekan ?
Tombol Menu T
ditekan ?
T
y min > y max ?
Y
Y
T
x min > x max ?
Tampilkan pesan
kesalahan pada LCD
Y
Tampilkan pesan
kesalahan pada LCD Y Tombol Menu T
ditekan ?
Y
Tombol Menu T Return
ditekan ?
Pengaturan :
COM port
Baud rate
Interval waktu
Baca input
port serial
Buffer = input
Selesai
Zigbee
(c)
(b)
Transmitter
(Sensor akselerometer) (d)
(a)
48
49
Power supply
Sumber daya yang digunakan untuk bagian transmitter adalah baterai 9V.
Karena mikrokontroler bekerja pada level tegangan 5 VDC, maka sebelum masuk
ke rangkaian mikrokontroler, tegangan 9 VDC diturunkan menjadi 5 VDC dengan
menggunakan regulator 7805. Untuk pengaman dari polaritas yang terbalik,
rangkaian ini dilengkapi dengan sebuah diode. Rangkaian power supply juga
50
menghasilkan tegangan 3,3 V yang digunakan untuk memberi sumber daya pada
XBee-PRO. Untuk menurunkan tegangan dari 5 VDC menjadi 3,3 VDC
digunakan regulator AIC1722.
2. Sistem reset
Sistem reset terdiri dari sebuah push button dan sebuah resistor 10KΩ.
Mikrokontroler AVR ATMega32 memiliki fasilitas Power-On Reset,
sehingga tidak perlu lagi ditambahkan fungsi Power-On Reset pada
rangkaian.
dan tunggu beberapa saat (tergantung pada datasheet LCD), dan set E kembali ke
high (1). Ketika jalur RS berada dalam kondisi low (0), data yang dikirimkan ke
LCD dianggap sebagai sebuah perintah atau instruksi khusus (seperti bersihkan
layar, posisi kursor, dan lain-lain). Ketika RS dalam kondisi high (1), data yang
dikirimkan adalah data ASCII yang akan ditampilkan dilayar. Jalur kontrol R/W
harus berada dalam kondisi low (0) saat informasi pada data bus akan dituliskan
ke LCD. Apabila R/W berada dalam kondisi high (1), maka program akan
melakukan query (pembacaan) data dari LCD.
Pin R/W disambungkan dengan ground karena tidak memerlukan
pembacaan data LCD sehingga LCD akan selalu dalam kondisi write mode. Pin
ke 3 LCD dihubungkan dengan trimmer potensio sebesar 10KΩ sebagai pengatur
LCD brightness. Pin 11 – 14 yang merupakan pin untuk D4 – D7 dihubungkan
dengan mikrokontroler melalui pin PA4 – PA7.
Berikut adalah konfigurasi sambungan antara pin-pin LCD dengan pin-pin
mikrokontroler.
Rangkaian keypad
Keypad digunakan untuk memasukkan nilai range tingkat kemiringan
sudut yang diinginkan. Range yang dimasukkan berupa batas bawah dan batas
atas kemiringan, baik untuk sudut X maupun sudut Y. Keypad terdiri dari 4 buah
push button yang masing-masing dihubungkan dengan logic low (langsung
terhubung dengan ground) jika ditekan.
55
Rangkaian buzzer
Buzzer digunakan sebagai sign bahwa kemiringan transmitter berada
diluar range sudut kemiringan yang diinginkan. Buzzer dihubungkan dengan
mikrokontroler melalui PortB.0. Berikut adalah gambar rangkaian buzzer.
Rangkaian XBee-PRO
XBee-PRO digunakan sebagai sarana untuk mengirimkan data secara
wireless dari lokasi pemantauan ke tempat lain untuk dimonitor. XBee-PRO
bekerja berdasarkan protokol Zigbee. Karena XBee-PRO bekerja pada level
tegangan 3,3 VDC, sementara itu mikrokontroler bekerja pada level tegangan 5
VDC maka jalur data pengiriman dari mikrokontroler (TXD) harus disesuaikan
level tegangan XBee (DIN). Untuk itu, dibuat rangkaian pembagi tegangan
(voltage devider). LED pada pin 13 berfungsi menunjukkan status dari XBee.
LED ini akan menyala ketika status XBee aktif. LED pada pin 15 akan berkedip
ketika proses pengiriman data berlangsung.
Pendeklarasian mikrokontroler
Listing program konfigurasi jenis mikrokontroler, frekuensi crystal, dan
nilai baud rate adalah sebagai berikut.
Listing 5.1
Listing 1
$regfile = “M32def.dat”
$crystal = 16000000
$regfile = “M32def.dat”
$baud = 9600
$crystal = 16000000
Dalam listing 5.1 ditentukan bahwa jenis mikrokontroler yang digunakan
adalah AVR ATMega32 dengan kristal eksternal sebesar 16 MHz dan transfer
rate pengiriman data sebesar 9600 bps. Data yang dikirim secara serial adalah
data yang dikeluarkan melalui PortD.1 (TXD), dengan parity none, 8 bit data, dan
1 bit stop.
Listing 5.2
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6
= Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
Deflcdchar 0 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32
Program listing 5.2 berisi pendeklarasian pin-pin LCD dan tipe LCD.
“Config Lcd 16*2” berarti LCD tersebut memiliki 16 kolom dan 2 baris.
“Config Lcdpin” merupakan pengaturan dari bit-bit LCD yang berkomunikasi
dengan port-port mikrokontroler. “Deflcdcar” di gunakan untuk menampilkan
59
karakter khusus di luar huruf dan angka pada LCD. Dalam sistem pengukuran ini
deflcdchar digunakan untuk menampilkan simbol derajat (°).
Pendeklarasian variable
deklarasi untuk beberapa variabel yang dibutuhkan dalam sistem ini
dituliskan dalam listing 5.3.
Listing 5.3
Dim I As Integer
Dim X1 As Word
Dim X2 As Word
Dim Pulsa_x As Word
Dim Pulsa_x1 As Word
Dim Pulsa_x2 As Word
Dim Ag As Single
Dim G As Single
Dim Rangex As Single
Dim K As Byte
Dim Idx As Byte
Dim Tilt As Single
Dim Sdt_x As Single
Dim Sudut_x As String * 10
Dim Spx_1 As String * 10
Dim Spx_2 As String * 10
Dim Spx_min As Single
Dim Spx_max As Single
Dim Y1 As Word
Dim Y2 As Word
Dim Pulsa_y As Word
Dim Pulsa_y1 As Word
Dim Pulsa_y2 As Word
Dim Agy As Single
Dim Gy As Single
Dim Rangey As Single
Dim Ky As Byte
Dim Idxy As Byte
Dim Tilty As Single
Dim Sdt_y As Single
Dim Sudut_y As String * 10
Dim Spy_1 As String * 10
Dim Spy_2 As String * 10
Dim Spy_min As Single
Dim Spy_max As Single
Dim X As Byte
Dim Y As Byte
Dim A As Integer
60
Listing 5.4
Config Portc = Input
Config Porta = Output
Config Portb.0 = Output
T_menu Alias Pinc.1
T_up Alias Pinc.0
T_down Alias Pinc.2
T_shift Alias Pinc.3
Alarm Alias Portb.0
Listing 5.5
Declare Sub Rumus_x
Declare Sub Rumus_y
Declare Sub Range
Listing 5.6
For I = 1 To 10
Pulsein X1 , Pinc , 7 , 1
Pulsein X2 , Pinc , 7 , 0
Pulsa_x1 = Pulsa_x1 + X1
Pulsa_x2 = Pulsa_x2 + X2
Next
Pulsa_x1 = Pulsa_x1 / 10
Pulsa_x2 = Pulsa_x2 / 10
Pulsa_x = Pulsa_x1 + Pulsa_x2
Listing 5.7
Ag = Pulsa_x1 / Pulsa_x
Ag = Ag - 0.5
Ag = Ag / 0.125
If Ag < 0 Then
Aa = 1
Else
Aa = 0
End If
Ag = Abs(Ag)
G = Ag
Rangex = G * 1000
K = Lookup(idx , Konstanta)
Tilt = G * K
If Aa = 1 Then Tilt = 0 - Tilt
Sdt_x = Tilt
Sudut_x = Fusing(Sdt_x , "##.#")
63
Listing 5.8
Konstanta:
Data 57.5 , 58.16 , 59.04 , 60.47 , 62.35
Listing 5.9
Locate 1 , 1
Lcd "Sudut X : " ; Sudut_x ; Chr(0)
Locate 2 , 1
Lcd "Sudut Y : " ; Sudut_y ; Chr(0)
Sudut ditampilkan secara bersamaan pada satu display LCD, dimana sudut
x ditampilkan pada baris 1 dan sudut y ditampilkan pada baris 2. Data yang
ditampilkan diambil dari variabel Sudut_x untuk sumbu x dan Sudut_y untuk
sumbu y.
Listing 5.10
Menu1:
Cls
Cursor On Blink
Locate 1 , 1
Lcd "Range Sudut X:"
Locate 2 , 1
Lcd "X Min : "
Locate 2 , 9
Lcd Dpuluhanmin
Locate 2 , 10
Lcd Dsatuanmin
Locate 2 , 11
Lcd "."
Locate 2 , 12
Lcd Dkomamin
Locate 2 , 13
Lcd Chr(0)
A = 0
Gpuluhan = Dpuluhanmin
Gsatuan = Dsatuanmin
Gkoma = Dkomamin
Waitms 100
Listing 5.11
Menu2:
Cls
Cursor On Blink
Locate 1 , 1
Lcd "Range Sudut X :"
Locate 2 , 1
Lcd "X Max : "
Locate 2 , 9
Lcd Dpuluhanmax
Locate 2 , 10
Lcd Dsatuanmax
Locate 2 , 11
Lcd "."
Locate 2 , 12
Lcd Dkomamax
Locate 2 , 13
Lcd Chr(0)
A = 0
Gpuluhan = Hpuluhanmax
Gsatuan = Hsatuanmax
Gkoma = Hkomamax
Waitms 100
65
Proses increment dilakukan oleh keypad T_up pada tiap digit puluhan,
satuan, dan koma secara terpisah. Increment akan terjadi jika keypad T_up ditekan
dan dilepas kembali. Setiap satu kali proses penekanan dan pelepasan keypad
T_up increment hanya 1 angka saja dari angka sebelumnya. Proses tidak akan
berjalan jika keypad hanya ditekan saja. Untuk puluhan, increment dimulai dari
angka 0 sampai dengan 5. Jika sudah mencapai angka 5, maka akan kembali ke
angka 0. Increment angka pada digit puluhan ini hanya dibatasi dari angka 0
sampai 5 karena sensor hanya efektif membaca sampai kemiringan 60°. Adapun
untuk penambahan angka satuan dan koma, penambahan dilakukan dari 0 sampai
9 dan kembali ke 0.
Proses decrement range sudut sama seperti dengan proses increment, yaitu
setiap satu kali penekanan dan pelepasan hanya terjadi pengurangan angka 1 saja.
Pengurangan angka jika mencapai angka 0 akan kembali ke angka 5 untuk
puluhan dan dari angka 0 akan kembali ke angka 9 untuk satuan dan koma. Nilai
range yang dimasukkan pada proses ini disimpan dalam 3 variabel berbeda, yaitu
variabel Gpuluhan untuk menyimpan nilai puluhan, Gsatuan untuk menyimpan
nilai satuan, dan Gkoma untuk menyimpan nilai koma (listing 5.12).
Listing 5.12
Sub Range()
Select Case A
Case 0 :
Locate 2 , 9
If T_up = 0 Then
Waitms 10
While T_up = 0
Wend
Gpuluhan = Gpuluhan + 1
If Gpuluhan > 5 Then
Gpuluhan = 0
End If
Locate 2 , 9
Lcd Gpuluhan
Elseif T_down = 0 Then
Waitms 10
While T_down = 0
Wend
Gpuluhan = Gpuluhan - 1
If Gpuluhan < 0 Then
Gpuluhan = 5
End If
66
Locate 2 , 9
Lcd Gpuluhan
Elseif T_shift = 0 Then
Waitms 10
While T_shift = 0
Wend
A = A + 1
Waitms 10
End If
Case 1 :
Locate 2 , 10
If T_up = 0 Then
Waitms 10
While T_up = 0
Wend
Gsatuan = Gsatuan + 1
If Gsatuan > 9 Then
Gsatuan = 0
End If
Locate 2 , 10
Lcd Gsatuan
Elseif T_down = 0 Then
Waitms 10
While T_down = 0
Wend
Gsatuan = Gsatuan - 1
If Gsatuan < 0 Then
Gsatuan = 9
End If
Locate 2 , 10
Lcd Gsatuan
Elseif T_shift = 0 Then
Waitms 10
While T_shift = 0
Wend
A = A + 1
End If
Case 2:
Locate 2 , 12
If T_up = 0 Then
Waitms 10
While T_up = 0
Wend
Gkoma = Gkoma + 1
If Gkoma > 9 Then
Gkoma = 0
End If
Locate 2 , 12
Lcd Gkoma
Elseif T_down = 0 Then
Waitms 10
67
While T_down = 0
Wend
Gkoma = Gkoma - 1
If Gkoma < 0 Then
Gkoma = 9
End If
Locate 2 , 12
Lcd Gkoma
Elseif T_shift = 0 Then
Waitms 10
While T_shift = 0
Wend
A = A + 1
End If
Case 3 :
If T_shift = 1 Then
Waitms 10
A = 0
Locate 2 , 9
End If
End Select
End Sub
End
Listing 5.13
Call Range
Dpuluhanmin = Gpuluhan
Dsatuanmin = Gsatuan
Dkomamin = Gkoma
Vpuluhan = Dpuluhanmin * 10
Vkoma = Dkomamin * 0.1
Vtemp = Vpuluhan + Dsatuanmin
Vtemp = Vtemp + Vkoma
Spx_min = Vtemp
Spx_1 = Fusing(spx_min , "##.#")
68
Listing 5.14
Call Range
Dpuluhanmax = Gpuluhan
Dsatuanmax = Gsatuan
Dkomamax = Gkoma
Vpuluhan = Dpuluhanmax * 10
Vkoma = Dkomamax * 0.1
Vtemp = Vpuluhan + Dsatuanmax
Vtemp = Vtemp + Vkoma
Spx_max = Vtemp
Spx_2 = Fusing(spx_max , "##.#")
Ketika nilai range minimum lebih besar dari nilai maksimum untuk kedua
sudut, display akan menampilkan pesan kesalahan. Pesan tersebut akan terus
ditampilkan sampai tombol T_Menu ditekan. Ketika tombol T_Menu ditekan,
akan kembali ke Menu1.
Listing 5.15
…
If Spx_min > Spx_max Then
Goto Menu5
End If
…
Menu5:
Cls
Do
Locate 1 , 1
Lcd "Salah"
Locate 2 , 1
Lcd "X_Min > X_Max"
If T_menu = 0 Then
Waitms 10
While T_menu = 0
Wend
Goto Menu1
End If
Loop
Alarm
Alarm berfungsi memberi tanda ketika nilai kemiringan aktual berada
diluar range sudut yang ditentukan.
69
Listing 5.16
If Sdt_x < Spx_min Or Sdt_x > Spx_max Or Sdt_y < Spy_min
Or Sdt_y > Spy_max Then
Set Alarm
Else
Reset Alarm
End If
Prosedur form_load
Prosedur Form_Load akan menampilkan form1 ketika program
antarmuka dijalankan. Sebelum data-data sudut dapat ditampilkan pada tabel dan
grafik, terlebih dahulu dilakukan pengaturan port komputer yang dipakai sebagai
masukan pada port serial komputer, pengaturan baud rate pengiriman data, dan
interval waktu perekaman data pada tabel dan grafik.
Ada lima pilihan port pada komputer, yaitu COM1, COM2, COM3,
COM4, dan COM5. Untuk baudrate, tersedia enam pilihan, yaitu 2400, 4800,
9600, 19200, 38400, dan 56600. Sedangkan interval waktu perekaman data
tersedia dalam empat pilihan, yaitu 1 detik, 2 detik, 5 detik, dan 10 detik. Listing
programnya adalah sebagai berikut:
72
Listing 5.17
Private Sub Form_Load()
simpan.Enabled = False
hapus.Enabled = False
cmdHUb.Enabled = True
cmdPut.Enabled = False
cmdKeluar.Enabled = True
cetakgrafik.Enabled = False
jumlah = 0
MMControl1.Visible = False
koneksi
Timer1.Enabled = False
With Form1.Combo1
.AddItem "COM1"
.AddItem "COM2"
.AddItem "COM3"
.AddItem "COM4"
.AddItem "COM5"
End With
With Form1.Combo2
.AddItem "2400"
.AddItem "4800"
.AddItem "9600"
.AddItem "19200"
.AddItem "38400"
.AddItem "56600"
End With
End Sub
Ketika form1 dijalankan, tombol yang aktif hanya tombol hubung dan
tombol keluar saja.
Prosedur koneksi
Prosedur ini berisi perintah untuk menghubungkan program dengan
provider Microsoft.Jet.OLEDB.4.0, agar ketika data masuk akan langsung
direkam dan disimpan pada database DB_Sudut.mdb di Microsoft Access yang
diberi nama tabel. Datagrid1 akan menampilkan data yang terekam pada database
DB_Sudut.mdb melalui koneksi ADODC. Listing programnya ditunjukkan
oleh listing 5.18.
73
Listing 5.18
Private Sub koneksi()
Set conn = New Connection
conn.Open "PROVIDER=MSDataShape; Data
PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\DB_Sudut.mdb;"
Set rs = New Recordset
rs.Open "select * from tabel", conn, adOpenStatic,
adLockOptimistic
Set DataGrid1.DataSource = rs.DataSource
DataGrid1.Enabled = True
DataGrid1.Columns(0).Width = "1000"
DataGrid1.Columns(1).Width = "1500"
DataGrid1.Columns(2).Width = "1500"
DataGrid1.Columns(3).Width = "1500"
DataGrid1.Columns(4).Width = "1500"
End Sub
Prosedur cmdHub_Click
Setelah pengaturan port, baudrate dan interval waktu perekaman data pada
form1 telah dilakukan, maka untuk memulai komunikasi serial harus diklik
tombol “Hubung”. Jika terjadi kesalahan pada pengaturan port, akan muncul
messagebox peringatan bertuliskan “Port Salah”. Setelah tombol “Hubung” diklik,
tombol “Putus”, “Cetak Grafik”, “Simpan Tabel”, dan “Hapus Data” akan enable,
sedangkan tombol “Hubung” dan “Keluar” akan disable. Label9 yang bertuliskan
“Connected” akan diaktifkan sebagai penanda bahwa perekaman data sedang
berlangsung. Listing ditunjukkan oleh listing 5.19.
74
Listing 5.19
Private Sub cmdHub_Click()
tanda = "B"
simpan.Visible = True
hapus.Visible = True
simpan.Enabled = True
hapus.Enabled = True
cetakgrafik.Enabled = True
Dim port As Integer
On Error GoTo errcode
Select Case Combo1.ListIndex
Case -1
port = 1
Case 0
port = 1
Case 1
port = 2
Case 2
port = 3
Case 3
port = 4
Case 4
port = 5
End Select
If MSComm1.PortOpen = False Then
MSComm1.CommPort = port
MSComm1.RThreshold = 12
MSComm1.Settings = Combo2.List(Combo2.ListIndex) &
",N,8,1"
MSComm1.PortOpen = True
cmdHUb.Enabled = False
cmdPut.Enabled = True
cmdKeluar.Enabled = False
Timer1.Enabled = True
label9.Caption = "Connected"
label9.ForeColor = vbBlue
End If
Exit Sub
errcode:
MsgBox "Port Salah !", vbOKOnly, "Peringatan"
Combo1.SetFocus
End Sub
75
Prosedur cmdPut_Click
Untuk mengakhiri komunikasi serial harus diklik tombol “Putus”.
Port serial yang tadinya terhubung akan diputuskan koneksinya dan perekaman
data dihentikan. Pada Label9 ditampilkan tulisan “Disconnected” berwarna
merah. Listing programnya adalah sebagai berikut:
Listing 5.20
Private Sub cmdPut_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
label9.Caption = "Disconnected"
label9.ForeColor = vbRed
Timer1.Enabled = False
cmdHUb.Enabled = True
cmdPut.Enabled = False
cmdKeluar.Enabled = True
simpan.Enabled = True
hapus.Enabled = True
cetakgrafik.Enabled = True
MMControl1.Command = "Close"
End Sub
Prosedur masuk
Komponen MSComm digunakan untuk melakukan perekaman data
interupsi pada port serial, interupsi diterima dengan perintah comEvReceive.
Kontrol MSComm menyediakan fasilitas komunikasi dengan port serial
untuk pengiriman dan penerimaan data. Listing programnya adalah sebagai
berikut:
Listing 5.21
Private Sub masuk()
Dim buffer As String
Dim Data() As String
Dim i As Integer
Dim j As Integer
Data yang masuk melalui port serial diterima oleh variabel buffer. Ada
enam data yang dikirim oleh bagian transmitter dan diterima oleh variable buffer,
yaitu Sudut_x (string), Sudut_y (string), Spx_min (single), Spx_max (single),
Spy_min (single), dan Spy_max (single). Tipe data dari data yang berasal dari
variable Spx_min, Spx_max, Spy_min, dan Spy_max kemudian diubah menjadi
string. Keenam data yang diterima oleh variable buffer kemudian dipecah kembali
kedalam array pada variable Data yang selanjutnya ditampilkan dalam Text0
sampai Text5.
Pada prosedur masuk ini juga dilakukan pengaturan waktu pengaktifan
alarm. Ada empat kondisi yang menyebabkan alarm berbunyi, yaitu ketika nilai
sudut, baik sudut x (Sudut_x) maupun sudut y (Sudut_y), aktual lebih kecil dari
pada nilai range minimum (Spx_min dan Spy_min) atau lebih besar dari nilai
range maksimum (Spx_max dan Spy_max).
Prosedur alarm
Alarm digunakan untuk memberi peringatan berupa suara ketika keadaan
kritis, yaitu kemiringan sudut aktual berada diluar range sudut. Berikut adalah
listing programnya.
Listing 5.22
Private Sub alarm()
MMControl1.Visible = False
MMControl1.Notify = False
MMControl1.Wait = True
MMControl1.Shareable = False
MMControl1.FileName = "D:\lectures\MyWorks\Final
Project\Program\Visual Basic\Alarm Clock Buzzer.mp3"
MMControl1.Command = "Open"
MMControl1.Command = "Play"
End Sub
77
Prosedur simpan
Prosedur ini berfungsi untuk melakukan penyimpanan data tabel pada
Datagrid1 jika tombol “Simpan” diklik. Listing programnya adalah sebagai
berikut:
Listing 5.23
Private Sub simpan_Click()
Dim excel_app As Object
Dim excel_sheet As Object
Dim excel_book As Object
Dim row As Long
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim statement As String
Dim col As Integer
msg = MsgBox("Simpan Data ?", vbYesNo, "Konfirmasi")
If msg = vbNo Then Exit Sub
Screen.MousePointer = vbHourglass
DoEvents
Set excel_app = CreateObject("Excel.Application")
excel_app.Workbooks.Add
Set excel_sheet = excel_app.Worksheets(1)
Set conn = New ADODB.Connection
conn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\DB_Sudut.mdb;" & _
"Persist Security Info=False"
conn.Open
Set rs = conn.Execute("SELECT * FROM tabel", ,
adCmdText)
For col = 0 To 4
excel_sheet.Cells(1, col + 1) = rs.Fields(col).Name
Next col
row = 2
Do While Not rs.EOF
For col = 0 To rs.Fields.Count - 1
excel_sheet.Cells(row, col + 1) = _
rs.Fields(col).Value
Next col
row = row + 1
rs.MoveNext
Loop
excel_sheet.Range( _
excel_sheet.Cells(1, 1), _
excel_sheet.Cells(2, _
rs.Fields.Count)).Columns.AutoFit
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
78
excel_sheet.Rows(1).Font.Bold = True
excel_sheet.Rows(2).Select
excel_app.ActiveWindow.FreezePanes = True
excel_sheet.Cells(1, 1).Select
excel_app.Workbooks(1).Close True
excel_app.Quit
Set excel_sheet = Nothing
Set excel_app = Nothing
Screen.MousePointer = vbDefault
End Sub
Prosedur grafik
Prosedur ini berfungsi untuk menampilkan grafik hubungan antara data
sudut dengan waktu pada komponen MSChart1. Listing programnya adalah
sebagai berikut:
Listing 5.24
Private Sub grafik()
If rs.RecordCount = 0 Then Exit Sub
ReDim nilai(1 To rs.RecordCount, 1 To 2)
rs.MoveFirst
For X = 1 To rs.RecordCount
nilai(X, 1) = rs!SudutX
nilai(X, 2) = rs!SudutY
rs.MoveNext
Next X
MSChart1.ChartData = nilai
rs.MoveFirst
79
For X = 1 To rs.RecordCount
MSChart1.row = X
MSChart1.RowLabel = rs!waktu
rs.MoveNext
Next X
End Sub
Data perekaman yang berbentuk array disimpan dalam variable nilai. Jika
tidak ada data yang direkam maka grafik tidak akan dijalankan. Data yang
diterima berubah-ubah tergantung interupsi penerimaan data dari port serial, oleh
karena itu digunakan perintah Redim array berdimensi dua dengan jumlah array
tergantung pada banyaknya variabel data yang diterima.
Grafik yang digunakan adalah grafik dengan tipe XY. Data yang
ditampilkan pada sumbu Y adalah data sudut x dan sudut y yang berasal dari
recordset sudut (rs!SudutX dan rs!SudutY). Pada sumbu X menampilkan
interval waktu perekaman.
Prosedur cetakgrafik
Prosedur ini berfungsi untuk mencetak gambar grafik. Ketika tombol
Cetak Grafik diklik maka akan keluar messagebox yang berisi pertanyaan
konfirmasi “Cetak Grafik?”, jika tombol “Yes” diklik maka grafik akan terhubung
dengan printer untuk mencetak grafik, jika tombol “No” yang diklik maka tidak
akan dilakukan apapun. Listing programnya adalah sebagai berikut:
Listing 5.25
Private Sub cetakgrafik_Click()
msg = MsgBox("Cetak grafik?", vbYesNo, "Konfirmasi")
If msg = vbNo Then Exit Sub
MSChart1.EditCopy
Printer.Print " "
Printer.PaintPicture Clipboard.GetData(), 0, 0
Printer.EndDoc
End Sub
80
Prosedur timer
Timer digunakan untuk pengaturan interval waktu perekaman data yang
diterima port serial. Listing programnya ditunjukkan oleh listing 5.26.
Listing 5.26
Private Sub Timer1_Timer()
Timer1 = CDbl(Timer + Timer1.Interval)
Timer1 = Left(Timer, 8)
tanda = "B"
masuk
data2
grafik
End Sub
Listing 5.27
Private Sub T1_Click()
Timer1.Interval = 1000
End Sub
Prosedur keluar
Jika tombol “Keluar” diklik, maka akan keluar dari program antarmuka.
Listing programnya adalah sebagai berikut:
Listing 5.28
Private Sub cmdKeluar_Click()
Unload Me
End Sub
BAB VI
HASIL PENELITIAN DAN PEMBAHASAN
81
82
Listing 6.1
$regfile = "M32def.dat"
$baud = 9600
$crystal = 16000000
Do
Nama = "Halim"
Nim = "PA/11245"
Prody = “ELINS”
Print Nama
Print Nim
Print Prody
Loop
Ada tiga variable yang dikirim dalam pengujian sistem telemetri dan
antarmuka ini, yaitu Nama, Nim, dan Prody yang masing-masing mempunyai tipe
data string 10 karakter dan berisi data “Halim”, “PA/11245”, dan”ELINS”.
Gambar 6.2 menunjukkan hasil penerimaan data yang ditampilkan pada
Hyperterminal, yang menunjukkan bahwa komunikasi serial dapat berjalan
dengan baik.
Data dapat dikirim dengan baik secara wireless dalam jarak sekitar 800 m
untuk di luar ruangan dan sekitar 80 m untuk di dalam ruangan.
83
Dari tabel 6.1 dapat dibuat grafik hubungan antara nilai sudut aktual yang
diukur oleh busur derajat dengan nilai pembacaan sensor yang terbaca pada LCD
seperti ditunjukkan gambar 6.5.
T_Menu
T_Down T_Up
T_Shift
Ketika nilai aktual sudut berada di luar range sudut yang telah ditentukan,
alarm akan berbunyi.
Data sudut yang diterima dari sensor MX2125, diolah pada bagian
transmitter dan dikirimkan ke bagian receiver. Data sudut yang diterima,
ditampilkan pada program antarmuka dengan menggunakan software Visual Basic
6. Setelah program antarmuka dijalankan, maka akan ditampilkan Form, seperti
yang diperlihatkan pada Gambar 6.10.
88
Jika tombol “Yes” diklik, maka data pada tabel dapat langsung disimpan
pada Microsoft Excel dengan ekstensi *.xlsx, seperti gambar 6.15.
91
5.1. Kesimpulan
Dari ujicoba yang telah dilakukan, dapat diambil kesimpulan sebagai
berikut.
1. Sensor MX2125 dapat mengukur sudut kemiringan dengan baik. Kedua
output sensor mempunyai deviasi pembacaan yang cukup kecil terhadap
busur derajat, yaitu 1,6% untuk sumbu x dan 2,3% untuk sumbu y.
2. Sistem telemetri dapat dipancarkan dengan baik pada jangkauan
maksimal 800 meter di luar ruangan tanpa halangan dan maksimal 80
meter di dalam ruangan.
3. Sistem antarmuka dapat menampilkan dan menyimpan data-data kemiringan
tanah, serta menampilkan dan mencetak grafik hubungan suhu dan waktu
selama pemantauan dilakukan.
5.2. Saran
Untuk penelitian selanjutnya sebaiknya ditambahkan beberapa hal yang
dapat meningkatkan kinerja sistem, diantaranya:
1. Untuk memperoleh data yang lebih komprehensif tentang kondisi tanah
rawan longsor yang sedang dipantau, dapat ditambahkan sensor lain seperti
sensor extensometer untuk memantau rekahan tanah, rain gauge untuk
mengukur curah hujan, dan lain-lain.
2. Bagian transmitter dibuat beberapa buah yang ditempatkan di beberapa titik
sehingga seluruh titik berpotensi longsor bisa termonitor.
3. Untuk meningkatkan jangkauan pengiriman data, modul Xbee-PRO bisa
diganti dengan modul yang mempunyai jangkauan yang lebih jauh.
93
DAFTAR PUSTAKA
Anonim, 2002, Improved, Ultra Low Noise ±2 g Dual Axis Accelerometer with
Digital Outputs, search.alkon.net/cgi-bin/pdf.pl?pdfname=memsic/
mxd2125gl.pdf, Diakses tanggal 5 Maret 2010.
Anonim, 2005b, Improved, Ultra Low Noise ±3 g Dual Axis Accelerometer with
Digital Outputs, http://www.parallax.com/Portals/0/Downloads/docs/
prod/acc/MXD2125G%26M.pdf, Diaksess tanggal 5 Maret 2010.
94
95
Arnhardt, C., Asch, K., Azzam, R., Bill, R., Fernandez-Steeger, T. M., Homfeld,
S.D., Kallash, A., Niemeyer, F., Ritter, H., Toloczyki, M., dan Walter, K.,
2007, Sensor based Landslide Early Warning System – SLEWS
Development of a Geoservice Infrastructure as Iasis for Early Warning
Systems for Landslides by Integration of Real-time Sensors,
http://www.winsoc.org/pdf/ATT00010.pdf, Diakses tanggal 1 Mei 2010.
Rahmaniar, W., 2009, Prototipe Robot Pemantau Erupsi Gunung Berapi Berbasis
Deteksi Suhu Menggunakan Telemetri Modulasi Amplitude Shifting
Keying, Skripsi, Jurusan Fisika FMIPA UGM, Yogyakarta.
Walter. K., Niemeyer. F., Bill. R., 2008, Geosensor Web Enablement in Early
Warning System for Landslides, http://www.ikg.uni-
hannover.de/geosensor/Lecture/Thursday/Session4/sess4_walter_niemeye
r.pdf, Diakses tanggal 1 Mei 2010.
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Dim I As Integer
Dim X1 As Word
Dim X2 As Word
Dim Pulsa_x As Word
Dim Pulsa_x1 As Word
Dim Pulsa_x2 As Word
Dim Ag As Single
Dim G As Single
Dim Rangex As Single
Dim K As Byte
Dim Idx As Byte
Dim Tilt As Single
Dim Sdt_x As Single
Dim Sudut_x As String * 10
Dim Spx_1 As String * 10
Dim Spx_2 As String * 10
Dim Spx_min As Single
Dim Spx_max As Single
Dim Y1 As Word
Dim Y2 As Word
Dim Pulsa_y As Word
Dim Pulsa_y1 As Word
Dim Pulsa_y2 As Word
Dim Agy As Single
Dim Gy As Single
Dim Rangey As Single
Dim Ky As Byte
Dim Idxy As Byte
Dim Tilty As Single
Dim Sdt_y As Single
Dim Sudut_y As String * 10
Dim Spy_1 As String * 10
Dim Spy_2 As String * 10
Dim Spy_min As Single
Dim Spy_max As Single
Dim X As Byte
Dim Y As Byte
97
98
Dim A As Integer
Dim Gpuluhan As Integer , Gsatuan As Integer , Gkoma As Integer
Dim Dpuluhan As Integer , Dsatuan As Integer , Dkoma As Integer
Dim Hpuluhan As Integer , Hsatuan As Integer , Hkoma As Integer
Dim Vtemp As Single , Vpuluhan As Integer , Vkoma As Single
Dim Dpuluhanmin As Integer , Dsatuanmin As Integer , Dkomamin As
Integer
Dim Dpuluhanmax As Integer , Dsatuanmax As Integer , Dkomamax As
Integer
Dim Hpuluhanmin As Integer , Hsatuanmin As Integer , Hkomamin As
Integer
Dim Hpuluhanmax As Integer , Hsatuanmax As Integer , Hkomamax As
Integer
X1 = 0
X2 = 0
Y1 = 0
Y2 = 0
A = 0
Gpuluhan = 0
Gsatuan = 0
Gkoma = 0
Dpuluhan = 0
Dsatuan = 0
Dkoma = 0
Vpuluhan = 0
Vkoma = 0
Vtemp = 0
Cursor Off
Locate 1 , 1
Lcd " LEWS Prototype"
Locate 2 , 1
Lcd "Powered by HALIM"
Wait 1
Cls
Do
Cursor Off
Call Rumus_x
Call Rumus_y
99
Locate 1 , 1
Lcd "Sudut X : " ; Sudut_x ; Chr(0)
Locate 2 , 1
Lcd "Sudut Y : " ; Sudut_y ; Chr(0)
Print Sudut_x
Print Sudut_y
Print Spx_1
Print Spx_2
Print Spy_1
Print Spy_2
If T_menu = 0 Then
Waitms 10
While T_menu = 0
Wend
Gosub Menu1
End If
If Sdt_x < Spx_min Or Sdt_x > Spx_max Or Sdt_y < Spy_min Or Sdt_y
> Spy_max Then
Set Alarm
Else
Reset Alarm
End If
Loop
'Menu Range X
Menu1:
Cls
Cursor On Blink
Locate 1 , 1
Lcd "Range Sudut X:"
Locate 2 , 1
Lcd "X Min : "
Locate 2 , 9
Lcd Dpuluhanmin
Locate 2 , 10
Lcd Dsatuanmin
Locate 2 , 11
Lcd "."
Locate 2 , 12
Lcd Dkomamin
Locate 2 , 13
Lcd Chr(0)
A = 0
Gpuluhan = Dpuluhanmin
Gsatuan = Dsatuanmin
Gkoma = Dkomamin
Waitms 10
Do
Call Range
Dpuluhanmin = Gpuluhan
Dsatuanmin = Gsatuan
100
Dkomamin = Gkoma
Vpuluhan = Dpuluhanmin * 10
Vkoma = Dkomamin * 0.1
Vtemp = Vpuluhan + Dsatuanmin
Vtemp = Vtemp + Vkoma
Spx_min = Vtemp
Spx_1 = Fusing(spx_min , "##.#")
If T_menu = 0 Then
Waitms 10
While T_menu = 0
Wend
Goto Menu2
End If
Loop
Menu2:
Cls
Cursor On Blink
Locate 1 , 1
Lcd "Range Sudut X :"
Locate 2 , 1
Lcd "X Max : "
Locate 2 , 9
Lcd Dpuluhanmax
Locate 2 , 10
Lcd Dsatuanmax
Locate 2 , 11
Lcd "."
Locate 2 , 12
Lcd Dkomamax
Locate 2 , 13
Lcd Chr(0)
A = 0
Gpuluhan = Dpuluhanmax
Gsatuan = Dsatuanmax
Gkoma = Dkomamax
Waitms 10
Do
Call Range
Dpuluhanmax = Gpuluhan
Dsatuanmax = Gsatuan
Dkomamax = Gkoma
Vpuluhan = Dpuluhanmax * 10
Vkoma = Dkomamax * 0.1
Vtemp = Vpuluhan + Dsatuanmax
Vtemp = Vtemp + Vkoma
Spx_max = Vtemp
Spx_2 = Fusing(spx_max , "##.#")
If T_menu = 0 Then
Waitms 10
While T_menu = 0
101
Wend
If Spx_min > Spx_max Then
Goto Menu5
Else
Goto Menu3
End If
End If
Loop
'Menu Range Y
Menu3:
Cls
Cursor On Blink
Locate 1 , 1
Lcd "Range Sudut Y :"
Locate 2 , 1
Lcd "Y Min : "
Locate 2 , 9
Lcd Hpuluhanmin
Locate 2 , 10
Lcd Hsatuanmin
Locate 2 , 11
Lcd "."
Locate 2 , 12
Lcd Hkomamin
Locate 2 , 13
Lcd Chr(0)
A = 0
Gpuluhan = Hpuluhanmin
Gsatuan = Hsatuanmin
Gkoma = Hkomamin
Waitms 100
Do
Call Range
Hpuluhanmin = Gpuluhan
Hsatuanmin = Gsatuan
Hkomamin = Gkoma
Vpuluhan = Hpuluhanmin * 10
Vkoma = Hkomamin * 0.1
Vtemp = Vpuluhan + Hsatuanmin
Vtemp = Vtemp + Vkoma
Spy_min = Vtemp
Spy_1 = Fusing(spy_min , "##.#")
If T_menu = 0 Then
Waitms 10
While T_menu = 0
Wend
Goto Menu4
End If
Loop
102
Menu4:
Cls
Cursor On Blink
Locate 1 , 1
Lcd "Range Sudut Y :"
Locate 2 , 1
Lcd "Y Max : "
Locate 2 , 9
Lcd Hpuluhanmax
Locate 2 , 10
Lcd Hsatuanmax
Locate 2 , 11
Lcd "."
Locate 2 , 12
Lcd Hkomamax
Locate 2 , 13
Lcd Chr(0)
A = 0
Gpuluhan = Hpuluhanmax
Gsatuan = Hsatuanmax
Gkoma = Hkomamax
Waitms 100
Do
Call Range
Hpuluhanmax = Gpuluhan
Hsatuanmax = Gsatuan
Hkomamax = Gkoma
Vpuluhan = Hpuluhanmax * 10
Vkoma = Hkomamax * 0.1
Vtemp = Vpuluhan + Hsatuanmax
Vtemp = Vtemp + Vkoma
Spy_max = Vtemp
Spy_2 = Fusing(spy_max , "##.#")
If T_menu = 0 Then
Waitms 10
While T_menu = 0
Wend
If Spy_min > Spy_max Then
Goto Menu6
Else
Return
End If
End If
Loop
Menu5:
Cls
Do
Locate 1 , 1
Lcd "Salah"
Locate 2 , 1
Lcd "X_Min > X_Max"
103
If T_menu = 0 Then
Waitms 10
While T_menu = 0
Wend
Goto Menu1
End If
Loop
Menu6:
Cls
Do
Locate 1 , 1
Lcd "Salah"
Locate 2 , 1
Lcd "Y_Min > Y_Max"
If T_menu = 0 Then
Waitms 10
While T_menu = 0
Wend
Goto Menu3
End If
Loop
Ag = Abs(ag)
G = Ag
Rangex = G * 1000
Select Case Rangex
Case Is <= 173.91 : Idx = 0
Case Is <= 343.87 : Idx = 1
Case Is <= 508.04 : Idx = 2
Case Is <= 661.48 : Idx = 3
Case Is <= 801.92 : Idx = 4
End Select
104
K = Lookup(idx , Konstanta)
Tilt = G * K
If X = 1 Then Tilt = 0 - Tilt
Sdt_x = Tilt
Sudut_x = Fusing(sdt_x , "##.#")
End Sub
Sub Rumus_y
For I = 1 To 10
Pulsein Y1 , Pinc , 6 , 1
Pulsein Y2 , Pinc , 6 , 0
Pulsa_y1 = Pulsa_y1 + Y1
Pulsa_y2 = Pulsa_y2 + Y2
Next
Pulsa_y1 = Pulsa_y1 / 10
Pulsa_y2 = Pulsa_y2 / 10
Pulsa_y = Pulsa_y1 + Pulsa_y2
Agy = Pulsa_y1 / Pulsa_y
Agy = Agy - 0.5
Agy = Agy / 0.125
If Agy < 0 Then
Y = 1
Else
Y = 0
End If
Agy = Abs(agy)
Gy = Agy
Rangey = Gy * 1000
Select Case Rangey
Case Is <= 173.91 : Idxy = 0
Case Is <= 343.87 : Idxy = 1
Case Is <= 508.04 : Idxy = 2
Case Is <= 661.48 : Idxy = 3
Case Is <= 801.92 : Idxy = 4
End Select
Ky = Lookup(idxy , Konstantay)
Tilty = Gy * Ky
If Y = 1 Then Tilty = 0 - Tilty
Sdt_y = Tilty
Sudut_y = Fusing(sdt_y , "##.#")
End Sub
Gpuluhan = 0
End If
Locate 2 , 9
Lcd Gpuluhan
Elseif T_down = 0 Then
Waitms 10
While T_down = 0
Wend
Gpuluhan = Gpuluhan - 1
If Gpuluhan < 0 Then
Gpuluhan = 5
End If
Locate 2 , 9
Lcd Gpuluhan
Elseif T_shift = 0 Then
Waitms 10
While T_shift = 0
Wend
A = A + 1
Waitms 10
End If
Case 1 :
Locate 2 , 10
If T_up = 0 Then
Waitms 10
While T_up = 0
Wend
Gsatuan = Gsatuan + 1
If Gsatuan > 9 Then
Gsatuan = 0
End If
Locate 2 , 10
Lcd Gsatuan
Elseif T_down = 0 Then
Waitms 10
While T_down = 0
Wend
Gsatuan = Gsatuan - 1
If Gsatuan < 0 Then
Gsatuan = 9
End If
Locate 2 , 10
Lcd Gsatuan
Elseif T_shift = 0 Then
Waitms 10
While T_shift = 0
Wend
A = A + 1
End If
Case 2:
Locate 2 , 12
If T_up = 0 Then
Waitms 10
While T_up = 0
106
Wend
Gkoma = Gkoma + 1
If Gkoma > 9 Then
Gkoma = 0
End If
Locate 2 , 12
Lcd Gkoma
Elseif T_down = 0 Then
Waitms 10
While T_down = 0
Wend
Gkoma = Gkoma - 1
If Gkoma < 0 Then
Gkoma = 9
End If
Locate 2 , 12
Lcd Gkoma
Elseif T_shift = 0 Then
Waitms 10
While T_shift = 0
Wend
A = A + 1
End If
Case 3 :
If T_shift = 1 Then
Waitms 10
A = 0
Locate 2 , 9
End If
End Select
End Sub
End
'------------------------------------------'
Konstanta:
Data 57.5 , 58.16 , 59.04 , 60.47 , 62.35
Konstantay:
Data 57.5 , 58.16 , 59.04 , 60.47 , 62.35
107
MSChart1.ChartData = nilai
rs.MoveFirst
For X = 1 To rs.RecordCount
MSChart1.row = X
MSChart1.RowLabel = rs!waktu
rs.MoveNext
Next X
End Sub
End Select
If MSComm1.PortOpen = False Then
MSComm1.CommPort = port
MSComm1.RThreshold = 12
MSComm1.Settings = Combo2.List(Combo2.ListIndex) & ",N,8,1"
MSComm1.PortOpen = True
cmdHUb.Enabled = False
cmdPut.Enabled = True
cmdKeluar.Enabled = False
Timer1.Enabled = True
label9.Caption = "Connected"
label9.ForeColor = vbBlue
End If
Exit Sub
errcode:
MsgBox "Port Salah !", vbOKOnly, "Peringatan"
Combo1.SetFocus
End Sub
Timer1.Enabled = False
cmdHUb.Enabled = True
cmdPut.Enabled = False
cmdKeluar.Enabled = True
simpan.Enabled = True
hapus.Enabled = True
cetakgrafik.Enabled = True
MMControl1.Command = "Close"
End Sub
Screen.MousePointer = vbHourglass
DoEvents
Set excel_app = CreateObject("Excel.Application")
excel_app.Workbooks.Add
Set excel_sheet = excel_app.Worksheets(1)
Set conn = New ADODB.Connection
conn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\DB_Sudut.mdb;" & _
"Persist Security Info=False"
conn.Open
Set rs = conn.Execute("SELECT * FROM tabel", , adCmdText)
For col = 0 To 4
excel_sheet.Cells(1, col + 1) = rs.Fields(col).Name
Next col
row = 2
Do While Not rs.EOF
For col = 0 To rs.Fields.Count - 1
excel_sheet.Cells(row, col + 1) = _
rs.Fields(col).Value
Next col
row = row + 1
rs.MoveNext
Loop
excel_sheet.Range( _
excel_sheet.Cells(1, 1), _
excel_sheet.Cells(2, _
rs.Fields.Count)).Columns.AutoFit
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
excel_sheet.Rows(1).Font.Bold = True
111
excel_sheet.Rows(2).Select
excel_app.ActiveWindow.FreezePanes = True
excel_sheet.Cells(1, 1).Select
excel_app.Workbooks(1).Close True
excel_app.Quit
Set excel_sheet = Nothing
Set excel_app = Nothing
Screen.MousePointer = vbDefault
End Sub