Aplikasi Sensor Ultrasonik dan RTC Dengan Menggunakan Mikrokontroller Atmega535 Sebagai Alat Bantu Tunanetra

(1)

APLIKASI SENSOR ULTRASONIK DAN RTC DENGAN

MENGGUNAKAN MIKROKONTROLER ATMEGA8535 SEBAGAI

ALAT BANTU TUNA NETRA

TUGAS AKHIR

JUNITA M SINAMBELA

112408014

PROGRAM STUDI D-3 FISIKA

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2014


(2)

APLIKASI SENSOR ULTRASONIK DAN RTC DENGAN

MENGGUNAKAN MIKROKONTROLER ATMEGA8535 SEBAGAI

ALAT BANTU TUNA NETRA

TUGAS AKHIR

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh gelar Ahli Madya

JUNITA M SINAMBELA

112408014

PROGRAM STUDI D-3 FISIKA

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2014


(3)

PERNYATAAN

APLIKASI SENSOR ULTRASONIK DAN RTC DENGAN

MENGGUNAKAN MIKROKONTROLER ATMEGA8535 SEBAGAI

ALAT BANTU TUNA NETRA

TUGAS AKHIR

Saya mengakui bahwa Tugas Akhir ini adalah hasil karya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juni 2014

Junita M Sinambela 112408014


(4)

PERSETUJUAN

Judul : APLIKASI SENSOR ULTRASONIK DAN RTC DENGAN MENGGUNAKAN MIKROKONTROLER ATMEGA8535 SEBAGAI ALAT BANTU

TUNA NETRA

Kategori : TUGAS AKHIR

Nama : JUNITA M SINAMBELA

Nomor Induk Mahasiswa : 112408014

Program Studi : DIPLOMA TIGA (III) FISIKA

Departemen : FISIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Disetujui di

Medan, Juni 2014 Diketahui

Ketua Program Studi D3 Fisika Pebimbing,

Dr. Susilawati, MSi Junedi Ginting, SSi, M.Si NIP : 197412072000122001 NIP : 197306222003121001


(5)

PERSETUJUAN

Judul : APLIKASI SENSOR ULTRASONIK DAN RTC DENGAN MENGGUNAKAN MIKROKONTROLER ATMEGA8535 SEBAGAI ALAT BANTU

TUNA NETRA

Kategori : TUGAS AKHIR

Nama : JUNITA M SINAMBELA

Nomor Induk Mahasiswa : 112408014

Program Studi : DIPLOMA TIGA (III) FISIKA

Departemen : FISIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Disetujui di

Medan, Juli 2014 Diketahui

Ketua Program Studi D3 Fisika Pebimbing,

Dr. Susilawati, MSi Junedi Ginting, SSi, M.Si


(6)

PERNYATAAN

APLIKASI SENSOR ULTRASONIK DAN RTC DENGAN

MENGGUNAKAN MIKROKONTROLER ATMEGA8535 SEBAGAI

ALAT BANTU TUNA NETRA

TUGAS AKHIR

Saya mengakui bahwa Tugas Akhir ini adalah hasil karya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juli 2014

Junita M Sinambela 112408014


(7)

PENGHARGAAN

Puji dan syukur Penulis ucapkan kepada Tuhan Yesus Kristus atas limpahan berkat dan karunia-Nya memberikan pengetahuan, kesehatan, dan kesempatan kepada Penulis sehingga dapat menyelesaikan Laporan Tugas Akhir ini guna memenuhi syarat untuk memperoleh gelar Ahli Madya Program Studi Diploma III Fisika. Adapun judul Tugas Akhir ini adalah “APLIKASI SENSOR ULTRASONIK DAN RTC DENGAN MENGGUNAKAN MIKROKONTROLER ATMEGA8535 SEBAGAI ALAT BANTU TUNA NETRA”.

Terimakasih penulis sampaikan kepada Bapak Junedi Ginting, SSi, M.Si, selaku Dosen Pembimbing yang telah meluangkan waktunya selama penyusunan tugas akhir ini. Terimakasih kepada Bapak Dr. Sutarman, M.Sc dan Ibu Dr. Marpongahtun, M.Sc selaku Dekan dan Pembantu Dekan I Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara. Terimakasih juga kepada Bapak Dr. Marhaposan Situmorang selaku Ketua Departemen Fisika FMIPA USU, Ibu Dr. Susilawati, M.Si dan Bapak Dr. Perdinan Sinuhaji, MS selaku Ketua dan Sekretaris Program Studi DIII Fisika FMIPA USU, seluruh Staff dan dosen Fisika FMIPA USU, pegawai FMIPA USU dan rekan-rekan kuliah di FIN 2011. Akhirnya tidak terlupakan kepada kedua orangtua dan keluarga penulis yang selalu mendoakan, mendidik, dan memberikan dukungan baik moril maupun materil kepada penulis tanpa ada hentinya. Semoga Tuhan Yang Maha Esa akan membalasnya.


(8)

ABSTRAK

Informasi waktu yang terdapat pada jam digital konvensional dapat dikembangkan dengan menambahkan informasi waktu audible yang bermanfaat bagi para penyandang cacat tunanetra. Hal ini diwujudkan dengan mengintegrasikan unit penyimpan suara dan unit real time clock (RTC) pada jam digital tunanetra berbasis mikrokontroler MCS-51 serta menggunakan sensor yang dapat mengukur hingga berjarak 3 m ke depan. Kompatibilitas ISD25120 dengan mikrokontroler memberikan kemudahan dalam pemutaran ulang data suara yang tersimpan pada unit penyimpanan suara dengan kendali mikrokontroler. Demikian pula dengan unit RTC yang dapat menjaga ketepatan data jam secara real time, sangan kompatibel dengan unit mikrokontroler. Unit mikrokontroler mendeteksi interupsi permintaan informasi waktu disusun terlebih dahulu dengan mengambil data jam pada unit RTC. Ada unit penyimpan suara, setiap angka, nama hari, bulan, dering dan frase kata disimpan pada alamat tersendiri. Unit mikrokontroler kemudian berperan mencocokkan data jam pada RTC dengan data suara pada unit penyimpan suara yang sesuai. Sehingga, terciptalah vokalisasi data jam dan kalender sebagai informasi waktu.


(9)

DAFTAR ISI

Halaman

Persetujuan ... i

Pernyataan ... ii

Penghargaan ... iii

Abstrak ... iv

Daftar Isi ... v

Daftar Tabel ... viii

Daftar Gambar ... ix

Bab 1. Pendahuluan 1.1 Latar Belakang ... 1

1.2 Rumusan Masalah ... 2

1.3 Tujuan Penulisan ... 3

1.4 Batasan Masalah ... 3

1.5 Manfaat Penulisan ... 3

1.6 Teknik Pengumpulan Data ... 4

1.7 Sistematika Penulisan ... 5

Bab 2. Dasar Teori 2.1 Mikrokontroler ATMega 8535 ……… 6

2.1.1 Deskripsi Mikrokontroler ATMega 8535 ……….. 6


(10)

2.1.3 Peta Memori ATMega 8535 ... 12

2.1.4 Program Memori ... 12

2.1.5 Data Memori ... 13

2.1.6 EPROM Data Memory ... 14

2.2 Sensor Jarak Ultrasonik HC-SR04 ... 14

2.2.1 Prinsip Kerja Sensor Ultrasonik ... 16

2.3 RTC DS 1307 (Time Digital) ... 16

2.3.1 Fitur-fitur DS1307 ... 17

2.3.2 Cara Pembacaan DS1307 ... 18

2.3.3 Pemrograman RTC DS 1307 dengan Codevision ... 19

2.4 WTV – 020SD ( Modul Audio ) ... 20

2.5 Getar HP (Vibrator) ... 22

2.5.1 Sifat Dasar Getaran ... 22

2.5.2 Sistem dan Gerakan Getaran ... 23

2.6 Buzzer ... 23

2.7 Bahasa Pemrograman C ... 24

2.7.1 Deskripsi Bahasa C ... 24

2.7.2 Syntax Dalam C ... 25

2.7.3 Ekspresi ... 31

Bab 3. Perancangan dan Pembuatan 3.1 Rangkaian Perangkat Keras (Hardware) ... 37

3.1.1 Diagram Blok dan Cara Kerja Rangkaian ... 37

3.1.2 Perancangan Rangkaian Catu Daya ... 38


(11)

3.1.4 Perancangan Rangkaian Sensor Ultrasonik dengan

Mikrokontroler AVR ATMega 8535 ... 42

3.1.5 Perancangan Rangkaian WTV – 020SD ... 43

3.1.6 Rangkaian Input Push Button ... 44

3.1.7 Perancangan Sistem RTC DS 1307 ... 45

3.1.8 Rangkaian Buzzer dan Vibrator ... 47

3.1.9 Rangkaian Keseluruhan Tongkat ... 48

3.2 Rangkaian Perangkat Lunak (Software) ... 49

3.2.1 Flowchart Sistem ... 49

Bab 4. Pengujian Rangkaian 4.1 Pengujian dan Analisa Rangkaian Sensor Ultrasonik ... 51

4.2 Pengujian Rangkaian Power Supply ... 54

4.3 Pengujian Rangkaian Mikrokontroler ATMega 8535 ... 54

4.4 Pengujian Input Push Button ... 55

4.5 Pengujian Modul Suara WTV – 020SD ... 56

4.6 Pengujian Buzzer ... 56

4.7 Pengujian Rangkaian RTC DS-1307 ... 58

4.8 Pengujian Buzzer dan Vibrator ... 60

Bab 5. Kesimpulan dan Saran 5.1 Kesimpulan ... 63

5.2 Saran ... 63


(12)

DAFTAR TABEL

Tabel 2.1 Macam-macam Tipe Data Dasar dalam C ………..…..……... 27

Tabel 2.2 Operator Aritmetika ………... 31

Tabel 2.3 Operator Relasi ………..………… 33

Tabel 2.4 Operator Manipulasi Bit ……….………... 34

Tabel 2.5 Operator Manipulasi Bit ………...………... 34

Tabel 2.6 Operator Logika ………...……….. 35

Tabel 2.7 Operator Penugasan ……… 36

Tabel 4.1 Data Jarak Deteksi Berbagai Halangan ……….. 51


(13)

DAFTAR GAMBAR

Gambar 2.1 Blok Diagram Fungsional ATmega8535 ……….. 9

Gambar 2.2 Konfigurasi IC Mikrokontroller ATmega 8535 ………..…….. 11

Gambar 2.3 Peta Memori Program ………... 13

Gambar 2.4 EEPROM Data Memori ………... 14

Gambar 2.5 Sensor Ultrasonik HC-SR04 ………... 15

Gambar 2.6 Pin- Pin RTC DS1307 ………...………….... 17

Gambar 2.7 Komunikasi Serial I2C ………..….... 18

Gambar 2.8 DS1307 Address ……….……….. 18

Gambar 2.9 CodevisionWizardAVR untuk RTC ………... 19

Gambar 2.10 Simbol dan Bentuk Buzzer ………...………….. 24

Gambar 3.1. Diagram Blok Rangkaian ……….... 37

Gambar 3.2 Rangkaian Catu Daya ………...….. 39

Gambar 3.3 Rangkaian Transmitter ……….. 40

Gambar 3.4 Rangkaian Receiver ………..…... 40

Gambar 3.5 Jarak antara Tx – Rx ………..………..……... 40

Gambar 3.6 Keluaran Pulsa Ultrasonik ………..….... 41

Gambar 3.7 Rangkaian sensor ultrasonik dengan Mikrokontrolller AVR ATmega8535 ……….…………...…... 42

Gambar 3.8 Rangkaian WTV-020SD ………...………..….... 43

Gambar .9 Rangkaian Input Push Button ………..…..….... 45

