PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI TUGAS AKHIR
APLIKASI PENGENALAN UCAPAN UNTUK LENGAN ROBOT PENULIS ANGKA Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Elektro
Oleh : YOHANNES CHRYSOSTOMOS HENDRO YUWONO NIM : 115114024
PROGRAM STUDI TEKNIK ELEKTRO JURUSAN TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI TUGAS AKHIR
APLIKASI PENGENALAN UCAPAN UNTUK LENGAN ROBOT PENULIS ANGKA Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Elektro
Oleh : YOHANNES CHRYSOSTOMOS HENDRO YUWONO NIM : 115114024
PROGRAM STUDI TEKNIK ELEKTRO JURUSAN TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015
i
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI FINAL PROJECT
SPEECH RECOGNITION APPLICATION FOR ROBOTIC ARM NUMBERS WRITER Presented as Partial Fulfillment of the Requirements To Obtain the Sarjana Teknik Degree In Electrical Engineering Study Program
YOHANNES CHRYSOSTOMOS HENDRO YUWONO NIM : 115114024
ELECTRICAL ENGINEERING STUDY PROGRAM DEPARTMENT OF ELECTRICAL ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2015 ii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PERSETUJUAN
TUGAS AKHIR
APLIKASI PENGENALAN UCAPAN UNTUK LENGAN ROBOT PENULIS ANGKA ( SPEECH RECOGNITION APPLICATION FOR ROBOTIC ARM NUMBERS WRITER )
Oleh : YOHANNES CHRYSOSTOMOS HENDRO YUWONO NIM : 115114024
Telah disetujui oleh :
Pembimbing
Dr. Linggo Sumarno
Tanggal :
iii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PENGESAHAN TUGAS AKHIR
APLIKASI PENGENALAN UCAPAN UNTUK LENGAN ROBOT PENULIS ANGKA ( SPEECH RECOGNITION APPLICATION FOR ROBOTIC ARM NUMBERS WRITER ) Oleh : YOHANNES CHRYSOSTOMOS HENDRO YUWONO NIM : 115114024
Telah dipertahankan di depan panitia penguji pada tanggal_____________ dan dinyatakan memenuhi syarat
Susunan Panitia Penguji Nama Lengkap
Tanda Tangan
Ketua
: Dr. Iswanjono
_____________
Sekretaris
: Dr. Linggo Sumarno
_____________
Anggota
: Wiwien Widyastuti, S.T.,M.T.
_____________ Yogyakarta, Fakultas Sains dan Teknologi Universitas Sanata Dharma Dekan,
Paulina Heruningsih Prima Rosa, S.Si., M.Sc.
iv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI PERNYATAAN KEASLIAN KARYA Saya menyatakan dengan sesungguhnya bahwa tugas akhir ini tidak memuat karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka sebagaimana layaknya karya ilmiah. Yogyakarta,
Yohannes Chrysostomos Hendro Yuwono
v
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PERSEMBAHAN DAN MOTTO HIDUP
MOTTO :
“Mintalah, maka akan diberikan kepadamu; carilah, maka kamu akan mendapat; ketuklah, maka pintu akan dibukakan bagimu” (Mat 7:7)
Dengan ini kupersembah karyaku untuk….. Yesus Kristus dan Bunda Maria yang selalu mendampingiku dalam keadaan apapun Orang tua yang selalu kucintai Teman-temanku yang selalu saling menyemangati Terima kasih...
vi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LEMBAR PERNYATAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma : Nama
: Yohannes Chrysostomos Hendro Yuwono
Nomor Mahasiswa
: 115114024
Demi pengembangan ilmu pengetahuan, saya memberikan kepada perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul :
APLIKASI PENGENALAN UCAPAN UNTUK LENGAN ROBOT PENULIS ANGKA beserta perangkat yang diperlukan ( bila ada ). Dengan demikian saya memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikan secara terbatas dan mempublikasikannya di internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberikan royalty kepada saya selama tetapmencatumkan nama saya sebagai penulis. Demikian pernyataan ini saya buat dengan sebenarnya. Yogyakarta,
(Yohannes Chrysostomos Hendro Yuwono)
vii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
INTISARI Kehidupan manusia tidak jauh dengan teknologi. Teknologi sangat membantu dalam menyelesaikan tugas dan pekerjaan manusia. Menggunakan ucapan manusia sebagai pengganti tombol untuk sebuah alat akan menjadi lebih efisien dibandingkan dengan hanya menggunkan tombol saja. Atas dasar tersebut penulis membuat sistem pengenalan suara untuk lengan robot. Secara khusus lagi, penulis membuat sistem pengenalan ucapan angka 0 – 9 untuk lengan robot menulis. Sistem pengenalan ucapan angka ini menggunakan mikrofon untuk merekam ucapan. Ucapan yang terekam diproses menggunakan laptop untuk menjalankan proses pengenalan dan mengenali ucapan yang terekam. Proses pengenalan ucapan meliputi beberapa subproses diantaranya merekam, pre-emphasis, normalisasi, pemotongan sinyal, framing dan windowing, ekstraksi ciri, fungsi korelasi, k-NN, dan penentuan hasil ucapan pengenalan. Lengan robot sebagai lengan untuk menulis menggunakan minimum sistem dengan ATMEGA32 untuk mengatur pergerakan motor servo pada lengan robot. Pengenalan ucapan untuk menjalankan lengan robot penulis angka berjalan dengan baik untuk 3 user. Program pengenalan ucapan angka mampu mengenali 10 jenis angka (satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, nol). Sistem pengenalan ucapan menggunakan fungsi korelasi. Program pengenalan sudah berhasil dibuat dan dapat bekerja sesuai dengan yang diharapkan. Pada program pengenalan ini menampilkan gelombang ucapan terekam, ekstraksi ciri DFT, dan keluaran berupa tulisan angka yang berhasil dikenali. Pada program ini didapatkan parameter terbaik pada nilai segmen averaging 8 dan nilai k pada k-NN 1. Hasil pengenalan secara real time dengan menggunakan nilai thresholding mampu mengenali semua user dengan sebesar 85,33%.
Kata kunci: Suara Manusia, Discrete Fourrier Transform (DFT), Lengan Robot.
viii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
ABSTRACT Human life is not far form technology. Technology is very helpful in completing human tasks and work. Using human speech instead of a button for an appliance would be more efficient than just using the buttons itself. Based on this the author make a voice recognition system for the robot arm. In particular, the authors made a speech recognition system of numbers 0-9 for the robot arm to write. This number speech recognition systems use a microphone for recording speech. Recorded speech processed using a laptop to run the recognition process and recognize the recorded speech. The Speech recognition process includes several subprocesses such as : recording, pre-emphasis, normalization, cutting signal, framing and windowing, feature extraction, correlation function, k-NN, and the determination of speech recognition results. As the arm of the robot arm to write it is used the ATMEGA32, minimum system with servo motors to regulate the movement of the robot arm Speech recognition usage to movement robot,s arm for writing have gone well for 3 user. The speech recognition program is able to recognize 10 types of numbers (one, two, three, four, five, six, seven, eight, nine, zero). Speech recognition system used correlation function. Introduction program has been created and it could work as expected. At the introduction of the program showing the recorded speech wave, DFT feature extraction, and output a successful writing recognizable number. In this program, parameter best in the value segment averaging 8 and the value of k at k-NN number 1. The result with thresholding able to recognize 85.33% for all users. Keywords: Human Voice, Discrete Fourier Transform (DFT), Robot Arm.
ix
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yesus Kristus karena telah memberikan rahmat-Nya sehingga penulis dapat menyelesaikan laporan tugas akhir ini dengan baik.Laporan tugas akhir ini disusun untuk memenuhi syarat memperoleh gelar sarjana. Selama pembuatan tugas akhir ini penulis menyadari bahwa ada begitu banyak pihak yang telah memberikan bantuan baik bantuan materi, moral maupun dukungan. Oleh karena itu penulis ingin mengucapkan terimakasih kepada : 1. Petrus Setyo Prabowo, S.T., M.T., Ketua Program Studi Teknik Elektro Universitas Sanata Dharma. 2. Dr.Linggo Sumarno, dosen pembimbing yang dengan penuh setia, kesabaran dan pengertian untuk membimbing dalam menyelesaikan Tugas Akhir ini.. 3. Bapak Dr. Iswanjono dan ibu Wiwien Widyastutu, S.T.,M.T selaku dosen penguji yang telah member masukan dan kritik dalam penulisan Tugas Akhir ini 4. Bapak dan Ibu dosen yang telah mengajarkan banyak ilmu yang bermanfaat selama menempuh pendidikan di Universitas Sanata Dharma. 5. Segenap laboran dan karyawan Fakultas Sains dan Teknologi yang telah memberikan dukungan secara tidak langsung dalam kelancaran penulis mengerjakan penulisan tulisan tugas akhir ini. 6. Kedua orang tua penulis yang telah banyak memberikan dukungan doa, kasih sayang dan motivasi selama menempuh pendidikan di Universitas Sanata Dharma. 7. Teman – teman seperjuangan Teknik Elektro 2011 yang telah menemani di pada saat menempuh pendidikan di Universitas Sanata Dhama. 8. Semua pihak yang tidak bisa disebutkan satu persatu yang telah banyak memberikan banyak bantuan dan dukungan dalam menyelesaikan tugas akhir ini.
x
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Penulis
menyadari
bahwa dalam penyusunan laporan tugas akhir masih
mengalami kesulitan dan tidak lepas dari kesalahan.Oleh karena itu, penulis mengharapkan masukan, kritik dan saran yang membangun agar skripsi ini menjadi lebih baik.Dan semoga skripsi ini dapat bermanfaat sebagaimana mestinya.
Yogyakarta, Penulis,
Yohannes Chrysostomos Hendro Yuwono
xi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR ISI Halaman
HALAMAN JUDUL. ............................................................................................... i HALAMAN PERSETUJUAN.. ........................................................................... iii HALAMAN PENGESAHAN. .............................................................................. iv PERNYATAAN KEASLIAN KARYA. ............................................................ v HALAMAN PERSEMBAHAN DAN MOTTO HIDUP............................. vi LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS. ..................................... vii INTISARI. ................................................................................................................... viii ABSTRACT. ............................................................................................................... ix KATA PENGANTAR. ............................................................................................ x DAFTAR ISI. ............................................................................................................. xii DAFTAR GAMBAR. .............................................................................................. xvi DAFTAR TABEL. ...................................................................................... xix BAB I PENDAHULUAN 1.1.
Latar Belakang. ................................................................................................. 1
1.2.
Tujuan dan Manfaat Penelitian ......................................................................... 2
1.3.
Batasan Masalah ............................................................................................... 2
1.4.
Metodologi Penelitian ...................................................................................... 3
BAB II DASAR TEORI 2.1.
Lengan Robot .................................................................................................... 3
2.2.
Mikrokontroler AVR ATMEGA32 ................................................................... 5 2.2.1. Arsitektur AVR ATMEGA32 ................................................................. 5 2.2.2. Deskripsi Mikrokontroler AVR ATMEGA32 ........................................ 6 2.2.3. Interupsi ................................................................................................... 7 2.2.4. Timer/Counter 0 ...................................................................................... 7 2.2.5. Komunikasi Serial USART ..................................................................... 9
2.3.
LCD(Liquid Crystal Display) ............................................................................ 13
2.4.
Regulator IC 78xx dan Transistor Penguat Arus............................................... 14
xii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.5.
Torsi/momen gaya ............................................................................................. 16
2.6.
Sinyal suara Manusia......................................................................................... 16
2.7.
Sampling............................................................................................................ 16
2.8.
Preprocessing .................................................................................................... 17 2.8.1. Pre Emphasis ........................................................................................... 17 2.8.2. Normalisasi .............................................................................................. 17 2.8.3. Pemotongan SInyal.................................................................................. 19 2.8.1 Zero Padding ............................................................................................ 20
2.9
Framing ............................................................................................................. 21
2.10.
Windowing ....................................................................................................... 21 2.10.1. Hamming .............................................................................................. 22
2.11.
Ektraksi Ciri DFT ............................................................................................. 22 2.11.1. Pengertian DFT .................................................................................... 22 2.11.1. Segment Averaging ............................................................................... 23
2.12.
Template Maching ............................................................................................ 24 2.12.1. Korelasi ................................................................................................. 24
2.13.
K - nearest neighbor ......................................................................................... 25
2.14.
Mikrofon ........................................................................................................... 25
2.15.
Sound Card... .................................................................................................... 26
2.16.
Motor Servo………………................................................................................. 27
BAB III PERANCANGAN 3.1.
Proses Kerja ....................................................................................................... 29
3.2.
Perancangan Mekanik Lengan Robot................................................................ 30
3.3.
Perancangan Perangkat Keras ........................................................................... 32 3.3.1. Minimum sistem Atmega8535 + LCD 16x2 .......................................... 32 3.3.1.1. Minimum sistem Atmega8535 .................................................... 32 3.3.1.2. Rangkaian Konfigurasi LCD 16x2 ............................................. 33 3.3.2. Motor Servo ............................................................................................ 34 3.3.3. Regulator IC 7805dan Transistor Penguat Arus ..................................... 36 3.3.4. Soundcard ............................................................................................... 36 3.3.5. Headset ................................................................................................... 36
3.4.
Perhitungan Torsi Motor Servo ........................................................................ 37
3.5.
Perancangan Perangkat Lunak.......................................................................... 38
xiii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.5.1. Antarmuka Program ............................................................................... 38 3.5.2. Proses Pengenalan Suara Pada Matlab ................................................... 39 3.5.2.1. Sampling ................................................................................... 40 3.5.2.2. Pre-emphasis ............................................................................. 41 3.5.2.3. Normalisasi ............................................................................... 41 3.5.2.4. Pemotongan sinyal.................................................................... 42 3.5.2.5. Framing dan Windowing .......................................................... 43 3.5.2.6. Ekstraksi ciri DFT .................................................................... 44 3.5.2.7. Korelasi ..................................................................................... 45 3.5.2.8. Klasifikasi K-nn dan penentuan keluaran ................................. 46 3.5.2.9. Proses pengiriman Serial .......................................................... 47 3.5.4. Perancangan Pembentukan Database Ucapan ........................................ 48 3.5.5. Bentuk Angka Digital ............................................................................. 48 3.5.6. Proses Flowchart Program Lengan robot ............................................... 49
BAB IV HASIL DAN PEMBAHASAN 4.1.
Implementasi Lengan Robot ............................................................................. 61 4.1.1. Bentuk Fisik Hardware ........................................................................ 61 4.1.2. Sistem Elektronik .................................................................................. 61 4.1.3. Pengaturan Lengan Robot .............................................................. 62 4.1.4. Pengendalian Komunikasi USART................................... .................... 63 4.1.5. Pengendalian Motor Servo................................... ................................. 63
4.2.
Implementasi GUI Matlab dan Program Pengenalan Ucapan .......................... 65 4.2.1. Pop Up Menu................................... ...................................................... 66 4.2.2. Tombol Rekam................................... ................................................... 68 4.2.3. Tombol Reset......................................................................................... 76 4.2.3. Tombol Keluar....................................................................................... 77
4.3.
Pengujian Sudut Motor Servo... ....................................................................... 77
4.4.
Pengujian Untuk Tingkat Pengenalan Ucapan... .............................................. 79 4.4.1. Pengujian Pengenalan Ucapan Secara Tidak Real Time... .................... 79 4.4.2. Pengujian Pengenalan Secara RealTime... ............................................. 83 4.4.3. Pengujian Real Time Tanpa Nilai Thresholding Untuk penentuan Database... .......................................................................................................................... 84 4.4.4. Pengujian RealTime dengan Nilai Thresholding... ................................ 89 xiv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.5.
Hasil Pengujian Tulisan dari Lengan Robot... .................................................. 93
BAB V KESIMPULAN DAN SARAN 5.1.
Kesimpulan ......................................................................................................... 95
5.2.
Saran ................................................................................................................. . 95
DAFTAR PUSTAKA ................................................................................................ 96 LAMPIRAN .................................................................................................................. 98
xv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR GAMBAR Halaman Gambar 2.1.
Manipulator pada robot lengan .............................................................. 4
Gambar 2.2.
Konfigurasi Pin Mikrokontroler ATmega32 ......................................... 6
Gambar 2.3.
Mode Phase Correct PWM ................................................................... 8
Gambar 2.4.
Mode Fast PWM ................................................................................... 9
Gambar 2.5.
Register UDR ........................................................................................ 10
Gambar 2.6.
Register UCSRA ................................................................................... 10
Gambar 2.7.
Register UCSRB .................................................................................... 11
Gambar 2.8.
Register UCSRB .................................................................................... 12
Gambar 2.9.
Konfigurasi kaki pin LCD ..................................................................... 13
Gambar 2.10.
Rangkaian umum regulator 78xx .......................................................... 15
Gambar 2.11.
Rangkaian catu daya dengan penguat. ................................................... 15
Gambar 2.12.
Tampilan Proses Sampling .................................................................... 17
Gambar 2.13.
Contoh hasil proses sampling ................................................................ 18
Gambar 2.14.
Contoh hasil proses normalisasi ............................................................ 18
Gambar 2.15.
Proses Pemotongan Sinyal .................................................................... 19
Gambar 2.16.
Proses zero padding. .............................................................................. 20
Gambar 2.17.
Proses framing.................................................................... ................... 21
Gambar 2.18.
Proses Windowing.................................................................... ............. 21
Gambar 2.19.
Contoh Hasil DFT.................................................................................. 23
Gambar 2.20.
contoh segmen averaging dengan 16 segmen................................ ....... 24
Gambar 2.21.
Headset INTOPIC JAZZ 660.. .............................................................. 26
Gambar 2.22
Bentuk Sound Card PC/Laptop .............................................................. 26
Gambar 2.23
Model fisik motor servo.......................................................................... 27
Gambar 2.22
Cara pengontrolan motor servo .............................................................. 28
Gambar 3.1.
Arsitektur Sistem.. ................................................................................. 29
Gambar 3.2.
Design lengan robot secara keseluruhan................................................ 30
Gambar 3.3.
komponen bagian 1 ................................................................................ 30
Gambar 3.4.
komponen bagian 2 ................................................................................ 30
Gambar 3.5.
komponen bagian 3 ................................................................................ 31
xvi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 3.6.
design awal ujung lengan robot ............................................................. 31
Gambar 3.7.
Rangkaian Osilator ATmega32 ............................................................. 32
Gambar 3.8.
Rangkaian Reset ATmega32 ................................................................. 33
Gambar 3.9.
Skematik LCD 16x2 .............................................................................. 33
Gambar 3.10.
SettingPort LCD .................................................................................... 34
Gambar 3.11.
Rangkaian pin motor servo .................................................................... 34
Gambar 3.12.
Lebar pulsa motor servo ........................................................................ 35
Gambar 3.13.
Rangkaian regulator 7805 dengan penguatan arus ................................ 36
Gambar 3.14.
konstruksi lengan robot ......................................................................... 37
Gambar 3.15.
Tampilan Program Utama ..................................................................... 39
Gambar 3.16.
Blok Diagram Pengenalan Ucapan ........................................................ 40
Gambar 3.17.
Diagram Blok sampling ......................................................................... 40
Gambar 3.18.
proses Pre-emphasis .............................................................................. 41
Gambar 3.19.
Diagram Blok Normalisasi .................................................................... 42
Gambar 3.20.
Diagram Pemotongan Sinyal.................................................................
42
Gambar 3.21.
Diagram proses framing........................................................................
44
Gambar 3.22.
Diagram Blok ekstraksi ciri DFT
…...................................................
45
Gambar 3.23.
Diagram Alir Proses Pembandingan Korelasi........................................
45
Gambar 3.24.
Diagram alur K-NN dan penentuan suara hasil pengenalan .................
46
Gambar 3.25.
Flowchart program komunikasi serial dengan MATLAB ...................
47
Gambar 3.26.
Alur Pembentukan Database …….…...................................................
48
Gambar 3.27.
Bentuk angka digital ……………..…...................................................
49
Gambar 3.28.
Flowchart Program Lengan Robot Saat Posisi Siaga............................
53
Gambar 3.29.
Flowchart Program Lengan Robot saat menulis angka 0...................... 53
Gambar 3.30.
Flowchart Program Lengan Robot saat menulis angka 1...................... 54
Gambar 3.31.
Flowchart Program Lengan Robot saat menulis angka 2...................... 54
Gambar 3.32.
Flowchart Program Lengan Robot saat menulis angka 3...................... 55
Gambar 3.33.
Flowchart Program Lengan Robot saat menulis angka 4...................... 55
Gambar 3.34.
Flowchart Program Lengan Robot saat menulis angka 5...................... 56
Gambar 3.35.
Flowchart Program Lengan Robot saat menulis angka 6...................... 56
Gambar 3.36.
Flowchart Program Lengan Robot saat menulis angka 7...................... 57
Gambar 3.37.
Flowchart Program Lengan Robot saat menulis angka 8...................... 57
Gambar 3.38.
Flowchart Program Lengan Robot saat menulis angka 9...................... 58
xvii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 3.39.
Fowchart penulisan angka keseluruhan ................................................. 59
Gambar 3.40.
(lanjutan) Flowchart penulisan angka ................................................... 60
Gambar 4.1.
Lengan Robot Tampak Atas .................................................................. 61
Gambar 4.2.
Lengan Robot Tampak Samping............................................................ 61
Gambar 4.3
Minimum System………………............................................................... 62
Gambar 4.4.
Regulator............................................................................................... 62
Gambar 4.5.
Tampilan GUI Program Pengenalan. .................................................... 66
Gambar 4.25a. Bentuk hasil penulisan angka ............................................................... 93 Gambar 4.25b. Bentuk hasil penulisan angka .............................................................. 94
xviii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR TABEL Halaman Tabel 2.1.
Hubungan PIN dan Interupsi ...................................................................... 7
Tabel 2.2.
Penentuan Ukuran Karakter ....................................................................... 12
Tabel 2.3.
Operasi Dasar LCD 16x2 ........................................................................... 13
Tabel 2.4.
Karakteristik Regulator Tegangan ic 78xx................................................. 14
Tabel 2.5.
Tabel spesifikasi mikrofon pada headset INTOPIC JAZZ 660 ................. 25
Tabel 2.6.
Spesifikasi servo Towerpro MG946R ........................................................ 27
Tabel 3.1.
ukuran bagian-bagian lengan robot ............................................................ 31
Tabel 3.2.
Perhitungan nilai overflow interrupt .......................................................... 35
Tabel 3.3.
berat yang ditanggung servo ...................................................................... 38
Tabel 3.4.
Keterangan Tampilan User......................................................................... 39
Tabel 3.5.
Pengucapan kata dan data yang dikirim....................................... .............. 48
Tabel 3.6.
Gerak sudut motor servo............................................................................
Tabel 4.1.
Tabel Fungsi Saluran Mikrokontroler. ....................................................... 62
Tabel 4.2.
Nilai OCR pada pergerakan 10 derajat motor servo .................................. 78
Tabel 4.3.
Perhitungan Lebar Pulsa Motor Servo Towerpro MG946R ...................... 78
Tabel 4.4.
Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak RealTime 80
Tabel 4.5.
Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak RealTime 80
Tabel 4.6.
Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak RealTime 80
Tabel 4.7.
Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak RealTime 80
Tabel 4.8.
Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak RealTime 81
Tabel 4.9.
Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak RealTime 81
49
Tabel 4.10. Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak RealTime 81 Tabel 4.11. Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak RealTime. 82 Tabel 4.12. Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak RealTime. 82 Tabel 4.13. Hasil Nilai batas bawah Yang Masih Dikenali Pada Setiap Ucapan.......... 83 Tabel 4.14
Confusion Matrix Pengujian secara realtime dengan database 1 untuk user 1… .................................................................................................................... 84
Tabel 4.15. Confusion Matrix Pengujian secara realtime dengan database 5 untuk user 1……………………………………………….……………….. …
xix
85
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Tabel 4.16. Confusion Matrix Pengujian secara realtime dengan database 10 untuk user 1 ...................... .............................................................................................. 85 Tabel 4.17. Confusion Matrix Pengujian secara realtime dengan database 1 untuk user 2 . ...................................................................................................................
86
Tabel 4.18. Confusion Matrix Pengujian secara realtime dengan database 5 untuk user 2 ................................................................................................................... .
86
Tabel 4.19. Confusion Matrix Pengujian secara realtime dengan database 10 untuk user 2 ....................................................................................................................
87
Tabel 4.20. Confusion Matrix Pengujian secara realtime dengan database 1 untuk user 3……………………………………………………………………….
87
Tabel 4.21. Confusion Matrix Pengujian secara realtime dengan database 5 untuk user 3…….……………………………………………………………………
88
Tabel 4.22. Confusion Matrix Pengujian secara realtime dengan database 10 untuk user 3…….……………………………………………………………………
88
Tabel 4.23. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding un untuk User 1 ………………………………………………………………..
89
Tabel 4.24. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding untuk User 2. ................................... ………………………………………………..
90
Tabel 4.25. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding untuk User Ketiga.…………………………………………………………………..
90
Tabel 4.26. Data Hasil Pengujian Pengucapan dengan Ucapan Lain pada User 1……
91
Tabel 4.27. Data Hasil Pengujian Pengucapan dengan Ucapan Lain pada User 2……
92
Tabel 4.28. Data Hasil Pengujian Pengucapan dengan Ucapan Lain pada User1…….
92
xx
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB I PENDAHULUAN 1.1.
Latar Belakang Pada masa sekarang, aktivitas manusia tidak jauh dengan teknologi. Teknologi tidak
hanya berkembang pada bidang sains, tetapi sudah menjangkau dibidang lainnya, seperti kedokteran, pertanian bahkan militer. Karena itu teknologi terus berkembang, sehingga penggunaannya menjadi lebih mudah dari pada teknologi sebelumnya. Lengan robot termasuk kedalam teknologi yang terus berkembang dalam pemakaiannya[1]. Kegunaan lengan robot yang selain sebagai pengganti lengan pada manusia untuk memindahkan barang tetapi bisa digunakan untuk aktivitas yang sering dilakukan manusia ketika menggunakan tangannya yaitu menulis. Selain teknologi lengan robot berkembang juga teknologi speech recognition, dimana menggunakan suara manusia sebagai perintah untuk alat melakukan suatu fungsi[2]. Dengan gagasan diatas peneliti berkeinginan untuk membuat lengan robot yang bisa beraktivitas untuk menulis dengan suara sebagai perintahnya. Sehingga tidak diperlukan lagi remote control untuk menggunakan lengan robot. Dalam mencari ide peneliti menemukan dalam penelitian sebelumnya mengenai Rancang Bangun Lengan Robot Menulis Kata yang Dikendalikan oleh Aplikasi Android[3] dan penelitian lain mengenai Pengenalan Ucapan Angka Secara Real Time Menggunakan Ekstraksi Ciri FFT dan Fungsi Similaritas Kosinus[4]. Peneliti ingin merancang dan membuat lengan robot untuk menulis angka secara real time dengan memanfaatkan suara manusia sebagai inputan. Oleh sebab itu peneliti memakai ekstraksi ciri DFT dan fungsi korelasi, hal ini membedakan dengan penelitian proses pengolah suara yang lainya. Dalam pembuatan lengan robot ini peneliti merancang lengan robot dengan ujung yang terdapat spidol untuk menulis dengan 3 derajat kebebasan atau degree of freedom ( DOF).
1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1.2.
2
Tujuan dan Manfaat Tujuan dari penelitian ini : 1. Tujuan penelitian ini membuat dan merancang lengan robot penulis angka dari 0 sampai dengan 9 yang dapat bekerja dengan perintah suara. Manfaat dari penelitian ini : 1. Manfaat dari penelitian sebagai perkembangan teknologi pada bidang kontrol dalam bentuk perintah suara. Kemudian perkembangan teknologi lengan robot sebagai alat untuk membantu pekerjaan manusia pada industri.
1.3.
Batasan Masalah Penulis menetapkan beberapa batasan masalah pada perancangan sebagai berikut : 1) Masukan suara berupa suara penyebutan angka 0 sampai dengan 9, pengucapan selain kata-kata yang sudah ditentukan akan dikenali secara salah. 2) Suara yang dikenali dari 3 user, peneliti dan 2 orang yang ditentukan oleh peneliti dengan intonasi pengucapan secara normal. 3) Database suara terdiri dari 3 orang yang sesuai dengan user yang memberi perintah suara. 4) Menggunakan Matlab untuk mengolah suara yang akan dikenali. 5) Pengenalan suara menggunakan ektraksi ciri DFT dan perhitungan korelasi. 6) Lengan robot menulis angka dengan style kotak berdasarkan suara yang dikenali. 7) Lengan robot yang menggunakan bahan akrilik 3 mm. 8) Menggunakan 3 buah servo yang diprogram menggunakan codevision AVR. 9) Ujung lengan robot terdapat spidol untuk menulis di whiteboard. 10) Menggunakan minimum sistem dengan Atmega32. 11) Komunikasi antara Laptop dengan Atmega32 menggunakan komunikasi serial USART yang dihubungkan dengan modul USB to TTL konverter yang telah tersedia. 12) Lengan robot akan menulis pada sebuah papan tulis yang diletakan secara vertikal. 13) Menggunakan headset Intopic Jazz 660 Hifi sebagai penangkap suara.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1.4.
3
Metodologi Penelitian Langkah-langkah yang dilakukan dalam pengerjaan yaitu ; 1) Mengumpukan bahan-bahan referensi baik buku dan jurnal ilmiah yang membahas mengenai pengenalan suara pada Matlab, membahas mengenai lengan robot, pemograman pada codevision AVR. 2) Perancangan hardware dan software untuk perancangan desain lengan robot dan alur jalan pada program. 3) Pembuatan hardware dan software berdasarkan desain yang telah dirancang dan membuat berdasarkan alur program kerja. 4) Pengambilan data dengan melihat hasil pengamatan pengolahan suara dan hasil keluarannya, dan pengamatan pada sudut pada servo yang memungkin menulis angka secara digital. 5) Analisa dan penyimpulan hasil percobaan dilakukan dengan melihat persentase error saat mendeteksi suara dan tingkat keberhasilan lengan robot menulis angka.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB II DASAR TEORI 2.1. Lengan Robot Lengan robot merupakan gabungan dari beberapa segmen dan sendi yang secaraumum dibagi menjadi tiga bagian, yaitu:arm, wirst, dan gripper. Robotic Industries Association (RIA) mendefinisikan lengan robot sebagai lengan yang didesain untuk memindahkan material, benda, alat tertentu lewat pergerakan yang terprogram untuk melakukan berbagai macam tugas [1]. Sistem lengan robot memiliki empat komponen dasar, yaitu: manipulator, end effector, aktuator, dan kontroler. Manipulator pada robot lengan memiliki 3 bagian, yaitu bagian dasar (base), bagian lengan (arm), dan bagian pergelangan (wrist). Bagian-bagian manipulator pada robot lengan dapat dilihat pada gambar 2.1.
Gambar 2.1. Manipulator pada robot lengan Bagian dasar (base) manipulator bisa secara paten terpasang pada dasar area kerja. Bagian lengan (arm) berfungsi untuk memposisikan end effector, dan bagian pergelangan (wrist) berfungsi untuk mengatur arah gerak dari end effector. Bagian ujung pada robot lengan terpasang end effector atau yang sering disebut dengan gripper yang berfungsi sebagai bagian terakhir yang menghubungkan antara manipulator dengan objek. Sebagai contoh gripper dapat berupa peralatan las, penyemprot cat ataupun hanya berupa pencengkram objek[6]. Kontroler merupakan otak dari sistem robot sehingga keberadaannya sangat penting. Kontroler menyimpan informasi yang berkaitan dengan data-data robot, dalam hal ini data gerakan robot yang telah diprogram sebelumnya.Kontroler berfungsi untuk mengontrol pergerakan dari manipulator. Kontroler sendiri diatur oleh sebuah informasi
4
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
5
atau program yang diisikan dengan menggunakan bahasa pemrograman tertentu. Informasi tersebut kemudian disimpan didalam memori. Data dalam memori dapat di keluarkan atau di edit sesuai dengan yang dibutuhkan. Aktuator adalah komponen penggerak yang jika dilihat dari prinsip penghasil geraknya dapat dibagi menjadi tiga bagian yaitu penggerak berbasis motor listrik (motor servo, motor steper, motor DC dan sebagainya), penggerak pneumatik (berbasis kompresi:udara, nitrogen) dan penggerak hidrolik (berbasis benda cair: minyak pelumas).
2.2. Mikrokontroler AVR ATmega32 AVR (Alf and Vegard’sRiscProcessor) merupakan seri mikrokontroler CMOS 8bit yang diproduksi oleh Atmel berbasis arsitektur RISC (Reduced Instruction Set Computer).Chip AVR yang digunakan untuk tugas akhir ini adalah ATmega32. Hampir semua instruksi dieksekusi dalam satu siklus clock dan mempunyai 32 register generalpurpose, timer/counter fleksibel dengan mode compare, interupsi internal dan eksternal, serial UART, programmable Watchdog Timer, dan power saving mode. AVR juga mempunyai ADC, PWM internal dan In-System Programmable Flash on-chip yang mengijinkan memori program untuk diprogram ulang [8].
2.2.1. Arsitektur AVR ATmega32 Mikrokontroler ATmega32 memiliki arsitektur sebagai berikut : a. Saluran IO sebanyak 32 buah, yaitu Port A, Port B, Port C dan Port D b. ADC 10 bit sebanyak 8 Channel c. Tiga buah timer/counter yaitu Timer 0, Timer 1, dan Timer 2 d. Watchdog Timer dengan osilator internal e. SRAM sebanyak 512 byte f. Memori Flash sebesar 8 kb g. Sumber Interupsi internal dan eksternal h. Port SPI (Serial Pheriperal Interface) i. EEPROM on board sebanyak 512 byte j. Komparator analog k. Port USART (Universal Shynchronous Ashynchronous Receiver Transmitter)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
6
2.2.2. Deskripsi Mikrokontroler ATmega32 Konfigurasi Pin Mikrokontroller ATmega32 dengan kemasan 40 pin DIP (dual inline package) dapat dilihat pada Gambar 2.2. Untuk memaksimalkan performa dan paralelisme, AVR menggunakan arsitektur Harvard (dengan memori dan bus terpisah untuk program dan data). Ketika sebuah instruksi sedang dikerjakan maka instruksi berikutnya diambil dari memori program[8].
Gambar 2.2. Konfigurasi Pin Mikrokontroler ATmega32[8] Mikrokontroler Atmega 32 memiliki konfigurasi Pin sebagai berikut: a. VCC (power supply) b. GND (ground) c. Port A (PA7…PA0) Port A berfungsi sebagai input analog pada ADC (analog digital converter). Port A juga berfungsi sebagai suatu Port I/O 8-bit dua arah. d. Port B (PB7…PB0) Port B adalah suatu Port I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih untuk beberapa bit). e. Port C (PC7…PC0) Port C adalah suatu Port I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih untuk beberapa bit). f. Port D (PD7...PD0) Port D adalah suatu Port I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih untuk beberapa bit). g. RESET (Reset input) h.
XTAL1 (Input Oscillator)
i. XTAL2 (Output Oscillator) j. AVCC adalah pin penyedia tegangan untuk Port A dan ADC. k. AREF adalah pin referensi analog untuk ADC.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
7
2.2.3. Interupsi Interupsi adalah suatu kondisi dimana mikrokontroler akan berhenti sementara dari program utama untuk melayani instruksi-instruksi pada interupsi kemudian kembali mengerjakan instruksi program utama setelah instruksi-instruksi pada interupsi selesai dikerjakan. Table 2.1 Hubungan PIN dan Interupsi Jenis interupt PIN pada Atemega 32 INT0
PORTD.2
INT1
PORTD.3
INT2
PORTB.2
ATmega32 menyediakan tiga interupsi eksternal yaitu, INT0, INT1, dan INT2. Masingmasing interupsi tersebut terhubung dengan pin ATmega32 seperti ditunjukan pada Tabel 2.1. Interupsi eksternal bisa dilakukan dengan memberikan logika 0 atau perubahan logika (rissing edge dan falling edge) pada pin interupsi yang bersangkutan[8].
2.2.4. Timer/Counter Timer/Counter pada mikrokontroler AVR dapat digunakan untuk melakukan pencacahan waktu seperti pada jam digital maupun untuk menghasilkan sinyal PWM (Pulse Width Modulation) yakni sinyal kotak dengan frekuensi dan duty cycle yang nilainya bisa diatur. Atmega32 memiliki tiga unit Timer/Counter yaitu Timer/Counter 0 (8 bit), Timer/Counter 1 (16 bit), dan Timer/Counter 2 (8 bit)[9]. TIMER/COUNTER 0 Fitur-fitur yang dimiliki: a) Satu buah unit Compare Counter (Unit ini akan meng-count dan meng-compare) b) Clear timer pada saat compare match (Auto reload) c) Phase Correct PWM yang bebas glitch d) Frequency generator e) External event counter f) Prescaler clock hingga 10 bit g) Membangkitkan interupsi saat timer overflow dan atau compare match Perhitungan overflow interrupt sebagai pembangkit PWM ditunjukan pada persamaan 2.3, 2.4, dan 2.5 berikut:
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
8
(2.1) (2.2) (2.3) Keterangan : f
= frekuensi yang digunakan untuk eksekusi program
T
= periode
N
= prescaller yang digunakan
OCR = nilai cacahan pulsa Pulse = lebar pulsa Berikut merupakan mode-mode operasi timer : a.
Mode normal, timer digunakan untuk menghitung saja, membuat delay, dan mengitung selang waktu[8].
Gambar 2.3.Mode Phase Correct PWM [8] b.
Mode phase correct PWM (PCP), digunakan untuk menghasilkan sinyal PWM dimana nilai register counter (TCNT0) yang mencacah naik dan turun secara terus menerus akan selalu dibandingakan dengan register pembanding OCR0. Hasil perbandingan register TCNT0 dan OCR0 digunakan untuk membangkitkan sinyal PWM yang dikeluarkan pada OC0 seperti ditunjukan Gambar 2.4[9].
c.
CTC (Clear timer on compare match), register counter (TCNT0) akan mencacah naik kemudian di-reset atau kembali menjadi 0x00 pada saat nilai TCNT0 sama dengan OCR0. Sebelumnya OCR diset dulu, karena timer 0 dan 2 maksimumnya 255, maka range OCR 0-255[9].
d.
Fast PWM, mode ini hampir sama dengan mode phase correct PWM, hanya perbedaannya adalah register counter TCNT0 mencacah naik saja dan tidak pernah mencacah turun seperti terlihat pada Gambar 2.7[9].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
9
Gambar 2.4.Mode Fast PWM [8]
2.2.5. Komunikasi Serial USART Komunikasi USART (Universal Synchronous and Asynchronous serial Receiver and Transmitter) adalah fasilitas komunikasi serial yang disediakan oleh mikrokontroler Atmega32, baik secara sinkron maupun asinkron.Komunikasi seri dapat dibedakan menjadi 2 macam, yaitu komunikasi data seri sinkron dan komunikasi data asinkron. Dikatakan sinkron jika sisi pengirim dan sisi penerima ditabuh (clocked) oleh penabuh (clock) yang sama, satu sumber penabuh, data dikirim beserta penabuh. Dikatakan asinkron jika sisi pengirim dan sisi penerima ditabuh oleh penabuh yang terpisah dengan frekuensi yang hampir sama, data dikirim disertai informasi sinkronisasi[8]. Pada proses inisialisasi ini setiap perangkat yang terhubung harus memiliki baudrate yang sama. Beberapa fasilitas yang disediakan USART AVR adalah sebagai berikut: a. Operasi full duplex (mempunyai register receive dan transmit yang terpisah) b. Mendukung kecepatan multiprosesor c. Mode kecepatan berorde Mbps d. Operasi asinkron atau sinkron e. Operasi master atau slave clock sinkron f. Dapat menghasilkan baud-rate (laju data) dengan resolusi tinggi g. Modus komunikasi kecepatan ganda pada asinkron 2.2.5.1. Inisialisasi USART Pada mikrokontroler AVR untuk mengaktifkan dan mengeset komunikasi USART dilakukan dengan cara mengaktifkan register-register yang digunakan untuk komunikasi USART. Register-register yang digunakan untuk komunikasi USART antara lain[8]: USART I/O Data Register (UDR)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
10
UDR merupakan register 8 bit yang terdiri dari 2 buah dengan alamat yang sama, yang digunakan sebagai tempat untuk menyimpan data yang akan dikirimkan (TXB) atau tempat data diterima (RXB) sebelum data tersebut dibaca.
Gambar 2.5. Register UDR [8] USART Control and Status Register A (UCSRA)
Gambar 2.6. Register UCSRA [8] Penjelasan bit penyusun UCSRA[8]: a.
RXC (USART Receive Complete) Bit ini akan set ketika data yang masuk ke dalam UDR belum dibaca dan
akan berlogika nol ketika sudah dibaca. Flag ini dapat digunakan untuk membangkitkan interupsi RX jika diaktifkan dan akan berlogika nol secara otomatis bersamaan dengan eksekusi vektorinterupsi yang bersangkutan. b.
TXC (USART Transmit Complete) Bit ini akan set ketika data yang dikirim telah keluar. Flag ini akan
membangkitkan interupsi TX jika diaktifkan dan akan clear secara otomatis bersamaan dengan eksekusi vektor interupsi yang bersangkutan. c.
UDRE (USART Data Register Empty) Flag ini sebagai indikator isi UDR. Jika bernilai satu maka UDR dalam
keadaan kosong dan siap menerima data berikutnya, jika flag bernilai nol berarti sebaliknya. d.
FE (Frame Error) Bit ini sebagai indikator ketika data yang diterima error, misalnya ketika
stop bit pertama data dibaca berlogika nol maka bit FE bernilai satu. Bit akan bernilai 0 ketika stop bit data yang diterima berlogika nol. e.
DOR (Data OverRun)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
11
Bit ini berfungsi untuk mendeteksi jika ada data yang tumpang tindih. Flag akan bernilai satu ketika terjadi tumpang tindih data. f.
PE (Parity Error) Bit yang menentukan apakah terjadi kesalahan paritas. Bit ini berfungsi jika
ada kesalahan paritas. Bit akan berlogika satu ketika terjadi bit parity error apabila bit paritas digunakan. g.
U2X (Double the USART Transmission Speed) Bit yang berfungsi untuk menggandakan laju data manjadi dua kalinya.
Hanya berlaku untuk modus asinkron, untuk mode sinkron bit ini diset nol. h.
MPCM (Multi Processor Communication Mode) Bit untuk mengaktifkan modus multi prosesor, dimana ketika data yang
diterima oleh USART tidak mengandung informasi alamat akan diabaikan. USART CONTROL AND STATUS REGISTER B (UCSRB)
Gambar 2.7. Register UCSRB [8] Penjelasan bit penyusun UCSRB[8]: a.
RXCIE (RX Complete Interrupt Enable) Bit pengatur aktivasi interupsi penerimaan data serial, akan berlogika satu
jika diaktifkan dan berlogika nol jika tidak diaktifkan. b.
TXCIE (TX Complete Interrupt Enable) Bit pengatur aktivasi pengiriman data serial, akan berlogika satu jika
diaktifkan dan berlogika nol jika tidak diaktifkan. c.
UDRIE (USART Data Register Empty Interrupt Enable) Bit ini berfungsi untuk mengaktifkan interupsi data register kosong,
berlogika satu jika diaktifkan dan sebaliknya. d.
RXEN (Receiver Enable) Bit ini berfungsi untuk mengaktifkan pin RX saluran USART. Ketika pin
diaktifkan maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena sudah digunakan sebagai saluran penerima USART.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI e.
12
TXEN (Transmitter Enable) Bit ini berfungsi untuk mengaktifkan pin TX saluran USART. Ketika pin
diaktifkan maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena sudah digunakan sebagai saluran pengirim USART. f.
UCSZ2 (Character Size) Bit ini bersama dengan UCSZ1 dan UCSZ0 dalam register UCSRC
digunakan untuk memilih tipe lebar data bit yang digunakan. Tabel 2.2. Penentuan Ukuran Karakter UCSZ[2..0] 0 1 10 11 100-110 111 g.
Ukuran Karakter dalam bit 5 6 7 8 Tidak dipergunakan 9
RXB8 (Receive Data Bit 8) Bit ini digunakan sebagai bit ke-8 ketika menggunakan format data 9-10
bit, dan bit ini harus dibaca dahulu sebelum membaca UDR. h.
TXB8 (Transmit Data Bit 8) Bit ini digunakan sebagai bit ke-8 ketika menggunakan format data 9-10
bit, dan bit ini harus ditulis dahulu sebelum membaca UDR.
USART CONTROL AND STATUS REGISTER C (UCSRC)
Gambar 2.8. Register UCSRC [8] Penjelasan bit penyusun UCSRC[8]: a.
URSEL (Register Select) : Bit ini berfungsi untuk memilih register UCSRC dengan UBBRH, dimana
untuk menulis atau membaca register UCSRC maka bit harus berlogika satu. b.
UMSEL (USART Mode Select) Bit pemilih mode komunikasi serial antara sinkron dan asinkron.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI c.
13
UPM[1…0] (Parity Mode) Bit ini berfungsi untuk memilih mode paritas bit yang akan digunakan.
Transmittter USART akan membuat paritas yang akan digunakan secara otomatis. d.
USBS (Stop Bit Select) Bit yang berfungsi untuk memilih jumlah stop bit yang akan digunakan.
e.
UCSZ1 dan UCSZ0 Merupakan bit pengatur jumlah karakter serial Bit yang berfungsi untuk
memilih lebar data yang digunakan dikombinasikan dengan bit UCSZ2 dalam register UCSRB. f.
UCPOL (Clock Parity) Bit yang berguna hanya untuk modus sinkron. Bit in berhubungan dengan
perubahan data keluaran dan sampel masukkan, dan clock sinkron (XCK)[6].
2.3.
LCD (Liquid Crystal Display) LCD adalah salah satu komponen elektronika yang berfungsi sebagai tampilan
suata data, baik karakter dan huruf[10] agar dapat mengendalikan LCD karakter dengan baik, tentu diperlukan koneksi yangbenar.Untuk itu perlu diketahui pin-pin antarmuka yang dimiliki oleh LCD karakterseperti yang ditunjukan pada Gambar 2.11[10].
Gambar 2.9. Konfigurasi kaki pin LCD 16x2 Konfigurasi setting LCD 16x2 dapat dilihat pada tabel 2.3 Tabel 2.3. Operasi Dasar LCD 16x2[26] No.
Nama
Fungsi
1 2 3
GND VCC VEE
Ground 5V Ground
4
RS
Register Select; H: Data Input; L: Instruction Input
5
RW
H: Read; L: Write
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
14
Tabel 2.3.(lanjutan) Operasi Dasar LCD 16x2[26]
2.4.
No.
Nama
Fungsi
6
EN
Enable Signal
7
D0
Data Bus
8
D1
Data Bus
9
D2
Data Bus
10
D3
Data Bus
11
D4
Data Bus
12
D5
Data Bus
13
D6
Data Bus
14
D7
Data Bus
15
V+BL
Positif backlight voltage
16
V–BL
Negative backlight voltage
Regulator IC 78xx dan Transistor Penguat Arus Pengatur tegangan (voltage regulator) berfungsi menyediakan suatu tegangan
keluaran dc tetap yang tidak dipengaruhi oleh perubahan tegangan masukan. Salah satu tipe regulator tegangan tetap adalah 78xx. Regulator tegangan tipe 78xx adalah salah satu regulator tegangan tetap dengan tiga terminal, yaitu terminal Vin, GND dan Vout. Regulator tegangan 78xx dirancang sebagai regulator tegangan tetap, meskipun demikian keluaran dari regulator ini dapat diatur tegangan dan arusnya melalui tambahan komponen eksternal.Spesifikasi karakteristik IC regulator seri 78xx dapat dilihat pada tabel 2.4. Tabel 2.4. Karakteristik Regulator Tegangan ic 78xx [11] VIN (Volt) Type 7805 7806 7808 7810 7812 7815 7818 7824
VOUT (Volt) 5 6 8 10 12 15 18 24
Min
Maks
7,3 8,3 10,5 12,5 14,6 17,7 21 27,1
20 21 23 25 27 30 33 38
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
15
Gambar 2.10. Rangkaian umum regulator 78xx [11] Nilai komponen c1 dan c2 difungsikan sebagai filter capasitor yang bertujuan untuk menghilangkan tegangan ripple agar tegangan keluaran menjadi lebih stabil. Untuk mendapatkan nilai kapasitor yang sesuai, dapat mengacu pada persamaan 2.4 dan 2.5 [11]. (
)
(2.4)
√ (
)
(2.5)
Komponen eksternal yang digunakan yaitu transistor 2N3055 karena kemampuan arus maksimal adalah 15 A [12].Untuk gambar rangkaian lengkap dengan IC regulator dapat ditunjukan gambar 2.11.
Gambar 2.11. Rangkaian catu daya dengan penguat[12] Dari gambar 2.11, maka diperleh persamaan-persamaan sebagai berikut[12]: VB = Vreg + VD
(2.6)
Tegangan keluaran rangkaian menjadi, Vo = Vreg – VBE
(2.7)
Vo = Vreg
(2.8)
Jika VD VBE, maka
Tegangan diantara kolektor dan emittor transistor 2N3055 adalah,
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
16
VCE = VIN – VR1(2.9) Disipasi daya transistor NPN 2N3055 adalah, PD
= VCE x IC(2.10)
Untuk nilai penguatan arus diperoleh dengan persamaan dibawah ini : Ic = β IB
(2.11)
Ie = (β+1) IB
(2.12)
2.5.Torsi / Momen Gaya Momen Gaya adalah kemampuan gaya F memutar/merotasi benda terhadap poros diam. Sehingga semakin besar torsi (τ) maka gaya F memutar benda pun semakin besar [7]. Rumus : τ = F r sin ϴ
(2.13)
keterangan : τ = Torsi (N-m) r = Jarak dari titik pangakal gaya sampai sumbu putar F = Gaya (N), F = m x g ϴ = Derajat sumbu putar
2.6.
Sinyal Suara Manusia Suara termasuk sebagai suatu sinyal, seperti sinyal pada umumnya maka suara
manusia dapat merambat melalui media perantara. Suara dapat dihantarkan melalui berbagai macam media, seperti media cair, gas ataupun media padat. Dengan mengambil arti bahwa suara termasuk sebagai sinyal, maka suara manusia mempunyai frekuensi dan amplitudo tertentu. Suara yang dapat didengar oleh manusia berkisar antara 20 Hz sampai dengan 20 KHz dan suara manusia mempunyai frekuensi 300 – 3000 Hz, dimana Hz adalah satuan frekuensi yang berarti banyak getaran per detik [13].
2.7.
Sampling Sampling merupakan proses pencuplikan sinyal kontinyu atau analog pada periode-
periode tertentu. Dalam proses ini sinyal suara akan dicuplik menjadi gelombang diskrit. [14]. Dalam proses pencuplikan, ada yang disebut dengan frekuensi sampling. frekuensisamplingmenandakan berapa banyak pencuplikan gelombang analog dalam satu detik. Satuan dari frekuensi samplingialah Hertz (Hz).Proses sampling ditunjukan pada gambar 2.12.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
17
Gambar 2.12. Tampilan Proses Sampling Didalam kriteria Nyquist dituliskan bahwa frekuensi samplingminimal harus lebih besar sama dengan 2 kali nilai frekuensi sinyal analog yang akan dicuplik .Kriteria Nyquist perlu diperhatikan dalam melakukan pencuplikan.Lebih jelasnya kriteria Nyquist menyatakan sebuah sinyal harus memiliki pencuplikan rate yang lebih besar dari 2 dengan
2.8.
adalah frekuensi paling tinggi yang muncul di sebuah sinyal.
Preprocessing Prepocessing merupakan tahapan awal untuk mengkondisikan sinyal sebelum
diproses dalam ektraksi ciri.Preprocessing dilakukan untuk membuang noise pada sinyal ucapan. Dalam preprocessing ada beberapa tahapan meliputi pre-emphasis,normalisasi, pemotongan sinyal, dan zero padding.
2.8.1. Pre Emphasis Pada proses pre emphasis sinyal denganfrekuensi tinggi diloloskan dan sinyal denganfrekuensi rendah difilter hal ini dilakukan dengantujuan untuk meratakan bentuk sinyal untukfrekuensi tinggi maupun rendah suara. Filter pre emphasis dinyatakan dalam persamaan seperti berikut[15]: s’(n) = s(n) – α*s(n−1)
(2.14)
dimana: s(n) =sampel sinyal masukan ke-n α= konstanta dimana 0,9 <α < 1,0
2.8.2. Normalisasi Normalisasi adalah proses dimana membuat penskalaan pada nilai amplitudo tiap data sinyal sesuai skala yang diinginkan. Proses ini dilakukan agar nilai amplitudo pada tiap data sinyal yang akan diolah bernilai sama. Besarnya nilai amplitudo sinyal suara
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
18
manusia saat melakukan pengucapan selalu berbeda-beda, sehingga penskalaan nilai amplitudo sinyal terhadap acuan skala yang diinginkan sangat diperlukan [16]. (
(
))
(2.15)
dengan keterangan sebagai berikut : = hasil data sinyal normalisasi (1,2,3,…,N) = data masukan dari sampling (1,2,3,…,N) N merupakan banyaknya data sinyal. Proses normalisasi sinyal suara diperlihatkan pada gambar 2.13. Gambar pada sisi atas memperlihatkan sinyal yang akan dinormalisasi dan gambar pada sisi bawah memperlihatkan hasil normalisasinya. Dari gambar tersebut diperlihatkan berubahnya nilai amplitudo setelah skalanya diperbesar.
Gambar 2.13. Contoh hasil proses sampling
Gambar 2.14. Contoh hasil proses normalisasi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.8.3. Pemotongan Sinyal
Pemotongan data sinyal sebelah kiri 1 0.8 0.6
Amplitude
0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
0
1000
2000
3000
4000 Data ke-
5000
6000
7000
8000
6000
7000
8000
pembalik urutan data sinyal 1 0.8 0.6
Amplitude
0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
0
1000
2000
3000
4000 Data ke-
5000
pemotongan data sinyal sebelah kanan 1 0.8 0.6
Amplitude
0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
0
500
1000
1500 Data ke-
2000
2500
3000
Hasil pemotongan 1 0.8 0.6
Amplitude
0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1
0
500
1000
1500
2000 Data ke-
2500
3000
Gambar 2.15. Proses Pemotongan Sinyal
3500
4000
19
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
20
Pemotongan sinyal merupakan proses yang berkaitan dengan ekstraksi ciri. Proses ini bertujuan untuk memotong beberapa bagian sinyal. Dalam proses perekaman, pemotongan sering terjadi untuk bagian awal dan akhir sinyal. Pemotongan bagian awal dan akhir sinyal suara dimaksudkan untuk menghilangkan bagian yang tidak termasuk bagian dari sinyal ucapan serta untuk mengurangi cacat sinyal akibat derau ruangan yang ikut terekam.Sinyal yang dianggap sebagi noise tersebut berasal dari suara lingkungan sekitar atau derau pernapasan. Keberadaan sinyal tersebut akan lebih baik jika diminimalisir dengan cara dihilangkan. Pada grafikpertama dari gambar 2.15 dengan batas potong 0.3data sinyal hasil normalisasi ditinjau kembali untuk mencari urutan data yang nilai amplitudonya di atas nilai positif batas potong dan di bawah nilai negatif batas potong. Pada grafik kedua data sinyal akan dihilangkan dari awal hingga data pertama dari hasil pencarian. Setelah dihilangkan kemudian urutan data sinyal dibalik dari belakang ke depan seperti pada grafikketiga. Kemudian proses diulang kembali dengan peninjauan data sinyal dan menghapus data dari awal hingga data pertama dari hasil pencarian. Pada grafik kelima urutan data sinyal diurutkan kembali dari belakang ke depan agar urutan datanya kembali pada aslinya.
2.8.4. Zero padding Zeropadding merupakan proses pemberian deretan data bernilai 0 pada data sinyal. Efek dari pemotongan sinyal memungkinkan adanya dampak ketidaksamaan banyak data sinyal. Proses zeropadding dilakukan agar panjang gelombang tiap data sinyal ucapan dapat disetarakan. Jumlah data 0 yang diberikan menyesuaikan ukuran banyak data yang diinginkan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
21
Gambar 2.16. Proses zero padding
2.9.
Framing Framing adalah proses dimana sinyal data masukan akan dibentuk dalam frame-
frame. Dalam bentuk frame ini data akan lebih mudah untuk diketahui, sehingga tidak perlu memeriksa sinyal data secara keseluruhan secara langsung. Data akan dicek setiap frame sebesar nilai panjang frame yang telah ditentukan. Jika dalam pemeriksaan tersebut sinyal data melebihi maka akan mengalami overlap, dimana akan sinyal data yang berlebih tersebut akan dipotong sebesar nilai overlap. Nilai dari lebar frame (tf) adalah 512 [15] dan nilai overlap (to) adalah 25% [20]dari nilai lebar segmen yaitu 128.
Gambar 2.17. Proses framing [15]
2.10. Windowing
Gambar 2.18. Proses Windowing
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
22
Windowing adalah proses dimana meminimalkan terjadinya diskontinuitas sinyal yang muncul akibat pemotongan sinyal. Biasanya diskontinuitas muncul pada bagian tepi awal dan akhir data sinyal suara. Proses windowing dilakukan agar dapat menghilangkan sinyal yang tidak diingikan sebelum ke proses selanjutnya[16]. Pada grafik pertama dari gambar 2.18 merupakan data sinyal hasil pemotongan yang akan diolah pada proses windowing. Grafik kedua merupakan pola jendela yang akan digunakan dalam proses windowing. Jumlah titik-titik data pada pembentukan pola jendela tersebut harus sama terhadap banyak data pada data sinyal. Pada grafik ketiga merupakan hasil windowing. Hasil tersebut diperoleh dari perkalian elemen dari gambar pertama dengan gambar kedua.
2.10.1. Hamming Hamming window
adalah salah satu dari berbagai macam jenis windowing.
Hamming windowmerupakan window yang mempunyai sidelobe yang paling kecil dan mainlobe yang paling besar sehingga hasildari hamming windowakan lebih halus dalam menghilangkan efek diskontunitas. Persamaan hamming window adalah [18]: ( )
(
)
(2.15)
Di mana : w(n) = Hasil windowing N= Jumlah data dari sinyal n= waktu distrik ke
2.11. Ekstraksi Ciri DFT 2.11.1. Pengertian DFT DFT merupakan perluasan dari transformasi fourier yang berlaku untuk sinyalsinyal diskrit dengan panjang yang terhingga. Semua sinyak periodik terbentuk dari gabungan
sinyal-sinyal
sinusoidal
yang
menjadi
satu
yang
dirumuskan
pada
persamaansebagai berikut [19]:
( )
∑
( )
(
)
Dengan:e = natural number (2.7182818284…) j = konstanta fourrier
(2.16)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
23
k = indeks dalam domain frekuensi (0, 1, 2, …,N-1) n = indeks dalam domain waktu (0,1,2, …, N-1)
Gambar 2.19.ContohHasil DFT
2.11.2. Segment Averaging Segment averaging merupakan metode untuk mengurangi jumlah data sinyal dengan data sinyal masukan disegmentasi dengan lebar segment yang kemudian dicari rata-ratanya pada tiap segment.Lebarnya segmen ditentukan berdasarkan kelipatan 2n (dengan 1≤n≤ 8), sehingga banyaknya segment yang terbentuk didapat dari pembagian seluruh data terhadap lebar segment. Keluaran dari porses segment averaging adalah ratarata dari setiap segment [4].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
24
Gambar 2.20.contohsegmen averaging dengan 16 segmen
2.12. Template Maching Template maching merupakan tahap pendekatan pengenalan pola dalam proses pengenalan ucapan. Proses template maching digunakan untuk menentukan kesamaan pola antara data masukan dengan pola database yang telah tersedia[17].
2.12.1. Korelasi Korelasi
digunakan
untuk
menghitung
besarnya
perubahan
antara
dua
variabel.Korelasi ini membagi dua variabel yang satu dengan yang lainnya yang saling berhubungan. Korelasi dirumuskan sebagai berikut [25] :
(
∑
) √∑
( (
Denganketerangansebagaiberikut : ̅ = rata-rata variable data masukan
̅ )( ̅) ∑
̅) (
(2.17) ̅)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
25
̅= rata-rata variable data referensi = data masukan = data referensi (
)= hasilkorelasi antara x dan y
2.13. K- Nearest Neighbor Alogarima yang disebut aturan tetangga terdekat atau biasa dikenal k - nearest neighbor(k-NN) diringkas sebagai berikut [15]. Sebuah fitur yang tidak diketahui vector x dan jarak mengukur, kemudian: a. Diluar vektor N(jarak),identifikasi nilai k tetangga terdekat, terlepas dari label kelas,untuk masalah 2 kelas dipilih dari nilai k yang ganjil, dan biasanyabukan merupakan kelipatan dari banyaknya kelas M. b. Dari sampel k tersebut, identifikasi jumlah vektor kiyang termasuk dalam kelas ωi,I = 1,2,…, M . Dengan∑ c. Tetapkan x untuk kelas ωi dengan jumlah ki terbanyak dari sampel.
2.14. Mikrofon Mikrofon dengan adalah perangkat yang mengubah gelombang suara menjadi sinyal listrik. Mikrofon banyak digunakan untuk berbagai hal yang berhubungan dengan komunikasi. Alat ini akan mengubah sinyal suara menjadi sinyal listrik yang kemudian dapat diaplikasikan sebagai input. Mikrofon yang akan digunakan untuk pengambilan suara adalah headset INTOPIC JAZZ 660. Mikrofon tersebut mempunyai spesifikasi sebagi berikut : Tabel 2.5 Tabel spesifikasi mikrofon pada headset INTOPIC JAZZ 660[22] No Spesifikasi 1 2 3 4 5
Nilai
Frequency Range
30 – 10.000 Hz
Microphone Sensitivity
-54
Impedance
3 dB
.2 k
Standard OperatingVoltage
3V
Plug type
3.5mm stereo
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
26
Gambar 2.21.Headset INTOPIC JAZZ 660
2.15. Sound Card SoundCard atau kartu suara adalah perangkat keras pada PC/laptop yang berguna untuk mengolah audio atau suara [23].Perangkat ini dapat mengkonversi sinyal audio, mengeluarkan sinyal audio, merekam sinyal audio, dan menyimpan sinyal audio. Kemampuan pengolahan audio sangat banyak sehingga banyak perangkat lain dari PC/laptop yang terhubung pada soundcard. Secara umum sound card memiliki beberapa fungsi : a. DSP (Digital Signal Processor) menangani jenis komputasi. b. DAC (Digital to Analog Converter) memproses output audio. c. ADC (Analog to Digital Converter) memproses inputan audio. d. ROM (Read Only Memory) menyimpan data sementara. e. MIDI (Musical Instrument Digital Interface) untuk koneksi peralatan musik eksternal. f. Jack digunakan untuk menyambung speaker dan mikrophone sebagai line out dan line in. Ada 3 jenis Sound Card berdasarkan kondisi pemasangan yaitu Sound Card OnBoard, Sound Card Off Board, dan SoundCardExternal. Sound card pada perangkat PC/laptop biasanya sudah terpasang langsung pada motherboard atau biasa disebut Sound Card On Board. Sound Card Off Board pemasangannya pada slot ISA/PCI pada motherboard. SoundCardExternal pemasangannya dihubungkan ke komputer melalui port eksternal seperti USB atauFireWire.
Gambar 2.22. Bentuk Sound Card PC/Laptop [23]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
27
2.16. Motor Servo Motor servo merupakan motor DC yang seudah dilengkapi dengan sistem kontrol didalamnya. Pada aplikasinya, motor servo sering digunakan sebagai kontrol loop tertutup, sehingga dapat menangani perubahan posisi secara tepat dan akurat [1].
Gambar 2.23. Model fisik motor servo Tabel 2.6 Spesifikasi servo Towerpro MG946R [24] Spesifikasi servo Towerpro MG946R operating voltage 4.8V to 7.2V operating speed 4.8v : 0.20sec/60o operating speed 6.0v : 0.17sec/60o stall torque 10.50 kg-cm @4.8V stall torque 13 kg-cm @6V gear type all metal gear size 40.7 mm x 19.7 mm x 42.9 mm weight 55 gram Bentuk fisik motor servo dapat dilihat pada gambar 2.23. Sistem pengkabelan motor servo terdiri dari 3 bagian, yaitu Vcc, Gnd, dan Kontrol (PWM). Penggunaan PWM pada motor servo berbeda dengan penggunaan PWM pada motor DC. Pada motor servo, pemberian nilai PWM akan membuat motor servo bergerak pada posisi tertentu lalu berhenti (kontrol posisi) [1]. Pengaruh dari lebar pulsa membuat posisi motor servo akan berubah. Perubahan ini agar terus berada pada posisi tetap misal dengan pulsa 2 ms akan memutar posisi servo pada 180o maka perlu diberikan nilai pulsa secara konstan agar posisi servo tetap pada sudut tersebut.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
28
Gambar 2.24. Cara pengontrolan motor servo [5] Prinsip utama pengontrolan motor servo yaitu dengan memberikan nilai PWM pada kontrolnya. Perubahan duty cycleakan menentukan perubahan posisi dari motor servo. Motor servo memiliki frekuensi sebesar 50 Hz sehingga pulsa yang dihasilkan yaitu setiap 20 ms. Lebar pulsa akan menentukan posisi motor servo yang dikehendaki [1].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB III RANCANGAN PENELITIAN Dalam bab III ini akan dibahas mengenai perancangan perangkat keras dan perancangan perangkat lunak. Pembahasan mengenai proses kerja, perancangan mekanik untuk lengan robot, perancangan hardware untuk komponen-komponen lengan lengan robot, dan perancangan software untuk program lengan robot dan program suara.
3.1.
Proses Kerja Kerja sistem dirancang untuk mengenali suara yang diucapkan oleh user secara real
time untuk sebagai perintah dalam mengerakan lengan robot untuk menuliskan angka. Ucapan berupa angka dari 0 sampai dengan 9 dari 3 user. Ucapan tersebut ditangkap melalui mikrofon pada headset dan disalurkan menuju sound card untuk diubah menjadi sinyal. Data sinyal akan diproses sebagai input oleh Matlab. Hasil dari proses oleh Matlab dikirimkan ke mikrokontroler melalui USB to TTL. Data yang diterima kemudian diproses mikrokontroler untuk mengoprasikan lengan robot. Lengan robot akan menuliskan angka dari 0 – 9 sesuai dengan input yang diterima.
Gambar 3.1. Arsitektur Sistem
29
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
30
3.2. Perancangan Mekanik Lengan Robot Perancangan lengan robot berupa desain lengan robot, bahan pembuatan lengan robot yaitu akrilik setebal 3 mm. Desain lengan robot menggunakan software Google sketchup utuk model 3 dimensi dan Corel Draw untuk model 2 dimensi. Lengan robot dirancang terdiri dari link 1, link 2, base sebagai poros. Lengan robot dirancang dengan 3 derajat kebebasan, dengan spidol berada di ujung lengan robot.
Gambar 3.2. Design lengan robot secara keseluruhan
Gambar 3.3.komponen bagian 1
Gambar 3.4. Komponen bagian 2
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
31
Gambar 3.5. Komponen bagian 3 Gambar 3.2 merupakan gambar design lengan robot secara 3D. Link merupakan penghubung antar bagian dari lengan robot dan joint merupakan bagian penggerak pada sendi di lengan robot.
Gambar 3.6 design awal ujung lengan robot Gambar 3.6 merupakan design kasar dari ujung pada lengan robot dimana pada bagian belakang spidol terdapat suspense yang akan membuat spidol dapat maju dan mundur. Fungsi dari suspensi ini berguna saat menulis, lengan robot tidak terkena tekanan, tekanan akan teredam pada suspensi tersebut.
Tabel 3.1. ukuran bagian-bagian lengan robot Bagian Lengan Robot
Panjang lengan
Bagian 1
14 cm
Bagian 2 dan spidol
27 cm
Base
12 cm
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.3.
32
Perancangan Perangkat Keras (hardware) Ada beberapa komponen dalam perancangan subsistem perangkat keras lengan
robot pemisah benda, diantaranya yaitu : a) Minimum Sistem Atmega32 + LCD 16x2 b) Motor servo c) Regulator IC 7805 + penguat arus d) Headset e) Soundcard
3.3.1. Minimum Sistem Atmega32 + LCD 16x2 3.3.1.1. Minimum Sistem Atmega32 Rangkaian minimum sistem merupakan sistem utama dalam mengontrol pergerakan lengan robot yang telah diprogram dalam mikrokontroler ATmega32 sesuai dengan kebutuhan. Penggunaan mikrokontroler dapat diatur sebagai input dan output mengontrol motor servo serta mengolah data serial yang dikirimkan dari komputer melalui USB to TTL converter. Untuk
perancangan minimum sistem terdiri dari rangkaian eksternal yaitu
rangkaian osilator dan rangkaian reset. Rangkaian osilator menggunakan crystal dengan frekuensi sebesar 11,0592 MHz dan menggunakan kapasitor 22 pf pada pin XTAL1 dan XTAL2 di mikrokontroler sesuai dengan datasheet. Rangkaian osilator ini berfungsi sebagai sumber clock bagi mikrokontroler. Pemberian kapasitor bertujuan untuk memperbaiki kestabilan frekuensi yang diberikan oleh osilator eksternal. Gambar 3.7 menunjukan rangkaian osilator.
Gambar 3.7. Rangkaian Osilator ATmega32[8]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
33
Rangkaian reset bertujuan untuk memaksa proses kerja pada mikrokontroler dapat diulang dari awal. Saat tombol reset ditekan maka mikrokontroler mendapat input logika rendah, sehingga akan seluruh proses yang sedang dilakukan mikrokontroler akan ter-reset. Gambar 3.8. adalah rangkaian reset untuk ATmega32.
Gambar 3.8. Rangkaian Reset ATmega32[8] Pada gambar 3.8 terdapat resistor yang memiliki resistansi sebesar 4,7 KΩ yang difungsikan sebagai pull up. Resistor pull-up eksternal dapat digunakan untuk menjaga agar pin RESET tidak berlogika 0 secara tidak disengaja.Kapasitor 10nF digunakan untuk menghilangkan noise yang disusun seri dengan resistor. Rangkaian reset minimum system Atmega32 merupakan gabungan dari rangkaian push-button dan low-pass filter.
3.3.1.2. Rangkaian Konfigurasi LCD 16x2 Rangkaian LCD digunakan untuk menampilkan angka yang diucapkan oleh user sehingga akan terlihat apakah terdeteksi atau tidak. Rangkaian LCD dapat dilihat pada gambar 3.9. Penentuan konfigurasi kaki LCD menuju mikrokontroler ditentukan dengan melihat pada software Code Vision AVR seperti pada Gambar 3.10.
Gambar 3.9. Skematik LCD 16x2
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
34
Gambar 3.10. SettingPort LCD
3.3.2. Motor Servo Dalam perancangan ini menggunakan motor servo sebagai penggerak dari lengan robot. Motor servo yang digunakan yaitu Towerpro MG946R sebanyak 3 buah. Rangkaian motor servo terdiri dari tiga port yaitu vcc,gnd,dan data. Pada jalur data berfungsi sebagai jalur pengiriman pulsa PWM yang akan mengaktifkan motor servo. Gambar 3.11. merupakan rangkaian pin untuk motor servo.
Gambar 3.11. Rangkaian pin motor servo Dengan menggunakan interrups timer sebagai pembangkit PWM. Timer merupakan sebuah counter dimana memiliki tugas menghitung „1,2,3,...” hingga 255 (8 bit) dan menyimpan hitungannya. Naiknya hitungan timer dan lama jeda antar hitungan ditentukan dari siklus pencacah mikrokontroler. Pada perancangan motor servo, timer diset agar menghitung sampai 255. Dan jika sudah mencapai 255, maka timer (overflow) akan memberikan sinyal, PWM akan bekerja dan mengintruksikan timer untuk menghitung lagi dari 0. Demikian seterusnya terjadi jika nilai 255 tercapai. Perbandingan nilai lebar pulsa
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
35
terhadap nilai overflow motor servo selama T = 20 ms, yang merupakan cacahan pulsa selama 1 ms sampai 2 ms. Berikut perhitungan overflow interrupt sebagai pembangkit PWM untuk mengatur motor servo. Frekuensi kristal = 11,059200 MHz
T
= (1/11059200) = 0,090422 x 10-6 s.
Memakai timer 0 dan nilai precaler 256 untuk mengatur kecepatan clock maka nilai timer overflow yang dihasilkan (0,090422 x 10-6 ) x 256 = 23,148 x 10-6 . Dari hasil tersebut untuk membuat interrupt dapat mencacah selama 20 ms yaitu (20ms/23,148x10-6 ) = 864. Tabel 3.2. menunjukan pemberian nilai pulsa untuk mengontrol pergerakan motor servo secara umum. Dan Gambar 3.12. menunjukan lebar pulsa motor servo dengan menggunakan persamaan 2.3. Tabel 3.2. Perhitungan nilai overflow interrupt SUDUT
Lebar pulsa
Nilai overflow interrupt
0o
1 ms
OCR =
= 43,20
90o
1,5 ms
OCR =
= 64,8
180o
2 ms
OCR =
= 86,40
Gambar 3.12. Lebar pulsa motor servo [5]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
36
3.3.3. Regulator IC 7805 dan Penguat Arus Pada pembuatan tugas akhir ini, regulator digunakan sebagai pemberi daya pada motor servo, minimum system ATmega32. Regulator terdiri dari IC 7805, 2N3055, kapasitor, dan diode. Sumber yang digunakan untuk regulator yaitu menggunakan adaptor switching yang telah tersedia di pasaran dengan spesifikasi keluaran tegangan 19 V dc dan arus 4A. Untuk men-supply motor servo Towerpro MG946R dibutuhkan arus sebesar 500 - 900 mA. Dengan demikian maka digunakan transistor 2N3055 agar arus keluaran IC 7805 yang memiliki tegangan keluaran sebesar 5 volt menjadi lebih besar. Tegangan 5 volt merupakan tegangan kerja pada masing-masing servo yaitu kurang lebih 4 - 7,2 volt. Komponen yang digunakan pada gambar 3.13 mengacu pada landasan teori[12].
Gambar 3.13. Rangkaian regulator 7805 dengan penguatan arus
3.3.4. Soundcard Soundcard digunakan saat sampling untuk proses digitalisasi sinyal suara yang ditangkap oleh mikrofon. Soundcard yang digunakan telah tertanam pada laptop yang akan dipakai. Ucapan dari user berupa sinyal analog, sehingga diubah menjadi sinyal diskrit agar dapat diolah dikomputer.
3.3.5. Mikrofon Headset dengan mikrofon untuk menangkap sinyal analog dari input kemudian diteruskan menuju soundcard pada laptop melalui line in yang ada pada sound card. Headset yang digunakan dalam perancangan adalah
Intopic Jazz 660. Headset ini
memiliki mikrofon dengan panjang 13.5 cm dengan berbentuk lurus. Hal ini digunakan agar dapat mendapatkan data sinyal yang stabil ketika pengujian.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
37
3.4. Perhitungan Torsi Motor Servo Untuk menghitung besar torsi pada masing-masing motor servo, digunakan rumus dan persamaan 2.13. Gambar 3.14. merupakan gambar kontruksi lengan robot untuk menghitung besar torsi masing-masing motor servo. Tabel 3.3. merupakan table hitungan torsi pada tiap servo
Gambar 3.14. konstruksi lengan robot
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
38
Tabel 3.3 berat yang ditanggung servo GAYA Motor servo 1 (m = 137.7gr) F=mxg = 0,1377x 9,8 = 1,3494 N Ket : servo 1 bergerak 0o,70 o,90o ,110o Ket: 1 N-m = 10.1971621298 Kg-cm
Motor servo 2 (m = 77,7 gr) F=mxg = 0,0777 x 9,8 = 0,7614 N Ket : servo 2 bergerak 90o Motor servo 3 (m = 22,7gr) F=mxg = 0,0227 x 9,8 = 0,22246 N Ket : servo 3 bergerak 70o,80o,90o
TORSI Sudut 0o (r = 41 cm) τ =1,3494x 0,41 x sin(0) = 0 N-m = 0 kg-cm Sudut 70o (r = 41 cm) τ = 1,3494x 0, 41 x sin(70) = 0,5198 N-m = 5,3013 kg-cm Sudut 90o (r = 41 cm) τ = 1,3494x 0, 41 x sin(90) = 0,5532 N-m = 5,6415 kg-cm Sudut 110o (r = 410 cm) τ = 1,3494x 0,41 x sin(110) = 0,5198N-m = 5,3013kg-cm Sudut 90o (r = 41 cm) τ = 0,7614 x 0, 41 x sin (90) = 0,3121 N-m = 3,18352 kg-cm
Sudut 70o (r = 27 cm) τ = 0,22246 x 0, 27 x sin(70) = 0,0564 N-m = 0,5753 kg-cm Sudut 80o (r = 27 cm) τ = 0,22246 x 0, 27 x sin(80) = 0,0591 N-m = 0,6030 kg-cm Sudut 90o (r = 27 cm) τ = 0,22246 x 0, 27 x sin(90) = 0,0600 N-m = 0,6123 kg-cm
Dari data tabel diatas didapatkan bahwa nilai servo yang ditanggung paling berat adalah 5,6415 kg-cm, pada datasheet servo Towerpro MG946R diketahui bahwa dapat mengangkat beban hingga 12 kg[24], dapat disimpulkan servo dapat menggangkat beban pada lengan robot secara keseluruhan.
3.5. Perancangan Perangkat Lunak (Software) 3.5.1. Antarmuka Program Perancangan dalam pembuatan perangkat lunak menggunakan pemograman Matlab. Hal ini juga berlaku dalam tampilan antarmuka yang juga dibuat dengan pemograman Matlab. Antarmuka dalam Matlab disebut dengan Graphical User Interface (GUI).
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
39
Gambar 3.15. Tampilan Program Utama Keterangan dari tampilan utama dapat dilihat pada tabel 3.4. Table 3.4. Keterangan Tampilan User NO.
NAMA BAGIAN
KETERANGAN
1
Rekam
Tombol tekan untuk memulai perekaman
2
Reset
Tombol tekan untuk mengulang perekaman
3
Keluar
Tombol tekan untuk mengakhiri aplikasi
4
Variabel Segment averaging
Pilihan nilai panjang lebar pada segment averaging
5
Variabel K-NN
Pilihan nilai k pada k-NN
6
Variabel user data base
Pilihan user data base
7
Plot hasil perekaman
Tampilan grafik untuk suara hasil perekaman
8
Plot hasil DFT
Tampilan grafik hasil ektraksi ciri DFT
9
Hasil pengenalan
Menunjukkan hasil pengenalan suara
3.5.2. Proses pengenalan suara pada MATLAB Pada proses pengenalan suara oleh Matlab, memiliki proses kerja yaitu mula-mula suara dari user terlebih dahulu dikenali menggunakan mikrophone yang dihubungkan pada laptop. Data sinyal ucapan hasil sampling tersebut akan diolah dilaptop menggunakan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
40
software Matlab. Pengolahan data ucapan dilakukan melalui beberapa tahapan yaitu preprocessing, framing, windowing, ekstraksi ciri, korelasi, dan
K-NN. Pada tahap
preprocessing merupakan tahap pengkondisian sinyal. Preprocessing sendiri terdiri dari beberapa tahap yaitu, preemphasis, normalisasi, pemotongan sinyal. Pada tahap selanjutnya proses framing dan windowing dengan hasil prosesnya dilanjutkan pada tahap korelasi, pada tahap ini database penyimpanan suara akan dipanggil sabagai data perhitungan. Selanjutnya proses k-NN dimana akan menentukan hasil keluaran dari pengenalan suara.
Gambar 3.16. Blok Diagram Pengenalan Ucapan
3.5.2.1. Sampling Mulai
Masukan : perintah suara
Pencuplikan
Keluaran: Ucapan angka.wav
Selesai
Gambar 3.17. Diagram Blok sampling
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
41
Proses sampling merupakan proses pencuplikan ucapan manusia.. Percakapan manusia mempunyai rentang frekuensi 300 Hz – 3000 Hz. Nilai frekuensi tersebut akan digunakan untuk menentukan nilai frekuensi sampling. Nilai frekuensi ucapan ditentukan pada nilai tertinggi yaitu 3000 Hz kemudian berdasarkan kriteria Nyquist minimum frekuensi sampling ialah 2 kali dari frekuensi asal. Dengan memakai teori tersebut maka penulis mengambil nilai sampling rate sebesar 6000 Hz dengan frekuensi asal 3000 Hz (batas atas dari rentang frekuensi maksimal). Lama waktu penangkapan ucapan ditentukan sebesar 2 detik. Waktu tersebut ditentukan agar kata yang diucapkan dapat terekam secara utuh. Penentuan lama waktu berdasarkan hasil percobaan yang disertakan dalam lampiran L1.
3.5.2.2. Pre-emphasis Pada proses pre emphasis hasil sampling akan di filter agar dapat menghasilkan bentuk sinyal yang lebih halus tanpa terganggunya noise dan mempertahankan sinyal suara yang blur menjadi lebih jelas. mulai
Masukan : hasil sampling
Proses Pre-emphasis
keluaran : hasil Pre-emphasis
Selesai
Gambar 3.18. proses Pre-emphasis
3.5.2.3. Normalisasi Pada proses normalisasi ini digunakan untuk menyeragamkan nilai amplitudo dari sinyal sampling yang sudah melewati proses pre-emphasis. Tujuan dari normalisasi yaitu agar pengaruh dari kuat atau lemahnya suara yang diucapkan user dapat diminimalkan dalam proses normalisasi. Hasil dari proses normalisasi ini dirancang agar batasan nilai puncak maksimum dari data ucapan user tersebut bernilai 1 atau -1.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
42
Mulai
Masukan : Hasil Pre-empahsis
Normalisasi = sinyal hasil preemphasis / sinyal tertinggi dari hasil preemphasis
Keluaran : Hasil normalisasi
Selesai
Gambar 3.19. Diagram Blok Normalisasi
3.5.2.4. Pemotongan Sinyal Mulai
Masukan : - hasil normalisasi
- batas potong
Pemotongan sinyal sisi kiri hingga batas potong
Membalik data sinyal
Pemotongan sinyal sisi kiri hingga batas potong
Membalik data sinyal ke kondisi awal
Keluaran : Hasil pemotongan
Selesai
Gambar 3.20. Diagram Pemotongan Sinyal Proses pemotongan sinyal bertujuan untuk menghilangkan suara lain yang ikut terekam sebelum suara yang diinginkan terekam. Hal ini diperlukan agar proses pengenalan mampu benar-benar hanya mengenali suara yang diperlukan saja. Masukan pada proses pemotongan sinyal meliputi sinyal hasil normalisasi dan batas potong. Proses
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
43
pemotongan data sinyal dibatasi oleh nilai dari batas potong . Nilai batas potong yang akan digunakan sebagai pemotongan sinyal sebesar 0,3 yang didapat dari referensi [21]. Proses pemotongan dilakukan dengan mencari data antara nilai batas potong yang sudah ditentukan. Sebagai contoh jika nilai batas potong dimasukan nilai 0,3 maka nilai yang akan diproses untuk pemotongan sinyal adalah antara 0,3 sampai -0,3. Data diantara nilai batas potong tersebut akan dihilangkan dari data awal hingga data pertama pada hasil pencarian data yang dilakukan. Pada saat proses pemotongan sinyal akan dijalankan secara bertahap yang dimulai dari data sinyal bagian depan atau kiri dahulu dan dilanjutkan pada akhir atau kanan sinyal. Saat proses pemotongan data sinyal bagian depan atau bagian kiri sudah selesai, maka akan dilakukan penyusunan data sinyal dari belakang menuju depan untuk membalikan urutan data sinyal dari kanan ke kiri. Pembalikan urutan data sinyal tersebut bertujuan untuk memotong data bagian akhir. Setelah data sinyal bagian akhir dipotong maka data akan disusun kembali untuk mengembalikan pada posisi awal atau pada urutan sebenarnya. Hasil pemotongan sinyal akan disesuainkan urutannya dengan proses zero padding agar banyaknya data pada sinyal ucapan pada setiap percobaan pengucapan berjumlah sama. Proses ini melakukan penyisipkan deretan nilai 0 pada bagian akhir data ucapan.
3.5.2.5. Framing dan Windowing Pada tahapan ini sinyal suara akan melalui proses framing. Pada proses framing berfungsi untuk membagi tiap data ke beberepa bagian sebelum dilakukannya proses ekstraksi ciri. Sinyal suara yang masuk akan dibandingkan dengan panjang frame, jika nilai data sinyal lebih panjang dari panjang frame maka masuk ketahap windowing, kemudian disimpan untuk dilakukan overlap. Overlap merupakan pemotongan sinyal yang tidak dipakai dari proses framing, yaitu bagian yang melebihi dari panjang frame yang telah ditentukan. Jika nilai data sinyal masukan lebih kecil atau sama dengan nilai panjang segmen makan akan langsung mengalami windowing tanpa melalui framing dan overlap. Nilai dari lebar frame (tf) adalah 512 [15] dan nilai overlap (to) adalah 25% [20] dari nilai lebar frame yaitu 128. Didalam proses framing terdapat proses windowing. Windowing merupakan proses perancangan untuk membuat pola dalam masukan data ucapan sebelum masuk dalam proses selanjutnya. Pada perancangan windowing ini peneliti menggunakan jenis
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
44
windowing hamming karena memiliki main lobe paling besar dan side lobe paling kecil[18]. Mulai
Masukan : - hasil data masukan
- nilai overlap frame - nilai panjang frame
data > = panjang frame
data < panjang frame Tidak
Ya
tidak Ya
proses framing pada data masukan
pemberian data 0 pada panjang segmen
Proses windowing :
Proses windowing :
hasil framing x hasil windowing
hasil framing x hasil windowing
Simpan proses windowing
Simpan proses windowing
potong sinyal yang tidak dipakai
Keluaran : hasil framing
Selesai
3.21. Diagram proses framing
3.5.2.6. Ekstraksi Ciri DFT Setelah melalui proses windowing, proses selanjutnya adalah penghitungan ekstraksi ciri DFT. Ektraksi ciri DFT digunakan untuk mengubah sinyal menjadi komponen frekuensi dasarnya. Pada proses DFT dilakukan proses penghitungan nilai absolut DFT dan pemotongan setengah bagian dari hasil perhitungan nilai DFT. Setelah proses ekstraksi ciri dilakukan proses segment averaging yang berfungsi untuk melakukan segmentasi pada data hasil ekstraksi ciri. Segment averaging merupakan metode untuk mengurangi jumlah data dengan cara mengelompokannya dalam rentang segment kemudian dicari rata-ratanya pada tiap segment. Segment averaging digunakan untuk mengurangi jumlah data ekstraksi ciri yang memiliki ukuran besar menjadi ukuran kecil.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
45
Mulai
Masukan : Hasil dari Windowing
Mencari nilai absolut DFT
mengambil setengah bagian lain dari dari nilai DFT
Proses segmen averaging
Keluaran : Hasil ekstraksi ciri DFT
Selesai
Gambar 3.22. Diagram Blok ekstraksi ciri DFT
3.5.2.7. Korelasi Pada proses ini korelasi berfungsi untuk menghitung besarnya perubahan antara dua variabel. Fungsi ini membagi dua variabel yang satu dengan yang lainnya yang saling berhubungan. Dalam hal ini yang menjadi variabel yang akan dibandingkan adalah data referensi dan data terekam. Hasil penghitungan pembandingan kemudian digunakan sebagai penentuan hasil keluaran pengenalan pada proses k-NN.
Mulai
Masukan : - hasil ekstraksi ciri - database
perhitungan korelasi antara hasil ekstraksi ciri dengan database
Keluaran : hasil korelasi
Selesai
Gambar 3.23. Diagram Alir Proses Pembandingan Korelasi.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
46
3.5.2.8. Klasifikasi k-NN dan penentuan keluaran Pada tahap perancangan ini hasil pengenalan suara didapat dari masukan nilai perhitungan korelasi. Hasil dari perhitungan korelasi dicari nilai terbesar kemudian pengambilan nilai k dimana nilai k ditentukan oleh user. Dari hasil tersebut didapatkan nilai korelasi. Nilai korelasi akan diproses pada thresholding, dimana hasil yang didapatkan akan dibandingkan dengan nilai thresholding. Apa bila nilai korelasi lebih kecil dari nilai thresholding maka akan error, jika lebih besar maka masuk ke proses penentuan kelas. Penentuan keluaran dengan berdasarkan kelas yang paling banyak muncul dengan menggunakan metode k-Nearest Neighbor. Hasil dari perhitungan dan nilai kelas yang paling banyak muncul tersebut akan ditampilkan berupa keluaran text. Hasil penentuan akan ditampilkan di tampilan GUI berupa tulisan. Mulai
Masukan : 1.Hasil Perhitungan korelasi
2.Nilai K-NN 3.Jumlah sampel per kelas
mengurutkan hasil perhitungan jarak dari yang paling besar
pengambilan k korelasi terbesar
mencari index kelas dari korelasi k terbesar
pilih kelas yang paling sering muncul, sebagai kelas keluaran
nilai korelasi terendah pada kelas keluaran≥
Keluaran : Error
nilai thresholding
tidak
ya Keluaran :
Data Hasil Keluaran K-NN (Teks)
Selesai
Gambar 3.24. Diagram alur K-NN dan penentuan suara hasil pengenalan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
47
Untuk mendapatkan nilai thresholding dengan cara, pertama data masukan pengucapan (contoh untuk angka 0) dicari nilai korelasi untuk setiap indeks (data referensi angka 0) pada pengucapan angka 0. Setelah didapatkan hasil korelasi untuk setiap data referensi yang berjumlah 10 nilai korelsi, karena data referensi untuk pengucapan angka 0 dilakukan pengambilan suara sebanyak 10 kali. Data hasil fungsi korelasi tersebut dipilih nilai paling minimal, karena data referensi pengucapan angka 0 sebanyak 10 data referensi, maka dilakukan percobaan dengan cara yang sama hingga 10 kali pengucapan. Setelah didapatkan nilai korelasi minimal dari 10 kali percobaan, kemudian dicari nilai minimal dari 10 nilai korelasi minimal yang telah didapatkan tadi. Nilai minimal inilah yang akan menjadi thresholding untuk pengucapan angka 0. Untuk proses pengucapan angka lainya berlaku hal yang sama.
3.5.3. Proses Pengiriman Serial Proses pengiriman data secara serial ini merupakan proses setelah mengetahui hasil pengenalan suara.
Gambar 3.25. Flowchart program komunikasi serial dengan Matlab Data yang dikirimkan berupa data karakter a sampai j, sehingga tiap kategori ucapan mengirimkan karakter yang berbeda. Tabel 3.5. menunjukan pengucapan kata dan data yang dikirim.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
48
Tabel 3.5. Pengucapan kata dan data yang dikirim Kata
Data pengiriman
Satu
“a”
Dua
“b”
Tiga
“c”
Empat
“d”
Lima
“e”
Enam
“f”
Tujuh
“g”
Delapan
“h”
Sembilan
“i”
Nol
“j”
3.5.4. Perancangan Pembentukan Database Ucapan Database yang dibentuk berupa hasil pengolahan sinyal dari rekaman kata yang diucapkan oleh user. Database disimpan dalam bentuk Mfile didalam komputer. Blok diagram pembentukan database ucapan ditunjukkan pada gambar 3.26. Masukan ucapan
Sampling
Database
pre-emphasis
Ekstraksi ciri DFT
Normalisasi
Pemotongan sinyal
Framing dan windowing
Gambar 3.26. Alur Pembentukan Database Proses pembentukannya melalui beberapa tahapan yang serupa terhadap proses pengenalan ucapan. Perbedaannya terletak pada tidak adanya proses perhitungan jarak, sehingga pembentukan database berakhir pada proses ekstraksi ciri.
3.5.5. Bentuk Angka Digital Angka yang diucapkan akan di tulis oleh lengan robot berbentuk digital. Angka itu meliputi angka 0 – 9. Dalam bentuk digital angka tersebut seusai dengan gambar 3.27.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
49
Gambar 3.27. Bentuk angka digital
3.5.6. Proses flowchart program lengan robot Dalam mendapatkan nilai sudut servo penulis menggunakan metode heuristik dimana dengan membuat lengan robot sederhana (tanpa menggunakan motor servo) yang memiliki ukuran yang sama dengan lengan robot yang akan dibuat. Kemudian dicari nilai masing-masung sudut motor servo menggunakan busur derajat pada lengan robot siaga dan lengan robot saat menulis angka. Untuk menulis angka digital terdapat titik sudut pada angka digital tersebut yang akan menjadi patokan pergerakan dari motor servo. Pergerakan motor servo mengikuti titik-titik yang telah terdapat angka secara berurutan. Pada tabel 3.6. merupakan gerak lengan robot dari titik awal ketitik akhir. Contoh untuk angka 0. Dalam penulisan lengan robot dari titik 1 setiap servo di berikan nilai PWM yang menghasilkan nilai sudut yang telah dicari, kemudian secara bersamaan diberikan nilai PWM secara langsung pada setiap servo hingga menggerakkan lengan robot ke titik 2 sehingga menghasilkan garis segmen yang diharapkan. Tabel 3.6. Gerak sudut motor servo Pergerakan motor servo (dalam derajat)
Angka
Posisi siaga : Servo 1 = 90o Servo 2 = 90o Servo 3 = 90o Garis 1 1
2
1
2
2
Garis 2 o
Servo 1 = 100 1
Servo 2 = 90 o
Servo 3 = 100 o
3
Garis 3
5
Servo 1 = 100 o Servo 2 = 90 o
Servo 3 = 90 o 6
3
4
4
3
4
Garis 4
1
Servo 1 = 90
o
Servo 1 = 90 o
Servo 2 = 90
o
Servo 2 = 90 o
Servo 3 = 100 o
Servo 3 = 90 o
2
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Tabel 3.6.(lanjutan) Gerak sudut motor servo Angka
Pergerakan motor servo (dalam derajat) Gerak 1
1
2
1
2
Servo 1 = 90 o Servo 2 = 90 o Servo 3 = 100 o
4
3
2
Garis 1 1
2
1
2
2
3
4
3
3
Servo 1 = 100
Servo 1 = 100 o
Servo 2 = 90 o
Servo 2 = 90 o
Servo 3 = 90 o
Servo 3 = 100 o
Garis 3 4
Garis 2 o
4
Garis 4 o
Servo 1 = 90 Servo 2 = 90o
Servo 3 = 100 Garis 5
5
Servo 1 = 90 o Servo 2 = 90 o
o
Servo 3 = 110 o
6
Servo 1 = 100 o 6
5
5
6
Servo 2 = 90 o Servo 3 = 110 o Garis 1
1
2
2
Garis 2
Servo 11= 100
o
Servo 2 = 90 o
4
3
Servo 3 = 100 o
4
Garis 4
Servo 1 = 90o 4
3
Servo 2 = 90 o
Servo 3 = 100o 5
Servo 1 = 100 6
5
3
Servo 1 = 100 o
Servo 2 = 90o
Garis 3
2 1 = 100 o Servo
Servo 2 = 90 o
Servo 3 = 90 o Garis 3
3
Servo 3 = 100 o Garis 5
o
5
6
Servo 1= 90 o 6
Servo 2 = 90 o
Servo 2 = 90 o
Servo 3 = 110 o
Servo 3 = 110 o
50
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Tabel 3.6.(lanjutan) Gerak sudut motor servo Angka
Pergerakan motor servo (dalam derajat) Garis 1
1
2
4
2
Servo 2 = 90 o
Servo 2 = 90 o
Servo 3 = 100 o
Servo 3 = 100 o
4
Garis 4 o
Servo 1 =100
5
1
4
Servo 1 = 100 o Servo 2 = 90 o
Servo 3 = 90 o
Servo 3 = 110 o
2
Garis 2
3
Servo 1 = 80 o
Servo 1 = 80 o
Servo 2 = 90 o
Servo 2 = 90 o
Servo 3 = 90 o
Servo 3 = 100 o
Garis 3 3
5
Servo 2 = 90 o
Garis 1 2
3
Servo 1 =100 o
Garis 3
3
Garis 2
Servo 1 = 90 o
4
Servo 1 = 90
Garis 4 o
Servo 1 = 90 o
Servo 2 = 90 o
Servo 2 = 90 o
Servo 3 = 100 o Garis 5
5
Servo 3 =110 o
6
Servo 1 = 80 o 6
5
Servo 2 = 90 o Servo 3 =110 o Garis 1
1
Servo 11 = 90
3
Garis 2 o
2 Servo 1 = 100 o
Servo 2 = 90 o
Servo 3 = 100 o
Servo 3 = 100 o
4
Garis 4
Servo 1 = 100
o
Servo 2 = 90 o Servo 3 =110 Garis 5
o
4
Servo 2 = 90 o Servo 3 =110 o
2
Servo 2 = 90 o Servo 3 =100 o
5
Servo 1 = 90 o
Servo 1 = 90 o 5
3
Servo 2 = 90 o
Garis 3 2
2
3
51
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Tabel 3.6.(lanjutan) Gerak sudut motor servo Angka
Pergerakan motor servo (dalam derajat) Garis 1
1
1
2
2
Servo 1 =100 o Servo 2 = 90 o Servo 3 = 90 o
2
3
Garis 2
3
Servo 1 = 100 o Servo 2 = 90 o 5
4
3
Servo 3 = 100 o
Garis 1 1
2
2
Garis 2
Servo 1 = 100 Servo 2 = 90
o
o
Garis 3 3
Servo 3 = 100 o
4
Servo 1 = 90
Garis 4 o
Servo 2 = 90 o
Servo 3 = 100o Garis 3 5
5
Servo 2 = 90
o
o
Servo 3 = 110 o Garis 6
1
Servo 1 = 90 o Servo 2 = 90 o Servo 3 = 90 o Garis 1 3
4
2
Servo 1 = 80 o Servo 2 = 90 o Servo 3 = 90 o Garis 2
2
1
3
Servo 1 = 80 o Servo 2 = 90 o Servo 3 = 80 o Garis 3
4
Servo 1 = 90 o 5
Servo 2 = 90 o Servo 3 = 80 o Garis 4
Servo 3 = 100 o Garis 5
Servo 1 = 100
3
Servo 1 = 100 o
Servo 2 = 90o
6
Servo 1 = 100 o Servo 2 = 90 o
Servo 3 = 90 o 4
3
5
Servo 1 = 90 o Servo 2 = 90 o Servo 3 = 100 o
6
Servo 1= 90 o Servo 2 = 90 o Servo 3 = 110 o
52
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
53
Gambar 3.28. merupakan flowchart lengan robot dalam keadaan siaga. Dimana lengan robot belum mendapat hasil keluaran dari pengolahan suara. Pada gambar 3.29 sampai dengan gambar 3.38 merupakan flowchart lengan robot saat keadaan menulis angka. Gambar 3.39. merupakan alur program secara keseluruhan dari lengan robot. . mulai
a<= servo 1? Data overflow a==864, selama T=20 ms, a++
PORTB.1 = 0 tidak
a<= servo 3?
PORTB.3 = 0
ya
tidak
ya
tidak
PORTB.1 =1
a==864? PORTB.3 = 1
ya
a=1 a<= servo 2?
PORTB.2 = 0
Servo 1 = 90 derajat Servo 2 = 110 derajat
Servo 3 = 70 derajat
tidak ya
PORTB.2 = 1
tidak
tekan tombol stop
ya selesai
Gambar 3.28. Flowchart Program Lengan Robot Saat Posisi Siaga mulai
Siaga ( Gambar 3.28 )
Servo 1 = 110 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 3 = 70 derajat
Servo 1 = 110 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 70 derajat
Servo 3 = 90 derajat
tidak tekan tombol stop
ya selesai
Gambar 3.29. Flowchart Program Lengan Robot saat menulis angka 0
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
mulai
Siaga ( Gambar 3.28)
Servo 1 = 90 derajat Servo 2 = 90 derajat Servo 3 = 70 derajat
tidak tekan tombol stop
ya selesai
Gambar 3.30. Flowchart Program Lengan Robot saat menulis angka 1 mulai
Siaga ( Gambar 3.28)
Servo 1 = 110 derajat
Servo 1 = 90 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 3 = 80 derajat
Servo 3 = 70 derajat
Servo 1 = 110 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 3 = 70 derajat
tekan tombol stop
ya selesai tidak
Gambar 3.31. Flowchart Program Lengan Robot saat menulis angka 2
54
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
mulai
Siaga ( Gambar 3.28 )
Servo 1 = 110 derajat
Servo 1 = 90 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 3 = 90 derajat
Servo 3 = 70 derajat
Servo 1 = 110 derajat
Servo 1 = 110 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 3 = 80 derajat
Servo 3 = 70 derajat
tidak tekan tombol stop
ya selesai
Gambar 3.32. Flowchart Program Lengan Robot saat menulis angka 3 mulai
Siaga
( Gambar 3.28 )
Servo 1 = 90 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 3 = 90 derajat
Servo 1 = 110 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 3 = 70 derajat
tidak tekan tombol stop
ya selesai
Gambar 3.33. Flowchart Program Lengan Robot saat menulis angka 4
55
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
mulai
Siaga
( Gambar 3.28.)
Servo 1 = 70 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 3 = 80 derajat
Servo 1 = 70 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 3 = 70 derajat
Servo 1 = 70 derajat
Servo 2 = 90 derajat Servo 3 = 70 derajat
tekan tombol stop tidak
ya selesai
Gambar 3.34. Flowchart Program Lengan Robot saat menulis angka 5 mulai
Siaga ( Gambar 3.28)
Servo 1 = 90 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 80 derajat
Servo 3 = 70 derajat
Servo 1 = 110 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 3 = 70 derajat
Servo 1 = 90 derajat Servo 2 = 90 derajat Servo 3 = 80 derajat
tidak tekan tombol stop
ya selesai
Gambar 3.35. Flowchart Program Lengan Robot saat menulis angka 6
56
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
mulai
Siaga ( Gambar 3.28.)
Servo 1 = 110 derajat Servo 2 = 90 derajat Servo 3 = 90 derajat
Servo 1 = 110 derajat Servo 2 = 90 derajat Servo 3 = 80 derajat
tidak
tekan tombol stop
ya selesai
Gambar 3.36. Flowchart Program Lengan Robot saat menulis angka 7 mulai
Siaga ( Gambar 3.28)
Servo 1 = 110 derajat
Servo 1 = 110 derajat
Servo 1 = 90 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 3 = 70 derajat
Servo 3 = 80 derajat
Servo 3 = 80 derajat
Servo 1 = 110 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 80 derajat
Servo 3 = 70 derajat
Servo 1 = 90 derajat
Servo 1 = 110 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 3 = 80 derajat
tidak tekan tombol stop
ya selesai
Gambar 3.37. Flowchart Program Lengan Robot saat menulis angka 8
57
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
58
mulai
Siaga ( Gambar 3.28)
Servo 1 = 70 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 90 derajat
Servo 3 = 100 derajat
Servo 1 = 70 derajat
Servo 1 = 90 derajat
Servo 2 = 90 derajat
Servo 2 = 90 derajat
Servo 3 = 100 derajat
Servo 3 = 80 derajat
tidak tekan tombol stop
ya
selesai
Gambar 3.38. Flowchart Program Lengan Robot saat menulis angka 9
Pada flowchart gambar 3.29 sampai dengan gambar 3.38 merupakan pergerakan lengan robot sesuai dengan tabel 3.6. Pergerakan lengan robot mengikuti dengan pernomoran yang telah ditentukan pada tabel 3.6.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
59
mulai
inisialisasi
C
Lengan robot siaga
Ada data masuk? tidak ya Periksa data masuk
tidak
jika data "a"
tidak
jika data "b"
ya
ya
tulis 1
jika data "c"
ya
tulis 2
tidak
tidak
jika data "d"
A
ya
tulis 3
tulis 3
B tidak tekan tombol stop
ya
Selesai
Gambar 3.39. Fowchart penulisan angka keseluruhan
B
A
C
ya
tulis 5
jika data "e" tidak ya
tulis 6
jika data "f" tidak
tulis 7
tidak ya
tulis 8
jika data "h" tidak ya
tulis 9
jika data "i"
Gambar 3.40 (lanjutan) Flowchart penulisan angka keseluruhan 3.36.
ya
jika data "g"
tidak ya
tulis 0
jika data "j"
tidak
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 60
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB IV HASIL DAN PEMBAHASAN
Bab ini berisi tentang pengujian sistem pengenalan, gambar fisik hardware yang dibuat, hasil pengujian sistem, pembahasan data yang diperoleh. Pengujian sistem perlu dilakukan untuk mengetahui apakah suatu sistem telah bekerja dan berjalan sesuai perancangan. Data-data hasil pengujian sistem yang telah dirancang menunjukkan bahwa sistem berjalan sesuai perancangan. Analisa terhadap proses kerja sistem dapat digunakan untuk menarik penyimpulan dari apa yg diperoleh dari analisa.
4.1. Implementasi Lengan Robot 4.1.1. Bentuk Fisik Hardware Hasil perancangan lengan robot ditunjukan pada Gambar 4.1. Lengan robot berwarna putih yang memiliki 3 buah servo Servo adalah Towerpro946R mengacu pada subbab 2.16.
Gambar 4.1 Lengan Robot Tampak Atas
Gambar 4.2 Lengan Robot Tampak Samping
4.1.2. Sistem Elektronik Sistem elektronik terdiri dari rangkaian regulator dan penguat arus ,minimum sistem mikrokontroler, dan LCD. Rangkaian regulator dan penguat arus, minimum sistem mikrokontroler dan LCD ditunjukan pada gambar 4.3. dan gambar 4.4. Berikut bentuk fisik rangkaian minimum sistem, LCD dan regulator
61
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 4.3. Minimum System
62
Gambar 4.4.Regulator
4.1.3. Pengaturan Lengan Robot Lengan robot akan bergerak sesuai perintah dari mikrokontroler pada minimum sistem. Hal tersebut terjadi karena adanya program yang tertanam pada mikrokontroler. Mikrokontroler yang digunakan adalah ATmega32 sesuai dengan perancangan. Mikrokontroler diprogram untuk melakukan komunikasi, dan menggerakan servo pada lengan robot. Gerbang-gerbang pada mikrokontroler yang akan digunakan dalam pemrograman untuk mengeksekusi kerja lengan robot ditunjukkan pada Tabel 4.1.
Tabel 4.1 Tabel Fungsi Saluran Mikrokontroler Saluran PORTB.0 PORTB.1 PORTB.2
Kegunaan Pengaturan sudut pada servo 1 Pengaturan sudut pada servo 2 Pengaturan sudut pada servo 3
Program pada mikrokontroler berisi inisialisasi data program dan program intinya. Pada inisialisasi data program dilakukan pengaturan data-data awal seperti pendeklarasian data dan pengaturan nilai-nilai. Program dibuat dengan aplikasi CodeVision AVR. Program yang digunakan adalah program untuk komunikasi serial menggunakan USART dan program pengendali motor servo menggunakan fasilitas interrupt.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
63
4.1.4. Pengendalian Komunikasi USART Pada bagian ini membahas program yang berfungsi sebagai komunikasi serial USART untuk mengkomunikasikan antara laptop yang digunakan dengan mikrokontroler Atmega 32. Program pengendalian komunikasi USART ditulis sebagai berikut: int a; unsigned char b[16]; void komunikasi() { a=getchar(); lcd_gotoxy(0,0); sprintf(b,"komunikasi= %d" ,a); lcd_puts(b); delay_ms(100); lcd_clear();delay_ms(10); }
Pada tahap komunikasi serial baudrate yang digunakan bernilai 9600bps. Fungsi “ getchar()” yaitu untuk menerima karakter dari laptop agar mikrokontroler dapat menerima pada
saat mengirimkan karakter yang mendefinisikan perintah setiap kondisi atau
pemanggilan fungsi pada karakter.
4.1.5. Pengendalian Motor Servo Program pengendali motor servo menggunakan interrupt timer0 sebagai pembangkit pulsa untuk menggerakan motor servo. Listing program pengendali sudut putar motor servosebagai berikut : #define servo1 PORTB.0 #define servo2 PORTB.1 #define servo3 PORTB.2 signed int i=0,data1=0,data2=0,data3=0; // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { if (i>864) {i=0;} else {i++;} if (i
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
64
{servo2=1;} else {servo2=0;} if (i
Listing program di atas adalah penyetingan port yang digunakan motor servo. Kodisi nilai i++ artinya adalah timer mulai mencacah dari 0 hingga 255, jika lebih dari itu maka timer overflow dan mulai mengaktifan PWM. Nilai 864 adalah nilai overflow selama perioda motor servo yaitu 20ms.Kemudian pemberian logika high pada tiap port, jika kondisi nilai i lebih kecil dari pada nilai variabel data1(servo1), data2(servo2), data3(servo3), sehingga mulai memberikan pulsa agar motor servo bergerak dan logika low jika kondisinya tidak terpenuhi maka portb akan direset. void siaga_robot() { data1=64; //90 delay_ms(100); data2=69; //80 delay_ms(100); data3=75; //90 delay_ms(100); }
Pada program ini berfungsi untuk memberikan nilai OCR untuk menentukan sudut yang diinginkan sesuai kondisi. Program diatas salah satu kondisi lengan robot pada kondisi siaga.Program ditulis sebagai berikut: void angka_satu() { //12 data1=64; //90 delay_ms(100); data2=69; //90 delay_ms(100); for (data3=75;data3<=80;data3++) //100 { delay_ms(100); };
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
65
//mundur for (data2=69;data2>=50;data2--) { delay_ms(100); }; siaga2_robot(); delay_ms(500); for (data2=50;data2<=69;data2++) { delay_ms(100); }; }
Program diatas merupakan program penulisan angka 1 Untuk mempermudah dalam penentuan tahapan sudut motor servo, digunakan fungsi “for” untuk mencacah nilai OCR secara satu per satu. Setiap tahap diberikan fungsi “for” dan diberi “delay” supaya pergerakan lengan robot lebih halus dan pelan. Program pengulisan angka 1 mengacu pada flowchart 3.30. Program pergerakan lainnya dapat di lihat pada Lampiran (L37).
4.2.
Implementasi GUI Matlab dan Program Pengenalan Ucapan Pengujian aplikasi dilakukan bertujuan untuk mengetahui apakah sistem yang telah
dirancang berjalan sesuai perancangan. Pengujian program dilakukan dengan spesifikasi sebagai berikut: Processor
: Intel Core i5
RAM
: 2 GB
Windows
:7
GUI dibuat supaya dapat mempermudah user dalam menggunakan aplikasi penelitian ini. Terdapat beberapa komponen yang dapat digunakan untuk mengeksekusi atau menampilkan perintah. Komponen tersebut dapat diprogram sehingga user dapat lebih mudah dalam mengeksekusi aplikasi tersebut. Hasil pembuatan GUI ditunjukan pada Gambar 4.5.:
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
66
Gambar 4.5. Tampilan GUI Program Pengenalan Pada tampilan GUI digunakan tools pada Matlab seperti axes, pop_upmenu, text, dan pushbutton.User dapat menjalankan program pengenalan ucapan dengan mengisi pengaturan user, lebar segmentaveragingdan nilai k pada KNN pada pop_upmenu yang akan diproses untuk pengenalan ucapan. Setelah memilih pengaturan yang diinginkan, program bisa dijalankan dengan menekan tombolREKAM apabila user tidak melakukan pengaturan pada variasi nilai yang terdapat pada aplikasi GUI maka program tidak bisa dijalankan. Hasil rekaman suara akan ditampilan pada “PLOT INPUT UCAPAN” dan hasil ektraksi rekaman suara akan ditampilkan di “PLOT EKSTRAKSI CIRI” seperti pada gambar 4.5. Tombolpushbutton “RESET” berfungsi jika user ingin merestart program pengenalan
ucapan.
Tombol
pushbuttonKELUAR
digunakan
jika
user
ingin
menyelesaikan program dan keluar dari tampilan utama program pengenalan ucapan.
4.2.1. Pop Up Menu Pada aplikasi pengenalai ini terdapat 2 variasi nilai yang digunakan untuk melakukan pengenalan ucapan yaitu nilai k pada knn dan nilai segmentaveraging. Variasi user
menggunakan
popupmenu 1 dengan nilai variasi 1;2;3. Variasi nilai
segmentaveraging menggunakan popupmenu2 dengan nilai variasi 8;16;32;62. Variasi nilai k pada knn menggunakan popupmenu3 dengan nilai variasi 1;3;5;7. Program variasi pada popupmenu 1 akan dituliskan seperti berikut: indeks=get(handles.popupmenu1,'Value'); switch indeks case 1 user=1; case 2 user=2;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
67
case 3 user=3; end handles.xuser=user; guidata(hObject,handles);
Pada program pop up menu 1 diguanakan untuk variasi user dengan variasi 1;2;3. Inisialisasi tiap nilai dengan variabel “user” kebudian diubah menjadi “xuser” menggunakan fungsi “handles”. Proses ini sama dengan program popupmenu sebelumnya. segav=get(handles.popupmenu2,'Value'); switch segav case 1 frame=8; case 2 frame=16; case 3 frame=32; case 4 frame=64; end handles.varse=frame; guidata(hObject,handles);
Pada program pop up menu 2 diguanakan untuk variasi nilai segmentaveraging dengan nilai 8;16;32;64. Inisialisasi tiap nilai dengan variabel “frame” kemudian diubah menjadi “varse” menggunakan fungsi “handles”. Proses ini sama dengan program popupmenu sebelumnya. nknn=get(handles.popupmenu3,'Value'); switch nknn case 1 knn=1; case 2 knn=3; case 3 knn=5; case 4 knn=7; end handles.varknn=knn; guidata(hObject,handles);
Pada program pop up menu 3 digunakan untuk variasi nilai k pada knn dengan nilai 1;3;5;7. Inisialisasi tiap nilai dengan variabel “knn” kemudian diubah menjadi “varknn” menggunakan fungsi “handles”. Proses ini sama dengan program popupmenu sebelumnya.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
68
4.2.2. Tombol Rekam Tombol “REKAM” merupakan tombol yang berfungsi melakukan pengenalan ucapan
mulai
dari
inisialisasi
perekaman(sampling),
preemphasis,
normalisasi,
pemotongan sinyal,zeropadding, framingwindowing, ektraksi ciri, korelasi, penentuan hasil keluaran pada GUI dan pengiriman data serial menuju mikrokontroler. Program perekaman pengenalan ucapan dibuat sesuai perancangan diagram blok pada gambar 3.17. Penulisan program untuk melakukan perekaman sebagai berikut. sample_length=2; sample_freq=6000; sample_time=(sample_length*sample_freq); x=wavrecord(sample_time, sample_freq);
Program perekaman ucapan angka memakai frekuensi sampling 6000 Hz dan durasi perekaman 2 detik. Program sample_time berfungsi untuk menampilkan gambar perekaman sebesar 12000 Hz. Ucapan angka yang telah direkam ditampilkan dalam “Plot input ucapan”. Program untuk menampilkan gambar sinyal hasil perekaman ucapan angka adalah sebagai berikut : axes(handles.axes1); plot(x);
Program preprocessing dilakukan agar masukan data sinyal ucapan dapat diolah terlebih dahulu. Program preprocessing terdiri dari 4 bagian yaitu preemphasis, normalisasi, pemotongan sinyal dan zeropadding. Program dituliskan sebagai berikut: varuser=handles.xuser; varse=handles.varse; vark=handles.varknn; % Preemphasis b0=0.3; x0=x; usig=4096; alpha=0.95; for k=2:length(x0) x0(k)=x0(k)-alpha*(x0(k-1)); end
% Normalisasi x1=x0/max(abs(x0)); %PEMOTONGAN SINYAL: % Potong kiri b1=find(x1>b0 | x1<-b0);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
69
x1(1:b1(1))=[]; % Potong kanan x2=fliplr(x1'); b2=find(x2>b0 | x2<-b0); x2(1:b2(1))=[]; x2=fliplr(x2); % ZERO PADDING x2(usig)=0; x3=x2(1:usig);
Proses preemphasis merupakan proses awal dimana sinyal masukan akan diupdate nilainya dari sebelumnya. Nilai preemphasis menggunakan fungsi for dan dimulai dari 2 dimana jika dimulai dari 1 tidak terdapat nilai sebelumnya. Proses perhitungan preemphasis sesuai pada perancangan dengan nilai alpha 0.95. Proses preemphasis mengacu pada flowchart yang telah dibuat pada gambar 3.18 Proses normalisasi melakukan perubahan skala pada data dengan memasukan rumus sesuai pada perancangan. Terdapat fungsi Matlab untuk memudahkan program yakni “max” untuk mencari nilai tertinggi dan “abs” untuk mengubah semua data menjadi mutlak atau bernilai positif. Proses normalisasi mengacu pada perancangan flowchart yang telah dibuat pada gambar 3.19. Prosesselanjutnya adalah pemotongan sinyal proses dimana nilai data yang berada pada kondisi lebih besar dari batas potong atau lebih kecil dari negatif batas potong akan diambil datanya. Hasil dari tersebut tidak menampilkan nilai datanya melainkan menampilkan nomor urutan datanya. Data urutan pertama menjadi batas akhir pemotongan data, sehingga data hasil normalisasi akan dihilangkan dari awal hingga data tersebut. Proses zeropadding dilakukan dengan menambahkan dengan deretan nilai data “0” setelah data hasil pemotongan sinyal. Terdapat pendeklarasian variabel “usig” yang merupakan ukuran deretan data dengan nilainya sebanyak 4096 sesuai perancangan. Program penambahan deretan “0” hingga data ke 4096. Setelah proses preprocessing dilanjutkan dengan proses framing dan windowing sebelum masuk pada tahap proses ektraksi ciri. Program framing dan windowing dituliskan sebagai berikut: pjseg=512; ovlseg=128; h=hamming(pjseg); n=1;k=1; while n==1 pjx0=length(x3);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
70
if pjx0>=pjseg xseg=x3(1:pjseg); xseg=xseg.*h'; segmtx(:,k)=xseg; x3(1:pjseg-ovlseg)=[]; k=k+1; elseif pjx0==0 n=0; else x3(pjseg)=0; xseg=x3.*h'; segmtx(:,k)=xseg; n=0; end end
Pada tahap proses framing dan windowing dibutuhkan pendeklarasian nilai panjang frame[15]dan nilai overlap[20]. Proses framing menggunakan program while dimana mencari kesamaan data dengan panjang frame. Didalam proses framing terdapat proses windowing dmana berfungsi untuk membuat pola pada sinyal. Hasil dari proses sebelumnya dibandingan panjang sinyal data dengan panjang frame. Jika data lebih besar dari panjang framemenuju proseswindowing, lalu akan di kurangi dengan nilai overlap pada pendeklarasian sebesar 128. Jika data lebih kecil dari panjang frame akan ditambahkan data 0 sesuai panjang frame. Pada proses windowing yang terdapat pada framing menggunakan jendela hamming. Proses Matlab terdapat fungsi untuk menggunakan jendela hamming dengan formula”hamming(L)”. Variabel “L” merupakan banyaknya deretan data yang akan diproses. Penulisan program yang dipakai untuk menentukan pola hamming ditulis “hamming(pjseg)”. Proses framing dan windowing mengacu pada flowchart yang ditulis pada gambar 3.21. Program ektraksi ciri terdapat 2 proses yaitu DFT dan segmentaveraging. Program ektraksi ciri dituliskan sebagai berikut: % Ektraksi ciri menggunakan DFT [baris,kolom]=size (segmtx); for k=1:kolom hdft=abs(dftx(segmtx(:,k))); x4(:,k)=hdft(:); end x4=x4(:); x4=x4(1:length(x4)/2,:); % Segment averaging x5=reshape(x4,varse,[]); x5=mean(x5); x=x5(:); axes(handles.axes2)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
71
bar(x);
Pada ektraksi ciri pemanggilan fungsi DFT digunakan fungsi ekternal dimana program dibuat terpisah dari program inti. Fungsi ekternal dibuat mengacu pada rumus 2.15. Program fungsi ekternal untuk ektraksi ciri DFT dituliskan sebagai berikut : % Perhitungan DFT function y=dft(x) N=length(x); y=zeros(1,N); for k=1:N for n=1:N w=exp(-1i*2*pi*(k-1)*(n-1)/N); a=x(n)*w; y(k)=y(k)+a; end end
Proses dilakukan dengan memanggil fungsi yang sudah dibuat pada M-file dengan nama fungsi “dft”, kemudian nilai datanya diabsolutkan dengan bantuan fungsi Matlab “abs”. Pada fungsi mengacu pada persamaan 2.15 dengan indeks n dimulai dari 1 karena proses pada Matlab tidak mengenal indeks 0[27]. Proses transformasi tersebut dilanjutkan dengan mengambil setengah bagian sinyal data dengan program yang ditulis “x4=x4(1:length(x4)/2,:)”. Fungsi “length”merupakan fungsi untuk mencari banyaknnya deretan data, sehingga fungsi “length(x4) akan mencari banyaknya deretan data pada variabel x4. Variabel “x4” merupakan hasil dari transformasi DFT. Program mengacu pada flowchart perancangan gambar 3.22. Proses segmentaveraging dilakukan dengan menggunakan fungsi pada Matlab yaitu “reshape(x5,varsegment,[ ])”. Nilai “x5” merupakan data hasil ektraksi ciri segment averaging, sedangkan nilai “varse” merupakan lebar segment averaging data. Data hasil segment averaging tersebut akan ditampilkan dengan bentuk grafik dengan menggunakan fungsi “bar”. Fungsi “bar” merupakan grafik dengan gambar berbentuk batang sesuai panjang data. Fungsi “axes(handles.axes2)” digunakan untuk memilih axis pada kolom plot ekstraksi sebagai tempat menampilkan grafiik. Program pengenalan pola dilakukan dengan cara perhitungan nilai koeralasi data masukan terhadap basis data. Pendekatan terbaik adalah data yang mempunyai nilai korelasi terbesar. Proses selanjutnya setelah penggambaran sinyal ucapan adalah proses pemanggilan database yang telah disesuaiakn dengan variasi segmentaveraging. Program database
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
72
menggunakan logika “ifelse” agar database mempunyai kesamaan dengan nilai variasi yang telah dipilih sebelumnya oleh user. Program pembuatan database mengacu pada lampiran (L31). Program pemanggilan database dapat ditulis sebagai berikut: if (varse==8) && (varuser==1) load db01dseg8; elseif (varse==16) && (varuser==1) load db01dseg16; elseif (varse==32) && (varuser==1) load db01dseg32; elseif (varse==64) && (varuser==1) load db01dseg64;
Program diatas untuk memanggil database yang akan dibandingkan dengan ucapan yang telah terekam. Data base yang dipanggil sesuai dengan masukan user mana yang dipilh dan variasi segment averaging yang dipilih oleh usertersebut pada pop_upmenu sebelumnya. Kondisi pemanggilan fungsi harus sesuai dengan variasi dan pemanggilan database. Proses selanjutnya adalah membandingkan database dengan data masukan dari user secara real time. Perbandingan database dan masukan sinyal tersebut menggunakan perhitungan korelasi. Program perhitungan korelasi sebagai berikut : for n=1:100 jarak(n)=korelasi(x,z(:,n)); end
Pada perhitungan korelasi menggunakan pemanggilan fungsi ekternal dimana program perhitungan berada diluar program utama. Pemanggilan fungsi dengan memanggil fungsi“korelasi”. Program pembuatan fungsi ekternal sebagai berikut: function k=korelasi(x,z) mx=mean(x); my=mean(z); k1=(x-mx).*(z-my); k2=sum(k1); k3=sum((x-mx).^2); k4=sum((z-my).^2); k5=sqrt(k3.*k4); k=k2/k5;
Pada program penghitungan nilai korelasi digunakan dua variabel yaitu „x‟ dan „z‟. „x‟ adalah hasil penghitungan ekstraksi ciri secara real time dan „z‟ adalah database.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
73
Setelah didapatkan penghitungan nilai korelasi selanjutnya masuk dalam program penentuan keluaran. Program penentuan keluaran berfungsi untuk menentukan apakah ucapan terdeteksi sebagai ucapan atau dikenali secara “error”. Program penentuan keluaran sebagai berikut : %knn kk=vark; m=10; [s1,s2]=sort(jarak,'descend'); kj=s1(1:kk); kn=s2(1:kk); hk=ceil(kn/m); kout=mode(hk) idx=find(hk==kout); lokth=idx(1); nilai=kj(idx); th=s1(lokth); jarakk=th if (kout == 1) && (varuser==1) && (th < 0.7207) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 1) && (varuser==1) && (th >0.7207) korout = {'satu'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto pBits',1,'FlowControl','none'); fopen(s); fprintf(s,'%c','a') fclose(s); delete(s); clear s;
elseif (kout == 2) && (varuser==1) && (th < 0.7539) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 2) && (varuser==1) && (th > 0.7539) korout = {'dua'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto pBits',1,'FlowControl','none'); fopen(s); fprintf(s,'%c','b') fclose(s); delete(s); clear s;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
74
elseif (kout == 3) && (varuser==1) && (th <0.6230) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 3) && (varuser==1) && (th >0.6230) korout = {'tiga'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto pBits',1,'FlowControl','none'); fopen(s); fprintf(s,'%c','c') fclose(s); delete(s); clear s; elseif (kout == 4) && (varuser==1) && (th < 0.7306) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 4) && (varuser==1) && (th > 0.7306) korout = {'empat'} kirim = 'd'; hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto pBits',1,'FlowControl','none'); fopen(s); fprintf(s,'%c','d') fclose(s); delete(s); clear s; elseif (kout == 5) && (varuser==1) && (th < 0.7005) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 5) && (varuser==1)&& (th > 0.7005) korout = {'lima'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto pBits',1,'FlowControl','none'); fopen(s); fprintf(s,'%c','e') fclose(s); delete(s); clear s; elseif (kout == 6) && (varuser==1) && (th < 0.6100) korout = {'ERROR'}
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
75
hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 6) && (varuser==1) && (th > 0.6100) korout = {'enam'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto pBits',1,'FlowControl','none'); fopen(s); fprintf(s,'%c','f') fclose(s); delete(s); clear s; elseif (kout == 7) && (varuser==1) && (th < 0.7002) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 7) && (varuser==1) && (th > 0.7002) korout = {'tujuh'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto pBits',1,'FlowControl','none'); fopen(s); fprintf(s,'%c','g') fclose(s); delete(s); clear s; elseif (kout == 8) && (varuser==1) && (th < 0.7510) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 8) && (varuser==1) && (th >0.7510) korout = {'delapan'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto pBits',1,'FlowControl','none'); fopen(s); fprintf(s,'%c','h') fclose(s); delete(s); clear s; elseif (kout == 9) && (varuser==1) && (th < 0.7903) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 9)&& (varuser==1) && (th > 0.7903) korout = {'sembilan'}
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
76
kirim = 'i'; hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto pBits',1,'FlowControl','none'); fopen(s); fprintf(s,'%c','i') fclose(s); delete(s); clear s; elseif (kout == 10) && (varuser==1) && (th <0.7340) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 10) && (varuser==1) && (th >0.7340) korout = {'nol'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','Sto pBits',1,'FlowControl','none'); fopen(s); fprintf(s,'%c','j') fclose(s); delete(s); clear s;
Pada program penentuan keluaran diatas menggunakan metode k-Nearest Neighbordan untuk menentukan bukan ucapan menggunakan metode thersholding. Variasi KNN menggunakan variabel “vark. Pada metode k-NearestNeigbor bertujuan untuk mengambil kelas terdekat dari perhitungan korelasi. Fungsi “descend” pada program berfungsi untuk mengurutkan nilai korelasi dari yang terbesar sampai yang terkecil. Metode thresholding bertujuan untuk menentukan hasil keluaran yang tidak sesuai dengan ucapan pada database dengan penamaan “ ERROR”.
4.2.3. Tombol Reset Tombol “RESET” merupakan tombol yang digunakan untuk mereset atau mensetting program untuk kembali ke pengaturan awal pada program pengenalan ucapan. Program tombol “RESET” dituliskan sebagai berikut : function pushbutton2_Callback(hObject, eventdata, handles) axes(handles.axes1); plot(0); axes(handles.axes2);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
77
plot(0); set(handles.edit1,'String',' ');
Berdasarkan pengujian program secara real time, tombol “RESET” dapat berjalan sesuai perancangan. Pada program tombol “RESET” jika tombol ditekan maka secara otomatis plot pada axes 1, axes 2 dan edit1 semua akan dibersihkan. Tombol “RESET” menggunakan pushbutton2 pada GUI Matlab.
4.2.4. Tombol Keluar Tombol “KELUAR” berfungsi untuk menutup progam aplikasi pengenalan ucapan. Komponen yang digunakan untuk tombol “KELUAR” yaitu pushbutton3. Program tombol “KELUAR” dituliskan sebagai berikut : function pushbutton3_Callback(hObject, eventdata, handles) delete(figure(guico));
Berdasarkan pengujian, tombol “KELUAR” dapat berjalan sesuai perancangan. Ketika Tombol “KELUAR” ditekan aplikasi pengenalan ucapan dapat ditutup.Fungsi “delete(figure(GUI))” digunakan untuk menutup GUI Matlab pada aplikasi pengenalan ucapan ini.
4.3.
Pengujian Sudut Motor Servo Berdasarkan data pengujian sudut motor servo yang diukur menggunakan busur
derajat, didapat nilai OCR seperti pada tabel 4.2 dibawah ini dengan mengacu lampiran (L6). Pengujian sudut dilakukan dengan melihat nilai OCR pada masing-masing sudut motor servo yang dilakukan setiap 10o yang akan dibandingkan dengan perhitungan secara teori. Dari nilai OCR pada tabel 4.2 terdapat perbedaan antara teori dengan pengujian. Pada tabel 3.2 menunjukan nilai OCR pada saat sudut 00yaitu 43,20,sedangakan sudut 90o nilai OCR yang didapat yaitu 64,8, dan pada sudut 180o nilai OCR yang didapat yaitu 86,40.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
78
Tabel 4.2. Nilai OCR pada pergerakan 10 derajat motor servo NO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Sudut (derajat) 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180
Nilai OCR 29 33,44 37,8 42,3 46,7 51,2 55,6 60 64,52 69 75,3 80,66 85 89,33 93,66 98 102,3 106,66 111
Pada saat pengujian nilai OCR terdapat perbedaan pada saat sudut 0o nilai OCR yang didapat yaitu 29, sedangkan sudut 90o nilai OCR yang didapat yaitu 69, dan pada sudut 180o nilai OCR yang didapat yaitu 111. Untuk mengetahui lebar pulsa, maka dapat dihitung menggunakan persamaan 2.2 dan persamaan 2.3. Digunakan T sebesar 0,090422 x 10-6dan prescaler sebesar 1. Tabel 4.3. Perhitungan Lebar Pulsa Motor Servo Towerpro MG946R SUDUT Nilai OCR Lebar Pulsa Error (%) 0o o
90
180
o
29
0,671 ms
32,87%
69
1,59 ms
6,48%
111
2,57 ms
28,47%
Berdasarkan tabel 4.3. maka dapat dianalisa bahwa terdapat perbedaan nilai OCR mengakibatkan perbedaan pada lebar pulsa. Pada Tabel 4.3 menunjukan lebar pulsa pada saat 00 didapatkan 0,671 jika dibandingan dengan teori pada tabel 3.2 didapatkan error
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
79
sebesar 32,87 %. Terjadi error dikarenakan setiap motor memiliki karakteristik yang berbeda-beda sesuai dengan jenisnya menyebabkan nilai lebar pulsa berbeda.
4.4. Pengujian Untuk Tingkat Pengenalan Ucapan Pengujian pengenalan ucapan dilakukan dengan dua cara yaitu secara real time dan secara tidak real time. Pengujian secara real time dilakukan dengan menggunakan suara masukan yang direkam saat itu juga dan akan langsung dikenali secara langsung pada saat itu. Pengujian secara real time menggunakan parameter hasil pengenalan terbaik pada pengenalan secara tidak real time. meskipun demikian pengguna bisa memvariasi nilai parameter sesuai yang diinginkan untuk menguji pengenalan secara real time. Pengujian tidak real time dilakukan dengan memvariasi nilai parameter nilai k pada knn, dan segment averaging. Pengujian secara tidak real time menggunakan masukan dari suara uji yang telah direkam sebelumnya dan dibandingkan dengan database yang telah dibuat sebelumnya. Hasil parameter pengujian terbaik secara tida real time akan digunakan sebagai parameter untuk pengujian pengenakan ucapan secara real time.
4.4.1. Pengujian Pengenalan Ucapan Secara Tidak Real Time Seperti yang telah dijelaskan sebelumnya, percobaan pengenalan secara tidak real time ini dilakukan dengan merekam ucapan masukan yang kemudian disimpan dengan nama yang berbeda dan akan dibandingkan dengan database. Pembentukan database dilakukan dengan memproses ucapan yang juga sebelumnya sudah direkam kedalam proses preprocessing dan framingdanwindowing. Setalah melalui tahap ini, kemudian dilanjutkan dengan proses ekstraksi ciri, penulis menggunakan ektraksi ciri DFT dan segmentaveraging. Setelah proses ektraksi ciri dan segmentaveraging, data hasil kemudian disimpan pada directory yang sama dengan program untuk melakukan pengenalan secara tidak real time. Proses yang sama juga terjadi pada ucapan masukan. Selanjutnya adalah membandingkan antara database dan hasil ektraksi ciri dari ucapan masukan menggunakan metode korelasi. Tujuan dari pengujian pengenalan secara tidak real time adalah untuk mencari parameter nilai k pada knn,dan segmentaveraging terbaik. Data hasil pengenalan secara tidak real time kemudian ditampilkan dalam tabel dan grafik sehingga pengambilan kesimpulan lebih mudah dilakukan. Berikut merupakan tabel dan grafik hasil pengujian pengenalan ucapan secara tidak real time. Pengujian menggunakan 3 jenis database, yaitu database 1 suara, database 5 suara, dan database 10 suara.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Untuk user 1
Tabel 4.4. Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak Real Time Nilai k pada KNN
SegmentAveraging 1
3
5
7
8
92
50
32
24
16
90
46
36
25
32 64
89 80
47 45
38 35
25 19
Tabel 4.5. Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak Real Time Nilai k pada KNN
SegmentAveraging 1
3
5
7
8
93
88
89
91
16
93
86
86
87
32 64
91 82
90 79
87 76
82 71
Tabel 4.6. Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak Real Time Nilai k pada KNN
SegmentAveraging
1
3
5
7
8
95
93
94
94
16 32 64
95 94 89
92 93 88
93 92 86
91 92 83
Untuk user 2
Tabel 4.7. Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak Real Time SegmentAveraging
Nilai k pada KNN 3 5 27 13
8
1 87
7 10
16
82
32
15
10
32
83
39
18
10
64
75
46
26
10
80
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
81
Tabel 4.8. Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak Real Time Nilai k pada KNN
SegmentAveraging 1
3
5
7
8
90
81
79
71
16
90
81
78
77
32
90
82
83
80
64
84
73
71
71
Tabel 4.9. Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak Real Time Nilai k pada KNN
SegmentAveraging
8
1 93
3 87
5 86
7 84
16
92
89
87
87
32
93
88
87
86
64
87
79
83
83
Untuk user 3
Gambar 4.10. Tabel Pengenalan (%) dengan Database 1 Suara Secara Tidak Real Time SegmentAveraging
Nilai k pada KNN 1
3
5
7
8
87
32
21
12
16
82
32
14
11
32
75
31
14
11
64
69
29
18
10
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
82
Tabel 4.11. Tabel Pengenalan (%) dengan Database 5 Suara Secara Tidak Real Time Nilai k pada KNN
SegmentAveraging 8
1 87
3 76
5 77
7 72
16
87
74
75
72
32
84
72
73
70
64
85
65
66
66
Tabel 4.12. Tabel Pengenalan (%) dengan Database 10 Suara Secara Tidak Real Time Nilai k pada KNN
SegmentAveraging 1
3
5
7
8
94
92
90
89
16
94
92
89
89
32
92
84
84
84
64
90
82
83
80
Dari data-data di atas dapat dilihat bahwa pengenalan terbaik berada pada segment averaging 8 dan k-nn 1 dengan tingkat pengenalan rata-rata di atas 90 dari 100 percobaan penyebutan angka. Pengenalan terbaik terletak pada database 10. Pada variasi terbaik ini pula diambil nilai batas bawah untuk setiap kata yang diucapkan. Tujuan pengambilan nilai batas bawah
adalah untuk penggunaan metode
thresholding. Penulisan program untuk thresholding menggunakan logika “if” dan “elseif”. Dimana jika syarat berinlai benar maka logika tersebut akan mengeksekusi pernyataan di bawahnya dan jika tidak maka akan meneruskan ke logika di bawahnya. Program untuk thresholding dapat dilihat pada Lampiran (L22). Tabel berikut menunjukkan nilai batas bawah thresholding.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
83
Tabel 4.13 Hasil Nilai batas bawah Yang Masih Dikenali Pada Setiap Ucapan Angka No Ucapan
Nilai batas bawah user 1
Nilai batas bawah user 2
Nilai batas bawah user 3
1
Satu
0,7207
0,7351
0,6768
2
Dua
0,7539
0,7627
0,7212
3
Tiga
0,7030
0,6859
0,7053
4
Empat
0,7306
0,7197
0,6860
5
Lima
0,7760
0,7551
0,7928
6
Enam
0,6100
0,6721
0,6841
7
Tujuh
0,7492
0,7600
0,7794
8
Delapan
0,7414
0,7090
0,7556
9
Sembilan
0,8503
0,7298
0,7783
10
Nol
0,7340
0,6567
0,7721
4.4.2. Pengujian Pengenalan Secara Real Time Pada pengujian secara real time, pengujian dilakukan dengan merekam suara secara langsung dan akan dikenali oleh program secara real time. User harus memilih nilai variasi nilai k pada knn, dan segmentaveraging. User yang digunakan sebanyak 3 yang terdiri dari 1 peneliti, dan 2 user sudah ditentukan. Setelah semuanya diisi dengan benar maka program bisa dijalankan. Pengujian dilakukan sebanyak 10 kali tiap ucapan dengan dasar bahwa 10 kali pengujian dengan mampumewakili keberhasilan program pengenalan ucapan angka untuk berjalan dengan baik. Pengujian secara real time ini menggunakan database 1,5,dan 10 dengan variasi nilai k-NN 1 dan segmentaveraging 8 mengacu pada pengujian secara tidak real time. Pengujian dengan 3 macam database ini untuk melihat database dengan tingkat error terkecil ketika secara rea ltime. Pengujian real time akan dilakukan dengan 2 cara yaitu pengujian dengan nilai thresholding dan pengujian tanpa nilai thresholding untuk semua user.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
84
4.4.3. Pengujian Real Time Tanpa Nilai Thresholding Untuk Penentuan Database Pada pengujian real time ini dilakukan untuk mengetes database mana yang baik digunakan. Pengujian ini dimaksudkan untuk melihat apa sistem dapat berjalan sesuai dengan yang diharapakan ketika user dalam keadaan tidak begitu mengingat pola kata untuk pengujian
Tabel 4.14 Confusion Matrix Pengujian secara real time dengan database 1 untuk user 1 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu
8
1
0
0
0
0
0
0
0
1
Dua
0
9
0
0
0
0
0
0
0
1
Tiga
0
0
3
0
2
0
0
1
0
4
Empat
3
0
0
4
1
0
0
2
0
0
Lima
4
0
0
2
3
0
1
0
0
0
Enam
4
0
0
0
0
6
0
0
0
0
Tujuh
0
1
0
0
2
0
0
1
5
1
Delapan
0
0
0
2
0
0
0
5
0
3
Sembilan
2
0
0
0
0
0
0
0
8
0
Nol
0
0
0
3
0
1
0
0
0
6
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
85
Tabel 4.15 Confusion Matrix Pengujian secara real time dengan database 5 untuk user 1 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu
7
0
0
3
0
0
0
0
0
0
Dua
0
9
0
0
0
1
0
0
0
0
Tiga
0
4
6
0
0
0
0
0
0
0
Empat
0
0
0
6
4
0
0
0
0
0
Lima
0
0
0
1
8
1
0
0
0
0
Enam
0
1
0
2
0
5
0
0
0
2
Tujuh
1
0
0
0
1
0
8
0
0
0
Delapan
0
0
0
1
0
0
0
8
0
1
Sembilan
1
0
0
0
0
0
0
0
9
0
Nol
0
0
0
3
0
0
0
1
0
6
Tabel 4.16 Confusion Matrix Pengujian secara real time dengan database 10 untuk user 1 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu
9
0
0
1
0
0
0
0
0
0
Dua
0
10
0
0
0
0
0
0
0
0
Tiga
0
0
8
0
0
0
0
2
0
0
Empat
2
0
0
8
0
0
0
0
0
0
Lima
0
0
0
0
7
3
0
0
0
0
Enam
2
0
0
0
0
8
0
0
0
0
Tujuh
0
0
0
0
1
0
9
0
0
0
Delapan
0
0
0
0
1
0
0
9
0
0
Sembilan
0
0
0
0
0
0
0
0
10
0
Nol
1
0
0
0
0
1
0
0
0
8
Dengan hasil tabel diatas dengan pengujian secara real time menggunakan 3 jenis database suara didapatkan dengan database 1 suara, hasil pengenalan secara benar sebanyak 51 dari 100 percobaan. Dengan database 5 suara, hasil pengenalan secara benar
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
86
sebanyak 72 dari 100 percobaan. Dengan database 10 suara, hasil pengenalan secara benar sebanyak 86 dari 100 percobaan. Maka digunakan database 10 suara karena memiliki pengenalan terbaik. Tabel 4.17 Confusion Matrix Pengujian secara real time dengan database 1 untuk user 2 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu
5
0
0
0
0
0
0
0
5
0
Dua
0
10
0
0
0
0
0
0
0
0
Tiga
0
0
8
2
0
0
0
0
0
0
Empat
0
0
4
4
0
0
0
0
1
1
Lima
1
1
1
1
5
0
1
0
0
0
Enam
0
0
0
3
2
5
0
0
0
0
Tujuh
0
0
2
0
0
0
8
0
0
0
Delapan
0
0
2
0
0
0
0
7
0
1
Sembilan
0
0
0
1
3
0
3
0
3
0
Nol
0
1
0
1
0
2
0
0
0
6
Tabel 4.18 Confusion Matrix Pengujian secara real time dengan database 5 untuk user 2 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu
8
0
0
0
0
0
0
0
2
0
Dua
1
8
0
0
0
0
0
0
1
0
Tiga
0
0
8
0
0
0
0
0
2
0
Empat
2
0
0
7
1
0
0
0
0
0
Lima
0
0
0
0
10
0
0
0
0
0
Enam
1
0
0
5
0
4
0
0
0
0
Tujuh
0
0
0
0
0
0
9
0
1
0
Delapan
2
0
0
0
0
0
0
8
0
0
Sembilan
1
0
1
1
1
0
1
0
5
0
Nol
1
0
0
2
0
0
0
0
1
6
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
87
Tabel 4.19 Confusion Matrix Pengujian secara real time dengan database 10 untuk user 2 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu
8
0
0
2
0
0
0
0
0
0
Dua
0
9
0
1
0
0
0
0
0
0
Tiga
0
0
8
0
0
0
0
0
2
0
Empat
0
0
0
9
0
0
0
1
0
0
Lima
0
0
0
0
10
0
0
0
0
0
Enam
0
0
0
1
0
6
0
0
0
3
Tujuh
0
0
0
1
0
0
9
0
0
0
Delapan
0
0
0
2
0
0
0
8
0
0
Sembilan
0
2
0
0
0
0
0
0
8
0
Nol
0
0
0
0
0
2
0
0
0
8
Tabel 4.20 Confusion Matrix Pengujian secara real time dengan database 1 untuk user 3 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu
5
0
0
1
0
3
0
0
0
0
Dua
0
5
3
0
1
1
0
0
0
0
Tiga
0
1
6
0
1
1
0
0
1
0
Empat
1
0
0
5
1
1
0
0
0
2
Lima
0
0
0
0
7
0
0
0
3
0
Enam
0
0
0
0
0
6
0
4
0
0
Tujuh
0
0
0
0
0
0
4
0
6
0
Delapan
0
0
0
0
0
2
0
7
1
0
Sembilan
0
0
0
0
0
2
0
0
7
1
Nol
0
0
0
0
0
3
0
2
0
5
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
88
Tabel 4.21 Confusion Matrix Pengujian secara real time dengan database 5 untuk user 3 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu
8
0
0
1
0
1
0
0
0
0
Dua
0
8
1
0
0
0
0
1
0
0
Tiga
0
0
10
0
0
0
0
0
0
0
Empat
1
0
2
4
2
0
0
1
0
0
Lima
0
0
1
1
8
0
0
0
0
0
Enam
0
0
0
0
0
5
0
1
0
4
Tujuh
0
0
0
0
1
0
7
0
2
0
Delapan
0
0
0
0
0
1
0
8
0
1
Sembilan
0
0
0
0
0
0
0
0
6
4
Nol
0
0
0
0
0
2
0
1
0
7
Tabel 4.22 Confusion Matrix Pengujian secara real time dengan database 10 untuk user 3 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol
Satu
8
0
0
1
0
0
0
0
0
1
Dua
0
9
1
0
0
0
0
0
0
0
Tiga
0
0
8
0
2
0
0
0
0
0
Empat
0
0
0
10
0
0
0
0
0
0
Lima
0
0
0
0
10
0
0
0
0
0
Enam
0
0
0
0
0
8
0
1
0
1
Tujuh
0
0
0
0
0
0
9
1
0
0
Delapan
1
0
0
0
0
0
0
6
0
3
Sembilan
0
0
0
0
0
0
0
0
8
2
Nol
0
0
0
0
0
0
0
1
0
9
Dari data diatas didapatkan untuk user 2 dengan database 10 suara mampu mengenali sebanyak 83 dari 100 percobaan dan user 3 mampu mengenali sebanyak 85 dari
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
89
100 percobaan. Terdapat penurunan tingkat pengenalan antara pengenalan secara tidak real time dengan pengujian secara real time. ini diakibatkan pada saat pengambilan data terjadi kesalahan pengucapan untuk ucapan yang akan dikenali.
4.4.4. Pengujian Real Time dengan Nilai Thresholding Pada pengujian real time dengan nilai thresholding program pengenalan ucapan diberikan nilai batas bawah yang mengacu pada tabel 4.13.Pengujian real time dengan nilai thresholding diuji dengan 2 cara yakni dengan ucapan sebenarnya dengan bukan ucapan sebenarnya atau ucapan lain.Pengujian dilakukan untuk menguji thresholding dengan mengucapkan angka 0 - 9 sebanyak 10. Hasil pengujian berupa dikenali benar jika sesuai dengan angka yang disebutkandan dikenali secara salah ketika dikenali berbeda dengan angka yang disebutkan atau dikenali sebagi ERROR. Berikut ini data pengucapan real time dengan nilai thresholding setiap user.
Tabel 4.23. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding untuk User 1 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Satu
9
0
0
1
0
0
0
0
0
0
0
Dua
0
10
0
0
0
0
0
0
0
0
0
Tiga
0
0
8
0
0
0
1
0
0
0
1
Empat
0
0
0
8
2
0
0
0
0
0
0
Lima
0
0
0
0
10
0
0
0
0
0
0
Enam
0
0
0
0
0
8
0
0
0
0
2
Tujuh
0
0
0
0
3
0
7
0
0
0
0
Delapan
0
0
0
0
0
0
0
9
0
0
1
Sembilan
0
0
0
0
0
0
0
1
8
0
1
Nol
0
0
0
0
0
1
0
0
0
9
0
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
90
Tabel 4.24. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding untuk User 2 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Satu
9
0
0
1
0
0
0
0
0
0
0
Dua
0
7
2
0
0
0
0
0
0
0
1
Tiga
0
0
8
0
0
0
1
0
0
0
1
Empat
0
0
0
9
1
0
0
0
0
0
0
Lima
0
0
0
0
9
0
0
0
0
1
0
Enam
0
0
0
0
0
7
2
0
0
0
1
Tujuh
0
0
0
0
1
0
8
0
0
0
1
Delapan
0
0
0
0
0
0
0
10
0
0
0
Sembilan
0
0
1
0
1
0
0
8
0
0
0
Nol
0
0
0
0
0
1
0
0
0
9
0
Tabel 4.25. Data Hasil Pengujian Secara Real Time dengan Nilai Thresholding untuk User 3 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Satu
9
0
0
0
0
0
0
1
0
0
0
Dua
0
6
2
0
0
0
0
0
0
0
2
Tiga
0
0
9
0
1
0
0
0
0
0
0
Empat
0
0
0
10
0
0
0
0
0
0
0
Lima
0
0
0
0
9
0
0
0
0
0
1
Enam
0
0
0
0
0
9
0
0
0
1
0
Tujuh
0
0
0
0
0
0
10
0
0
0
0
Delapan
0
0
0
0
0
0
0
8
1
1
0
Sembilan
0
0
0
0
0
0
0
0
10
0
0
Nol
0
0
0
0
0
3
0
0
0
7
0
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
91
Dari data di atas pada user 1 tingkat keberhasilan mencapai 86 dalam mengenali ucapan secara benar. Untuk user 2 tingkat keberhasilan mencapai dan user dari 100 percobaan. Pengujian dengan Nilai thresholding yang kedua dengan pengujian dengan ucapan lain.Pengujian ini dilakukan untuk memastikan bahwa sistem yang dibuat akan mengenali sebagai error jika memberikan masukan selain kata angka 0 - 9. Pengujian ini juga dilakukan untuk menguji thresholding yang telah dirancang pada program pengenalan ucapan. Berikut adalah data pengujian pengucapan kata lain.
Tabel 4.26 Data Hasil Pengujian Pengucapan dengan Ucapan Lain pada User 1 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Balok
0
0
0
0
0
0
0
0
0
0
10
Tabung
1
0
0
0
0
0
0
0
0
0
9
Bola
0
0
0
0
0
0
0
0
0
1
9
Kubus
0
0
0
0
0
0
0
0
0
0
10
Kerucut
0
0
0
0
0
0
0
0
0
0
10
Kopsus
0
0
0
0
0
0
0
0
1
0
9
Kopi
0
0
0
0
0
0
0
0
0
0
10
Aduk
0
0
0
8
0
0
0
0
0
0
8
Susu
0
0
1
0
0
0
0
0
0
0
9
Bersih
0
0
0
0
0
0
0
0
0
0
10
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
92
Tabel 4.27 Data Hasil Pengujian Pengucapan dengan Ucapan Lain pada User 2 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Balok
1
1
0
0
0
0
0
0
0
0
8
Tabung
0
0
0
0
0
0
0
0
0
0
10
Bola
0
0
1
0
0
0
0
0
0
0
9
Kubus
0
2
0
0
0
0
0
0
0
0
8
Kerucut
0
0
0
2
0
0
0
0
0
0
8
Kopsus
0
0
0
0
0
0
0
0
0
0
10
Kopi
0
0
0
0
0
0
0
0
0
0
10
Aduk
0
0
0
0
0
0
0
0
0
0
10
Susu
0
0
0
0
0
0
0
0
0
0
10
Bersih
0
0
0
0
0
0
0
0
0
0
10
Tabel 4.28 Data Hasil Pengujian Pengucapan Dengan Ucapan Lain pada User 3 OUTPUT INPUT
Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Nol Error
Balok
2
0
0
0
0
0
0
0
0
0
8
Tabung
0
0
0
0
0
0
0
0
0
0
10
Bola
0
0
0
0
0
0
0
0
0
1
9
Kubus
0
0
0
0
0
1
0
0
0
0
9
Kerucut
0
0
0
0
0
0
0
0
0
0
10
Kopsus
0
1
0
0
0
0
0
0
0
0
9
Kopi
0
1
0
0
0
0
0
0
0
0
9
Aduk
0
0
0
0
0
0
0
0
0
0
10
Susu
0
0
0
0
0
0
0
0
0
0
10
Bersih
0
0
0
0
0
0
0
0
0
0
10
Dari data di atas dapat dilihat bahwa tingkat keberhasilan thresholding mencapai diatas 92 dari 100 percobaan dan dapat diambil kesimpulan bahwa penggunaan thresholding bekerja sesuai dengan perancangan. Dari hasil pengujian tingkat pengenalan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
93
ucapan angka selain 0 hingga 9, program mampu menampilkan “ERROR” sebagai keluaran.
4.5.
Hasil Pengujian Tulisan dari Lengan Robot Dari hasil pengujian tulisan pada lengan robot, didapatkan sesuai dengan gambar
4.25. Pada penggambaran angka tidak terpaku dengan panjang garis atau besarnya dari tulisan. Alat hanya diharapkan bisa membentuk angka sesuai dengan pengenalan suara yang dikenali. Dari bentuk angka yang ditulis, terdapat angka yang tertulis miring karena kemampuan alat menulis belum sempurna karena dalam menggerakkan servo satu-persatu tidak secara bersamaan sehingga membentuk garis tidak benar-benar lurus.
Gambar 4.25a. Bentuk hasil penulisan angka
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 4.25b. Bentuk hasil penulisan angka
94
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB V KESIMPULAN DAN SARAN 5.1
Kesimpulan Dari percobaan dan pengujian sistem pengenalan ucapan disimpulkan sebagai
berikut: 1. Penggunaan dengan database suara semakin banyak membuat tingkat pengenalan semakin baik. 2. Pengenalan secara real time menggunakan parameter terbaik yaitu segmen averaging 8, dan knn 1, dengan tingkat pengenalan mencapai 85,33%. 3. Bentuk angka yang ditulis oleh lengan robot tidak berbentuk benar-benar kotak seperti yang dirancangkan.
5.2.
Saran Saran untuk pengembangan sistem pengenalan ucapan untuk lengan robot menulis angka:
1. Pengembangan sistem kebidang yang lebih sempurna seperti dapat menulis angka lebih dari 1 digit. 2. Untuk lebih lanjutnya jika ingin membuat lengan robot menulis memakai lebih dari 3 servo, sehingga untuk variasi gerakan untuk menulis menjadi lebih banyak.
95
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR PUSTAKA [1]
Budiharto, W., 2014, Robotika Modern – Teori dan Implementasi,edisi revisi, C.V Andi Offset, Yogyakarta.
[2]
Ronando, E dan M. Isa Irawan., 2012, Pengenalan Ucapan Kata Sebagai Pengendali Gerakan Robot Lengan Secara Real-Time dengan Metode Linear predictive coding – Neuro Fuzzy, Jurnal Sains dan Seni ITS Vol.1, No. 1, (Sept. 2012) ISSN: 2301-928X
[3]
Petrus C. Hendar dan Tjendro., 2014, rancang bangun lengan robot menulis kata yang dikendalikan oleh aplikasi android, Prosiding Seminar RiTekTra 2014, Universitas Sanata Dharma, Yogyakarta.
[4]
Setyawan,R.Y., 2014, Pengenalan Ucapan Angka Secara Real Time Menggunakan Ekstraksi Ciri fft Dan Fungsi Similaritas Kosinus, tugas akhir, Universitas Sanata Dharma Yogyakarta.
[5]
Sujarwata,2013, Pengendali Motor Servo Berbasis Mikrokontroler Basic Stamp 2sx Untuk Mengembangkan Sistem Robotika, vol 1, hal 47-54.
[6]
Pitowarno, E., 2006, ROBOTIKA : Desain, kontrol, dan kecerdasan Buatan, 1st ed, C.V ANDI OFFSET, Yogyakarta
[7]
Paul A. Tipler, 1998, FISIKA Untuk Sains dan Teknik, edisi 3 jilid 1, Erlangga, Bandung
[8]
---,Data Sheet Mikrokontroler Atmega32, ATMEL.
[9]
Agus Bejo, 2008, C dan AVR Rahasia Kemudahan Bahasa C dalam Mikrokonroler ATMEGA8535, 1st ed, GRAHA ILMU, Yogyakarta.
[10] http://elektronika-dasar.web.id/teori-elektronika/lcd-liquid-cristal-display/
diakses
pada tanggal 22 januari 2015 [11] Boylestad, R. and Nashelsky, L., Electronic Devices and Circuit Theory, seventh edition, Prentice Hall, New Jersey Columbus, Ohio. [12] Fathoni, Oktober 2010, Unjuk Kerja Catu Daya 12 Volt 2A dengan Pass Element Transistor NPN dan PNP, Jurnal Neutrino,Vol.3, No.1 [13] Wijaya, Aryaditya, 2011, Aplikasi Hidden Markov Model Pada Pintu Geser Berbasis Suara, TeknikElektro, Sanata Dharma, Yogyakarta [14] Juang, B. H., dan Rabiner, L., 1993, Fundamentals Of Speech Recognition. Signal Processing Series, Prentice Hall, Englewood Cliffs, NJ
96
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI [15] Theodoridis S. dan Koutroumbas K.,2009, Pattern Recognition 4th edition, Burlington, Massachusetts ,USA. [16] Sumarno, Linggo., 2013, Pengenalan Nada Pianika Menggunakan Jendela Gaussian DCT dan Jarak Kosinus., Jurnal Penelitian vol. 17, no 1, hal 8-15. [17] Jain, A. K., Duin, R. P. W., & Mao, J. 2000. Statistical Pattern Recognition: A Review. Pattern Analysis and Machine Intelligence, IEEE Transactions on,22(1), 437. [18] http://www.mathworks.com/help/signal/ref/hamming.html diakses pada tanggal 20 february 2015 [19] Linggo Sumarno,”Pengolahan Signal Digital”,Diktat, Edisi 2013. [20] Mcloughlin. I.,2009, Applied Speech and Audio Processing: With Matlab, Cambridge University Press, Cambridge, New York. [21] Giovanni E.J., 2015 , Aplikasi Pengenalan Ucapan Secara Real Time Menggunakan Dct Dan Orelasi Untuk Pengatur Kecerahan Lampu Dc, tugas akhir, Universitas Sanata Dharma Yogyakarta. [22] http://www.intopic.com.tw/showroom/view.php?C=5052498 diakses pada tanggal 20 november 2014 [23] http://www.computerhope.com/jargon/s/souncard.htm diakses pada tanggal pada tanggal 20 maret 2015 [24] http://www.servodatabase.com/servo/towerpro/mg946r diakses pada tanggal 29 november 2014 [25] Wilson, D, Randall, Martinez, R, Tony., 1997, improved heterogeneous distance functions. [26] --, 2008, Data Sheet LCD 16x2, Revolution Education Ltd. [27] -., 2001, Signal Processing Toolbook For Use with MATLAB, The MathWork, inc
97
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
LAMPIRAN A Pengujian Panjang Durasi Perekaman Tujuan Percobaan
:
Mengetahui panjang durasi rekaman. Percobaan
:
1. Waktu pencuplikan yaitu 1,2,3 detik. 2. Dengan sampling rate sebesar 6000 Hz. 3. Kata yang dipakai angka 9 sebagai pengucapan angka terpanjang.
Hasil Percobaan
:
Percobaan dengan lama waktu pencuplikan 1 detik Pengucapan angka sembilan sembilan.wav 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
0
1000
2000
3000
4000
5000
6000
L1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L2
Percobaan dengan lama waktu pencuplikan 2 detik Pengucapan angka sembilan sembilan1.wav 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
0
2000
4000
6000
8000
10000
12000
Percobaan dengan lama waktu pencuplikan 3 detik Pengucapan angka sembilan sembilan.wav 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
0
2000
4000
6000
8000
10000
12000
14000
16000
18000
Analisis : Dalam percobaan yang dilakukan , percobaan lama waktu 1 detik menyebabkan kata yang diucapakan tidak tercuplik secara sempurna. Pada percobaan lama waktu 2 detik dan 3 detik didapatkan kata yang diucapkan tercuplik sempurna. Pada percobaan lama waktu 3 detik terlihat terlalu banyak data yang tercuplik karena waktu terlalu lama. Hal
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L3
tersebut dapat mengakibatkan terjadinya noise yang masuk. Pada percobaan lama waktu 2 detik terlihat lebih efektif karena kata dapat terekam sempurna dan tidak terlalu lama dalam waktu perekaman. Kesimpulan Penggunaan lama waktu 2 detik lebih efektif karena waktu pencuplikan tidak terlalu lama dan kata terekam sempurna.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Rangkaian minimum sistem
L4
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Rangkaian regulator 7805 dengan penguatan arus
Towerpro MG946R
L5
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Berat spidol setelah ditimbang
SUDUT-SUDUT MOTOR SERVO
Sudut 0o
Sudut 30o
Sudut 60o
Sudut 10o
Sudut 40o
Sudut 70o
Sudut 20o
Sudut 50o
Sudut 80o
L6
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Sudut 90o
Sudut 120o
Sudut 150o
Sudut 100o
Sudut 130o
Sudut 160o
Sudut 180o
Sudut 110o
Sudut 140o
Sudut 170o
L7
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L8
Listing Program Matlab Program Pengujian Pengenalan Ucapan Secara Tidak Real Time function cobadft10 clc %================================================================= ========= b0 = 0.3; usig = 4096; %================================================================= ========= % Pembentukan database s1x=proses('satu1.wav',b0,usig); s2x=proses('satu2.wav',b0,usig); s3x=proses('satu3.wav',b0,usig); s4x=proses('satu4.wav',b0,usig); s5x=proses('satu5.wav',b0,usig); s6x=proses('satu6.wav',b0,usig); s7x=proses('satu7.wav',b0,usig); s8x=proses('satu8.wav',b0,usig); s9x=proses('satu9.wav',b0,usig); s10x=proses('satu10.wav',b0,usig); d1x=proses('dua1.wav',b0,usig); d2x=proses('dua2.wav',b0,usig); d3x=proses('dua3.wav',b0,usig); d4x=proses('dua4.wav',b0,usig); d5x=proses('dua5.wav',b0,usig); d6x=proses('dua6.wav',b0,usig); d7x=proses('dua7.wav',b0,usig); d8x=proses('dua8.wav',b0,usig); d9x=proses('dua9.wav',b0,usig); d10x=proses('dua10.wav',b0,usig); g1x=proses('tiga1.wav',b0,usig); g2x=proses('tiga2.wav',b0,usig); g3x=proses('tiga3.wav',b0,usig); g4x=proses('tiga4.wav',b0,usig); g5x=proses('tiga5.wav',b0,usig); g6x=proses('tiga6.wav',b0,usig); g7x=proses('tiga7.wav',b0,usig); g8x=proses('tiga8.wav',b0,usig); g9x=proses('tiga9.wav',b0,usig); g10x=proses('tiga10.wav',b0,usig); p1x=proses('empat1.wav',b0,usig); p2x=proses('empat2.wav',b0,usig); p3x=proses('empat3.wav',b0,usig); p4x=proses('empat4.wav',b0,usig); p5x=proses('empat5.wav',b0,usig); p6x=proses('empat6.wav',b0,usig);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI p7x=proses('empat7.wav',b0,usig); p8x=proses('empat8.wav',b0,usig); p9x=proses('empat9.wav',b0,usig); p10x=proses('empat10.wav',b0,usig); l1x=proses('lima1.wav',b0,usig); l2x=proses('lima2.wav',b0,usig); l3x=proses('lima3.wav',b0,usig); l4x=proses('lima4.wav',b0,usig); l5x=proses('lima5.wav',b0,usig); l6x=proses('lima6.wav',b0,usig); l7x=proses('lima7.wav',b0,usig); l8x=proses('lima8.wav',b0,usig); l9x=proses('lima9.wav',b0,usig); l10x=proses('lima10.wav',b0,usig); e1x=proses('enam1.wav',b0,usig); e2x=proses('enam2.wav',b0,usig); e3x=proses('enam3.wav',b0,usig); e4x=proses('enam4.wav',b0,usig); e5x=proses('enam5.wav',b0,usig); e6x=proses('enam6.wav',b0,usig); e7x=proses('enam7.wav',b0,usig); e8x=proses('enam8.wav',b0,usig); e9x=proses('enam9.wav',b0,usig); e10x=proses('enam10.wav',b0,usig); t1x=proses('tujuh1.wav',b0,usig); t2x=proses('tujuh2.wav',b0,usig); t3x=proses('tujuh3.wav',b0,usig); t4x=proses('tujuh4.wav',b0,usig); t5x=proses('tujuh5.wav',b0,usig); t6x=proses('tujuh6.wav',b0,usig); t7x=proses('tujuh7.wav',b0,usig); t8x=proses('tujuh8.wav',b0,usig); t9x=proses('tujuh9.wav',b0,usig); t10x=proses('tujuh10.wav',b0,usig); a1x=proses('delapan1.wav',b0,usig); a2x=proses('delapan2.wav',b0,usig); a3x=proses('delapan3.wav',b0,usig); a4x=proses('delapan4.wav',b0,usig); a5x=proses('delapan5.wav',b0,usig); a6x=proses('delapan6.wav',b0,usig); a7x=proses('delapan7.wav',b0,usig); a8x=proses('delapan8.wav',b0,usig); a9x=proses('delapan9.wav',b0,usig); a10x=proses('delapan10.wav',b0,usig); n1x=proses('sembilan1.wav',b0,usig); n2x=proses('sembilan2.wav',b0,usig); n3x=proses('sembilan3.wav',b0,usig); n4x=proses('sembilan4.wav',b0,usig); n5x=proses('sembilan5.wav',b0,usig); n6x=proses('sembilan6.wav',b0,usig);
L9
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L10
n7x=proses('sembilan7.wav',b0,usig); n8x=proses('sembilan8.wav',b0,usig); n9x=proses('sembilan9.wav',b0,usig); n10x=proses('sembilan10.wav',b0,usig); o1x=proses('nol1.wav',b0,usig); o2x=proses('nol2.wav',b0,usig); o3x=proses('nol3.wav',b0,usig); o4x=proses('nol4.wav',b0,usig); o5x=proses('nol5.wav',b0,usig); o6x=proses('nol6.wav',b0,usig); o7x=proses('nol7.wav',b0,usig); o8x=proses('nol8.wav',b0,usig); o9x=proses('nol9.wav',b0,usig); o10x=proses('nol10.wav',b0,usig); % Database sx=[s1x s2x dx=[d1x d2x gx=[g1x g2x px=[p1x p2x lx=[l1x l2x ex=[e1x e2x tx=[t1x t2x ax=[a1x a2x nx=[n1x n2x ox=[o1x o2x
s3x d3x g3x p3x l3x e3x t3x a3x n3x o3x
s4x d4x g4x p4x l4x e4x t4x a4x n4x o4x
s5x d5x g5x p5x l5x e5x t5x a5x n5x o5x
s6x d6x g6x p6x l6x e6x t6x a6x n6x o6x
s7x d7x g7x p7x l7x e7x t7x a7x n7x o7x
s8x d8x g8x p8x l8x e8x t8x a8x n8x o8x
s9x d9x g9x p9x l9x e9x t9x a9x n9x o9x
s10x]; d10x]; g10x]; p10x]; l10x]; e10x]; t10x]; a10x]; n10x]; o10x];
z=[sx dx gx px lx ex tx ax nx ox]; %================================================================= === % Percobaan pengenalan c=proses('satua.wav',b0,usig);j1=hcorr(c,z); c=proses('satub.wav',b0,usig);j2=hcorr(c,z); c=proses('satuc.wav',b0,usig);j3=hcorr(c,z); c=proses('satud.wav',b0,usig);j4=hcorr(c,z); c=proses('satue.wav',b0,usig);j5=hcorr(c,z); c=proses('satuf.wav',b0,usig);j6=hcorr(c,z); c=proses('satug.wav',b0,usig);j7=hcorr(c,z); c=proses('satuh.wav',b0,usig);j8=hcorr(c,z); c=proses('satui.wav',b0,usig);j9=hcorr(c,z); c=proses('satuj.wav',b0,usig);j10=hcorr(c,z); k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5); k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10); in_satu_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10} c=proses('duaa.wav',b0,usig);j1=hcorr(c,z); c=proses('duab.wav',b0,usig);j2=hcorr(c,z); c=proses('duac.wav',b0,usig);j3=hcorr(c,z); c=proses('duad.wav',b0,usig);j4=hcorr(c,z); c=proses('duae.wav',b0,usig);j5=hcorr(c,z); c=proses('duaf.wav',b0,usig);j6=hcorr(c,z); c=proses('duag.wav',b0,usig);j7=hcorr(c,z); c=proses('duah.wav',b0,usig);j8=hcorr(c,z);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI c=proses('duai.wav',b0,usig);j9=hcorr(c,z); c=proses('duaj.wav',b0,usig);j10=hcorr(c,z); k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5); k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10); in_dua_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10} c=proses('tigaa.wav',b0,usig);j1=hcorr(c,z); c=proses('tigab.wav',b0,usig);j2=hcorr(c,z); c=proses('tigac.wav',b0,usig);j3=hcorr(c,z); c=proses('tigad.wav',b0,usig);j4=hcorr(c,z); c=proses('tigae.wav',b0,usig);j5=hcorr(c,z); c=proses('tigaf.wav',b0,usig);j6=hcorr(c,z); c=proses('tigag.wav',b0,usig);j7=hcorr(c,z); c=proses('tigah.wav',b0,usig);j8=hcorr(c,z); c=proses('tigai.wav',b0,usig);j9=hcorr(c,z); c=proses('tigaj.wav',b0,usig);j10=hcorr(c,z); k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5); k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10); in_tiga_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10} c=proses('empata.wav',b0,usig);j1=hcorr(c,z); c=proses('empatb.wav',b0,usig);j2=hcorr(c,z); c=proses('empatc.wav',b0,usig);j3=hcorr(c,z); c=proses('empatd.wav',b0,usig);j4=hcorr(c,z); c=proses('empate.wav',b0,usig);j5=hcorr(c,z); c=proses('empatf.wav',b0,usig);j6=hcorr(c,z); c=proses('empatg.wav',b0,usig);j7=hcorr(c,z); c=proses('empath.wav',b0,usig);j8=hcorr(c,z); c=proses('empati.wav',b0,usig);j9=hcorr(c,z); c=proses('empatj.wav',b0,usig);j10=hcorr(c,z); k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5); k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10); in_empat_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10} c=proses('limaa.wav',b0,usig);j1=hcorr(c,z); c=proses('limab.wav',b0,usig);j2=hcorr(c,z); c=proses('limac.wav',b0,usig);j3=hcorr(c,z); c=proses('limad.wav',b0,usig);j4=hcorr(c,z); c=proses('limae.wav',b0,usig);j5=hcorr(c,z); c=proses('limaf.wav',b0,usig);j6=hcorr(c,z); c=proses('limag.wav',b0,usig);j7=hcorr(c,z); c=proses('limah.wav',b0,usig);j8=hcorr(c,z); c=proses('limai.wav',b0,usig);j9=hcorr(c,z); c=proses('limaj.wav',b0,usig);j10=hcorr(c,z); k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5); k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10); in_lima_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10} c=proses('enama.wav',b0,usig);j1=hcorr(c,z); c=proses('enamb.wav',b0,usig);j2=hcorr(c,z); c=proses('enamc.wav',b0,usig);j3=hcorr(c,z); c=proses('enamd.wav',b0,usig);j4=hcorr(c,z); c=proses('ename.wav',b0,usig);j5=hcorr(c,z); c=proses('enamf.wav',b0,usig);j6=hcorr(c,z); c=proses('enamg.wav',b0,usig);j7=hcorr(c,z);
L11
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI c=proses('enamh.wav',b0,usig);j8=hcorr(c,z); c=proses('enami.wav',b0,usig);j9=hcorr(c,z); c=proses('enamj.wav',b0,usig);j10=hcorr(c,z); k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5); k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10); in_enam_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10} c=proses('tujuha.wav',b0,usig);j1=hcorr(c,z); c=proses('tujuhb.wav',b0,usig);j2=hcorr(c,z); c=proses('tujuhc.wav',b0,usig);j3=hcorr(c,z); c=proses('tujuhd.wav',b0,usig);j4=hcorr(c,z); c=proses('tujuhe.wav',b0,usig);j5=hcorr(c,z); c=proses('tujuhf.wav',b0,usig);j6=hcorr(c,z); c=proses('tujuhg.wav',b0,usig);j7=hcorr(c,z); c=proses('tujuhh.wav',b0,usig);j8=hcorr(c,z); c=proses('tujuhi.wav',b0,usig);j9=hcorr(c,z); c=proses('tujuhj.wav',b0,usig);j10=hcorr(c,z); k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5); k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10); in_tujuh_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10} c=proses('delapana.wav',b0,usig);j1=hcorr(c,z); c=proses('delapanb.wav',b0,usig);j2=hcorr(c,z); c=proses('delapanc.wav',b0,usig);j3=hcorr(c,z); c=proses('delapand.wav',b0,usig);j4=hcorr(c,z); c=proses('delapane.wav',b0,usig);j5=hcorr(c,z); c=proses('delapanf.wav',b0,usig);j6=hcorr(c,z); c=proses('delapang.wav',b0,usig);j7=hcorr(c,z); c=proses('delapanh.wav',b0,usig);j8=hcorr(c,z); c=proses('delapani.wav',b0,usig);j9=hcorr(c,z); c=proses('delapanj.wav',b0,usig);j10=hcorr(c,z); k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5); k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10); in_delapan_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10} c=proses('sembilana.wav',b0,usig);j1=hcorr(c,z); c=proses('sembilanb.wav',b0,usig);j2=hcorr(c,z); c=proses('sembilanc.wav',b0,usig);j3=hcorr(c,z); c=proses('sembiland.wav',b0,usig);j4=hcorr(c,z); c=proses('sembilane.wav',b0,usig);j5=hcorr(c,z); c=proses('sembilanf.wav',b0,usig);j6=hcorr(c,z); c=proses('sembilang.wav',b0,usig);j7=hcorr(c,z); c=proses('sembilanh.wav',b0,usig);j8=hcorr(c,z); c=proses('sembilani.wav',b0,usig);j9=hcorr(c,z); c=proses('sembilanj.wav',b0,usig);j10=hcorr(c,z); k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5); k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10); in_sembilan_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10} c=proses('nola.wav',b0,usig);j1=hcorr(c,z); c=proses('nolb.wav',b0,usig);j2=hcorr(c,z); c=proses('nolc.wav',b0,usig);j3=hcorr(c,z); c=proses('nold.wav',b0,usig);j4=hcorr(c,z); c=proses('nole.wav',b0,usig);j5=hcorr(c,z); c=proses('nolf.wav',b0,usig);j6=hcorr(c,z);
L12
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L13
c=proses('nolg.wav',b0,usig);j7=hcorr(c,z); c=proses('nolh.wav',b0,usig);j8=hcorr(c,z); c=proses('noli.wav',b0,usig);j9=hcorr(c,z); c=proses('nolj.wav',b0,usig);j10=hcorr(c,z); k1=pout(j1);k2=pout(j2);k3=pout(j3);k4=pout(j4);k5=pout(j5); k6=pout(j6);k7=pout(j7);k8=pout(j8);k9=pout(j9);k10=pout(j10); in_nol_out={k1,k2,k3,k4,k5,k6,k7,k8,k9,k10} % Hitung tingkat pengenalan h1=cekout(in_satu_out,1); h2=cekout(in_dua_out,2); h3=cekout(in_tiga_out,3); h4=cekout(in_empat_out,4); h5=cekout(in_lima_out,5); h6=cekout(in_enam_out,6); h7=cekout(in_tujuh_out,7); h8=cekout(in_delapan_out,8); h9=cekout(in_sembilan_out,9); h10=cekout(in_nol_out,10); jumlah_dikenali = h1+h2+h3+h4+h5+h6+h7+h8+h9+h10 %================================================================= ========= % INTERNAL FUNCTION %================================================================= ========= function wx=proses(fwav,b0,usig) % Baca file wav x0=wavread(fwav); % Preemphasis alpha=0.95; % nilai alpha (referensi: 0.9-1) for k=2:length(x0) x0(k)=x0(k)-alpha*(x0(k-1)); end % Normalisasi x1=x0/max(abs(x0)); % Potong ujung kanan-kiri sinyal x2=potong(x1,b0); % Penyesuaian ukuran sinyal x2(usig)=0; x3=x2(1:usig); % Ekstraksi ciri menggunakan DFT wx=dftzz(x3); %================================================================= function x2=potong(x1,b0) % Memotong data yang perlu
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L14
% x1 : data masukan % b0 : batas pemotongan % x2 : data keluaran % Potong kiri b1=find(x1>b0 | x1<-b0); x1(1:b1(1))=[]; % Potong kanan x2=fliplr(x1'); b2=find(x2>b0 | x2<-b0); x2(1:b2(1))=[]; x2=fliplr(x2); %================================================================= function x2=dftzz(x0) % Ekstraksi ciri DFT % x0 : data masukan % x2 : data keluaran pjseg=512; ovlseg=128; h=hamming(pjseg); n=1;k=1; while n==1 pjx0=length(x0); if pjx0>=pjseg xseg=x0(1:pjseg); xseg=xseg.*h' segmtx(:,k)=xseg; x0(1:pjseg-ovlseg)=[]; k=k+1; elseif pjx0==0 n=0; else x0(pjseg)=0; xseg=x0.*h'; segmtx(:,k)=xseg; n=0; end end % Ektraksi ciri menggunakan DFT [baris,kolom]=size(segmtx); for k=1:kolom hdft=abs(dftx(segmtx(:,k))); x1(:,k)=hdft(:); end x1=x1(:); x1=x1(1:length(x1)/2,:); % Segment averaging x2=reshape(x1,8,[]);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L15
x2=mean(x2); x2=x2(:); %================================================================= function z=hcorr(x,y) % Menghitung korelasi dan penentuan keluaran % x : ekstraksi ciri sinyal masukan % y : database ekstraksi ciri % z : kelas keluaran % Menghitung korelasi z=zeros(1,100); for k=1:100 z(k)=corrx(x,y(:,k)); end % Penentuan keluaran dengan kNN k=1; m=10; [s1,s2]=sort(z,'descend'); kj=s1(1:k); kn=s2(1:k); hk=ceil(kn/m); z=mode(hk); %================================================================= === function z=corrx(x,y) % Perhitungan korelasi % x, y : data masukan % z : data keluaran mx=mean(x); my=mean(y); k1=(x-mx).*(y-my); k2=sum(k1); k3=sum((x-mx).^2); k4=sum((y-my).^2); k5=sqrt(k3.*k4); z=k2/k5; %================================================================= function y=dftx(x) % Perhitungan DFT % Hitung panjang x N=length(x); % Hitung DFT y=zeros(1,N); for k=1:N for n=1:N w=exp(-j*2*pi*(k-1)*(n-1)/N); a=x(n)*w;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L16
y(k)=y(k)+a; end end %================================================================= ==== function y=pout(x) % Penentuan keluaran kel={'satu';'dua';'tiga';'empat';'lima'; 'enam';'tujuh';'delapan';'sembilan';'nol'}; y=kel{x}; %================================================================= ==== function z=cekout(x,y) % Penghitungan keluaran yang benar kel={'satu';'dua';'tiga';'empat';'lima'; 'enam';'tujuh';'delapan';'sembilan';'nol'}; z=0; for k=1:10 if length(x{k})==length(kel{y}) if x{k}==kel{y} z=z+1; end end end % ==================================================================
PROGRAM PENGENALAN UCAPAN SECARA REAL TIME Pengenalan : guico.fig function varargout = guico(varargin) % GUICO M-file for guico.fig % GUICO, by itself, creates a new GUICO or raises the existing % singleton*. % % H = GUICO returns the handle to a new GUICO or the handle to % the existing singleton*. % % GUICO('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in GUICO.M with the given input arguments. % % GUICO('Property','Value',...) creates a new GUICO or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before guico_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to guico_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI % Edit the above text to modify the response to help guico % Last Modified by GUIDE v2.5 09-Jun-2015 23:08:53 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @guico_OpeningFcn, ... 'gui_OutputFcn', @guico_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before guico is made visible. function guico_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to guico (see VARARGIN) % Choose default command line output for guico handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes guico wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = guico_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output;
function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text
L17
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI % double
L18
str2double(get(hObject,'String')) returns contents of edit1 as a
% --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu1 indeks=get(handles.popupmenu1,'Value'); switch indeks case 1 user=1; case 2 user=2; case 3 user=3; end handles.xuser=user; guidata(hObject,handles); % --- Executes during object creation, after setting all properties. function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in popupmenu2. function popupmenu2_Callback(hObject, eventdata, handles) % hObject handle to popupmenu2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI % handles
L19
structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns popupmenu2 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu2 segav=get(handles.popupmenu2,'Value'); switch segav case 1 frame=8; case 2 frame=16; case 3 frame=32; case 4 frame=64; end handles.varse=frame; guidata(hObject,handles); % --- Executes during object creation, after setting all properties. function popupmenu2_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in popupmenu3. function popupmenu3_Callback(hObject, eventdata, handles) % hObject handle to popupmenu3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns popupmenu3 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu3 nknn=get(handles.popupmenu3,'Value'); switch nknn case 1 knn=1; case 2 knn=3; case 3 knn=5; case 4 knn=7; end handles.varknn=knn; guidata(hObject,handles); % --- Executes during object creation, after setting all properties.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI function popupmenu3_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) sample_length=2; sample_freq=6000; sample_time=(sample_length*sample_freq); x=wavrecord(sample_time, sample_freq); %wavwrite(x, sample_freq, 's.wav'); %x=wavread('s.wav'); axes(handles.axes1); plot(x); % Preemphasis varuser=handles.xuser; varse=handles.varse; vark=handles.varknn; b0=0.3; x0=x; usig=4096; alpha=0.95; for k=2:length(x0) x0(k)=x0(k)-alpha*(x0(k-1)); end % Normalisasi x1=x0/max(abs(x0)); % Potong kiri b1=find(x1>b0 | x1<-b0); x1(1:b1(1))=[]; % Potong kanan x2=fliplr(x1'); b2=find(x2>b0 | x2<-b0); x2(1:b2(1))=[]; x2=fliplr(x2); % Penyesuaian ukuran sinyal x2(usig)=0; x3=x2(1:usig); % Segmentasi dan windowing hamming
L20
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI pjseg=512; ovlseg=128; h=hamming(pjseg); n=1;k=1; while n==1 pjx0=length(x3); if pjx0>=pjseg xseg=x3(1:pjseg); xseg=xseg.*h'; segmtx(:,k)=xseg; x3(1:pjseg-ovlseg)=[]; k=k+1; elseif pjx0==0 n=0; else x3(pjseg)=0; xseg=x3.*h'; segmtx(:,k)=xseg; n=0; end end
% % % %
segmentasi proses windowing simpan hasil windowing potong yang tidak dipakai lagi
% penyesuaian panjang segmen % proses windowing % simpan hasil windowing
% Ektraksi ciri menggunakan DFT [baris,kolom]=size(segmtx); for k=1:kolom hdft=abs(dftx(segmtx(:,k))); x4(:,k)=hdft(:); end x4=x4(:); %jika dihapus untuk pengucapan lebih mudah dikenal x4=x4(1:length(x4)/2,:); % Segment averaging x5=reshape(x4,varse,[]); x5=mean(x5); x=x5(:);
% hasil max:16
axes(handles.axes2) plot(x); if (varse==8) && (varuser==1) load db01dseg8; elseif (varse==16) && (varuser==1) load db01dseg16; elseif (varse==32) && (varuser==1) load db01dseg32; elseif (varse==64) && (varuser==1) load db01dseg64; elseif (varse==8) && (varuser==2) load db02dseg8; elseif (varse==16) && (varuser==2) load db02dseg16; elseif (varse==32) && (varuser==2) load db02dseg32;
L21
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L22
elseif (varse==64) && (varuser==2) load db02dseg64; elseif (varse==8) && (varuser==3) load db03dseg8; elseif (varse==16) && (varuser==3) load db03dseg16; elseif (varse==32) && (varuser==3) load db03dseg32; elseif (varse==64) && (varuser==3) load db03dseg64; end %korelasi sz=size(z); %jarak=zeros(1,10); for n=1:100 jarak(n)=korelasi(x,z(:,n)); end %knn kk=vark; m=10; [s1,s2]=sort(jarak,'descend'); kj=s1(1:kk); kn=s2(1:kk); hk=ceil(kn/m); kout=mode(hk); idx=find(hk==kout); lokth=idx(1); nilai=kj(idx); th=s1(lokth); jarakk=th if (kout == 1) && (varuser==1) && (th < 0.7207) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 1) && (varuser==1) && (th >0.7207) korout = {'satu'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','a') fclose(s); delete(s); clear s; elseif (kout == 2) && (varuser==1) && (th < 0.7539) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L23
elseif (kout == 2) && (varuser==1) && (th > 0.7539) korout = {'dua'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','b') fclose(s); delete(s); clear s; elseif (kout == 3) && (varuser==1) && (th <0.7030) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 3) && (varuser==1) && (th >0.7030) korout = {'tiga'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','c') fclose(s); delete(s); clear s; elseif (kout == 4) && (varuser==1) && (th < 0.7206) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 4) && (varuser==1) && (th > 0.7206) korout = {'empat'} kirim = 'd'; hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','d') fclose(s); delete(s); clear s; elseif (kout == 5) && (varuser==1) && (th < 0.7760) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 5) && (varuser==1)&& (th > 0.7760) korout = {'lima'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','e') fclose(s); delete(s); clear s;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L24
elseif (kout == 6) && (varuser==1) && (th < 0.6100) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 6) && (varuser==1) && (th > 0.6100) korout = {'enam'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','f') fclose(s); delete(s); clear s; elseif (kout == 7) && (varuser==1) && (th < 0.7592) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 7) && (varuser==1) && (th > 0.7592) korout = {'tujuh'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','g') fclose(s); delete(s); clear s; elseif (kout == 8) && (varuser==1) && (th < 0.7414) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 8) && (varuser==1) && (th > 0.7414) korout = {'delapan'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','h') fclose(s); delete(s); clear s; elseif (kout == 9) && (varuser==1) && (th < 0.8503) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 9)&& (varuser==1) && (th > 0.8503) korout = {'sembilan'} kirim = 'i'; hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none');
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L25
fopen(s); fprintf(s,'%c','i') fclose(s); delete(s); clear s; elseif (kout == 10) && (varuser==1) && (th <0.7340) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 10) && (varuser==1) && (th >0.7340) korout = {'nol'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','j') fclose(s); delete(s); clear s; elseif (kout == 1) && (varuser==2) && (th < 0.7351) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 1) && (varuser==2) && (th > 0.7351) korout = {'satu'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','a') fclose(s); delete(s); clear s; elseif (kout == 2) && (varuser==2) && (th < 0.7627) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 2) && (varuser==2) && (th > 0.7627) korout = {'dua'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','b') fclose(s); delete(s); clear s; elseif (kout == 3) && (varuser==2) && (th < 0.6859) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 3) && (varuser==2) && (th > 0.6859) korout = {'tiga'}
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L26
hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','c') fclose(s); delete(s); clear s; elseif (kout == 4) && (varuser==2) && (th < 0.7197) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 4) && (varuser==2) && (th > 0.7197) korout = {'empat'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','d') fclose(s); delete(s); clear s; elseif (kout == 5) && (varuser==2) && (th < 0.7551) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 5) && (varuser==2) && (th > 0.7551) korout = {'lima'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','e') fclose(s); delete(s); clear s; elseif (kout == 6) && (varuser==2) && (th < 0.6721) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 6)&& (varuser==2) && (th > 0.6721) korout = {'enam'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','f') fclose(s); delete(s); clear s; elseif (kout == 7) && (varuser==2) && (th < 0.7600) korout = {'ERROR'}
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L27
hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 7) && (varuser==2) && (th > 0.7600) korout = {'tujuh'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','g') fclose(s); delete(s); clear s; elseif (kout == 8) && (varuser==2) && (th < 0.7090) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 8) && (varuser==2) && (th > 0.7090) korout = {'delapan'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','h') fclose(s); delete(s); clear s; elseif (kout == 9) && (varuser==2) && (th < 0.7298) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 9) && (varuser==2) && (th > 0.7298) korout = {'sembilan'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','i') fclose(s); delete(s); clear s; elseif (kout == 10) && (varuser==2) && (th < 0.6567) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 10) && (varuser==2) && (th > 0.6567) korout = {'nol'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','j') fclose(s); delete(s);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L28
clear s; elseif (kout == 1) && (varuser==3) && (th < 0.6768) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 1) && (varuser==3) && (th > 0.6768) korout = {'satu'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','a') fclose(s); delete(s); clear s; elseif (kout == 2) && (varuser==3) && (th < 0.7212) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 2) && (varuser==3) && (th > 0.7212) korout = {'dua'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','b') fclose(s); delete(s); clear s; elseif (kout == 3) && (varuser==3) && (th < 0.7053) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 3) && (varuser==3) && (th > 0.7053) korout = {'tiga'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','c') fclose(s); delete(s); clear s; elseif (kout == 4) && (varuser==3) && (th < 0.6860) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 4) && (varuser==3)&& (th > 0.6860) korout = {'empat'} hasilout=korout; set(handles.edit1,'string',hasilout)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L29
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','d') fclose(s); delete(s); clear s; elseif (kout == 5) && (varuser==3) && (th < 0.7928) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 5) && (varuser==3)&& (th > 0.7928) korout = {'lima'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','e') fclose(s); delete(s); clear s; elseif (kout == 6) && (varuser==3) && (th < 0.6841) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 6)&& (varuser==3) && (th > 0.6841) korout = {'enam'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','f') fclose(s); delete(s); clear s; elseif (kout == 7) && (varuser==3) && (th < 0.7794) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 7) && (varuser==3) && (th > 0.7794) korout = {'tujuh'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','g') fclose(s); delete(s); clear s; elseif (kout == 8) && (varuser==3) && (th < korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout)
0.7556)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L30
elseif (kout == 8) && (varuser==3) && (th > 0.7556) korout = {'delapan'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','h') fclose(s); delete(s); clear s; elseif (kout == 9) && (varuser==3) && (th < 0.7783) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 9)&& (varuser==3) && (th > 0.7783) korout = {'sembilan'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','i') fclose(s); delete(s); clear s; elseif (kout == 10) && (varuser==3) && (th < 0.7721) korout = {'ERROR'} hasilout=korout; set(handles.edit1,'string',hasilout) elseif (kout == 10) && (varuser==3) && (th > 0.7721) korout = {'nol'} hasilout=korout; set(handles.edit1,'string',hasilout) s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c','j') fclose(s); delete(s); clear s; end % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes1); plot(0); axes(handles.axes2); plot(0); set(handles.edit1,'String',' '); % --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI % eventdata % handles
L31
reserved - to be defined in a future version of MATLAB structure with handles and user data (see GUIDATA)
delete(figure(guico));
Pengenalan: dftx.m function y=dftx(x) % Perhitungan DFT % Hitung panjang x N=length(x); % Hitung DFT y=zeros(1,N); for k=1:N for n=1:N w=exp(-1i*2*pi*(k-1)*(n-1)/N); a=x(n)*w; y(k)=y(k)+a; end end
Pengenalan : dbxciri.m function dbxciri b0 = 0.3; segin =8; z1=proses ('satu',b0,segin);%sz1=size(z1) z2=proses ('dua',b0,segin);%sz2=size(z2) z3=proses ('tiga',b0,segin);%sz3=size(z3) z4=proses ('empat',b0,segin);%sz4=size(z4) z5=proses ('lima',b0,segin);%sz5=size(z5) z6=proses ('enam',b0,segin);%sz6=size(z6) z7=proses ('tujuh',b0,segin);%sz7=size(z7) z8=proses ('delapan',b0,segin);%sz8=size(z8) z9=proses ('sembilan',b0,segin);%sz9=size(z9) z10=proses ('nol',b0,segin);%sz10=size(z10) z=[z1 z2 z3 z4 z5 z6 z7 z8 z9 z10]; save db01dseg8 z %======================================= %INTERNAL FUNCTION %======================================= function z=proses (fwav,b0,segin) x1=wavread([fwav '1.wav']);y=potong(x1,b0);k1=xdft(y,segin);%sk1=size(k1) x2=wavread([fwav '2.wav']);y=potong(x2,b0);k2=xdft(y,segin);%sk2=size(k2) x3=wavread([fwav '3.wav']);y=potong(x3,b0);k3=xdft(y,segin);%sk3=size(k3) x4=wavread([fwav '4.wav']);y=potong(x4,b0);k4=xdft(y,segin);%sk4=size(k4) x5=wavread([fwav '5.wav']);y=potong(x5,b0);k5=xdft(y,segin);%sk5=size(k5) x6=wavread([fwav '6.wav']);y=potong(x6,b0);k6=xdft(y,segin);%sk6=size(k6) x7=wavread([fwav '7.wav']);y=potong(x7,b0);k7=xdft(y,segin);%sk7=size(k7)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L32
x8=wavread([fwav '8.wav']);y=potong(x8,b0);k8=xdft(y,segin);%sk8=size(k8) x9=wavread([fwav '9.wav']);y=potong(x9,b0);k9=xdft(y,segin);%sk9=size(k9) x10=wavread([fwav '10.wav']);y=potong(x10,b0);k10=xdft(y,segin);%sk10=size(k10) z=[k1 k2 k3 k4 k5 k6 k7 k8 k9 k10]; %===================================== function bp=potong(x0,b0); alpha=0.95; for k=2:length(x0) x0(k)=x0(k)-alpha*(x0(k-1)); end % Normalisasi x1=x0/max(abs(x0)); % Potong kiri b1=find(x1>b0 | x1<-b0); x1(1:b1(1))=[]; % Potong kanan x2=fliplr(x1'); b2=find(x2>b0 | x2<-b0); x2(1:b2(1))=[]; x2=fliplr(x2); % Penyesuaian ukuran sinyal usig=4096; x2(usig)=0; x3=x2(1:usig); bp=x3; %================================== function x1=xdft(x0,segin) % Framing dan windowing pjseg=512; % panjang frame (referensi: 512) ovlseg=128; % segmen yang overlap: 128 (referensi: 100) h=hamming(pjseg); n=1;k=1; while n==1 pjx0=length(x0); if pjx0>=pjseg xseg=x0(1:pjseg); xseg=xseg.*h'; segmtx(:,k)=xseg; x0(1:pjseg-ovlseg)=[]; k=k+1; elseif pjx0==0 n=0; else x0(pjseg)=0; xseg=x0.*h'; segmtx(:,k)=xseg; n=0; end end
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
% Ektraksi ciri menggunakan FFT [baris,kolom]=size(segmtx); for k=1:kolom hdft=abs(dftx(segmtx(:,k))); x1(:,k)=hdft(:); end x1=x1(:); x1=x1(1:length(x1)/2,:); % Segment averaging x2=reshape(x1,segin,[]); x2=mean(x2); x2=x2(:); x1=x2; %================================= function f=dftx(x) % Perhitungan DFT % Hitung panjang x N=length(x); % Hitung DFT f=zeros(1,N); for k=1:N for n=1:N w=exp(-j*2*pi*(k-1)*(n-1)/N); a=x(n)*w; f(k)=f(k)+a; end end %=================================
Pengenalan : perekaman.m option='n'; option_rec='n'; sample_len=2; sample_freq=6000; sample_time=(sample_len*sample_freq); nama=input('Masukkan nama file record: ','s'); file_nama=sprintf('%s.wav',nama); option_rec = input('tekan x untuk merekam: ','s'); if option_rec=='x' while option=='n', rekam=wavrecord(sample_time, sample_freq); plot(rekam); input('tekan enter untuk mendengarkan ->'); sound(rekam, sample_freq); option = input('x simpan,n rekam ulang: ','s'); end wavwrite(rekam, sample_freq, file_nama); end
Pengenalan : seri1.m
L33
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L34
s=serial('COM15','BaudRate',9600,'DataBits',8,'parity','none','StopBits', 1,'FlowControl','none'); fopen(s); fprintf(s,'%c',kirim) fclose(s); delete(s); clear s;
Pengenalan: Korelasi.m function k=korelasi(x,z) mx=mean(x); my=mean(z); k1=(x-mx).*(z-my); k2=sum(k1); k3=sum((x-mx).^2); k4=sum((z-my).^2); k5=sqrt(k3.*k4); k=k2/k5;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Listing Program Mikrokontroler /***************************************************** Chip type : ATmega32 Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small External RAM size : 0 Data Stack size : 512 *****************************************************/ #include <mega32.h> // Alphanumeric LCD Module functions #include
// Standard Input/Output functions #include <stdio.h> #define servo1 PORTB.0 #define servo2 PORTB.1 #define servo3 PORTB.2 signed int i=0,data1=0,data2=0,data3=0; int a; unsigned char b[16]; // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { if (i>864) {i=0;} else {i++;} if (i
L35
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI } // Declare your global variables here #include <delay.h>
void komunikasi() { a=getchar(); lcd_gotoxy(0,0); //sprintf(b,"komunikasi= %d" ,a); lcd_puts(b); delay_ms(3000); lcd_clear();delay_ms(10); } void siaga_robot() { data1=64; //90 delay_ms(100); data2=69; //80 delay_ms(100); data3=75; //90 delay_ms(100); } void siaga2_robot() { data1=64; delay_ms(100); data2=50; delay_ms(100); data3=75; delay_ms(100); } void angka_nol() { //12 for (data1=64;data1<=69;data1++) //100 { delay_ms(100); }; data2=69; //90 delay_ms(100); data3=75; //90 delay_ms(100); //23 data2=64; //90 delay_ms(100); data1=69; //100
L36
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI delay_ms(100); for (data3=75;data3<=80;data3++) //100 { delay_ms(100); }; //34 data2=68; //90 delay_ms(100); for (data1=69;data1>=64;data1--) //90 { delay_ms(100); }; data3=80; //90 delay_ms(100); //41 data2=69; //90 delay_ms(100); data1=64; //90 delay_ms(100); for (data3=80;data3>=75;data3--)//90 { delay_ms(100); }; //mundur for (data2=69;data2>=50;data2--) { delay_ms(100); }; siaga2_robot(); delay_ms(100); for (data2=50;data2<=69;data2++) { delay_ms(100); }; } void angka_satu() { //12 data1=64; //90 delay_ms(100); data2=69; //90 delay_ms(100); for (data3=75;data3<=80;data3++) //100 { delay_ms(100); };
L37
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI //mundur for (data2=69;data2>=50;data2--) { delay_ms(100); }; siaga2_robot(); delay_ms(500); for (data2=50;data2<=69;data2++) { delay_ms(100); }; } void angka_dua() { //12 for (data1=64;data1<=69;data1++)//100 { delay_ms(100); }; data2=69; //90 delay_ms(100); data3=75; //100 delay_ms(100); //23 data1=69; //100 delay_ms(100); data2=69; //90 delay_ms(100); for (data3=75;data3<=78;data3++) //100 { delay_ms(100); }; //34 for (data1=69;data1>=63;data1--) { delay_ms(100); }; data2=69; //90 delay_ms(100); data3=78; //90 delay_ms(100); //45 data2=70; //90 delay_ms(100); data1=64; //90 delay_ms(100); for (data3=78;data3<=81;data3++) {
//110
L38
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI delay_ms(100); }; //56 data2=70; //90 delay_ms(100); for (data1=64;data1<=69;data1++) { delay_ms(100); }; data3=81; //110 delay_ms(100);
//100
//mundur for (data2=70;data2>=50;data2--) { delay_ms(100); }; siaga2_robot(); delay_ms(500); for (data2=50;data2<=69;data2++) { delay_ms(100); }; }
void angka_tiga() { //12 for (data1=64;data1<=69;data1++)//100 { delay_ms(100); }; data2=69; //90 delay_ms(100); data3=75; //90 delay_ms(100); //23 data1=69; //100 delay_ms(100); data2=69; //90 delay_ms(100); for (data3=75;data3<=78;data3++) //100 { delay_ms(100); }; //34 for (data1=69;data1>=64;data1--) //90 {
L39
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI delay_ms(100); }; data2=69; //90 delay_ms(100); data3=78; //100 delay_ms(100); //43 for (data1=64;data1<=69;data1++) //100 { delay_ms(100); }; data2=69; //90 delay_ms(100); data3=78; //100 delay_ms(100);
//35 data1=69; //100 delay_ms(100); data2=70; //90 delay_ms(100); for (data3=78;data3<=81;data3++) //110 { delay_ms(100); }; //56 for (data1=69;data1>=64;data1--) //90 { delay_ms(100); }; data2=70; //90 delay_ms(100); data3=81; //110 delay_ms(100); //mundur for (data2=70;data2>=50;data2--) { delay_ms(100); }; siaga2_robot(); delay_ms(500); for (data2=50;data2<=69;data2++) { delay_ms(100); }; } void angka_empat()
L40
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI { //12 data1=64; //90 delay_ms(100); data2=69; //90 delay_ms(100); for (data3=75;data3<=78;data3++)//100 { delay_ms(100); }; //23 for (data1=64;data1<=69;data1++) //100 { delay_ms(100); }; data2=69 ; //90 delay_ms(100); data3=78; //100 delay_ms(100); //34 data1=69; //90 delay_ms(100); data2=69; //90 delay_ms(100); for (data3=78;data3>=75;data3--) { delay_ms(100); };
//100
//45 data2=64; //100 delay_ms(100); data1=69; //90 delay_ms(100); for (data3=75;data3<=81;data3++)//110 { delay_ms(100); }; //mundur for (data2=65;data2>=50;data2--) { delay_ms(100); }; siaga2_robot(); delay_ms(500); for (data2=50;data2<=69;data2++) { delay_ms(100); };
L41
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI } void angka_lima() { //12 data2=68; //90 delay_ms(100); for (data1=64;data1>=60;data1--) //80 { delay_ms(100); }; data3=75; //90 delay_ms(100); //23 data1=60; //80 delay_ms(100); data2=68; //90 delay_ms(100); for (data3=75;data3<=78;data3++) //100 { delay_ms(100); }; //34 data2=62; //90 delay_ms(100); for (data1=60;data1<=66;data1++) //90 { delay_ms(100); }; data3=78; //100 delay_ms(100); //45 data2=69; //90 delay_ms(100); data1=64; //90 delay_ms(100); for (data3=78;data3<=81;data3++) //110 { delay_ms(100); }; //56 data2=72; //90 delay_ms(100); for (data1=64;data1>=60;data1--) //80 { delay_ms(100); }; data3=81; //110
L42
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI delay_ms(100); //mundur for (data2=70;data2>=50;data2--) { delay_ms(100); }; siaga2_robot(); delay_ms(500); for (data2=50;data2<=69;data2++) { delay_ms(100); }; } void angka_enam() { //12 data1=64; //90 delay_ms(100); data2=69; //90 delay_ms(100); for (data3=75;data3<=78;data3++) //100 { delay_ms(100); }; //23 for (data1=64;data1<=69;data1++) //100 { delay_ms(100); }; data2=69 ; //90 delay_ms(100); data3=78; //100 delay_ms(100); //34 data2=69; //90 delay_ms(100); data1=69; //100 delay_ms(100); for (data3=78;data3<=81;data3++) //110 { delay_ms(100); }; //45 data2=69; //90 delay_ms(100); for (data1=69;data1>=64;data1--) //90 {
L43
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI delay_ms(100); }; data3=81; //110 delay_ms(100); //52 data1=64; //90 delay_ms(100); data2=69; //90 delay_ms(100); for (data3=81;data3>=78;data3--) //100 { delay_ms(100); } //mundur for (data2=69;data2>=50;data2--) { delay_ms(100); }; siaga2_robot(); delay_ms(500); for (data2=50;data2<=69;data2++) { delay_ms(100); }; } void angka_tujuh() { //12 for (data1=64;data1<=69;data1++)//100 { delay_ms(100); }; data2=69; //90 delay_ms(100); data3=75; //100 delay_ms(100); //23 data1=69; //100 delay_ms(100); data2=69; //90 delay_ms(100); for (data3=75;data3<=81;data3++) //100 { delay_ms(100); }; //mundur for (data2=69;data2>=50;data2--)
L44
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI { delay_ms(100); }; siaga2_robot(); delay_ms(500); for (data2=50;data2<=69;data2++) { delay_ms(100); }; } void angka_delapan() { //12 for (data1=64;data1<=69;data1++)//100 { delay_ms(100); }; data2=69; //90 delay_ms(100); data3=75; //90 delay_ms(100); //23 data1=69; //100 delay_ms(100); data2=69; //90 delay_ms(100); for (data3=75;data3<=78;data3++) //100 { delay_ms(100); }; //34 for (data1=69;data1>=64;data1--) //90 { delay_ms(100); }; data2=69; //90 delay_ms(100); data3=78; //100 delay_ms(100); //43 for (data1=64;data1<=69;data1++) //100 { delay_ms(100); }; data2=69; //90 delay_ms(100); data3=78; //100 delay_ms(100);
L45
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
//35 data1=69; //100 delay_ms(100); data2=70; //90 delay_ms(100); for (data3=78;data3<=81;data3++) //110 { delay_ms(100); }; //56 for (data1=69;data1>=64;data1--) //90 { delay_ms(100); }; data2=70; //90 delay_ms(100); data3=81; //110 delay_ms(100); //67 data1=64; //90 delay_ms(100); data2=67; //90 delay_ms(100); for (data3=81;data3>=75;data3--) //90 { delay_ms(100); }; //mundur for (data2=67;data2>=50;data2--) { delay_ms(100); }; siaga2_robot(); delay_ms(500); for (data2=50;data2<=69;data2++) { delay_ms(100); }; } void angka_sembilan() { //12 for (data1=64;data1>=60;data1--) //80 { delay_ms(100); };
L46
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI data2=69; //90 delay_ms(100); data3=75; //90 delay_ms(100); //23 data2=71; //90 delay_ms(100); data1=60; //80 delay_ms(100); for (data3=75;data3>=70;data3--) //80 { delay_ms(100); } //34 data2=71; //90 delay_ms(100); for (data1=60;data1<=64;data1++) //90 { delay_ms(100); }; data3=70; //80 delay_ms(100); //45 data2=69; //90 delay_ms(100); data1=64; //90 delay_ms(100); for (data3=70;data3<=78;data3++) //100 { delay_ms(100); }; //mundur for (data2=69;data2>=50;data2--) { delay_ms(100); }; siaga2_robot(); delay_ms(500); for (data2=50;data2<=69;data2++) { delay_ms(100); }; }
void main(void) { PORTB=0x00;
L47
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DDRB=0xFF; TCCR0=0x01; TCNT0=0x00; OCR0=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: Off // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x10; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; // // // // // //
Alphanumeric LCD initialization Connections specified in the Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: RS - PORTC Bit 0 RD - PORTC Bit 1 EN - PORTC Bit 2
L48
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L49
// D4 - PORTC Bit 4 // D5 - PORTC Bit 5 // D6 - PORTC Bit 6 // D7 - PORTC Bit 7 // Characters/line: 8 lcd_init(16); // Global enable interrupts #asm("sei") while (1) { siaga_robot(); delay_ms(500); komunikasi(); delay_ms(30); if(a==97) { lcd_gotoxy(0,1);lcd_putsf("ANGKA SATU");delay_ms(1000); angka_satu();delay_ms(500); lcd_clear();delay_ms(10); } else if(a==98) { lcd_gotoxy(0,1);lcd_putsf("ANGKA DUA");delay_ms(1000); angka_dua();delay_ms(500); lcd_clear();delay_ms(10); } else if(a==99) { lcd_gotoxy(0,1);lcd_putsf("ANGKA TIGA");delay_ms(1000); angka_tiga();delay_ms(500); lcd_clear();delay_ms(10); } else if(a==100) { lcd_gotoxy(0,1);lcd_putsf("ANGKA EMPAT");delay_ms(1000); angka_empat();delay_ms(10); lcd_clear();delay_ms(10); } else if(a==101) { lcd_gotoxy(0,1);lcd_putsf("ANGKA LIMA");delay_ms(1000); angka_lima();delay_ms(10); lcd_clear();delay_ms(10); }
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L50
else if(a==102) { lcd_gotoxy(0,1);lcd_putsf("ANGKA ENAM");delay_ms(1000); angka_enam();delay_ms(10); lcd_clear();delay_ms(10); } else if(a==103) { lcd_gotoxy(0,1);lcd_putsf("ANGKA TUJUH");delay_ms(1000); angka_tujuh();delay_ms(10); lcd_clear();delay_ms(10); } else if(a==104) { lcd_gotoxy(0,1);lcd_putsf("ANGKADELAPAN");delay_ms(1000 ); angka_delapan();delay_ms(10); lcd_clear();delay_ms(10); } else if(a==105) { lcd_gotoxy(0,1);lcd_putsf("ANGKASEMBILAN");delay_ms(1000); angka_sembilan();delay_ms(10); lcd_clear();delay_ms(10); } else if(a==106) { lcd_gotoxy(0,1);lcd_putsf("ANGKA NOL");delay_ms(1000); angka_nol();delay_ms(10); lcd_clear();delay_ms(10); } } }