Buku Workshop Perangkat Keras Dan Perangkat Lunak
Buku Workshop Perangkat Keras Dan Perangkat Lunak
PERTEMUAN 1
PENGANTAR REALTIME DAN PENGENALAN SISTEM BERBASIS
REALTIME
1.1. Tujuan
1. Mahasiswa dapat mengerti konsep dasar sistem Real Time
2. Mahasiswa dapat memberikan contoh penerapan Soft Real Time pada kehidupan
sehari-hari
mendukung eksekusi program atau aplikasi dengan waktu yang memiliki batasan, atau
dengan kata lain suatu sistem real-time harus memiliki:
a. Batasan waktu dan memenuhi deadline, artinya
real-time, tetapi
Secara blok diagram untuk sistem Real-Time (studi kasus pada Client-Server)
dapat dilihat sepert gambardibawah ini.
Sistem waktu nyata merupakan sistem yang berkaitan erat dengan deadline. Agar
dapat mencapai real-time, maka usaha yang dilakukan untuk memenuhi kriteria realtime antara lain :
Software yang dihardwarekan ( Hadrwareisasi )
Dengan teknik
kecepatan proses kerja, yang pada akhirnya akan mempercepat proses, efisien
waktu dan dapat mendukung terjadinya sistem real-time.
Seleksi / Sorting
Sistem sorting digunakan untuk mengurutkan suatu data tertentu dengan tujuan
untuk mempermudah pada saat terjadi pengambilan keputusan, misalnya program
akan mengambil bilangan terbesar, maka tinggal mengarahkan pointer pada indeks
tertentu dan tidak melakukan seleksi pada setiap bilangan.
Preprocessing
Sebelum task yang akan dikerjakan datang, maka sudah diatur-atur terlebih
dahulu, misalnya datanya diurutkan atau diseleksi terlebih dahulu.
Scheduling
Metoda untuk memproses suatu job atau task berdasarkan schedule yang telah
ditetapkan, sehingga tidak terjadi proses tumpang tindih.
Parallelism
Metoda paralelisme pada suatu processor akan mempercepat prose eksekusi
terhadap suatu program, terutama jika program yang dijalankan tersebut kompleks.
Dengan sistem parallel processor ini, setiap task didistribusikan pada masingmasing prosessor dan hasilnya digabungkan menjadi satu. Dengan demikian, maka
proses eksekusi tersebut akan lebih cepat.
Data Reduction
Data-data yang tidak digunakan (tidak penting) atau data yang berulang
(redundancy) bisa dilakukan pengurangan (reduction).
Data Compression
Kompresi data diguankan untuk menghemat space suatu data. Dalam kompresi
data harus dipertimbangkan dalam hal waktu kompresi, waktu pengiriman data,
dan proses dekompresi data tersebut.
Prediction
Prediction digunakan untuk memperkirakan suatu proses eksekusi data. Berapa
kira-kira yang digunakan untuk mengeksekusi sebuah program.
Sampling
Proses sampling digunakan untuk mengambil data tetapi tidak secara
keseluruhan, melainkan hanya diambil sample-sample tertentu saja dengan harapan
sudah mewakili seluruh data yang ada. Dengan demikian apabila beberapa kriteria
diatas terpenuhi, maka akan diperoleh grafik seperti gambar dibawah ini.
Pada Gambar 1.7 terdiri dari beberapa blok sistem. Secara garis besar dibedakan
menjadi dua, yaitu bagian statistik dan algoritma. Pada bagian algoritma terdapat
sejumlan n algoritma. Semakin kompleks suatu program, maka akan semakin banyak
punya algoritma yang bisa digunakan untuk menyelesaikan program tersebut.
Pada bagian masukan terdapat saklar selector yang digunakan untuk memilih
input mana yang akan dieksekusi menggunakan algoritma1n, tergantung dari
keinginan kita atau tingkat komplektifitas program.
Agar bisa diperoleh konsep real-time, maka ditambahkan suatu kontrol atau
pencatat kapan program mulai start dan kapan program tersebut harus berhenti dengan
menghasilkan nilai dan waktu sesuai dengan kesepakatan batas waktu (deadline).
1.3. Tugas
1. Buatlah rangkuman mengenai konsep sistem real-time!(Tulis dalam kertas A4)
2. Carilah 10 contoh penerapan sistem real-time dalam kehidupan sehari-hari maupun
dalam bidang teknologi !
PERTEMUAN 2
KONSEP HARD REALTIME SISTEM NAVIGASI PESAWAT
2.1. Tujuan
1. Mahasiswa dapat mengerti konsep dasar sistem Hard Real Time
2. Mahasiswa dapat memberikan contoh penerapan Hard Real Time pada kehidupan
sehari-hari
3. Mahasiswa dapat mengimplementasikan Konsep Hard Real Time pada program
operasi harus dijamin dengan waktu maksimum. Pemberian jaminan seperti ini tidak
dapat dilakukan dalam sistem dengan secondary storage atau virtual memory, karena
sistem seperti ini tidakdapat meramalkan waktu yang dibutuhkan untuk mengeksekusi
suatu proses. Diagram hard real-time dapat dilihat seperti Gambar 2.1 berikut ini.
B. Navigasi Pesawat
Navigasi udara merupakan kegiatan untuk mengarahkan alat transportasi udara
(dalam hal ini pesawat) dari satu tempat ke tempat yang lain agar tidak keluar dari
jalurnya.
Navigation is the process of reading, planning, recording, and controlling the
movement of a craft or vehicle from one place to another.
[Jacob et al., 1993]
Navigasi juga diperlukan untuk mengurangi risiko kecelakaan pesawat yang
diakibatkan oleh tabrakan dengan pesawat lainnya maupun benturan dengan bukit dan
awan tebal khususnya ketika cuaca buruk atau jarak pandang pilot terbatas.
Navigasi ini dilakukan dari darat yang dibantu melalui sinyal yang dipancarkan
oleh instrumen terpasang pada menara (ground base) maupun sinyal dari satelit
(satellite base). Kemudian dengan sinyal-sinyal yang dipancarkan balik oleh pesawat,
orang di darat dapat mengetahui koordinat titik lokasi pesawat tersebut berada yang
kemudian digunakan untuk mengarahkan pesawat.
C. GPS
GPS adalah sistem radio navigasi dan penentuan posisi menggu-nakan satelit.
Nama formalnya adalah NAVSTAR GPS (Navigation Satellite Timing and Ranging
Global Positioning System). Sistem yang dapat digunakan oleh banyak orang
sekaligus dalam segala cuaca ini, didesain untuk memberikan posisi dan kecepatan
tiga dimensi
yang teliti, dan juga informasi mengenai waktu, secara kontinyu di seluruh dunia.
Pada dasarnya GPS terdiri atas tiga segmen utama, yaitu segmen angkasa (spacial
segment) yang terdiri dari satelit-satelit GPS, segmen sistem kontrol (control system
segment) yang terdiri dari stasiun-stasiun pemonitor dan pengontrol satelit, dan
segmen pemakai (user segment) yang terdiri dari pemakai GPS termasuk alat-alat
penerima dan pengolah sinyal dan data GPS.
Ada beberapa hal yang membuat GPS menarik untuk digunakan dalam penentuan
posisi, yakni:
GPS dapat digunakan setiap saat tanpa bergantung waktu dan cuaca. GPS dapat
digunakan baik pada siang ataupun malam hari, dalam kondisi cuaca yang buruk
sekalipun seperti hujan ataupun kabut. Karena karakteristiknya ini maka
9
10
2.3. Percobaan
Pada percobaan ini, topik atau kasus yang digunakan adalah mengenai aplikasi
Simulator Pesawat Terbang menggunakan Direct X dengan Masukan Data
Smartphone. Sistem tersebut berbasis Hard Real-Time. Dalam kehidupan nyata
keterlambatan tidak boleh terjadi, karena dapat berakibat hilangnya kontrol terhadap
navigasi pesawat terbang.
2.3.1. Peralatan
Untuk menunjang percobaan pada kasus ini dibutuhkan peralatan sebagai berikut:
1. Komputer Personal
2. GPS dan Kompas Smartphone Android
11
findViewById(R.id.ValueAltitude)).setText(String.valueOf
(location.getAltitude()));
} else {
((TextView) findViewById(R.id.ValueAltitude))
.setText(getString(R.string.DefaultAltitude));
}
if (location.hasSpeed()) { ((TextView)
findViewById(R.id.ValueSpeed)).setText(String
.valueOf(location.getSpeed()));
} else {
((TextView) findViewById(R.id.ValueSpeed))
.setText(getString(R.string.DefaultSpeed));
}
... //masih banyak lagi
2. Kirimkan data GPS dan Kompas tersebut ke PC melalui komunikasi bluetooth.
Untuk
melakukan
hal
tersebut,
Anda
dapat
memanfaatkan
method
sendMessage(String s).
Tabel 2.2
private void sendMessage(String message) {
if (service_data_io.getState() !=
service_bluetooth.STATE_CONNECTED) {
return;
}
if (message.length() > 0) {
byte[] send = message.getBytes();
service_data_io.write(send);
output_string.setLength(0);
output_teks.setText(output_string);
}
}
3. Berikut merupakan tampilan dari aplikasi android pada kasus Simulator Pesawat
Terbang ini.
13
Pesawat akan bergerak sesuai dengan data GPS dan Azimuth dari smartphone. Untuk
ketinggian dari pesawat merupakan ketinggian object pesawat 3D terhadap sumbu x=0,
y=0, dan z=0.
Tabel 2.1 Informasi Kecepatan pada Output Console
Kecepatan sekarang = 1560.0
Kecepatan sekarang = 1580.0
Kecepatan sekarang = 1600.0
Kecepatan sekarang = 1620.0
Kecepatan sekarang = 1640.0
Kecepatan sekarang = 1660.0
Kecepatan sekarang = 1680.0
Kecepatan sekarang = 1700.0
Kecepatan sekarang = 1720.0
...
Setelah itu program akan menginformasikan posisi dari pesawat, yaitu berupa azimuth
dan ketinggian (altitude)setiap durasi 1 mikro sekon.
2.4. Penjelasan
Salah satu penerapanhard real-time dalam kehidupan sehari-hari adalah pada sistem
pengontrol pesawat terbang. Dalam hal ini, keterlambatan sama sekali tidak boleh terjadi,
karena dapat berakibat tidak terkontrolnya pesawat terbang.
Nyawa penumpang yang ada dalam pesawat tergantung dari sistem ini, karena jika
sistem tidak dapat merespon tepat waktu, maka dapat menyebabkan kecelakaan yang
merenggut korban jiwa. Dalam simulasi di atas ditekankan pada sistem navigasi dari
pesawat terbang.
2.5. Tugas
1. Buatlah program yang mengimplementasikan Sistem Hard Real-Time (Waktu
pengerjaan 2 minggu, progress didemokan minggu depan).
2. Buatlah laporan sementara untuk progress Anda !
16
PERTEMUAN 3
KONSEP HARD REALTIME SISTEM REAKTOR NUKLIR
3.1. Tujuan
1. Mahasiswa dapat mengerti konsep dasar sistem Hard Real Time
2. Mahasiswa dapat memberikan contoh penerapan Hard Real Time pada kehidupan
sehari-hari
3. Mahasiswa dapat mengimplementasikan Konsep Hard Real Time pada program
B. Reaktor Nuklir
Pada reactor nuklir terjadi pembangkitan panas yang dihasilkan dari reaksi nuklir
dengan bahan bakar uranium U-235 perbandingannya adalah 1 kg uranium pada
reactor nuklir sama dengan 3000 ton batu bara pada pembangkit lisrik tenaga batu
bara. Jadi apabila melihat dari perbandingan nulir dengan batu bara, dapat dilihat
mana yang lebih baik karena pembangkit listrik tenaga uap dengan batu bara tidak
17
terlalu banyak resiko dan membutuhkan teknologi canggih, namun penggunaan batu
bara sebenarnya merupakan sebuah pemborosan dan banyak menghasilkan polusi.
Pada reaktor nuklir yang dimanfaatkan adalah panas yang dihasilkan oleh reaksi
nuklir tersebut. Pembangkitan panas dapat terjadi dengan berbagai cara yang
merupakan hasil uji coba pada aktivitas inti atom.
3.3. Percobaan
Pada percobaan ini, topik atau kasus yang digunakan adalah mengenai aplikasi
Simulator Reaktor Nuklir. Sistem tersebutberbasis Hard Real-Time. Dalam
kehidupan nyata, tidak boleh terjadi, karena dapat berakibat meledaknya reaktor nuklir
yang sangat membahayakan nyawa manusia maupun alam sekitar.
3.3.1. Peralatan
Untuk menunjang percobaan pada kasus ini dibutuhkan peralatan sebagai berikut:
1. Komputer Personal
18
19
6. Tambahkan kode program untuk memulai simulasi reactor nuklir. Program tersebut
memanfaatkan komponen timer visual basic untuk pemanggilan data secara realtime.
Berikut merupakan pecahan kode program pada timer tersebut:
Tabel 3.1
masih banyak lagi
If fuel <> 0 Then
If control < 93 Then
maincoolant = (11000 / (((100 - Val(fuel)) * 0.1) +
((Val(control1)) * 0.2))) '+ (202 * ((100 Val(maincoolant1)) * .01))
End If
If control > 92 And control <> 100 Then
maincoolant = (4500 / (((100 - Val(fuel)) * 0.1) +
((Val(control1)) * 0.2))) '+ (202 * ((100 Val(maincoolant1)) * .01))
End If
If maincoolant > 299 Then
maincoolant = ((maincoolant - 300) + ((100 maincoolant1) * ((maincoolant - 300) * 0.004))) + 300 +
heatbuildup
End If
Else
maincoolant = 21
heat = 21
reactor = 21
End If
heatvalve = Val(maincoolantupd) * (1 - ((100 Val(maincoolant1)) * 0.01))
If shpheatexchfailure.BackColor <>&HFF& Then
20
22
3.4. Penjelasan
Salah satu penerapan hard real-time dalam kehidupan sehari-hari adalah pada sistem
reaktor nuklir. Dalam hal ini, keterlambatan atau tidak sampainya data tidak boleh
terjadi, karena dapat berakibat reaktor meledak.
Reaktor nuklir dapat meledak dikarenakan beberapa sebab, diantaranya suhu reaktor
yang melebihi suhu maksimal reaktor dikarenakan sistem pendingin tidak bekerja
sebagaimana mestinya.
3.5. Tugas
1. Lanjutkan pengerjaan program yang mengimplementasikan Sistem Hard Real-Time!
(didemokan minggu depan)
2. Buatlah laporan final untuk program Anda !
23
PERTEMUAN 4
KONSEP SOFT REALTIME SISTEM TELEMETERING CURAH
HUJAN DAN TMA
4.1. Tujuan
1. Mahasiswa dapat mengerti konsep dasar sistem Soft Real Time
2. Mahasiswa dapat memberikan contoh penerapan Soft Real Time pada kehidupan
sehari-hari
3. Mahasiswa dapat mengimplementasikan Konsep Soft Real Time pada program
Diagram
Contoh penerapan sistem ini dalam kehidupan sehari-hari adalah pada alat
penjual/pelayan otomatis. Jika mesin yang menggunakan sistem ini telah lama
digunakan, maka mesin tersebut dapat mengalami penurunan kualitas, misalnya waktu
pelayanannya menjadi lebih lambat dibandingkan ketika masih baru. Keterlambatan
24
pada sistem ini tidak menyebabkan kecelakaan atau akibat fatal lainnya, melainkan
hanya menyebabkan kerugian keuangan saja. Jika pelayanan mesin menjadi lambat,
maka para pengguna dapat saja merasa tidak puas dan akhirnya dapat menurunkan
pendapatan pemilik mesin.
Setelah batas waktu yang diberikan telah habis, pada sistem hard real-time,
aplikasi yang dijalankan langsung dihentikan. Akan tetapi, pada sistem soft real-time,
aplikasi yang telah habis masa waktu pengerjaan tugasnya, dihentikan secara bertahap
atau dengan kata lain masih diberikan toleransi waktu.
Mengimplementasikan fungsi soft real-time membutuhkan design yang hati-hati
dan aspek yang berkaitan dengan sistem operasi. Pertama, sistem harus punya
prioritas penjadualan, dan proses real-time harus memiliki prioritas tertinggi, tidak
melampaui waktu, walaupun prioritas non real-time dapat terjadi. Kedua, dispatch
latency harus lebih kecil. Semakin kecil latency, semakin cepat real-time proses
mengeksekusi.
Untuk menjaga dispatch tetap rendah, kita butuh agar
preemptible. Ada beberapa cara untuk mencapai tujuan ini. Pertama adalah dengan
memasukkan preemption points di durasi system call yang lama, yang memeriksa
apakah prioritas utama butuh untuk dieksekusi. Jika sudah, maka contex switch
mengambil alih, ketika high priority proses selesai, proses yang diinterupsi
meneruskan dengan system call. Points premption dapat diganti hanya di lokasi yang
aman di kernel dimana kernel struktur tidak dapat dimodifikasi. Metoda yang lain
adalah dengan membuat semua kernel preemptible. Karena operasi yang benar dapat
dijamin, semua struktur data kernel harus diproteksi dengan mekanisme sinkronisasi.
Dengan metode ini, kernel dapat selalu di preemptible, karena setiap data kernel
yang sedang diupdate diproteksi dengan pemberian prioritas yang tinggi. Jika ada
proses dengan prioritas tinggi ingin membaca atau memodifikasi data kernel yang
sedang dijalankan, prioritas yang tinggi harus menunggu sampai proses dengan
prioritas rendah tersebut selesai. Situasi seperti ini dikenal dengan priority inversion.
Kenyataanya, serangkaian proses dapat saja mengakses sumber daya yang sedang
dibutuhkan oleh proses yang lebih tinggi prioritasnya. Masalah ini dapat diatasi
dengan priority-inheritance protocol, yaitu semua proses yang sedang mengakses
sumber daya mendapat prioritas tinggi sampai selesai menggunakan sumber daya.
Setelah selesai, prioritas proses ini dikembalikan menjadi seperti semula.
25
26
4.3. Percobaan
Pada percobaan ini, topik atau kasus yang digunakan adalah mengenai aplikasi
Sistem Telemetering Curah Hujan dan Tinggi Muka Airdi daerah hulu Waduk
Cirata - PJB. Sistem tersebut berbasis Soft Real-Time dikarenakan data yang diterima
(data curah hujan dan tinggi muka air) tidak akan berpengaruh vital terhadap kinerja
sistem tersebut. Sehingga sistem akan terus berjalan walaupun data tidak diterima,
namun terdapat informasi yang memberitahukan bahwa data pada saat itu tidak diterima
oleh sistem.
4.3.1. Peralatan
Untuk menunjang percobaan pada kasus ini dibutuhkan beberapa peralatan sebagai
berikut:
1. Komputer Personal (Server)
2. Data Logger
3. Modul Pengukur Curah Hujan (Tipping Bucket)
4. Modul Pengukur Tinggi Muka Air (Waterlevel)
5. Modem GPRS / GSM dengan Antena
27
28
4. Setelah itu pasang modem GPRS pada Komputer Server. Atur PORT Modem yang
akan digunakan. Setelah itu lakukan instalasi terhadap IDE Visual Studio 2008,
khususnya untuk bahasa pemrograman Visual Basic.
5. Lakukan instalasi terhadap SQL Server 2005, kemudian lakukan pengaturan
terhadap setting SQL Server sehingga dapat melakukan komunikasi database antara
server dengan beberapa client. Jangan lupa atur user management untuk proses
autentifikasi program yang akan dibuat. Setelah itu, buatlah sebuah database beserta
table yang ada didalamnya untuk proses penerimaan data.
6. Integrasikan IDE Visual Studio dengan database SQL yang telah dibuat dengan cara
menambahkan intruksi seperti ditunjukkan pada table kode program berikut:
Tabel 4.1
Public Class DataBaseConnection
Public Function open() As SqlClient.SqlConnection
Dim conect As New
SqlClient.SqlConnection("Server='ALTRAZPC\SQLEXPRESS';Database='sistem_monitoring'; " & _"
User ID='sa';password='ahmadreza';Pooling=false;")
Try
conect.Open()
Catch ex As Exception
End Try
Return conect
End Function
7. Setelah itu akan dilakukan penambahan beberapa komponen GUI dan kode program
sehingga program dapat diintegrasikan dengan modul sensor yang digunakan.
Berikut ini merupakan pecahan program untuk pembacaan data SMS yang dikirim
oleh data logger pada tiap-tiap lokasi.
Tabel 4.2
Dim u As New Regex("[0-9A-Zaz\,\=\s]*?[\+]CMT[\:][\s]*[\""]([\+09]*)[\""][\s]*[\""\,\/\:\+0-9\s ]*[\s]*[\#]STA[\:][09]*[\;]TM[\:][0-9\/\?]*[\,]([0-9]*[\:][0-9]*)[\:][09]*[A-Z0-9\;\:\.\,]*AD01[\:]([\.0-9\]*)[\;]AD02[\:]([\.0-9\-]*)[\;][0-9A-Z\:\;\\.]*PU03[\:]([0-9]*)[\;][A-Z0-9\;\:\.]*[\#]")
Dim m As Match = u.Match(masukan)
txtHost.Text = masukan
Thread.Sleep(1)
While m.Success
29
.
.
.
If (nomor_s(0) = msg.nomor) And (mode_hujan(0) = 0) And
(jam_pecah_int = jam_banding) Then
sensor_hujan_tampung(0) = msg.sensor_hujan
sensor_hujan(0) = sensor_hujan_tampung(0) counter_hujan(0)
counter_hujan(0)=counter_hujan(0)+ sensor_hujan(0)
jam_hujan(0) = msg.jam
tegangan(0) = msg.tegangan
Call cek_status_sensor_hujan()
koneksi.update_waktu(Date.Today, nama_s(0),
sensor_hujan(0), status_sensor_hujan(0), "1",
nomor_s(0), sensor_hujan_sebelum(0), jam_hujan(0),
latitud(0), longitud(0), tegangan(0),
stat_periode_hp(0), stat_periode_fail(0),
stat_transmit_mode(0), stat_running_status(0),
stat_sim_card(0), stat_modul_gprs(0), stat_sinyal(0))
.
.
'Masih banyak lagi
8. Berikut ini adalah tampilan running program dari kasus ini:
30
31
4.4. Penjelasan
Program di atas merupakan program yang mengimplementasikan soft real-time. Hal
tersebut dapat dilihat pada gambar 4.7 bahwa terdapat beberapa lokasi penempatan
modul yang tidak mengirimkan data curah hujan dikarenakan terdapat kendala pada
modul tersebut. Data yang tidak masuk ke dalam sistem tersebut tidak akan
mempengaruhi kinerja sistem, dikarenakan data yang masuk ke dalam database hanya
digunakan sebagai informasi untuk mengetahui besarnya curah hujan dan tinggi muka air
dari beberapa lokasipenempatan modul.
4.5. Tugas
1. Buatlah program yang mengimplementasikan Sistem Soft Real-Time (Waktu
pengerjaan 2 minggu, progress didemokan minggu depan).
2. Buatlah laporan sementara untuk progress Anda !
32
PERTEMUAN 5
KONSEP SOFT REALTIME SISTEM TELEMETERING ANGIN
5.1. Tujuan
1. Mahasiswa dapat mengerti konsep dasar sistem Soft Real Time
2. Mahasiswa dapat memberikan contoh penerapan Soft Real Time pada kehidupan
sehari-hari
3. Mahasiswa dapat mengimplementasikan Konsep Soft Real Time pada program
5.3. Percobaan
Pada percobaan ini, topik atau kasus yang digunakan adalah mengenai aplikasi
Sistem Telemetering Kecepatan Angin di Gedung Teknik Komputer Lantai 3 PENS. Sistem tersebut berbasis Soft Real-Time dikarenakan data yang diterima (data
kecepatan angin) tidak akan berpengaruh vital terhadap kinerja sistem tersebut. Sehingga
sistem akan terus berjalan walaupun data tidak diterima, namun terdapat informasi yang
memberitahukan bahwa data pada saat itu tidak diterima oleh sistem.
5.3.1. Peralatan
Untuk menunjang percobaan pada kasus ini dibutuhkan beberapa peralatan sebagai
berikut:
1. Komputer Personal (Server)
2. Modul Mikrokontroler AVR
3. Penakar Kecepatan Angin
4. Kabel Serial COM (RS-232)
33
loop_menit++;
if (loop>=100 {
loop=0;
d1=data_motor1;
d2=data_motor2;
d_a=data_motor1*0.6;
d_b=data_motor2*0.6;
tampung_data1=tampung_data1+data_motor1;
tampung_data2=tampung_data2+data_motor2;
RPM1[RPMn1]=d_a;
RPM2[RPMn2]=d_b; RPMn1++;RPMn2++;
set_tmp=0;
}
if(loop_menit>=500){
loop_menit=0;
for(i=0;i<5;i++){
RPMx=RPMx+RPM1[i];
RPMy=RPMy+RPM2[i];
}
RPMx=RPMx/5;
RPMy=RPMy/5;
printf("M1:%dM2:%dRPM1:%0.2fRPM2:%0.2f"
,tampung_data1,tampung_data2,RPMx,RPMy);
tampung_data1=0;
tampung_data2=0;
RPMn1=0;
RPMn2=0;
RPMx=0;
RPMy=0;
}
}
4. Setelah itu Lakukan instalasi terhadap SQL Server 2005 pada komputer server.
Jangan lupa atur user management untuk proses autentifikasi program yang akan
dibuat. Setelah itu, buatlah sebuah database beserta table yang ada didalamnya untuk
proses penerimaan data.
5. Integrasikan IDE Visual Studio dengan database SQL yang telah dibuat dengan cara
menambahkan intruksi seperti ditunjukkan pada table kode program berikut:
Tabel 5.3
Public Class connect
Public Function open() As SqlClient.SqlConnection
Dim conect As New
SqlClient.SqlConnection("Server='ALTRAZPC\SQLEXPRESS';Database='sistem_telemetering_angin'; "
& _" User ID='sa';password='ahmadreza';Pooling=false;")
Try
conect.Open()
Catch ex As Exception
End Try
Return conect
End Function
35
6. Setelah itu akan dilakukan penambahan beberapa komponen GUI dan kode program
sehingga program dapat diintegrasikan dengan modul mikrokontroler AVR yang
digunakan. Berikut ini merupakan pecahan program untuk pembacaan data rotary
motor yang dikirim melalui komunikasi serial oleh modul mikrokontroler AVR.
Tabel 5.4
Private Sub AxMSComm1_OnComm(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
mscom.OnComm
data = mscom.Input
'M1:0M2:0RPM1:0RPM2:0
Dim s As New Regex("M1[\:]([0-9]*)M2[\:]([09]*)RPM1[\:]([0-9\.]*)RPM2[\:]([0-9\.]*)")
Dim n As Match = s.Match(data)
While n.Success
Dim msg As New ShortMessage()
msg.counter1 = n.Groups(1).Value
msg.counter2 = n.Groups(2).Value
msg.rpm1 = n.Groups(3).Value
msg.rpm2 = n.Groups(4).Value
TextBox1.Text = "Counter[1]: " &
msg.counter1 & vbCrLf & "Counter[2]: " & msg.counter2 &
vbCrLf & "RPM[1]: " & msg.rpm1 & vbCrLf & "RPM[2]: " &
msg.rpm2
n = n.NextMatch()
counter(0) = msg.counter1
counter(1) = msg.counter2
rpm(0) = msg.rpm1
rpm(1) = msg.rpm2
Call cek_status()
Call updatedata()
'coun = 0
Call insertdata()
End While
Call data_pens1()
End Sub
7. Berikut ini adalah tampilan running program dari kasus ini:
36
5.4. Penjelasan
Program di atas merupakan program yang mengimplementasikan soft real-time. Hal
tersebut dapat dilihat pada gambar 5.4 bahwa pada lokasi ke-2 terdapat 2 data yang tidak
diterima (kosong) oleh Komputer server.
Data yang tidak masuk ke dalam sistem tersebut tidak akan mempengaruhi kinerja
sistem, dikarenakan data yang masuk ke dalam database hanya digunakan sebagai
informasi untuk mengetahui besarnya kecepatan angin pada lokasi tersebut.
5.5. Tugas
1. Lanjutkan pengerjaan program yang mengimplementasikan Sistem Soft Real-Time!
(didemokan minggu depan)
2. Buatlah laporan final untuk program Anda !
38
PERTEMUAN 6
KONSEP SEMI REALTIME SISTEM NAVIGASI
6.1. Tujuan
1. Mahasiswa dapat mengerti konsep dasar sistem Semi Real Time
2. Mahasiswa dapat memberikan contoh penerapan Semi Real Time pada kehidupan
sehari-hari
3. Mahasiswa dapat mengimplementasikan Konsep Semi Real Time pada program
39
global, pengoperasian alat receiver relatif mudah, relatif tidak terpengaruh dengan
kondisi topografis, dan ketelitian yang dihasilkan dapat dihandalkan
merupakan realtime untuk navigasi dibidang kelautan. Salah satu aplikasi protokol
ini adalah pada komunikasi data GPS.
sentences dengan
40
bujur (longitude), ketinggian (altitude), waktu sekarang standar UTC (UTC Time) dan
kecepatan (speed over ground). Berikut ini adalah jenis kalimat NMEA 0183 :
a. $GPGGA (Global Positioning System Fixed Data)
b. $GPGLL (Geographic Latitude/Longitude
c. $GPGSA (GNSS DOP and Aktive Satelites)
e. $GPGSV (GNSS Satelite In View)
f. $GPRMC (Recommended Minimum Specific GNSS Data)
g. $GPVTG (Course Over Ground and Ground Speed)
Setiap data di awali dengan karakter $ dan diakhiri dengan <CR><LF>. Pada
prakteknya tidak semua data dengan header ini diambil, hanya yang menyangkut
waktu, garis lintang dan garis bujur untuk posisi pengguna.
6.3. Percobaan
Pada percobaan ini, topik atau kasus yang digunakan adalah mengenai aplikasi
GPS Tracking.
6.3.1. Peralatan
Untuk menunjang percobaan pada kasus ini dibutuhkan beberapa peralatan sebagai
berikut:
1. Komputer Personal
2. Modul GPS
3. Modem GPRS
4. Kabel Serial RS232
41
42
6. Setelah itu , Set nama class Anda. Setelah itu tekan tombol Finish untuk
menerapkan frame tersebut pada project Anda.
7. Tambahkan beberapa komponen GUI pada frame Anda, dicontohkan seperti pada
gambar berikut:
8. Tambahkan
kode
program
untuk
membaca
data
serial
dan
kemudian
for(int i=0;i<len;i++){
tampung+=(char)buffer[i];
}
String a[];
a=tampung.split("\n");
tampung=tampung.replaceAll("(\\s+)", "");
System.out.print(tampung);
receive_textarea.append(tampung+"\n");
cek_regex(tampung);
tampung="";
for(int i=0;i<buffer.length;i++){
buffer[i]=(byte)0;
}
} catch ( IOException e )
{
e.printStackTrace();
System.exit(-1);
}}}
...
public void cek_regex(String in){
String a=in;
String patternStr =
"[\\+]CMT[\\:][\"]([\\+0-9]*)[\\'\\,\\\"09\\/\\:\\;\\+]*?DTGPS[\\:\\#]*?LAT[\\:]([\\-09\\.]*?)[\\#]LON[\\:]([0-9\\.]*)[\\#]?([0-9]*)[\\#]?";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(a);
boolean matchFound = matcher.find();
if (matchFound) {
text_informasi_serial.setText("");
for (int i=1; i<=matcher.groupCount(); i++) {
String groupStr = matcher.group(i);
}
text_informasi_serial.setText("Nomor HP:
"+matcher.group(1)+"\r\nLatitude:
"+matcher.group(2)+"\r\nLongitude: "+matcher.group(3));
String hp=matcher.group(1);
hp=hp.replaceAll("\\+62", "0");
System.out.println("hp: "+hp);
int kd=Integer.parseInt(matcher.group(4));
String lok;
.
.
.
update_posisi_pengguna(hp,matcher.group(2),matcher.grou
p(3));
update_tampilan(matcher.group(2), matcher.group(3));
44
}
}
//masih banyak lagi
9. Untuk menjalankan aplikasi tersebut tekan tombol Run pada netbean. Berikut
hasil running program dari kasus ini:
45
6.4. Penjelasan
Kasus di atas menggunakan konsep semi realtime, dikarenakan data GPS yang
diterima dari satellite provider masih dapat ditoleransi keterlambatannya. Namun range
waktu keterlambatan dari data tidak melebihi sistem soft realtime dan tidak kurang dari
sistem hard realtime.
Data yang terlambat atau tidak diterima oleh sistem(aplikasi) akan berpengaruh
terhadap respond output yang diberikan kepada pengguna modul GPS, namun hal ini
tidak boleh terjadi terus menerus, karena akan menyulitkan pengguna untuk mengetahui
posisi sekarang, bahkan dapat menyebabkan pengguna tersesat dalam perjalanan.
6.5. Tugas
1. Buatlah program yang mengimplementasikan Sistem Semi Real-Time (Waktu
pengerjaan 2 minggu, progress didemokan minggu depan).
2. Buatlah laporan sementara untuk progress Anda !
46
PERTEMUAN 7
KONSEP SEMI REALTIME SISTEM PENDETEKSI AKSI EEG
7.1. Tujuan
1. Mahasiswa dapat mengerti konsep dasar sistem Semi Real Time
2. Mahasiswa dapat memberikan contoh penerapan Semi Real Time pada kehidupan
sehari-hari
3. Mahasiswa dapat mengimplementasikan Konsep Semi Real Time pada program
B. Otak
Otak tertutup oleh tempurung kepala, yang mana dilindungi langsung oleh tulang
tengkorak. Tempurung kepala ditutupi oleh kulit yang tipis, yang disebut scalp (kulit
kepala). Sebagian besar otak yang terletak langsung di bawah tulang tempurung
kepala adalah
(neurons). Aktivitas pada otak adalah salah satu dari sekian banyak bentuk dari
fenomena bioelektrik dalam tubuh manusia. Fenomena ini terjadi pada bagian dalam
dan bagian terluar dari otak sehingga sinyal ini bisa dideteksi di kulit kepala. Selalu
ada aktivitas listrik dalam bentuk impuls syaraf yang terkirim dan diterima ke dan dari
syaraf cortical, meskipun sedang tidur. Fungsi lapisan otak meliputi pikiran abstrak,
47
(1)
48
Keterangan :
adalah bilangan tetap, yang lainnya adalah bagian vibrasi.
(3)
Persamaan yang digunakan dalam Fourier adalah persamaan yang oleh waktu T. Jika
bergerak dari T ==> -~ menjadi Fourier Transfer.
Dari persamaan (3), kita dapat memperoleh nilai variabel Fourier dari fungsi f(t)
sebagai berikut :
(4)
Jika sisi kanan (tanpa 1/T) dinotasikan sebagai Xn, maka:
(5)
Dengan menggunakan persamaan (5), maka persamaan (3) dapat ditulis menjadi:
... (6)
Persamaan (6) memiliki jarak frekuensi angular yang sama dimana
=0 dan n
Jika T , 0 nilai batas pada persamaan (6) adalah tergantung pada dan
disimbolkan dengan X ()
(7)
49
Pengukuran f(t) dimulai dari t=0 dengan rentang waktu t. Data dampling adalah
sejumlah N. Jika persamaan (7) diintegrasikan dari t=0 dengan rentang waktu t,
maka terjadi :
(8)
7.3. Percobaan
Pada percobaan ini, topik atau kasus yang digunakan adalah mengenai aplikasi
Pendeteksi Perintah Aksi (normal,dorong, tarik) pada Sinyal Otak Manusia secara
Real-Time.
7.3.1. Peralatan
Untuk menunjang percobaan pada kasus ini dibutuhkan beberapa peralatan sebagai
berikut:
1. Komputer Personal
2. USB Wifi Dongle
3. Modul EEG Neuroheadset
8. Berikut ini adalah data EEG pasien yang diperoleh dari EEG Neuroheadset melalui
komunikasi wifi.
51
9. Data yang diperoleh tersebut akan dilakukan filter berdasarkan frekuensi spectrum
(FFT). Berikut merupakan hasil transformasi sinyal menggunakan FFT pada channel
AF3.
10. Ambil data amplitudo dari spektrum tersebut pada range frekuensi 13-30 Hz. Hal
ini bertujuan untuk mendapatkan sinyal beta dari data EEG tersebut. Data sinyal beta
tersebut akan digunakan untuk proses training dan mapping pada jaringan syaraf
tiruan.
11. Untuk menerapkan pemrosesan sinyal pada aplikasi Anda. Tambahkan kode
program untuk memproses sinyal EEG yang masuk (FFT, Filter by Freq, PSD).
Berikut merupakan pecahan kode program tersebut:
Tabel 7.1
... //masih banyak lagi
52
}
cek_aksi();
13. Berikut merupakan tampilan running program dari kasus ini:
Gambar 7.7 Aksi Normal Tidak memikirkan aksi dorong dan tarik
7.4. Penjelasan
Kasus di atas menggunakan konsep semi real-time, dikarenakan apabila terdapat
data yang lost atau noise pada interval yang tidak terlalu besar, sistem masih dapat
mentoleransinya.Namun apabila sinyal untuk aksi (dorong dan tarik) terlalu banyak yang
tidak diterima, dapat mengakibatkan sistem tidak dapat menyimpulkan aksi tersebut
dengan benar, maka secara default sistem akan memberi kesimpulan bahwa sinyal
tersebut termasuk sinyal dengan aksi Normal/Netral.
7.5. Tugas
1. Lanjutkan pengerjaan program yang mengimplementasikan Sistem Semi Real-Time!
(didemokan minggu depan)
2. Buatlah laporan final untuk program Anda !
55
PERTEMUAN 8
SISTEM HARD REALTIME PADA ARM 11 PHYTEC PHYCORE
SISTEM PENDINGIN REAKTOR NUKLIR
8.1. Tujuan
1. Mahasiswa dapat mengaplikasikan sistem HardRealTime di Modul RTOS
B. Reaktor Nuklir
Pada reactor nuklir terjadi pembangkitan panas yang dihasilkan dari reaksi nuklir
dengan bahan bakar uranium U-235 perbandingannya adalah 1 kg uranium pada
reactor nuklir sama dengan 3000 ton batu bara pada pembangkit lisrik tenaga batu
bara. Jadi apabila melihat dari perbandingan nulir dengan batu bara, dapat dilihat
mana yang lebih baik karena pembangkit listrik tenaga uap dengan batu bara tidak
terlalu banyak resiko dan membutuhkan teknologi canggih, namun penggunaan batu
bara sebenarnya merupakan sebuah pemborosan dan banyak menghasilkan polusi.
Pada reactor nuklir yang dimanfaatkan adalah panas yang dihasilkan oleh reaksi
nuklir tersebut. Pembangkitan panas dapat terjadi dengan berbagai cara yang
merupakan hasil uji coba pada aktivitas inti atom.
56
8.3. Percobaan
Pada percobaan ini, topik atau kasus yang digunakan adalah mengenai aplikasi
Simulator Pendingin Reaktor Nuklir Fukushima.
8.3.1. Peralatan
Untuk menunjang percobaan pada kasus pertama dibutuhkan beberapa peralatan
sebagai berikut:
1. Komputer Personal (Server)
2. Modul ARM 11 Phytex Phycore
if(waktu<100){
waktu+=1.67;
progress->setValue(waktu);
}
else
waktu=0;
}
4. Berikut merupakan hasil running program dari kasus ini:
59
8.4. Penjelasan
Salah satu penerapan hard real-time dalam kehidupan sehari-hari adalah pada sistem
pendingin reaktor nuklir. Dalam hal ini, keterlambatan atau tidak sampainya data tidak
boleh terjadi, karena dapat berakibat reaktor meledak.
Reaktor nuklir dapat meledak dikarenakan beberapa sebab, diantaranya suhu reaktor
yang melebihi suhu maksimal reaktor dikarenakan sistem pendingin tidak bekerja
sebagaimana mestinya.
8.5. Tugas
1. Buatlah program yang mengimplementasikan Sistem Hard Real-Time pada modul
ARM 11 Phytec Phycore ! (Waktu pengerjaan 2 minggu, progress didemokan
minggu depan).
2. Buatlah laporan sementara untuk progress Anda !
60
PERTEMUAN 9
SISTEM HARD REALTIME PADA ARM 11 PHYTEC PHYCORE
SISTEM LIFT
9.1. Tujuan
1. Mahasiswa dapat mengaplikasikan sistem HardRealTime di Modul RTOS
B. Kontrol Elevator
Lift pada awalnya tidak memiliki posisi pendaratan otomatis. Lift dioperasikan
oleh operator lift menggunakan kontroler motor. Kontroler ini terkandung dalam
wadah silinder tentang ukuran dan bentuk wadah kue dan ini dioperasikan melalui
pegangan memproyeksikan. Hal ini memungkinkan kontrol atas energi yang dipasok
ke motor (terletak di bagian atas poros lift atau di samping bagian bawah poros lift)
dan sebagainya memungkinkan lift yang akan akurat diposisikan jika operator itu
cukup terampil. Lebih biasanya operator harus jogging kontrol untuk mendapatkan
lift yang cukup dekat dengan titik pendaratan dan kemudian mengarahkan penumpang
keluar dan masuk untuk melihat langkah. Beberapa lift barang tua dikendalikan oleh
61
C. Hardwired Circuit
Pada perancangan perangkat keras lift terdapat banyak komponen elektronika
untuk dapat membangun sebuah sistem lift. Komponenkomponen yang dibutuhkan
dalam membangun sistem lift ini dibutuhkan beberapa jenis sensor dan komponen
komponen
elektronika
lainnya.
Berikut
komponen
yang
digunakan
pada
sistemlift serta rangkaian elektronika untuk mengkontrol perangkat keras antara lain :
Kontrol Tombol
Kontrol Driver Motor DC dan Motor DC Gear
Kontrol Penstabil Tegangan (Regulator)
Power On Reset
Kontrol Alarm
Sensor Limit Switch
D. Brake Control
Lift menggabungkan beberapa fitur keamanan untuk mencegah kabin menabrak
bagian bawah shaft. Pengaman diinstal pada kabin bisa mencegah jenis kecelakaan yg
terjadi ketika rem motor gagal atau tali kawat cangkang tiba2 putus Namun, desain
yang melekat pada pengaman kabin dibuat untuk tidak berlaku ke arah atas.
Dalam arah ke atas, rem motor diperlukan untuk menghentikan kabin ketika
kondisi darurat terjadi. Dalam operasi normal, rem motor hanya berfungsi sebagai rem
parkir untuk menahan kabin saat berhenti. Namun, ketika kondisi darurat terdeteksi,
62
untuk
menghentikan kabin.
9.3. Percobaan
Pada percobaan ini, topik atau kasus yang digunakan adalah mengenai aplikasi
Simulator Kontrol Lift. Aplikasi ini berfungsi untuk mengkontrol pergerakan dari lift
pada suatu gedung. Pergerakan lift harus sesuai dengan alur dan memprioritaskan request
yang terlebih dahulu dari pengguna. Aplikasi ini mengimplementasikan sistem hard
realtime, khususnya untuk informasi beban total di dalam lift yang tidak boleh melebihi
kapasitas maksimal, selain itu juga tentang informasi dari posisi lift dan urutan request
dari pengguna. Apabila beberapa data tersebut terlambat atau tidak diterima sistem, maka
hal yang fatal dapat mengancam keselamatan dari pengguna di dalam lift.
9.3.1. Peralatan
Untuk menunjang percobaan pada kasus pertama dibutuhkan beberapa peralatan
sebagai berikut:
1. Komputer Personal
63
vecFloors.push_back(floor);
else
if (!isPresentInHold && (floor < curFloor
|| !btnUpDown))
vecHoldFloors.push_back(floor);
break;
case false:
if (floor <= curFloor && !isPresent &&
!btnUpDown)
vecFloors.push_back(floor);
else
if (!isPresentInHold && (floor > curFloor
|| btnUpDown))
vecHoldFloors.push_back(floor);
}
}
void Elevator::deleteFloor(int floor)
{
vecFloors.erase(std::find(vecFloors.begin(),
vecFloors.end(), floor));
}
int Elevator::getSize()
{
return vecFloors.size();
}
int Elevator::getFloor(int index)
{
return vecFloors[index];
}
int Elevator::getCurFloor()
{
return curFloor;
}
int Elevator::getPrevFloor()
{
return prevFloor;
}
vector<int> Elevator::getFloors()
{
return vecFloors;
}
void Elevator::start()
{
moveDirection = true;
curFloor = 1;
}
65
void Elevator::setDirection()
{
if (vecFloors.size() < 1)
mergeVectors();
if (moveDirection)
{
if (vecFloors.size() == 1)
if (curFloor >
*std::min_element(vecFloors.begin(),vecFloors.end()))
moveDirection = false;
}
else
{
if (vecFloors.size() == 1)
if (curFloor <
*std::max_element(vecFloors.begin(),vecFloors.end()))
moveDirection = true;
}
}
bool Elevator::move()
{
setDirection();
if (!(vecFloors.empty() && vecHoldFloors.empty()))
{
prevFloor = curFloor;
if (moveDirection)
curFloor++;
else
curFloor--;
return process();
}
}
bool Elevator::process()
{
int intCount = vecFloors.size();
for (int i = 0; i < intCount; i++)
if (vecFloors[i] == curFloor)
return true;
}
66
9.4. Penjelasan
Salah satu penerapan hard real-time dalam kehidupan sehari-hari adalah pada sistem
pengontrol elevator (lift). Dalam hal ini, keterlambatan sama sekali tidak boleh terjadi,
karena dapat berakibat tidak terkontrolnya pergerakan lift.
67
Nyawa pengguna yang ada di dalam lift tergantung dari sistem ini, karena jika
sistem tidak dapat merespon tepat waktu, maka dapat menyebabkan hilangnya kontrol
lift yang dapat mengancam korban jiwa, khususnya apabila beban pengguna melebihi
beban maksimum dari lift.
9.5. Tugas
1. Lanjutkan pengerjaan program yang mengimplementasikan Hard Real-Time pada
modul ARM 11 Phytec Phycore ! (didemokan minggu depan)
2. Buatlah laporan final untuk program Anda !
68
PERTEMUAN 10
SISTEM SOFT REALTIME PADA ARM 11 PHYTEC PHYCORE
SISTEM TELEMETERING ANGIN
10.1. Tujuan
1. Mahasiswa dapat mengaplikasikan sistem SoftRealTime di Modul RTOS
2. Mahasiswa dapat melakukan komunikasi serial dengan Modul RTOS
2. Pressure Tube Anemometer, alat ini bekerja disebabkan oleh tekanan dari aliran
udara yang melalui pipa-pipanya.
69
10.3. Percobaan
Pada percobaan ini, topik atau kasus yang digunakan adalah sama dengan aplikasi
pada Pertemuan 5. Namun, dalam kasus ini menggunakan modul ARM Phytec
sebagai prosesor data. Sistem tersebut berbasis Soft Real-Time dikarenakan data yang
diterima (data kecepatan angin) tidak akan berpengaruh vital terhadap kinerja sistem
tersebut. Sehingga sistem akan terus berjalan walaupun data tidak diterima.
10.3.1. Peralatan
Untuk menunjang percobaan pada kasus ini dibutuhkan beberapa peralatan
sebagai berikut:
1.
Komputer Personal
2.
3.
4.
5.
70
loop_menit++;
if (loop>=100 {
loop=0;
d1=data_motor1;
d2=data_motor2;
d_a=data_motor1*0.6;
d_b=data_motor2*0.6;
tampung_data1=tampung_data1+data_motor1;
tampung_data2=tampung_data2+data_motor2;
RPM1[RPMn1]=d_a;
RPM2[RPMn2]=d_b; RPMn1++;RPMn2++;
set_tmp=0;
}
if(loop_menit>=500){
loop_menit=0;
for(i=0;i<5;i++){
RPMx=RPMx+RPM1[i];
RPMy=RPMy+RPM2[i];
}
RPMx=RPMx/5;
RPMy=RPMy/5;
printf("M1:%dM2:%dRPM1:%0.2fRPM2:%0.2f"
,tampung_data1,tampung_data2,RPMx,RPMy);
tampung_data1=0;
tampung_data2=0;
RPMn1=0;
RPMn2=0;
RPMx=0;
RPMy=0;
}
}
4. Hubungkan port Serial (RS232) Mikrokontroler AVR dengan Port Serial Modul
ARM 11 Phytec Phycore menggunakan kabel serial.
5. Jalankan aplikasi IDE QT Creator untuk membuat project baru. Buatlah aplikasi
untuk menampilkan data serial pada modul ARM Phytec Phycore. Berikut ini
pecahan kode program untuk aplikasi pada modul ARM Phytec.
Tabel 10.3
static struct termio oterm_attr;
CSerialPort::CSerialPort( char* szDevName, int
nBaudRate,
int nDataBit, int nStopBits, char cParity )
{
m_hDev = open( szDevName, O_RDWR );//| O_NOCTTY |
O_NDELAY );}
CSerialPort::~CSerialPort()
{if( -1 != m_hDev ) close( m_hDev );}
ushort CSerialPort::BinarySearch( ushort match )
{
int nCount = sizeof( unicode_gb_table ) / sizeof(
UNICODE_GB_TABLE );
72
73
10.4. Penjelasan
Simulasi kincir angin menggunakan sebuah motor rotary, motor tersebut diputar
secara manual sehingga didapatakan sebuah data. Kelemahan dari penggunaan motor
rotary ini adalah bahwa arah perputaran tidak dapat dibedakan, kerena setiap kali
motor diputar entah ke kiri atau ke kanan, rotary akan tetap menghasilkan data sebesar
1,pada setiap lubang, pada rotary. Kemudian Setelah itu dta diserialkan secara cross
untuk device yang sama dan straight untuk device yang berbeda.
74
10.5. Tugas
1. Buatlah program yang mengimplementasikan Sistem Soft Real-Time pada modul
ARM 11 Phytec Phycore !(Waktu pengerjaan 2 minggu, progress didemokan
minggu depan).
2. Buatlah laporan sementara untuk progress Anda !
75
PERTEMUAN 11
SISTEM SOFT REALTIME PADA ARM 11 PHYTEC PHYCORE
VENDING MACHINE
11.1. Tujuan
1. Mahasiswa dapat mengaplikasikan sistem SoftRealTime di Modul RTOS
2. Mahasiswa dapat lebih mendalami sistem Soft RealTime
B. Vending Machine
Dunia modern saat ini kemudahan dan efisiensi tenaga serta waktu menjadi
pertimbangan utama manusia dalam melakukan aktivias. Manusia selalu ingin dalam
kemudahan dan tidak puas terhadap suatu produk khususnya dalam hal pelayanan.
Pelayanan terhadap sesuatu yang menjadi kebutuhan pokok saat ini merupakan hal
yang sangat penting bagi manusia, untuk itu diciptakanlah sebuah alat yang dapat
melayani kebutuhan manusia dan dapat diakses kapan saja selama 24 jam disebut
vending machine.
Vending machine ini dibuat untuk menyediakan produk minuman ringan karena
minuman sangat dibutuhkan oleh semua orang dimanapun saat merasa haus. Alat ini
dibangun pada arsitektur prosesor MCIMX31 dengan core prosesor ARM11 yang
fleksibel dan efisien untuk menerapkan sistem embedded. Prosesor ini terdapat pada
modul phyCORE-i.MX31 yang menyediakan beberapa device yang sama dengan
device yang disediakan oleh personal computer, sehingga pengguna bisa
mengembangkan sistem pada modul sama halnya pada personal computer. Pembuatan
76
vending machine ini menggunakan IDE yang disebut QT Creator. IDE ini merupakan
tempat kita gunakan untuk membuat program aplikasi vending machine.
11.3. Percobaan
Pada percobaan ini, topik atau kasus yang digunakan adalah mengenai aplikasi
Vending Machine. Aplikasi program yang dibuat adalah, ketika seseorang
memasukkan koin dan memilih menu yang ada dalam daftar menu dengan menekan
tombol yang tertera pada interface, selanjutnya mesin akan melakukan perhitungan
berapa banyak koin yang masuk dan memproses sesuai yang dipesan oleh orang
tersebut.
11.3.1. Peralatan
Untuk menunjang percobaan pada kasus pertama dibutuhkan beberapa peralatan
sebagai berikut:
1.
Komputer Personal
2.
77
}
void Vending::uangact3()
{
uang3->setEnabled(false);
koin+=2000;
welcome->setText("Uang Anda : " +
QString::number(koin));
uang3->setEnabled(true);
}
void Vending::aksiact1()
{
if (!menu1->isEnabled())
harga=2000;
else if (!menu2->isEnabled())
harga=2500;
else if (!menu3->isEnabled())
harga=3000;
else if (!menu4->isEnabled())
harga=3500;
else if (!menu5->isEnabled())
harga=4000;
if(koin>harga)
{
aksi1->setEnabled(false);
kembali=koin-harga;
koin=kembali;
if (!menu1->isEnabled())
welcome->setText(tr("Selamat Menikmati,
Air Mineral"));
else if (!menu2->isEnabled())
welcome->setText(tr("Selamat Menikmati,
Teh"));
else if (!menu3->isEnabled())
welcome->setText(tr("Selamat Menikmati,
Cola"));
else if (!menu4->isEnabled())
welcome->setText(tr("Selamat Menikmati,
Jus"));
else if (!menu5->isEnabled())
welcome->setText(tr("Selamat Menikmati,
Susu"));
else
{
QMessageBox::StandardButton reply;
reply =
QMessageBox::information(this,tr("quote"),MESSAGE7);
aksi1->setEnabled(true);
flag=false;
79
}
if (flag==true)
{
QMessageBox::StandardButton reply;
reply =
QMessageBox::information(this,tr("quote"),MESSAGE4 +
QString::number(kembali));
aksi1->setEnabled(false);
welcome->setText(tr("
==*==
Vending Machine ::. ==*== "));
aksi1->setEnabled(true);
.::
koin=0;
harga=0;
kembali=0;
kurang=0;
flag=false;
}
}
else if(koin<harga)
{
aksi1->setEnabled(false);
kurang=harga-koin;
welcome->setText(QString::number(kurang));
QMessageBox::StandardButton reply;
reply =
QMessageBox::information(this,tr("quote"),MESSAGE3 +
QString::number(kurang));
aksi1->setEnabled(true);
}
else
{
if (!menu1->isEnabled())
welcome->setText(tr("Selamat
Air Mineral"));
else if (!menu2->isEnabled())
welcome->setText(tr("Selamat
Teh"));
else if (!menu3->isEnabled())
welcome->setText(tr("Selamat
Cola"));
else if (!menu4->isEnabled())
welcome->setText(tr("Selamat
Jus"));
else if (!menu5->isEnabled())
welcome->setText(tr("Selamat
Susu"));
else
Menikmati,
Menikmati,
Menikmati,
Menikmati,
Menikmati,
80
{
QMessageBox::StandardButton reply;
reply =
QMessageBox::information(this,tr("quote"),MESSAGE7);
aksi1->setEnabled(true);
flag=false;
}
if (flag==true)
{
aksi1->setEnabled(false);
QMessageBox::StandardButton reply;
reply =
QMessageBox::information(this,tr("Selesai"), MESSAGE2
+ MESSAGE5);
//aksi1->setEnabled(true);
aksi2->setEnabled(true);
aksi1->setEnabled(false);
welcome->setText(tr("
==*==
Vending Machine ::. ==*== "));
aksi1->setEnabled(true);
.::
koin=0;
harga=0;
kembali=0;
kurang=0;
flag=false;
}
}
}
4. Berikut merupakan hasil running program dari kasus ini:
11.4. Penjelasan
Sistem ini mengadopsi metode soft real time, sehingga pada saat terdapat hal
yang tidak sesuai dengan prosedur proses sistem ini masih dapat mentoleransi
kesalahan tersebut dan memiliki kondisi lain untuk menyelesaikan persoalan tersebut.
Output alat ini berupa produk minuman ringan yang dipesan oleh pelanggan.
Pada state ini, misalnya kita memilih pilihan1 yaitu air dan uang kita pas maka akan
tampil Water Purchased, tetapi jika uang kita lebih maka kembalian akan langsung
tampil pada state tersebut, dan jika uang kita kurang maka state akan gagal, dan apabila
kita menekan tombol cancel maka akan kembali ke menu utama.
Prioritas utama diberikan
kepada
Tombol Cancel,
sehingga
user dapat
11.5. Tugas
1. Lanjutkan pengerjaan program yang mengimplementasikan Soft Real-Time pada
modul ARM 11 Phytec Phycore ! (didemokan minggu depan)
2. Buatlah laporan final untuk program Anda !
83
PERTEMUAN 12
SISTEM SEMI REALTIME PADA ARM 11 PHYTEC PHYCORE
SISTEM TRACKING BOLA
12.1. Tujuan
1. Mahasiswa dapat mengaplikasikan sistem SemiRealTime di Modul RTOS
2. Mahasiswa dapat menerapkan pengolahan citra pada Modul RTOS
B. Threshold
Thresholding adalah suatu proses yang digunakan untuk menghasilkan citra
biner yaitu citra dengan hanya dua warna, yaitu: hitam dan putih. Operator ini
memilih piksel yang memiliki nilai tertentu, atau lingkup tertentu. Proses ini dapat
dilakukan apabila kita telah mengetahui brightness level (atau contrast) dari gambar
tersebut. Bentuk teknik Thresholding ada 2 macam, yaitu: Uniform Thresholding
dan Adaptive Thresholding. Didalam uniformthresholding metode yang digunakan
adalah dengan menentukan suatu batas level, yang nantinya akan dipergunakan
untuk menentukan warna piksel.
Piksel yang levelnya lebih dari threshold level akan dirubah menjadi putih, dan
sebaliknya piksel yang levelnya ada di bawah dari level threshold akan dirubah
menjadi hitam. Seperti yang ditampilkan pada gambar sebelah kiri berikut
merupakan gambar original dan gambar sebelah kanan adalah hasil thresholding.
85
12.3. Percobaan
Pada percobaan ini, topik atau kasus yang digunakan adalah mengenai aplikasi
Sistem penjejakan bola dengan kamera webcam sebagai sensor untuk
pengenalan dan pendeteksian bola. Sistem dibuat dan dijalankan pada arsitektur
prosesor MCIMX31 yang berbasis keluarga inti prosesor ARM11/ARM1136JF-S
produksi Freescale Semiconductor. Platform yang menggunakan prosesor ini adalah
phyCORE-i.MX31 yang diproduksi PHYTEC Amerika
12.3.1. Peralatan
Untuk menunjang percobaan pada kasus pertama dibutuhkan beberapa peralatan
sebagai berikut:
1.
Komputer Personal
2.
Web Camera
3.
86
Tabel 12.1
#include "MyCameraWindow.h"
#include <stdio.h>
#include <math.h>
MyCameraWindow::MyCameraWindow(CvCapture *cam, QWidget
*parent) : QWidget(parent) {
camera = cam;
QVBoxLayout *layout = new QVBoxLayout;
cvwidget = new QOpenCVWidget(this);
layout->addWidget(cvwidget);
setLayout(layout);
resize(100, 100);
startTimer(10);
// 0.01-s
}
void MyCameraWindow::timerEvent(QTimerEvent*) {
IplImage *image2=cvQueryFrame(camera);
IplImage*
image=cvCreateImage(cvSize(240,180),IPL_DEPTH_8U, 3);
cvResize(image2,image,CV_INTER_LINEAR);
cvwidget->putImage(image);
}
6. Setelah itu buatlah suatu class untuk menampilkan widget dan mendeteksi adanya
bola. Berikut ini pecahan kode program untuk aplikasi pada modul ARM Phytec.
Tabel 12.2
void QOpenCVWidget::putImage(IplImage *cvimage) {
int miny,maxy,minx,maxx;
int red,green,blue;
int reds,greens,blues;
float t=0;
float x,y,z;
struct timeval time1, time2;
char pos[100];
QString Qtpos;
CvSeq* circles;
CvMemStorage *storage = cvCreateMemStorage(0);
IplImage *biner =
cvCreateImage(cvSize(100,75),IPL_DEPTH_8U,3);
cvResize(cvimage,biner,CV_INTER_LINEAR);
.
.
.
circles = cvHoughCircles( cvimage2, storage,
CV_HOUGH_GRADIENT, 1, cvimage2->height/4, 100, 40, 5,
88
240);
for (int i=0; i<circles->total; i++){
float *p =
(float*)cvGetSeqElem(circles,i);
cvCircle(paint,cvPoint(cvRound(p[0]),cvRound(p[1])),3,
CV_RGB(0,255,0),-1,8,0);
cvCircle(paint,cvPoint(cvRound(p[0]),cvRound(p[1])),cv
Round(p[2]),CV_RGB(255,0,0),3,8,0);
x=p[0]; y=p[1]; z=p[2];
}
gettimeofday(&time2,NULL);
t = ((time2.tv_sectime1.tv_sec)*1e6+time2.tv_usectime1.tv_usec)/1000.0f;
printf("Draw circle-> Bola x=%f y=%f r=%f
fr=%f\n", x,y,z,t);
sprintf(pos,"X=%.1f \nY=%.1f \nr=%.2f
\nFT=%.2f ms", x,y,z,t);
Qtpos=pos;
ballposlabel->setText(Qtpos);
if ((paint->width != image.width()) || (paint>height != image.height())){
QImage temp(paint->width, paint->height,
QImage::Format_RGB32);
image = temp;
}
for (int i=0;i<paint->height;i++){
unsigned char R,G,B;
for (int j=0;j<paint->width;j++){
R = paint->imageData[i*paint>widthStep+j*paint->nChannels+2];
G = paint->imageData[i*paint>widthStep+j*paint->nChannels+1];
B = paint->imageData[i*paint>widthStep+j*paint->nChannels+0];
image.setPixel(j, i, qRgb(R,G,B));
}
}
7. Berikut merupakan hasil running program dari kasus ini:
89
12.4. Penjelasan
Dari data hasil pengujian kestabilan sistem terhadap perubahan jarak
pengambilan gambar serta pengaruh cahaya dapat dilihat bahwa sistem akan stabil
dalam mendeteksi bola pada jarak dan intensitas cahaya tertentu. Misalnya pada
pengujian malam hari, sumber cahaya hanya didapatkan dari lampu penerangan yang
ada pada ruangan tempat pengujian, yaitu beberapa lampu neon dengan daya 40 Watt
90
dan tegangan 220 V yang dikontrol dengan tiga buah saklar. Pada pengujian malam
hari ini terlihat bahwa dengan jarak paling minimal yaitu 2 cm, sistem masih mampu
mendeteksi bola, namun hanya pada beberapa kondisi pencahayaan, yaitu ketika
saklar 2 dan 3 diaktifkan, serta saklar 1 dan 3 diaktifkan, pada kondisi pencahayaan
ini memberikan hasil threshold yang cukup bagus, sehingga bola dapat dideteksi oleh
sistem.
Pada jarak ini terlihat bahwa radius lingkaran ynag didapat paling maksimal
adalah 92 piksel. Pada program, radius maksimal lingkaran yang dideteksi oleh sistem
diatur sebesar 240 piksel, jadi sistem sebenarnya masih mampu mengenali bola
orange dengan jarak kurang dari 2 cm, namun resolusi yang disediakan oleh LCD
phyCORE-i.MX31yaitu hanya sebesar 240x180 piksel (resolusi frame yang
ditampilkan pada LCD) dan jika bola semakin dekat dengan kamera dapat
memberikan hasil thresholding yang buruk, sehingga jarak paling minimum bola
dapat dideteksi sistem adalah 2 cm, kurang dari 2 cm, bola tidak bisa dideteksi oleh
sistem.
Pada pengujian malam hari ini juga dapat diketahui jarak maksimum system
dapat mengenali bola, terlihat bahwa pada jarak 40 cm dan selebihnya dengan kondisi
pencahayaan yang diubah-ubah, sistem tidak dapat mendeteksi bola sama sekali.
Untuk memastikan apakah jarak ini merupakan jarak maksimal, maka dilakukan
pengujian terhadap latar belakang obyek bola pada jarak ini. Obyek bola diberi latar
belakang biru, dan ternyata bola masih bisa dideteksi oleh sistem pada kondisi
pencahayaan saklar 2 dan 3 aktif, saklar 1 dan 2 aktif, serta semua lampu menyala.
Selanjutnya dilakukan pengujian lagi dengan latar belakang yang sama, namun
jarak menjadi 50 cm, pada jarak ini sistem hanya mampu mendeteksi bola pada
kondisi cahaya lampu menyala semua. Selebihnya dari jarak 50 cm, system tidak
dapat mendeteksi bola, jadi jarak maksimum bola dapat dideteksi sistem adalah 50
cm. Pengujian juga dilakukan pada siang hari dengan sistem pengujian yang sama
seperti malam hari. Berbeda dengan malam hari, pada siang hari sistem mendapat
pengaruh cahaya dari luar ruangan pengujian. Pada kondisi ini, sistem tidak bisa
mendeteksi bola pada jarak kurang dari atau sama dengan 2 cm, hal ini karena
banyaknya intensitas cahaya yang mempengaruhi hasil thresholding sistem.
Semakin banyaknya intensitas cahaya menyebabkan hasil thres-holding yang
buruk. Namun sistem masih dapat mendeteksi bola pada jarak 50 cm, tanpa harus
91
92
DAFTAR PUSTAKA
[1] Adhan Yulyandri, Sistem Penjejakan Bola Menggunakan Webcam Berbasis Prosesor
Arm11, Jurusan Teknik Komputer Politeknik Elektronika Negeri Surabaya Institut
Teknologi Sepuluh Nopember Surabaya 2011.
[2] Ahmad Reza Musthafa. 2013,AT-iNEC - Sistem Kontrol Simulasi Mobil 3D dan Sistem
Komunikasi SMS menggunakan EEG, Altraz Technology.
[3] Sistem Penentuan Lokasi Kendaraan Menggunakan Gps Dengan Pemanfaatan Sms
Sebagai Komunikasi Data Oleh: Irawan Kholfanani Nrp. 7107 040 013
[4] QuickStart Instructions Linux-Kit phyCORE-i.MX31
[5] Setiyawan, Tri Budhi. 2005. Tugas Akhir: Rancang Bangun Eelctroencephalograph
Berbasis Mikrokontroller. Surabaya. PENS-ITS
[6] L.I. Aftanas, N.V. Reva, A.A Varlamov, S.V. Pavlov, and V.P. Makhnev. Analysis of
evoked EEG synchronization and desynchronization in conditions of emotional
activation in humans: Temporal and topographic characteristics. Neuroscience and
Behavioral Physiology, 34(8):859867, 2004.
[7] Moch. Arifin,Kontrol Mobile Robot Berbasis Sinyal EEG : Pemrosesan Sinyal EEG
sebagai Aktuator, Proyek Akhir Politeknik Elektronika Negeri Surabaya, 2007.
[8] C.M. Krishna, Kang G. Shin ( 1997 ), Real-time Systems, Mc Graw Hill Book Company.
[9] Sri Kusuma Dewi ( 2003 ), Artificial Intelligence, Yogyakarta : Graha Ilmu.
93
LAMPIRAN
MODUL WORKSHOP
A. Arsitektur prosesor MCIMX31
94