Gambar . Antarmuka Bagian RTC DS1307………….………..….... 45


(14)

Gambar 3.12 Rangkaian aplikasi modul RTC DS1307 yang dihubungkan ke

mikrokontroller ATMega 8535 ………..……….... 47

Gambar . Rangkaian Buzzer dan Vibrator ……….... 48

Gambar . Rangkaian Keseluruhan ………..….... 48

Gambar 3.15 Flowchart Program ………..……... 50

Gambar . Keypad aktif low ………....….... 55

Gambar 4.2 Buzzer Aktif High ………..…..., 57

Gambar 4.3 Buzzer rangkaian mikro, ds1307 dan lcd ……….…..….... 60


(15)

ABSTRAK

Informasi waktu yang terdapat pada jam digital konvensional dapat dikembangkan dengan menambahkan informasi waktu audible yang bermanfaat bagi para penyandang cacat tunanetra. Hal ini diwujudkan dengan mengintegrasikan unit penyimpan suara dan unit real time clock (RTC) pada jam digital tunanetra berbasis mikrokontroler MCS-51 serta menggunakan sensor yang dapat mengukur hingga berjarak 3 m ke depan. Kompatibilitas ISD25120 dengan mikrokontroler memberikan kemudahan dalam pemutaran ulang data suara yang tersimpan pada unit penyimpanan suara dengan kendali mikrokontroler. Demikian pula dengan unit RTC yang dapat menjaga ketepatan data jam secara real time, sangan kompatibel dengan unit mikrokontroler. Unit mikrokontroler mendeteksi interupsi permintaan informasi waktu disusun terlebih dahulu dengan mengambil data jam pada unit RTC. Ada unit penyimpan suara, setiap angka, nama hari, bulan, dering dan frase kata disimpan pada alamat tersendiri. Unit mikrokontroler kemudian berperan mencocokkan data jam pada RTC dengan data suara pada unit penyimpan suara yang sesuai. Sehingga, terciptalah vokalisasi data jam dan kalender sebagai informasi waktu.


(16)

BAB 1

PENDAHULUAN

 

1.1  Latar Belakang Masalah 

Sistem Pengukuran merupakan hal yang penting di bidang teknologi dan industri. Banyaknya peralatan, terutama peralatan elektronik juga harus dapat mengukur suatu besaran–besaran fisika sehingga dapat membantu manusia dalam melakukan suatu pekerjaan. Instrument adalah sensor, alat ukur, alat transmisi, maupun alat kendali (kontrol) yang terdapat dalam system pengendalian sebuah proses. Sedangkan instrumentasi adalah susunan dari rangkaian instrument yang mengukur, menunjukkan, mencatat dan mengendalikan harga besaran proses ke harga yang dikehendaki. Menurut kegunaannya alat instrument dapat dikelompokkan menjadi :

a. Penunjuk ( Indicator ) b. Pengukur ( Meassurer ) c. Pencatat ( Recorder )

Namun akan ada masalah jika suatu alat ukur tidak memiliki keakuratan sehingga akan mengganggu pekerjaan manusia dalam suatu proses pengukuran. Jadi untuk mengatasi masalah dalam suatu pengukuran diperlukan alat yang bisa mengukur dengan tingkat akurasi yang baik sehingga tingkat kesalahan pengukuran pun dapat di minimalisir. Untuk merancang alat seperti ini dibutuhkan sebuah alat / komponen yang dapat mengukur dengan akurasi yang baik. Kemampuan ini dimiliki oleh sebuah computer (PC), namun tidak lah efisien jika harus menggunakan komputer hanya untuk keperluan tersebut diatas. Untuk itu komputer dapat digantikan dengan sebuah mikrokontroler. Mikrokontroler merupakan sebuah chip atau IC yang di dalamnya terdapat sebuah prosesor dan flash memori yang dapat dibaca/ditulis


(17)

sampai 1000 kali, sehingga biaya pengembangan menjadi murah karena dapat dihapus kemudian kemudian diisi kembali dengan program lain sesuai dengan kebutuhan.

Fungsi utama dari pemilih waktu atau timer adalah menempatkan informasi sekitar waktu yang lewat pada rangkaian kontrol. Kontrol pemilihan waktu dapat dicapai dengan menggunakan komponen pneumatis, elektromekanis, atau elektronis. Pembedaan dapat dibuat antara timer (pemilih waktu) dengan relai tunda-waktu. Umumnya relai tunda-waktu adalah piranti yang mempunyai fungsi pemilihan waktu setelah kumparan timer telah diberi tenaga atau dihilangkan tenaganya. Apabila referensi dibuat pada timer, fungsi waktu dapat mulai pada satu kontak atau lebih pada pemberian energi , atau pada setiap waktu setelah pemberian energi selama siklus waktu yang disetel sebelumnya.

Demikian juga fungsi pemilihan waktu dapat berhenti pada satu kontak atau lebih selama siklus sesudah pemilihan waktu telah dimulai pada kontak tertentu. Pada umumnya, timer membuka atau menutup rangkaian listrik pada operasi sesuai dengan waktu yang diprogram.

1.2 Rumusan Masalah

1. Bagaimana menggunakan sensor ultrasonik sebagai alat ukur jarak. 2. Bagaimana menggunakan RTC sebagai alat informasi waktu.

3. Bagaimana menggunakan Buzzer dan headset sebagai indikator jarak dan waktu.

1.3 Tujuan Penulisan

Adapun tujuan penulisan ini adalah sebagai berikut :

1. Membuat suatu alat bantu tuna netra dengan memanfaatkan sensor ultrasonik sebagai alat sensor jarak.

2. Membahas output peralatan pada buzzer (sebagai indikator suara) dan headset sebagai indikator waktu atau jam.


(18)

3. Membuat suatu aplikasi nyata berdasarkan teori yang dipelajari selama perkuliahan.

1.4 Batasan Masalah

Desain dan pembuatan alat ini dibatasi dengan: 1. Untuk mendeteksi jarak dengan sensor ultrasonik.

2. Kontrol peralatan ini dengan menggunakan mikrokontroler ATMega8535. 3. Range jarak yang dikontrol 5 cm s/d 150 cm.

1.5 Manfaat Penulisan

Laporan tugas akhir ini diharapkan bermanfaat bagi :

1. Membantu tuna netra sebagai alat pandu dalam melakukan aktivitas perjalanan. 2. Menambah wawasan kelulusan akademik sks.

1.6 Teknik Pengumpulan Data

Data mengenai perancangan atau pembuatan pendeteksi jarak dan suara menggunakan sensor ultrasonik diperoleh penulis dengan berbagai cara. Adapun cara yang dilakukan penulis adalah :

1. Melakukan studi ke perpustakaan ( literature ).

2. Mengadakan konsultasi dan bimbingan dengan dosen pebimbing.

3. Berpedoman pada buku pedoman alat pendeteksi jarak dengan menggunakan sensor untrasonik.

4. Perancangan dan pembuatan alat yang dilakukan meliputi perancangan alat dari sistem berupa hardware dan software.


(19)

1.7 Sistematika Penulisan

Untuk mempermudah pembahasan dan pemahaman maka penulis membuat sistematika pembahasan bagaimana sebenarnya prinsip kerja dari alat yang yang dapat mengukur jarak dan menggunakan rancangan jam digital yang sudah siatur kurun waktu nya sebagai pelengkap dari alat yang memanfaatkan mikrokontroler AT8535 dan sensor. Maka penulis menulis laporan ini sebagai berikut:

BAB I PENDAHULUAN

Dalam bab ini berisikan latar belakang , rumusan masalah, tujuan penulisan, serta sistematika penulisan.

BAB II DASAR TEORI

Landasan teori, dalam bab ini dijelaskan tentang teori pendukung yang digunakan untuk pembahasan dan cara kerja dari rangkaian. Teori pendukung itu tentang perangkat keras (hardware) antara lain sebagai berikut: mikrokontroler ATMega8535, sensor jarak ultrasonik (HC-SR04), Real Time Colock (RTC DS 1307) dan Modul Audio (-20SD)

BAB III PERANCANGAN DAN PEMBUATAN

Pada bagian ini akan dibahas perancangan dari alat, yaitu diagram blok dari rangkaian, skematik dari masing-masing rangkaian dan diagram alir dari program yang akan diisikan ke mikrokontroler ATMega8535.

BAB IV PENGUJIAN RANGKAIAN

Pada bab ini akan dibahas hasil analisa dari rangkaian dan sistem kerja alat, penjelasan mengenai program-program yang digunakan untuk mengaktifkan rangkaian, penjelasan mengenai program yang diisikan ke mikrokontroler ATmega8535.


(20)

Bab ini merupakan penutup yang meliputi tentang kesimpulan dari pembahasan yang dilakukan dari laporan proyek ini serta saran apakah rangkaian ini dapat dibuat lebih efisien dan dikembangkan perakitannya pada suatu metode lain yang mempunyai sistem kerja yang sama.


(21)

BAB 2

DASAR TEORI

2.1 Mikrokontroler ATMega 8535

2.1.1 Deskripsi Mikrokontroler ATMega 8535

Mikrokontroler, sesuai namanya adalah suatu alat atau komponen pengontrol atau pengendali yang berukuran mikro atau kecil. Sebelum ada mikrokontroler, telah ada terlebih dahulu muncul mikroprosesor. Bila dibandingkan dengan mikroprosesor, mikrokontroler jauh lebih unggul karena terdapat berbagai alasan, diantaranya :

1. Tersedianya I/O

I/O dalam mikrokontroler sudah tersedia sementara pada mikroprosesor dibutuhkan IC tambahan untuk menangani I/O tersebut. IC I/O yang dimaksud adalah PPI 8255.

2. Memori Internal

Memori merupakan media untuk menyimpan program dan data sehingga mutlak harus ada. Mikroprosesor belum memiliki memori internal sehingga memerlukan IC memori eksternal. Dengan kelebihan-kelebihan di atas, ditambah dengan harganya yang relatif murah sehingga banyak penggemar elektronika yang kemudian beralih kemikrokontroler. Namun demikian, meski memiliki berbagai kelemahan, mikroprosesor tetap digunakan sebagai dasar dalam mempelajari mikrokontroler. Inti kerja dari keduanya adalah sama, yakni sebagai pengendali suatu sistem. Mikrokontroler merupakan komputer didalam chip yang digunakan untuk mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa disebut “pengendali kecil“ dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi diperkecil dan akhirnya terpusat serta dikendalikan oleh mikrokontroler ini.


(22)

Dengan menggunakan mikrokontroler ini maka: 1. Sistem elektronik akan menjadi lebih ringkas.

2. Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari sistem adalah perangkat lunak yang mudah dimodifikasi.

3. Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak.

Namun demikian tidak sepenuhnya mikrokontroler bisa mereduksi komponen IC TTL dan CMOS yang seringkali masih diperlukan untuk aplikasi kecepatan tinggi atau sekedar menambah jumlah saluran input dan output (I/O). dengan kata lain, mikrokontroler adalah versi mini atau mikro dari sebuah komputer karena mikrokontroler sudah mengandung beberapa bagian yang langsung bisa dimanfaatkan, misalnya port paralel, port serial, komparator, konversi digital ke analog (DAC), konversi analog ke digital (ADC), dan sebagainya menggunakan Minimum Sistem yang tidak rumit atau kompleks.

Mikrokontroler adalah otak dari suatu sistem elektronika seperti halnya mikroprosesor sebagai otak komputer. Namun mikrokontroler memiliki nilai tambah karena didalamnya sudah terdapat memori dan sistem input/output dalam suatu kemasan IC. Mikrokontroler AVR (Alf and Vegard’s RISC processor) standar memiliki arsitektur 8-bit, dimana semua instruksi dikemas dalam kode 16- bit dan sebagian besar instruksi dieksekusi dalam satu siklus clock. Berbeda dengan instruksi MCS-51 yang membutuhkan 12 siklus clock karena memiliki arsitektur CISC (seperti komputer).Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu keluarga ATTiny, keluarga AT90Sxx, keluarga ATMega dan AT89RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, mereka bisa dikatakan hampir sama. Oleh karena itu, dipergunakan salah satu AVR produk Atmel, yaitu ATMega8535. Selain mudah didapatkan dan lebih murah ATMega 8535 juga memiliki fasilitas yang lengkap.


(23)

Untuk tipe AVR ada 3 jenis yaitu: ATTiny, AVR klasik, dan ATMega. Perbedaannya hanya pada fasilitas dan I/O yang tersedia serta fasilitas lain seperti ADC, EEPROM, dan lain sebagainya. Salah satu contohnya adalah ATMega 8535. Memiliki teknologi RISC dengan kecepatan maksimal 16 MHz membuat ATMega 8535 lebih cepat bila dibandingkan dengan varian MCS51. Dengan fasilitas yang lengkap tersebut menjadikan ATMega 8535 sebagai mikrokontroler yang powerfull. Adapun blok diagramnya sebagai berikut :


(24)

1. Salur

G

Dari gamba ran I/O seba

Gambar 2.1

ar tersebut d anyak 32 bu

1 Blok Diag

dapat dilihat uah, yaitu Po

gram Fungs

at ATMega 8 ort A, Port

sional ATm

8535 memil B, Port C, P

mega8535

liki bagian s Port D.


(25)

2. ADC 10 bit sebanyak 8 saluran.

3. Tiga buah Timer/Counter dengan kemampuan pembandingan. 4. CPU yang terdiri atas 32 buah register.

5. Watchdog Timer dengan osilator internal. 6. SRAM sebesar 512 byte.

7. Memori Flash sebesar 8 kb dengan kemampuan Read While Write. 8. Unit interupsi internal dan eksternal.

9. Port antarmuka SPI.

10. EEPROM sebesar 512 byte yang dapat diprogram saat operasi. 11. Antarmuka komparator analog.

12. Port USART untuk komunikasi serial.

Kapabilitas detail dari ATMega8535 adalah sebagai berikut :

1. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz.

2. Kapabiltas memori flash 8 Kb, SRAM sebesar 512 byte, dan EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar 512 byte.

3. ADC internal dengan fidelitas 10 bit sebanyak 8 channel.

4. Portal komunikasi serial (USART) dengan kecepatan maksimal 2,5 Mbps. 5. Enam pilihan mode sleep menghemat penggunaan daya listrik.

2.1.2 Konfigurasi PIN ATMega 8535

Mikrokontroler ATMega8535 mempunyai jumlah pin sebanyak 40 buah, dimana 32 pin digunakan untuk keperluan port I/O yang dapat menjadi pin input/output sesuai konfigurasi. Pada 32 pin tersebut terbagi atas 4 bagian (port), yang masing-masingnya terdiri atas 8 pin. Pin-pin lainnya digunakan untuk keperluan rangkaian osilator, supply tegangan,


(26)

reset, serta tegangan referensi untuk ADC. Untuk lebih jelasnya, konfigurasi pin ATMega8535 dapat dilihat pada gambar 2.2

Gambar 2.2 Konfigurasi IC Mikrokontroller ATmega 8535

Berikut ini adalah susunan pin-pin dari ATMega8535;

a. VCC merupakan pin yang berfungsi sebagai pin masukkan catu daya. b. GND merupakan pin ground.

c. Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC.

d. Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu Timer/Counter, Komparator Analog, dan SPI.

e. Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI, Komparator Analog, dan Timer Oscilator.

f. Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu Komparator Analog, Interupsi Iksternal dan komunikasi serial USART.

g. Reset merupakan pin yang digunakan untuk mereset mikrokontroler

h. XTAL1 dan XTAL2 merupakan pin masukkan clock eksternal (osilator menggunakan kristal, biasanya dengan frekuensi 11,0592 MHz).


(27)

2.1.3 Peta Memori ATMega8535

ATMega8535 memiliki dua jenis memori yaitu Data Memory dan Program Memory ditambah satu fitur tambahan yaitu EEPROM Memory untuk penyimpan data.

2.1.4 Program Memory

ATMEGA8535 memiliki On-Chip In-System Reprogrammable Flash Memory untuk menyimpan program. Untuk alasan keamanan, program memory dibagi menjadi dua bagian, yaitu Boot Flash Section dan Application Flash Section Boot Flash Section digunakan untuk menyimpan program Boot Loader, yaitu program yang harus dijalankan pada saat AVR reset atau pertama kali diaktifkan.

Gambar 2.3 Peta Memori Program

Application Flash Section digunakan untuk menyimpan program aplikasi yang dibuat user. AVR tidak dapat menjalakan program aplikasi ini sebelum menjalankan program Boot Loader. Besarnya memori Boot Flash Section dapat deprogram dari 128 word sampai 1024 word tergantung setting pada konfigurasi bit di register BOOTSZ. Jika Boot Loader diproteksi, maka program pada Application Flash Section juga sudah aman.


(28)

2.1.5 Data Memory

Gambar berikut menunjukkan peta memori SRAM pada ATMEGA8535. Terdapat 608 lokasi address data memori. 96 lokasi address digunakan untuk Register File dan I/O Memory sementara 512 likasi address lainnya digunakan untuk internal data SRAM. Register file terdiri dari 32 general purpose working register, I/O register terdiri dari 64 register.

2.1.6 EPROM Data Memory

ATMEGA8535 memiliki EEPROM 8 bit sebesar 512 byte untuk menyimpan data. Loaksinya terpisah dengan system address register, data register dan control register yang dibuat khusus untuk EEPROM. Alamat EEPROM dimulai dari $000 sampai $1FF.

$000

$01F

Gambar 2.4 EEPROM Data Memori

2.2 Sensor Jarak Ultrasonik HC-SR04

HC-SR04 adalah sebuah modul yang berfungsi untuk melakukan pengukuran jarak suatu benda/ halangan dengan memanfaatkan sinyal suara ultrasonic. Performa yang stabil dan akurasi yang tinggi dengan harga yang murah merupakan kelebihan dari HC-SR04. Karena kelebihannya, HC-SR04 banyak dipakai dalam berbagai aplikasi pengukuran jarak.

Berikut adalah spesifikasi dari HC-SR04 :


(29)

a. Supply tegangan 5V DC. b. Arus Quiescent < 2mA. c. Sudut efektif < 15 derajat. d. Jarak pengukuran 2 – 500 cm. e. Resolusi 0.3 cm.

Berikut adalah pin dari HC-SR04 : 1. VCC : Input supply 5V

2. Trig : Input untuk memberikan pulsa trigger 3. Echo : Output untuk pulsa Echo

4. GND : Input supply Ground


(30)

Gambar 2.5 Sensor Ultrasonik HC-SR04

2.2.1 Prinsip Kerja Sensor Ultrasonik

Prinsip kerja dari sensor ultrasonik adalah sebagai berikut :

1. Sinyal dipancarkan oleh pemancar ultrasonik. Sinyal tersebut berfrekuensi diatas 20kHz, biasanya yang digunakan untuk mengukur jarak benda adalah 40kHz. Sinyal tersebut di bangkitkan oleh rangkaian pemancar ultrasonik.

2. Sinyal yang dipancarkan tersebut kemudian akan merambat sebagai sinyal / gelombang bunyi dengan kecepatan bunyi yang berkisar 340 m/s. Sinyal tersebut kemudian akan dipantulkan dan akan diterima kembali oleh bagian penerima Ultrasonik.

Setelah sinyal tersebut sampai di penerima ultrasonik, kemudian sinyal tersebut akan diproses untuk menghitung jaraknya. Jarak dihitung berdasarkan rumus :

S = 340.t/2

dimana S adalah jarak antara sensor ultrasonik dengan bidang pantul, dan t adalah selisih waktu antara pemancaran gelombang ultrasonik sampai diterima kembali oleh bagian penerima ultrasonik.


(31)

2.3 RTC DS 1307 (Time Digital)

RTC yang dimaksud disini adalah real time clock (bukan real time computing), biasanya berupa IC yg mempunyai clock sumber sendiri dan internal batery untuk menyimpan data waktu dan tanggal. Sehingga jika sistem komputer / mikrokontroler mati waktu dan tanggal didalam memori RTC tetap uptodate. Salah satu RTC yang sudah populer dan mudah penggunaanya adalah DS1307, apalagi pada Codevision sudah tersedia fungsi-fungsi untuk mengambil data waktu dan tanggal untuk RTCDS1307 ini.

Gambar 2.6 Pin- Pin RTC DS1307

2.3.1 Fitur-fitur DS1307:

a. Real-time clock (RTC) menghitung detik, menit, jam,tanggal,bulan dan hari dan tahun valid sampai tahun 2100

b. Ram 56-byte, nonvolatile untuk menyimpan data. c. Dua jalur serial interface (I2C).

d. Output gelombang kotak yg diprogram. f. Automatic power-fail detect and switch

g. Konsumsi arus hanya 500nA pada batery internal. h. Mode dg oscillator running.


(32)

Untuk membaca data tanggal dan waktu yg tersimpan di memori RTC DS1307 dapat dilakukan melalui komunikasi serial I2C seperti pada gambar berikut:

Gambar 2.7 Komunikasi Serial I2C

2.3.2 Cara pembacaan DS1307

DS1307 beropersai sebagai slave pada bus I2C. Cara Access pertama mengirim sinyal START diikuti device address dan alamat sebuah register yg akan dibaca. Beberapa register dapat dibaca sampai STOP condition dikirim.


(33)

Data waktu dan tanggal tersimpan dalam memori masing masing 1 byte , mulai dari alamat 00H sampai 07H. Sisanya (08H ~ 3FHalamat RAM yg bisa digunakan).

2.3.3 Pemrograman RTC DS1307 dengan Codevision.

Codevision sudah menyediakan fungsi-fungsi khusus untuk mengakses data DS1307 jadi kita tinggal menggunakanya. Apalagi dengan fasilitas codewizard pemrograman RTC menjadi mudah.

Gambar 2.9 CodevisionWizardAVR untuk RTC

Setelah kita klik ok maka akan tersedia template Code program sbb: // DS1307 Real Time Clock initialization

// Square wave output on pin SQW/OUT: Off // SQW/OUT pin state: 0

rtc_init(0,0,0);

//rtc_set_time(12,30,00); //rtc_set_date(27,27,05,14);


(34)

2.4 WTV -020SD (Modul Audio)

Modul chip WTV-020SD membaca berkas audio/suara dalam format AD4 dengan memainkan suara yang sudah direkam sebelumnya (menggunakan komputer) dan disimpan pada media penyimpanan kartu mikro SD (file storage Micro-SD-Card) dengan sistem berkas FAT (File Allocation Table file system).

Fitur dan Spesifikasi WTV-020-SD Audio Player Module

1. Mengurangi dan memainkan (decode & play) berkas audio Microsoft Wave Audio (*.WAV) dengan sampling rate 6 kHz hingga 16 kHz. Pastikan penyandian dalam format PCM 4-bit / 8-bit, uncompressed.

2. Mengurai dan memainkan (decode & play) berkas audio dengan 4-bit ADPCM (*.AD4) dengan sampling rate antara 6 kHz hingga 32 kHz, juga mendukung sampling rate 36 kHz. 3. Membaca berkas audio yang tersimpan kartu SD berkecepatan tinggi (High-Speed SD-Card) berkapasitas hingga 2 GB via on-board SD-Card Reader (file system: FAT).

4. Dapat mengenali format dan sampling rate dari berkas audio yang tersimpan dan menguraikannya sesuai meta data yang tertera secara otomatis

5. Dapat dikendalikan langsung oleh pemakai dengan menyambungkan tombol (moda manual) ataupun secara terprogram lewat koneksi serial (sambungkan dengan pin digital I/O pada mikrokontroler / Arduino board Anda; membutuhkan hanya 2 pin untuk koneksi: DI / Data Input dan CLK / CLocK signal).

6. Memori internal untuk mengingat posisi terakhir pada berkas audio yang dimainkan

Modul ini dengan modus MP3 , modus kunci (kontrol 3 kelompok suara dengan penyesuaian volume atau 5 kelompok suara ) , 2 -line modus serial dan modus lingkaran putar (diaktifkan setelah power on , dengan fungsi memori dalam mode ini ) . Mode MP3 : dengan bermain / stop , berikutnya, sebelumnya , vol + , vol - fungsi ; modus kunci ( 3 kelompok suara ) salah satu kunci memicu salah satu kelompok suara , dan dengan vol - , vol


(35)

+ , dengan semua tombol mode memicu standarnya adalah tepi RETRIGGER ; modus kunci ( 5 kelompok suara ) : salah satu pemicu utama satu kelompok suara.

1. Semua tombol yang tepi RETRIGGER

2. Semua tombol yang on / off (suara tidak siklus ketika selesai )

3. Semua kunci berada di / off ( siklus suara saat selesai , modus loop bermain : setelah dinyalakan , suara akan bermain secara otomatis dengan fungsi memori , tidak perlu untuk memicu I / O ( jika daya terputus saat bermain suara 2 , itu akan mulai dari suara 2 . atau suara 3 ketika tenaga listrik dihidupkan lagi ).

Tiga hal ini dapat disesuaikan untuk fungsi tertentu, 2 -line modus serial: WTV020 - SD dikendalikan oleh MCU mengirimkan data melalui CLK dan dI , yang bisa memainkan suara-suara di alamat apapun . Voices, termasuk bisu , dapat dikombinasikan untuk bermain dalam mode ini. Ketika mengubah suara dengan card reader SD dan PC , kartu SD harus format FAT , sampling rate didukung dari 6kHz ke 32KHz dan 32KHz untuk format suara ad4 , 6kHz ~ 16KHz untuk format suara WAV . Dukungan 1GB max kartu SD. atau SPI Flash 64MB max.; format file dukungan 4 bit ADCPM; sampling rate dari 6kHz ke 36kHz untuk format suara ad4; sampling rate dari 6kHz ke 16KHz untuk format suara WAV; 16 bit DAC / PWM output audio; modus kunci, modus MP3, 2-line modus serial adalah opsional; berkas pendukung copy ke SD card via PC; tegangan kerja: DC 2.7 ~ 3.5V; arus diam: 3uA.

Aplikasi Modul ini dapat digunakan dalam mobil (bug mobil, radar parkir, sistem navigasi GPS), sistem cerdas rumah, bug perumahan, perangkat medis suara, alat rumah tangga (memasak induksi, memasak nasi, microwave oven), pemain game, mesin belajar (berbicara book), fasilitas lalu lintas cerdas (alat gerbang, tempat parkir), peralatan komunikasi, kontrol industri dan mainan.


(36)

Vibrator merupakan motor kecil listrik (dinamo) yang mempunyai bandul tidak seimbang. Disaat bandul tersebut berputar dengan cepat, maka akan menghasilkan getaran lembut yang akan terasa oleh manusia.

2.5.1 Sifat Dasar Getaran

Getaran adalah gerakan bersosialisasi dan sistem mekanis serta kondisi-kondisi dinamisnya. Gerakan ini dapat berupa gerakan beraturan dan berulang secara kontinyu atau dapat juga berupa gerakan tidak beraturan atau acak. Umumnya getaran ditimbulkan akibat adanya gaya yang juga bervariasi dengan waktu. Meskipun pengertian getaran selalu dikaitkan dengan osilasi mekanis, pengertian yang sama juga terdapat pada bidang lain, seperti gelombang elektromagnetik, akustik dan arus listrik bolak-balik. Kadang-kadang suatu kondisi interaksi antara masalah yang berbeda terjadi, misalnya, getaran mekanis menyebabkan osilasi listrik atau sebaliknya. Supaya getaran mekanis terjadi, dibutuhkan minimal dua elemen pengumpul energi.

2.5.2 Sistem dan Gerakan Getaran

Supaya getaran mekanis terjadi, dibutuhkan minimal dua elemen pengumpul energi. Yang pertama adalah massa yang menyimpan energi kinetik dan yang kedua adalah alat elastik seperti pegas yang menyimpan energi potensial. Satu gerakan penuh dari gerak berulang disebut satu siklus. Waktu yang dibutuhkan untuk satu siklus gerakan disebut perioda. Jumlah gerakan berulang yang terjadi salah satu unit waktu disebut frekuensi. Sistem getaran dapat juga mengalami hambatan atau resistansi oleh gesekan udara, peredaman kejutan (shockabsorber) serta dari elemen disipasi lainnya. Resistensi ini umumnya dikenal sebagai redaman. Sistem getaran yang mempunyai damping dikenal sebagai sistem teredam.


(37)

Buzzer adalah sebuah komponen elektronika yang berfungsi untuk mengubah getaran listrik menjadi getaran suara. Buzzer terdiri dari kumparan yang terpasang pada diafragma dan kemudian kumparan tersebut dialiri arus sehingga menjadi elektromagnet, kumparan tadi akan tertarik ke dalam atau keluar, tergantung dari arah arus dan polaritas magnetnya, karena kumparan dipasang pada diafragma maka setiap gerakan kumparan akan menggerakkan diafragma secara bolak-balik sehingga membuat udara bergetar yang akan menghasilkan suara. Buzzer biasa digunakan sebagai indikator bahwa proses telah selesai atau terjadi suatu kesalahan pada sebuah alat (alarm). Simbol buzzer dan bentuk buzzer adalah sebagai berikut:

(a) (b)

Gambar 2.10 (a) Simbol buzzer, (b) Bentuk Buzzer

2.7 Bahasa Pemrograman C

Software atau perangkat lunak merupakan salah satu komponen utama dalam sistem mikrokontroler. Kerja mikrokontroler bergantung dari software yang telah ditanam di dalam memorinya. Software mikrokontroler berupa rangkaian instruksi yang deprogram sesuai keinginan programmer.

2.7.1 Deskripsi Bahasa C

Bahasa C termasuk dalam bahasa tingkat tinggi yang instruksinya mudah untuk dipahami. Bahasa ini banyak digunakan dalam pemrograman komputer untuk membuat software perkantoran, database, antarmuka computer dengan perangkat tambahan, serta


(38)

banyak aplikasi lainnya. Mikrokontroler bukan hanya punya bahasa assembler. Mikrokontroler juga bisa diprogram menggunakan bahasa C karena saat ini telah banyak mikrokontroler yang mempunyai compiler bahasa C. Compiler inilah yang menerjemahkan bahasa C menjadi Object Code untuk didownload ke ROM mikrokontroler.

Beberapa keuntungan pengguna bahasa C dibandingkan bahasa assembler yaitu:

a. Lebih cepat dalam implementasi software karena operasi yang panjang dengan bahasa assembler bisa ditulis lebih pendek dan lebih mudah dengan bahasa C.

b. Instruksi bahasa C tidak sebanyak assembler dan mudah diingat.

c. Kita tidak disibukkan dengan pengalokasian variabel ke register-register mikrokontroler. d. Program yang sama bisa digunakan oleh banyak tipe mikrokontroler karena banyak vendor yang membuat compiler C.

e. Alur program lebih mudah dipahami dan dimodifikasi bahkan oleh programmer lain. f. Banyak orang yang mengembangkan software dengan bahasa C sehingga banyak referensi program bila dibutuhkan.

g. Bahasa C bisa dikombinasikan dengan bahasa assembler bila dibutuhkan.

2.7.2 Syntax Dalam C

Perlu diingat bahwa syntax atau penulisan statement (pernyataan) dalam bahasa C menganut case sensitive artinya mengenal perbedaan huruf besar dan huruf kecil (a  A) kecuali dalam penulisan angka heksadesimal. Penulisan dalam bahasa C bisa dibagi menjadi beberapa bagian yaitu:

a. Konstanta dan Variabel, e. Fungsi. b. Komentar,

c. Ekspresi,


(39)

A. Konstanta dan Variabel

Konstanta adalah nilai yang tidak pernah berubah, sebaliknya variabel dapat berubah-ubah nilainya saat program dieksekusi. Pada pernyataan berikut: Angka1 = 33. Angka1 adalah variabel sedangkan 33 adalah kostanta. Penulisan kostanta bisa dalam format desimal (basis 10), biner (basis 2), heksadesimal (basis 16), ataupun oktal (basis 8). Penulisan angka desimal seperti yang sudah biasa digunakan dalam pernyataan aritmetika yaitu langsung menuliskan angkanya tanpa awalan. Format biner yang hanya mengenal angka 0 dan 1, penulisannya pada beberapa compiler diawali dengan 0b, contoh: AngkaBiner = 0b01101001. Dengan format desimal AngkaBiner bernilai 105.

Angka dalam format hexadesimal penulisannya diawali dengan 0x, bilangannya dari 0 sampai 15, yang mana untuk angka 10 sampai 15 diwakili dengan abjad A sampai F, contoh: AngkaHexa = 0x1C. Dalam format desimal AngkaHexa diatas bernilai 28. Format oktal penulisannya diawali dengan angka 0, bilangannya dari 0 sampai 7

AngkaOktal = 011

Dalam format desimal AngkaOktal di atas bernilai 9. Cara untuk mengubah format angka dalam basis biner, oktal, desimal, dan heksadesimal dijabarkan lebih jauh dalam lampiran A. Selain berupa angka, konstanta dapat ditulis dalam bentuk karakter yang kemudian oleh compiler akan diubah menjadi angka sesuai nilainya dalam tabel ASCII. Penulisan karakter sebagai konstanta diawali dan diakhiri dengan ‘ (aphostrop), contoh: Huruf_Awal = ‘A’. Menurut tabel ASCII, huruf A mempunyai nilai desimal 65 (0x41), jadi pernyataan diatas sama dengan Huruf_Awal = 65. Selain konstanta, variabel dapat juga diisi dengan variabel yang lain, contoh: Angka_Pertama = 1


(40)

Variabel harus dideklarasikan dahulu sebelum kita gunakan. Deklarasi variabel meliputi nama dan tipe variabel. Berdasar tipe variabelnya compiler kemudian dapat mengalokasikan seberapa banyak memori yang diperlukan.

Tabel 2.1 Macam - Macam Tipe Data Dasar dalam C

Tipe Data Range Nilai Alokasi Memori

unsigned char 0 .. 255 1 Byte char (signed char) -128 .. 127 1 Byte

unsigned int 0 .. 65535 2 Byte int (signed int) -32768 .. +32767 2 Byte Unsigned short 0 .. 65535 2 Byte Short (signed short) -32768 .. +32767 2 Byte Unsigned long 0 .. 4294967295 4 Byte Long (signed long) 147483648 .. +2147483647 4 Byte Float 3.402E+38 .. +3.402E+38 4 Byte double* .797E+308 .. +1.797E+308 8 Byte

* pada beberapa compiler hanya mendukung sampai tipe float

Pendeklarasian variabel mempunyai format sebagai berikut: tipe_data Nama_Variabel;

atau untuk variabel yang punya tipe data sama, dapat ditulis: tipe_data Nama_Variabel1, Nama_Variabel2;

Nama_Variabel dapat kita tentukan sembarang asalkan tidak mengandung:

a. ‘ ‘ (spasi), ‘.’ (titik), ‘ (aphostrop), *, @, #, ?, dan lain sebagainya kecuali _(garis bawah).


(41)

c. Operator – operator C. d. Keyword bahasa C.

Jangan lupa menuliskan ‘;’ pada akhir deklarasi. Pilihlah nama variabel yang mencerminkan kegunaan dari variabel tersebut sehingga mudah diingat fungsinya.

Dalam memilih tipe data kita harus perhatikan nilai maksimum dan minimum yang mungkin disimpan dalam variabel tersebut. Jika melibatkan operasi aritmetika dengan bilangan positif saja kita pilih tipe unsigned tetapi untuk menyimpan angka negatif kita pilih tipe signed. Tipe data signed biasanya tidak disertakan saat deklarasi jadi cukup char atau int saja. Jika variabel diisi angka yang lebih besar dari nilai maksimum tipe datanya maka hitungan angka di atas nilai maksimum akan dilanjutkan dari 0 lagi. Contoh:

unsigned char Angka1 = 300; unsigned int Angka2 = 65536;

Variabel Angka1 berisi 44 (300 – 256), sedang variabel Angka2 berisi 0 (65536 – 65536). Tipe data yang mengenal bilangan negatif (char dan int) menggunakan MSB (Most Significant Bit) sebagai tanda bilangan negatif. Tipe char terdiri atas 8 bit (bit 7 sampai bit 0) dengan bit ke 0 sebagai LSB, jika bit ke 7 bernilai 1 berarti bilangannya negative. Contoh: Char bilangan_bulat = -1;

Jika bilangan_bulat ditulis dalam format biner nilainya adalah 0b11111111 atau 0xFF. Dalam hal ini tentu saja format desimal lebih mudah untuk kita mengerti. Untuk mengubah angka positif menjadi negatif dalam format biner langkah-langkahnya adalah:

1. Komplemenkan tiap bit dalam angka tersebut, missal untuk angka 1 (0b00000001) komplemennya adalah 0b11111110.

2. Tambah hasil komplemen tersebut dengan 1. Untuk angka 1 diatas setelah ditambah 1 hasil akhirnya adalah 0b11111111.


(42)

Jika kita salah memilih tipe signed atau unsigned maka hasil operasi aritmetikanya bisa jadi salah arti. Contoh:

char input = -5; unsigned char output; output = input + 2;

Jika nilai output diuji apakah lebih besar atau kurang dari 0 maka jawabannya adalah output lebih besar dari 0. Penyebabnya adalah karena output bertipe unsigned char sehingga -3 (0xFD) diartikan 253, Bit ke-7 tidak berfungsi sebagai tanda bilangan negatif. Sebuah konstanta dapat juga dideklarasikan dengan nama tertentu. Deklarasi konstanta mirip deklarasi variabel berikut inisialisasinya ditambah keyword const di depannya. Dalam pemrograman nama konstanta digunakan untuk menggantikan nilai konstanta yang sebenarnya. Keuntungan dari pendeklarasian sebuah konstanta adalah saat ada koreksi nilai konstanta maka kita cukup memodifikasi di satu tempat yaitu deklarasinya saja.

B. Komentar

Komentar berfungsi untuk memberikan catatan dalam program kita. Apa yang ditulis dalam komentar diabaikan oleh compiler. Dengan demikian, penambahan komentar tidak menambah besarnya kode hasil kompilasi. Komentar juga tidak mempengaruhi alur program yang telah dibuat. Penulisan komentar diawali ‘/*’ dan diakhiri ‘*/’. Komentar juga bisa diawali dengan “//’, bedanya tanda ini hanya berlaku untuk satu baris saja dan tak perlu ditutup dengan ‘//’ diakhiri komentar. ANSI C tidak memasukkan tanda ini sebagai standar dimulainya komentar. Oleh karena itu, ada kemungkinan format ini tidak didukung oleh beberapa compiler.


(43)

C. Pernyataan dan Blok Pernyataan

Pernyataan dalam C adalah sebuah instruksi lengkap yang sudah siap dieksekusi compiler untuk diubah menjadi bahasa mesin. Pernyataan dapat berupa deklarasi variabel, ekspresi, pemanggilan fungsi, dan juga penggunaan operator lain yang semuanya diakhiri dengan tanda ‘;’. Pernyataan paling pendek adalah sebuah pernyataan kosong yang cuma terdiri atas ‘;’. Deklarasi sebuah variabel atau konstanta yang telah kita lihat sebelumnya merupakan contoh sebuah pernyataan. Blok pernyataan adalah sekelompok pernyataan yang diawali ‘{‘ dan diakhiri ‘}’. Blok pernyataan adalah digunakan untuk mengumpulkan instruksi-instruksi yang merupakan satu kesatuan pernyataan.

2.7.3 Ekspresi

Ekspresi adalah kombinasi antara variabel, konstanta, dan operator untuk membentuk sebuah operasi yang dikehendaki. Operator adalah suatu fungsi untuk melakukan operasi tertentu dan melibatkan satu atau lebih operand. Operand sendiri adalah masukan (dapat berupa variabel) atau (konstanta) yang diolah oleh operator. Berikut macam-macam operator dalam C beserta contoh penulisannya.

Operator Aritmetika

Operator aritmetika berguna untuk mengerjakan fungsi-fungsi aritmetika dasar. Macam operator aritmetika bisa dilihat dalam tabel 2.2.

Tabel 2.2 Operator Aritmetika

Operator Fungsi Contoh Penulisan


(44)

- Pengurangan dan Fungsi Op1 – Op2, -Op1

* Perkalian Op1 * Op2

/ Pembagian Op1 / Op2

% Modulus (sisa pembagian) Op1 % Op2 ++ Inkrimen (penambahan 1 pada nilai

variabel)

IpVar++, ++OpVar

-- Dikrimen (pengurangan 1 pada nilai variabel)

OpVar--, --OpVar

Catatan: Op1, Op2 adalah operand berupa konstanta atau variabel OpVar adalah operand berupa variabel

Notasi operator aritmetika dalam bahasa C sama dengan notasi yang sudah umum kita gunakan begitu pula fungsi dari operator-operator tersebut.

unsigned char Angka1; unsigned char Angka2;

unsigned char Hasil_Bagi, Hasil_Sisa; Angka1 = 9;

Angka2 = 5;

Hasil_Bagi = Angka1 / Angka2; Hasil_Sisa = Angka1  Angka2;

Dari pernyataan diatas didapatkan Hasil_Bagi bernilai 1, Hasil_Sisa bernilai 4. Karena

Angka1, Angka2, dan Hasil_Bagi bertipe unsigned char maka hasil operasi pembagiannya berupa bilangan bulat positif, jika semua tipe datanya diganti dengan float maka Hasil_Bagi

akan bernilai 1.8 (dalam format float).


(45)

Unsigned char Hasil, Hasil2; Hasil1 = ++AngkaAwal1; Hasil2 = AngkaAwal2++;

Setelah eksekusi variabel Hasil1 bernilai 6 dan Hasil2 bernilai 5. Hal ini karena pernyataan

‘Hasil1 = ++AngkaAwal1;’ sama dengan: AngkaAwal1 = AngkaAwal1 + 1; Hasil1 = AngkaAwal1;

Sedangkan ‘Hasil2 = AngkaAwal2++;’ sama dengan dua pernyataan berikut: Hasil2 = AngkaAwal2;

AngkaAwal2 = AngkaAwal1 + 1;

Peletakan operator ‘—‘ di depan atau di belakang variabel mempunyai urutan operasi yang sama dengan ‘++’ kecuali ‘—‘ adalah fungsi pengurangan.

Operator Relasi

Operator relasi digunakan untuk mendapatkan hasil perbandingan dari dua nilai, hasil keluarannya berupa nilai logika.

Tabel 2.3 Operator Relasi

Operator Fungsi Contoh Penulisan

== Persamaan Op1 == Op2

> Lebih besat Op1 > Op2 < Lebih kecil Op1 < Op2 >= Lebih besar sama dengan Op1 >= Op2 <= Kurang sama dengan Op1 <= Op2 != Pertidaksamaan Op1 != Op2


(46)

Output dari operator ini berupa nilai logika benar atau salah. Representasi angka

salah adalah 0 sedangkan benar adalah nilai selain 0 (lazimnya adalah angka 1). Jadi untuk pernyataan berikut:

unsigned char Indikator1, Indikator2; unsigned char Input1 = 3;

Indikator = (Input1 == 3); Indikator2 = (Input1 > 5);

Nilai indikator1 setelah eksekusi adalah 1, sedangkan nilai Indikator2 adalah 0. Dalam pemrograman C operator relasi umumnya digunakan dalam seleksi kondisi

Operator Manipulasi Bit

Operator manipulasi bit berguna untuk mengolah data dengan orientasi per bit dari operand-nya.

Tabel 2.4 Operator Manipulasi Bit

Operator Fungsi Contoh Penulisan

| Fungsi OR bit Op1 | Op2 & Fungsi AND bit Op1 & Op2

~ Fungsi Komplemen bit ~Op1 ^ Fungsi XOR bit Op1 ^ Op2 >> Geser bit ke kanan Op1 >> Op2 << Geser bit ke kiri Op1 << Op2

Hasil dari fungsi logika untuk operasi manipulasi bit dapat dilihat dalam tabel kebenaran berikut.


(47)

Tabel 2.5 Operator Manipulasi Bit Input

A & B A | B A ^ B ~A

A B

0 0 0 0 0 1

0 1 0 1 1 1

1 0 0 1 1 0

1 1 1 1 0 0

Berikut contoh penulisan operator ini:

unsigned char Angka1, Angka2, Angka3; unsigned char Isi5 << 1;

Bila hasil eksekusi dijabarkan dalam format biner:

Angka1 = 00000001b | 00000010b = 00000011b (3) Angka2 = 00000101b & 00000010b = 00000000b (0) Angka3 = 00000101b << 1 = 00001010b (10)

Operator Logika

Operator ini digunakan untuk operasi logika dengan memperlakukan nilai operand-nya sebagai nilai logika.

Tabel 2.6 Operator Logika

Operator Fungsi Contoh penulisan

|| Fungsi Logika OR Op1 | Op2 && Fungsi Logika AND Op1 && Op2

! Fungsi Logika Negasi/inverter !Op1

Op1 dan Op2 adalah operand berupa variabel, konstanta atau ekspresi relasi


(48)

Unsigned char LED1On, LED2On, LED3On; Unsigned char saklar1 = 1, Saklar2 = 0;

LED1On = (Saklar1 == 1) && (Saklar2 == 1); /*LED1On = 0 */ LED2On = Saklar1 | | Saklar2; /* LED2On = 1 */

LED#On = !Saklar2; /* LED3On = 1 */

Setelah dieksekusi nilai LEDOn = 0 karena nilai (Saklar2 = 1) adalah 0 dan apapun kalau di-and dengan 0 hasilnya juga 0, sebaliknya operasi or selalu menghasilkan nilai 1 bila inputnya ada yang bernilai 1, seperti pada LED2On.

Operator Penugasan

Operator penugasan berfungsi untuk mengisi variabel di sebelah kiri operator dengan nilai di sebelah kanan operator. Operator penugasan seperti telah kita lihat dlam contoh-contoh sebelumnya menggunakan simbol ‘=’. Dalam C operator ini bisa dikombinasi dengan operator aritmetika dan juga manipulasi bit untuk meringkas penulisan.

Tabel 2.7 Operator Penugasan

Operator Fungsi Contoh Penulisan

= Op1 <-- Op2 Op1 = Op2 += Op1 <-- Op1 + Op2 Op1 += Op2

-= Op1 <-- Op1 – Op2 Op1 -= Op2 *= Op1 <-- Op1* Op2 Op1 *= Op2

/= Op1 <-- Op1 / Op2 Op1 /= Op2 %= Op1 <-- Op1 % Op2 Op1 %= Op2 &= Op1 <-- Op1 & Op2 Op1 &= Op2 |= Op1 <-- Op1 | Op2 Op1 |= Op2 ^= Op1 <-- Op1 ^ Op2 Op1 ^= Op2


(49)

<<= Geser bit Op1 ke kiri sebanyak Op2

Op1 <<= Op2

>>= Geser bit Op1 ke kanan sebanyak Op2

Op1 >>= Op2

Op1 adalah operand berupa variabel, Op2 adalah operand berupa variabel atau konstanta. Penggunaan beberapa operator dalam satu pernyataan secara bersamaan akan dikerjakan berdasar prioritasnya.


(50)

BAB 3

PERANCANGAN DAN PEMBUATAN

3.1 Rangkaian Perangkat Keras (Hardware) 3.1.1 Diagram Blok dan Cara Kerja Rangkaian

Diagram blok rangkaian adalah sebagai berikut :

Sensor ultrasonik HC-Sr04 akan mengindera keberadaan halangan yang ada di depan. Tombol aktifasi suara akan mendeteksi permintaan pemberitahuan waktu dari pengguna

A

T

M

E

G

A

8

5

3

5

RTC DS1307

SENSOR ULTRASONIK

BUZZER

Tombol aktifasi waktu

MODUL SUARA WTV-020SD

SUARA VIBRATOR HP


(51)

tongkat, RTC ds1307 bertindak sebagai “jam”digital yang akan menghitung dan memberi waktu kepada mikrokontroller. Sedangkan modul suara WTV-020SD digunakan untuk Pengolah sinyal suara, adalah merupakan bagian yang memainkan suara yang sudah direkam sebelumnya (menggunakan komputer) dan disimpan pada media penyimpanan kartu mikro SD.

a. Baterai berfungsi sebagai sumber tegangan dari seluruh sistem agar sistem dapat bekerja.

b. AVR ATmega8535 merupakan pusat kendali dari seluruh rangkaian. Dimana mikrokontroller akan mengecek sinyal yang dikirimkan oleh sensor, kemudian memprosesnya dan mengirimkan perintah ke ISD2560

c. Sensor ping ultrasonic berfungsi untuk mendeteksi halangan di depan d. Tombol aktifasi suara akan mendeteksi permintaan pemberitahuan waktu

e. WTV-020SD berfungsi untuk memproses data yang dikirim oleh mikrokontroller dan menyesuaikannya dengan suara yang telah direkam lalu mengirim kembali data tersebut ke speaker.

f. Speaker dan Buzzer berfungsi sebagai indikator keluaran dalam bentuk suara.

3.1.2 Perancangan Rangkaian Catu Daya

Rangkaian ini berfungsi untuk mensupplay tegangan ke seluruh rangkaian yang ada. Rangkaian Catu daya (Power Supply Adaptor) ini terdiri dari satu keluaran, yaitu 5 volt. Keluaran 5 volt digunakan untuk mensupplay tegangan ke rangkaian mikrokontroller AVR Atmega8535, rangkaian WTV-020SD,sensor ultrasonik dan RTC ds1307 Rangkaian catu daya ditunjukkan pada gambar 3.2 berikut ini :


(52)

Baterai µF. Re volt wa 3.1.3 R Transm dari ben BATERAI 1 merupakan egulator teg alaupun terj Rangkaian S

Di dalam b mitter sebaga

nda ke objek D1 D2 D3 D4 IN4 G

n sumber gangan 5 v

adi perubah

Sensor Ultr

lok sensor u ai pengirim

k seperti ter

Ga

1

C

4148 DO35-7

Gambar 3.2

tegangan D volt (7805)

han pada te

rasonik

ultrasonic a data dari ob rlihat pada g

ambar 3.3 C1 Rangkaia DC, selanju digunakan egangan ma

ada 2 rangka bjek ke ben gambar 3.3 Rangkaian GND V1 2 IC1 7805 T

an Catu Da

utnya akan n agar kelu asukannya.

aian yang sa da dan Rece dan gamba n Transmit V0 3 aya diratakan uaran yang aling berhub eiver sebaga r 3.4 sebaga

ter R1 330 LED oleh kapas dihasilkan bungan yait ai penerima ai berikut: D1 itor 220 tetap 5

tu a data


(53)

aplikasi rangkai “Distan oleh ge transmi resistor pada se Dengan maksim medium ultrason Jarak antar i ini. Penga ian dinyala nce = 001 c

lombang ul

Rangkaian itter, skema variabel R ensitivitas r n pengatura mum 150 cm

m, maka par nik yang dim

G

ra ultrason aturan resis akan yaitu d

cm” berarti ltrasonik lan Ga ultrasonic atik rangkaia R6 berfungs

receiver da an R6 yang m dengan c rtikel Mediu miliki partik Gambar 3. nik tranduc stor variabe dengan acu i jendela ko ngsung dari

mbar 3.5 J

transducer an terdapat si untuk me n juga mem g baik, ala cukup baik. um mengala kel medium

4 Rangkaia

er Rx dan el R6 pada uan tampila omparator i Tx bukan

Jarak antar

r terbagi 2 pada Gamb engatur jen mpengaruhi at ini dapa . Jika gelom ami perpind m adalah :

an Receive

n Tx memp rangkaian an LCD. B terlalu sem pantulan d

ra Tx – Rx

yaitu rang bar 3.3 dan dela kompa i daya uku at menguku mbang ultra dahan energ

r

pengaruhi k receiver da ila LCD se mpit sehingg

ari benda d

x

gkaian recei Gambar 3.4 arator yang

r alat ini s ur jarak mi asonik mera gi. Besarnya

kinerja ala apat dilakuk

elalu menam ga dapat di di depannya

iver dan ra 4. Pada Gam g akan berp

secara kese inimum 5 ambat dala a energi gel

t dalam kan saat mpilkan i-trigger . angkaian mbar 3.3 pengaruh luruhan. cm dan m suatu lombang


(54)

E=Ep+ Dengan

Maka k

3.1.4 P Atmega

Ek... n :

Ep = energi Ek = energi

kita perhatik

Perancanga a8535

...

i potensial ( i kinetik (Jo

kan pulsa di

Gamb an Rangk

...

(Joule) oule)

bawah ini a

bar 3.6 Kel kaian Sens ... adalah kelu luaran Puls sor Ultras ... uaran gelomb sa Ultrason sonic deng ... bang ultraso nik gan Mikro (3.1) onik: okontrollerr AVR


(55)

Gambar 3.7 Rangkaian sensor ultrasonik dengan Mikrokontrolller AVR ATmega8535

Sensor ultrasonik HCSR-04 memiliki tegangan kerja 5 Volt namun outputnya pulsa yang hasilnya akan dikirim ke mikro untuk di olah lebih lanjut. Rangkaian diatas berfungsi untuk mengendalikan seluruh sistem. Komponen utama dari rangkaian ini adalah IC mikrokontroller ATmega8535. Pada IC inilah semua program diisikan, sehingga rangkaian dapat berjalan sesuai dengan yang dikehendaki.

Mikrokontroller ini memiliki 32 port I/O, yaitu port A, port B, port C dan port D. Pin 33 sampai 40 adalah Port A yang merupakan port ADC, dimana port ini dapat menerima data analog. Pin 1 sampai 8 adalah port B. Pin 22 sampai 29 adalah port C. Dan Pin 14 sampai 21 adalah port D. Pin 10 dihubungkan ke sumber tegangan 5 volt. Dan pin 11 dihubungkan ke ground.

Rangkaian mikrokontroller ini menggunakan komponen kristal sebagai sumber clock-nya. Nilai kristal ini akan mempengaruhi kecepatan mikrokontroller dalam mengeksekusi suatu perintah tertentu. Pin 12 dan 13 dihubungkan ke XTAL 8 MHz dan dua buah kapasitor 22pF. XTAL ini akan mempengaruhi kecepatan mikrokontroller AVR


(56)

Atmega dengan kompon setelah aktifnya 3.1.5 Pe memain pada m FAT (F 1. Meng dengan bit, unco 2. Men dengan a8535 dalam sebuah ka nen ini be

power akti a program a

erancangan

Modul chip nkan suara

edia penyim ile Allocatio Fitur dan Sp gurangi dan

sampling ra ompressed. gurai dan m

sampling ra m mengaks apasitor dan erfungsi ag if. Lamanya adalah sebes n Rangkaia Ga p WTV-020 yang sudah mpanan kart on Table fil pesifikasi W n memainkan ate 6 kHz h

memainkan ate antara 6

ekusi setiap n sebuah gar program

a waktu an sar perkalia

an WTV-02

ambar 3.8 R

0SD memba h direkam s

tu mikro SD e system). WTV-020-SD

n (decode & ingga 16 kH

(decode & kHz hingga

p perintah d resistor y m pada m ntara aktifn an antara ka

20SD

Rangkaian

aca berkas sebelumnya D (file stora

D Audio Pla & play) berk

Hz. Pastikan

& play) berk a 32 kHz, ju

dalam prog yang dihub

ikrokontrol nya power apasitor dan n WTV-020 audio/suar a (menggun age Micro-S ayer Module kas audio M

n penyandia

kas audio d uga menduku

gram. Pada bungkan k ler dijalank

pada IC m resistor ter

0SD

a dalam fo akan komp SD-Card) de

e:

icrosoft Wa an dalam for

engan 4-bit ung samplin

pin 9 dihub ke ground.

kan bebera mikrokontro

rsebut.

ormat AD4 puter) dan d

engan sistem

ave Audio (* rmat PCM 4

t ADPCM ng rate 36 kH

bungkan Kedua apa saat ller dan dengan disimpan m berkas *.WAV) 4-bit /

8-(*.AD4) Hz.


(57)

3. Membaca berkas audio yang tersimpan kartu SD berkecepatan tinggi (High-Speed SD-Card) berkapasitas hingga 2 GB via on-board SD-Card Reader (file system: FAT).

4. Dapat mengenali format dan sampling rate dari berkas audio yang tersimpan dan menguraikannya sesuai meta data yang tertera secara otomatis.

5. Dapat dikendalikan langsung oleh pemakai dengan menyambungkan tombol (moda manual) ataupun secara terprogram lewat koneksi serial (sambungkan dengan pin digital I/O pada mikrokontroler / Arduino board Anda; membutuhkan hanya 2 pin untuk koneksi: DI / Data Input dan CLK / CLocK signal)

6. Memori internal untuk mengingat posisi terakhir pada berkas audio yang dimainkan

3.1.6 Rangkaian Input Push Button

Input yang digunakan untuk memanggil fungsi pemberitahuan waktu melalui output suara dari pengguna tongkat adalah sebuah tombol push button normally open yang dihubungkan ke ground, dengan alasan pada saat mikrokontroler dihidupkan pertama kali, akan menuliskan logika 0 pada semua port yang digunakan otomatis terkonfigurasi sebagai masukan impedensi rendah, program akan membaca kaki port logika 0 karena masukan tombol tekan disambung ke-ground. Tombol yang digunakan adalah jenis tactile switch berukuran kecil dengan jumlah 1 buah tombol.


(58)

Gambar 3.9 Rangkaian Input Push Button

3.1.7 Perancangan Sistem RTC DS 1307

RTC adalah jenis pewaktu yang bekerja berdasarkan waktu yang sebenarnya atau dengan kata lain berdasarkan waktu yang ada pada jam kita. Agar dapat berfungsi, pewaktu ini membutuhkan dua parameter utama yang harus ditentukan, yaitu pada saat mulai (start) dan pada saat berhenti (stop).

Gambar 3.10 Antarmuka bagian RTC DS1307

DS1307 merupakan salah satu tipe IC RTC yang dapat bekerja dalam daya listrik rendah. Di dalamnya berisi waktu jam dan kalender dalam format BCD. Waktu jam dan kalender memberikan informasi detik, menit, jam, hari, tanggal, bulan, dan tahun. Pendeteksi sumber listrik juga disediakan untuk mendeteksi kegagalan sumber listrik dan langsung mengalihkannya ke sumber baterai. RTC difungsikan sebagai penyimpan data jam walaupun sumber tegangan utama mati atau rusak.


(59)

didefen Dalam m

DS1307 da nisikan seba mode 12 jam

apat dijalank agai bit pem

m, bit kelim

Gambar

kan dalam milih mode ma adalah bi

3.11 Regis

aturan 12 j 12 atau 24 it AM/PM d

ter Time K

jam atau 24 4 jam. Ketik dengan logi

Keeper

4 jam. Bit 6 ka high, dip ka high ada

6 pada regi pilih mode alah PM.

ster jam 12 jam.


(60)

Gambar 3.12 Rangkaian aplikasi modul RTC DS1307 yang dihubungkan ke mikrokontroller ATMega 8535

3.1.8 Rangkaian buzzer dan vibrator

Buzzer dan vibrator menggunakan tegangan 5 volt. Buzzer diletak didekat dengan rangkaian dan vibrator diletakkan di tongkat. Buzzer dan vibrator berfungsi sebagai indikator bahwa sensor ultrasonik mendeteksi benda dengan jarak yang cukup dekat, maka mikro akan memberikan logika high pada port keluaran buzzer dan vibrator.


(61)

Gambar 3.13 Buzzer dan vibrator aktif high

3.1.9 Rangkaian Keseluruhan Tongkat

Rangkaian keseluruhan tongkat tuna netra adalah sebagai berikut:

Gambar 3.14 Rangkaian Keseluruhan 3.2 Rangkaian Perangkat Lunak (Software)


(62)

Perancangan software merupakan proses perancangan pembuatan program yang nantinya akan dijalankan oleh mikrokontroler. Program ini nantinya akan menjadi rutin yang akan selalu dijalankan ketika mikrokontroler dinyalakan. Program ini akan disimpan pada EEPROM yang ada didalam mikrokontroler, sehingga hanya perlu sekali men-downloadkan program ke mikrokontroler karena walaupun sumber tegangan dimatikan program masih tersimpan pada EEPROM.

3.2.1 Flowchart Sistem

Diagram dibawah, merupakan diagram alir / Flowchart system dimana diagram menjelaskan proses dari start hingga selesai satu siklus kerja program. Mulai dari start, program menginisialisasikan port dan mengisi nilai awal dari port. Kemudian mulai pembacaan sensor ultrasonik. Selanjutnya menekan tombol aktifasi suara, maka modul mengambil nilai waktu dari RTC. Program akan mulai membaca sensor dengan pemberian sinyal untuk jarak ke sensor pada HC-SR04 signal. Setelah itu program akan menunggu respon sensor berupa pulsa akibat pantulan gelombang ultrasonik sehingga dapat ditentukan selisih waktu pantulan tersebut dan dihitung jarak objek.

Hasil hitungan akan ditampilkan pada display LCD. Selain itu program juga akan membunyikan Buzzer sesuai dengan jarak terukur dan vibrator akan aktif. Berikut FlowChart Pendeteksi Jarak ditunjukkan pada Gambar 3.15.


(63)

         


(64)

BAB 4

PENGUJIAN RANGKAIAN

4.1 Pengujian dan Analisa Rangkaian Sensor Ultrasonik

Pada gambar 3.3 dan 3.4 tentang rangkaian transmitter dan receiver terletak dalam 1 komponen. Namun masing-masing mempunyai fungsi untuk menganalisa rangkaian ultrasonik dapat di lihat pada pembahasan di bawah ini. Jika sensor mendekati objek sesuai dengan jarak yang dikondisikan (5 cm s/d 155 cm) maka gelombang ultrasonik yang bersumber dari sensor ultrasonik dipancarkan ke objek dan objek memantulkan gelombang ultrasonik ke sensor ultrasonik. Data pengujian yang dilakukan seperti pada tabel 4.1.

Tabel 4.1 Data Jarak deteksi Berbagai Halangan

Pengujian

Jarak (cm)

5 10 20 30 50 70 100 150 155 156 157 158 1 4 10 19 28 50 69 97 146 152 153 153 154

2 5 10 20 28 49 68 99 145 153 154 155 155

3 5 9 20 27 49 70 97 145 153 154 154 155

Rata-Rata 5 10 20 28 49 69 98 145 153 154 154 155

Pada tabel, pengujian jarak pendeteksian sensor ultrasonik dilakukan dengan menggerakkan sensor mendekati atau menjauhi posisi objek yang ada didepan sensor untuk mengetahui kepekaan sensor ketika diberikan objek yang berbeda dilakukan sebanyak 3 kali pada masing-masing objek. Jarak dari objek di variasikan.

Setiap pengujian akan menghasilkan pembacaan yang berbeda walau dengan jarak yang sama, tetapi perbedaanya tidak terlalu besar. Tujuan dari pengujian itu untuk mendapatkan nilai yang akurat, misalnya pengujian dengan jarak 70 cm menghasilkan nilai pembacaan 69 cm.


(65)

Hasil pengujian dapat membuktikan bahwa sensor ultrasonik bekerja berdasarkan kemampuan penghalang memantulkan kembali gelombang ultrasonik yang dikirim oleh sensor ultrasonik, gangguan pada pendeteksian sensor dapat diakibatkan oleh penghalang yang tidak mampu memantulkan gelombang bunyi dengan baik dan adanya interferensi gelombang dengan frekuensi yang sama.

Data yang ada di dalam tabel adalah linear karena batas minimal baca sensor adalah 2cm dan apabila pengukuran di bawah 3 cm maka tidak terdefenisi karena jarak dari sensor ke benda terlalu dekat dan tidak menghasilkan data. Dalam pengukuran menggunakan sistem perhitungan dan setiap 1 gelombang pulsa nilainya adalah kelipatan 10mS.

Dengan mendapatkan hasil jarak yang sudah ditentukan berikut program yang dihasilkan :

#include <mega8535.h> #include <delay.h> #include <alcd.h> #include <stdio.h> #include <i2c.h> #include <ds1307.h> #include <math.h> #define triger PORTB.0 #define echo PINB.1 #define clock PORTA.6 #define data PORTA.5 #define busy PINA.4 unsigned char m; unsigned char h;


(66)

unsigned char buf[33];

unsigned int counter,jarak,jam,menit; unsigned int jm=60,lewat=61,mnt=62; void main(void)

{

while (1) {

//fungsi hcsr-04 sensor ultrasonic #asm("cli")

triger=1; delay_us(10); triger=0; #asm("sei") while (echo==0) {counter=0; jarak=0; }

}

4.2 Pengujian Rangkaian Power Supply

Pengujian rangkaian power supply ini bertujuan untuk mengetahui tegangan yang dikeluarkan oleh rangkaian tersebut, dengan mengukur tegangan keluaran dari power supply menggunakan multimeter digital. Setelah dilakukan pengukuran maka diperoleh besarnya tegangan keluaran sebesar 5 volt. Dengan begitu dapat dipastikan apakah terjadi kesalahan terhadap rangkaian atau tidak jika diukur.


(67)

4.3Pengujian Rangkaian Mikrokontroler ATMega8535

Pengujian pada rangkaian mikrokontroler ATMega8535 ini dapat dilakukan dengan menghubungkan rangkaian ini dengan rangkaian power supply sebagai sumber tegangan. Kaki 10 dihubungkan dengan sumber tegangan 5 volt, sedangkan kaki 11 dihubungkan dengan ground. Kemudian tegangan pada kaki 10 diukur dengan menggunakan Voltmeter. Dari hasil pengujian didapatkan tegangan pada kaki 10 sebesar 4,9 volt. Langkah selanjutnya adalah memberikan program sederhana pada mikrokontroler ATMega 8535, program yang diberikan adalah sebagai berikut:

#include <mega8535.h> #include <delay.h> #include <stdio.h> while (1)

{

// Place your code here PORTA=0xFF;

DDRA=0xFF; {

delay_us(100); PORTA=0x00; DDRA=0x00; }


(68)

Keypad yang digunakan pada penelitian ini merupakan keypad aktif low. keypad ini dapat dihubungkan langsung pada port mikrokontroler. Dimana port yang dipakai untuk pengujian keypad pada penelitian ini adalah portB2.

Gambar 4.1 Keypad aktif low

Selain dihubungkan dengan keypad, setiap pin pada port-port juga dihubungkan dengan LED untuk mengetahui keadaan port saat dilakukan pengujian keypad. Keypad ini bekerja dengan sistem aktif low. Setiap penekanan pada salah satu keypad akan membuat pin pada port yang terhubung dengan keypad akan berlogika low.

4.5 Pengujian modul suara WTV-020SD

Pengujian pada bagian ini digunakan untuk melihat kemampuan modul suara WTV-020SD yang menyimpan database suara yang dikontrol secara otomatis melalui mikrokontroler ATMEGA8535. Untuk mengeluarkan suara yaitu dengan menghubungkan output pada penguat audio yang ada dalam WTV-020SD dengan headset sehingga mampu kita dengar.

Langkah pengujian modul suara WTV-020SD yaitu dengan

1. Direkam terlebih dahulu suara yang ingin dikontrol pada laptop dengan menggunakan bantuan microphone.


(69)

2. Dikonversi suara audio yang direkan kedalam format ekstensi *.ad4 dengan frekuensi 32 khz dan diberi penamaan nnnn.ad4. “n” adalah nomor urut dari suara audio, dimulai dari bilangan 0000.

3. Dicopy file audio ke micro sd kapasitas 2 GB dengan file system type FAT. 4. Ditekan tombol play.

5. Dengarkan suara yang dihasilkan.

6. Ditekan tombol next untuk mendengar file audio selanjutnya.

Dari hasil pengujian yang dilakukan didapatkan untuk masin-masing suara yang dihasilkan adalah benar sesuai dengan masukan alamat yang diberikan, dapat dikatakan bagian record dan playback dapat bekerja baik.

4.6 Pengujian buzzer

Buzzer yang digunakan adalah buzzer aktif high 5 v, jadi buzzer dapat langsung dihubungkan ke pin output mikrokontroller tanpa perlu ditambahkan rangkaian penguat lagi.

Gambar 4.2 Buzzer aktif high

Untuk menguji apakah PORT pada mikrokontroller dapat menghidupkan buzzer, maka diberi program yang memberikan output pada PORTB.3 logika high, programnya adalah sebagai berikut:

#include <mega8535.h> #include <delay.h>


(70)

#include <stdio.h> void main(void) {

while (1)

// Place your code here If (jarak>=50 & jarak<100) {PORTB.4=0;

PORTB.3=1 ; delay_ms(350); PORTB.3=0 ; delay_ms(350); PORTB.4=1; }

if(jarak<50) { PORTB.4=0; PORTB.3=1 ; delay_ms(50); PORTB.3=0 ; delay_ms(50); PORTB.4=1; }

} }

Saat program di download ke mikrokontroller, maka pertama-tama buzzer akan hidup/aktif dengan mengeluarkan suara bunyi dan selang 1 detik kemudian, maka buzzer akan mati.


(71)

Dengan demikian maka dapat dikatakan bahwa rangkaian buzzer dapat berfungi dengan baik. Tabel data buzzer adalah sebagai berikut:

Tabel 4.2 Data buzzer

Jarak (cm) 5 10 20 30 50 70 100 150 155 156 157 158 Buzzer on on on on On on on on on off off off

4.7 Pengujian rangkaian RTC DS-1307

Pengujian rangkaian RTC DS-1307 dilakukan dengan memberi perintah pengambilan data dari RTC ds1307 dengan komunikasi jalur data I2C melalui mikrokontroller. Berikut adalah listing programnya:

#include <mega8535.h> #include <delay.h> #include <alcd.h> #include <stdio.h> #include <i2c.h> #include <ds1307.h> void main(void) {

i2c_int();

// DS1307 Real Time Clock initialization // Square wave output on pin SQW/OUT: Off // SQW/OUT pin state: 0

rtc_init(0,0,0);

rtc_set_time(12,30,00); //fungsi untuk melakukan setting pada RTC DS-1307 pertama kali


(72)

while(1) {

rtc_get_time(&h,&m,&s); ` lcd_gotoxy(0,0);

sprintf(buf,"Waktu :%02u:%02u:%02u",h,m,s); lcd_puts(buf);

} }

Program diatas memiliki fungsi untuk melakukan set waktu pada DS-1307 kemudian secara berulang-ulang mengambil data dari DS-1307 secara real time. Untuk menguji hasil dari program yang telah di buat apakah berfungsi, maka mikrokontroller dihubungkan dengan LCD 16 x 2. Berikut adalah rangkaiannya:

Gambar 4.3 Buzzer rangkaian mikro, ds1307 dan lcd

Setelah program di masukkan ke mikrokontroller dan dijalankan, maka pada LCD mucul waktu sesuai dengan waktu yang dimasukkan ke dalam program pertama kali, yaitu


(73)

jam 12.30.00, sehingga dapat dikatakan bahwa rangkaian mikro dengan RTC DS-1307 sudah dapat berfungsi dengan baik.

4.8 Pengujian buzzer dan vibrator

Buzzer dan vibrator yang digunakan adalah buzzer aktif high 5 v, saat sensor ultrasonik mendeteksi kondisi jarak lebih kecil dari jarak referensi, maka buzzer akan berbunyi, dan vibrator akan bergetar untuk memperingatkan pemakai tongkat. Buzzer dan vibrator dapat langsung dihubungkan ke pin output mikrokontroller tanpa perlu ditambahkan rangkaian penguat lagi.

Gambar 4.4 Buzzer dan vibrator aktif high

Untuk menguji apakah PORT pada mikrokontroller dapat menghidupkan buzzer dan vibrator, maka diberi program yang memberikan output pada PORTB.3 logika high,programnya adalah sebagai berikut:

#include <mega8535.h> #include <delay.h> #include <stdio.h> void main(void)


(74)

{

while (1)

// Place your code here PORTB=0x00;

DDRB=0xFF; {

PORTB.3=1; Delay_ms(1000); PORTB.3=0; Delay_ms(1000); }

}

Saat program di download ke mikrokontroller, maka pertama-tama buzzer dan vibrator akan hidup/aktif dengan mengeluarkan suara bunyi dan getaran selang 1 detik kemudian, maka buzzer dan vibrator akan mati. Dengan demikian maka dapat dikatakan bahwa rangkaian buzzer dan vibrator dapat berfungi dengan baik.


(75)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

1. Jika sensor mendekati objek sesuai dengan jarak yang dikondisikan (5 cm s/d 155 cm) maka gelombang ultrasonik yang bersumber dari sensor ultrasonik dipancarkan ke objek dan objek memantulkan gelombang ultrasonik ke sensor ultrasonik, sehingga buzzer akan berbunyi, dan vibrator akan bergetar untuk memperingatkan pengguna tongkat.

2. Panjang jarak maksimum yang dapat diukur oleh alat ini adalah 155 cm. Sedangkan batas minimal baca sensor adalah 3 cm dan apabila pengukuran di bawah 2 cm maka tidak terdefenisi karena jarak dari sensor ke benda terlalu dekat dan tidak menghasilkan data.

5.2 Saran

1. Sebaiknya desain peralatan ini perlu dikembangkan agar informasi jarak dapat diketahui pengguna 

tongkat. 

2. Sebaiknya peralatan ini perlu ditambahkan LED pada rangkaian sebagai indicator on/off untuk 

mempermudah pengujian. 

   

DAFTAR PUSTAKA


(76)

Sasongko, Bagus Hari. 2012. Pemrograman Mikrokontroler dengan Bahasa C. ANDI; Yogyakarta.

Vierck, Robert K. 1995. Analisis Getaran. PT. Eresco: Bandung.

http://repository.usu.ac.id/bitstream/123456789/30069/3/Chapter%20II.pdf DX deal extreme. 2009. WTV 020-SD Module.

http://www.dx.com/p/wtv020-sd-micro-sd-card-mp3-game-player-voice

module-blue-black231512#.U4_XpJG9Tz8. Diakses tanggal: 5 Juli 2014

Elib. 2007. Unikom. http://elib.unikom.ac.id/download.php?id=22777

Diakses tanggal: 5 Juli 2014

Splashtronic. 2012. Range Sensor. http://splashtronic.wordpress.com/tag/hc-sr04/ Diakses Tanggal: 8 Juli 2014.

PC control. 2001. Dasar Komputer Buat Pemula.

http://pccontrol.wordpress.com/2011/06/27/pengetahuan-dasar pemrograman-rtc-ds1307-dengan-bahasa-c-codevision-untuk-avr/

Diakses tanggal 8 Juli 2014.


(77)

Perancangan Listing Program

Berikut adalah rancangan program yang diprogram dengan bahasa C pada tongkat tuna netra dengan CodeWizardAVR V2.05.3 Standard

/***************************************************** This program was produced by the

CodeWizardAVR V2.05.3 Standard Automatic Program Generator

© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

Project : Version :

Date : 1/05/2014 Author : user Company : free Comments:

Chip type : ATmega8535 Program type : Application

AVR Core Clock frequency: 8,000000 MHz Memory model : Small

External RAM size : 0 Data Stack size : 128

*****************************************************/


(78)

#include <delay.h> : untuk memasukkan header / fungsi delay #include <stdio.h> : untuk memasukkan beberapa perintah #include <i2c.h> : untuk memasukkan header (pengenal)

#include <ds1307.h> : untuk memberi perintah pengambilan data dari RTC ds1307

#include <math.h> : untuk melakukan perhitungan matematika. Merupakan perintah untuk menunjukkan library

#define triger PORTB.0 : mendefenisikan nama (trigger) dari PORTB.0 #define echo PINB.1 : mendefenisikan nama (echo) didalam PINB.1 Merupakan perintah untuk memunjukkan pin sensor ultrasonik

#define clock PORTA.6 : mendefenisikan nama (clock) dari pin modul suara PORTA.6

#define data PORTA.5 : mendefeniskan nama (data) dari pin modul suara

PORTA.5

#define busy PINA.4 : mendefeniskan nama (busy) dari pin modul suara PINA.4

Merupakan perintah untuk menunjukkan pin modul suara // Declare your global variables here

unsigned int mask; : tidak bertanda untuk type data unsigned char s; : tidak bertanda untuk karakter detik unsigned char m; : tidak bertanda untuk karakter menit unsigned char h; : tidak bertanda untuk karakter jam

unsigned char buf[33]; : tidak bertanda untuk karakter bernilai 33


(79)

unsigned int counter,jarak,jam,menit; : untuk menunjukkan type data jarak , jam, menit

unsigned int jm=60,lewat=61,mnt=62; : untuk menunjukkan type data 60,61 ,62

Merupakan perintah untuk menunjukkan variable

void play_voice(unsigned int command) : untuk memberikan perintah memainkan suara

{

clock=0; : dengan logika 0

delay_ms(2); : dengan waktu tunda (2) for (mask=0x8000;mask>0;mask>>=1) : jika mask 0x8000 lebih besar dari 0

maka digeser sampai nilai 0 dan mengerjakan program

{

clock=0; : logika PORTA.0 = 0 delay_us(50); : saat program atau baris delay

diberikan, mikro akan mengerjakan perintah looping sampai nilai yang ditentukan

if (command & mask)

{data=1;} : perintah untuk memanggil modul suara

else

{data=0;} : perintah untuk memanggil modul suara


(80)

delay_us(50); : saat program atau baris delay diberikan, mikro akan mengerjakan perintah looping sampai nilai yang ditentukan

clock=1; : perintah untuk memanggil modul suara

delay_us(100); : perintah untuk memanggil modul suara

if (mask>0x0001) : perintah untuk memanggil modul suara

{

delay_ms(2); : perintah untuk memanggil modul suara

} }

delay_ms(100); : perintah untuk memanggil modul suara

while (busy==1){} : perintah untuk memanggil modul suara

delay_ms(50); : perintah untuk memanggil modul suara

}

Merupakan perintah untuk memanggil modul suara.

interrupt [EXT_INT2] void ext_int2_isr(void) : interupsi suatu permintaan {


(81)

// Place your code here

jam=h; : kode untuk jam menit=m; : kode untuk menit

play_voice(jm); : perintah mainkan suara untuk kode jam dan menit play_voice(jam); : perintah mainkan suara untuk jam

play_voice(lewat); : perintah mainkan suara untuk lewat play_voice(menit); : perintah mainkan suara untuk menit play_voice(mnt); : perintah mainkan suara untuk kode menit }

Merupakan perintah untuk memainkan suara dengan dengan menyebutkan jam setelah tombol ditekan.

void main(void) : menjalankan eksekusi utama yang dibutuhkan {

// Declare your local variables here

// Input/Output Ports initialization // Port A initialization

// Func7=In Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=0 State5=0 State4=T State3=T State2=T State1=T State0=T

PORTA=0x00; : dengan logika 0 DDRA=0x60; : keluaran (output)

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=P State1=T State0=T


(82)

PORTB=0x04; DDRB=0x01;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00;

TCNT0=0x00; OCR0=0x00;


(83)

// Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off

// Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00;

TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;

// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped


(1)

PORTB=0x04; DDRB=0x01;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00;

TCNT0=0x00; OCR0=0x00;


(2)

// Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off

// Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00;

TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;

// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped


(3)

// Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00;

TCCR2=0x00; TCNT2=0x00; OCR2=0x00;

// External Interrupt(s) initialization // INT0: Off

// INT1: Off // INT2: On

// INT2 Mode: Falling Edge

GICR|=0x20; : fungsi untuk mengaktifkan interupt MCUCR=0x00;

MCUCSR=0x00; GIFR=0x20;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;

// USART initialization : mengirim nilai serial ke komputer dari code vision wizard

// USART disabled UCSRB=0x00;


(4)

// 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; i2c_init();

Merupakan perintah inisialisasi program utama // DS1307 Real Time Clock initialization // Square wave output on pin SQW/OUT: Off // SQW/OUT pin state: 0

rtc_init(0,0,0);

//rtc_set_time(12,30,00); //rtc_set_date(27,27,05,14);


(5)

DDRB.3=1;

DDRB.4=1;PORTB.4=1; lcd_init(16); #asm("sei") while (1) {

Merupakan perintah untuk program utama /*fungsi memanggil RTC*/

rtc_get_time(&h,&m,&s); //fungsi hcsr-04

#asm("cli") triger=1; delay_us(10); triger=0; #asm("sei") while (echo==0) {counter=0; jarak=0; }

while (echo==1) counter++; jarak=counter/20;

if(jarak>=100 & jarak<=150) {PORTB.4=0;


(6)

delay_ms(500); PORTB.3=0 ; delay_ms(500); PORTB.4=1; }

Merupakan fungsi untuk memanggil dan menampilkan sensor ultrasonik If (jarak>=50 & jarak<100)

{PORTB.4=0; PORTB.3=1 ; delay_ms(350); PORTB.3=0 ; delay_ms(350); PORTB.4=1; }

if(jarak<50) { PORTB.4=0; PORTB.3=1 ; delay_ms(50); PORTB.3=0 ; delay_ms(50); PORTB.4=1; }

} }