BAB II LANDASAN TEORI 2.1. Umum Mata merupakan bagian tubuh manusia yang memegang peranan sangat penting, karena manusia mengenali apapun pertama kali melalui penglihatan. Maka tidaklah salah ketika ada yang berpendapat bahwa mata merupakan jendela dunia.tidak semua orang memiliki mata yang sempurna yang bisa menikmati semua penciptaan di alam ini. Ada beberapa orang di dunia ini yang tidak mampu melihat karena mata tidak bisa berfungsi sebagaimana mestinya. Salah satu permasalahan mata adalah kebutaan. Ada yang mengalami kebutaan sejak kecil dan ada juga yang terjadi setelah dewasa. Berdasarkan data organisasi kesehatan dunia atau WHO, setiap lima detik ada satu orang dewasa menjadi buta. Sementara setiap satu menit ada satu anak menjadi buta. Diperkirakan belasan tahun ke depan penderita kebutaan mencapai 100 juta kasus. Pada tahun 2000 saja jumlahnya sudah mencapai 45 juta orang buta dan 135 juta orang mengalami gangguan penglihatan. (http://kompas.com: 2007)Di Indonesia, terdapat sekitar 3,5 juta penderita kebutaan. Sebanyak,76% disebabkan katarak, 0,20% karena glaukoma dan kelainan refraksi 0,14%. (http://kompas.com: 2007) Karena tidak mampu melihat, penderita tunanetra seringkali memerlukan bantuan orang lain dalam melakukan aktivitasnya sehari-hari, Terutama saat berjalan. 2.2. Sensor Ultrasonic Sensor ultrasonic adalah sensor yang bekerja berdasarkan prinsip pantulan gelombang dimana sensor menghasilkan gelombang pantulan ke benda yang kemudian menangkapnya kembali dengan perbedaan waktu sebagai dasar perhitungannya.. Perbedaan waktu antara gelombang pantulan yang di kembalikan dan yang diterima kembali adalah berbanding lurus dengan jarak atau tinggi objek yang memantulkannya.. Jenis objek yang dapat di indranya adalah padat, cair dan butiran. Tanpa kontak jarak 2 cm sampai 3 meter dan dapat dengan mudah dihubungkan dengan mikrokontroler malalui satu pin I/O saja.
Dimensi : 2,6 cm (p) x 4,1 cm (l) x 6,2 cm (t) Gambar 2.1. Sensor Ultrasonic Spesifikasi: : -.Memiliki 2 jenis antarmuka yang dapat aktif bersamaan, yaitu I2C-bus (fscl maks. 65 khz) dan pulse width (10µs/mm). -.8 modul dapat digunakan bersama dalam satu sistem I2C-bus yang hanya membutuhkan 2 pin I/O mikrokontroler saja. -.Membutuhkan catu daya tunggal +5 VDC, dengan konsumsi arus 17 ma typ. (tanpa sensor infrared ranger). cara kerja sensor ultrasonic dengan cara memantulkan gelombang ke sebuah objek kemudian data yang di pantulkan menentukan jarak dari sensor ke objek. Gambar 2.2. Ilustrasi cara kerja sensor
2.3. Mikrokontroler Atmega8535 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 : a. 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. (Syahrul.2012) b. 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 ke mikrokontroler. 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 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).(dedi.2010)
Gambar 2. 4. Blok Diagram ATMega8535 Dari gambar tersebut dapat dilihat bahwa Atmega8535 memiliki bagian sebagai berikut : 1. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, Port D. 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 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 Atmega8535 juga memiliki fasilitas yang lengkap. 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 Atmega8535 sebagai mikrokontroler yang powerfull. Adapun blok diagramnya sebagai berikut : 2.3.1. Konfigurasi PIN Atmega8535 Gambar 2. 5 Konfigurasi Pin ATMega8535 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, reset, serta tegangan referensi
untuk ADC. Untuk lebih jelasnya, (Agus. 2005). konfigurasi pin Atmega8535 dapat dilihat pada gambar 2.9. Berikut ini adalah susunan pin-pin dari Atmega8535; VCC merupakan pin yang berfungsi sebagai pin masukkan catu daya GND merupakan pin ground Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu Timer/Counter, Komparator Analog, dan SPI Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI, Komparator Analog, dan Timer Oscilator Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu Komparator Analog, Interupsi Iksternal dan komunikasi serial USART Reset merupakan pin yang digunakan untuk mereset mikrokontroler XTAL1 dan XTAL2 merupakan pin masukkan clock eksternal (osilator menggunakan kristal, biasanya dengan frekuensi 11,0592 MHz). 2.3.1.1. Port-Port Pada Atmega8535 Dan Fungsinya 2.3.1.1.1. Port A Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port A dapat memberi arus 20 ma dan dapat mengendalikan display LED secara langsung. Data Direction Register port A (DDRA) harus disetting terlebih dahulu sebelum Port A digunakan. Bit-bit DDRA diisi 0 jika ingin memfungsikan pin-pin port A yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, kedelapan pin port A juga digunakan untuk masukan sinyal analog bagi A/D converter. 2.3.1.1.2. Port B Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port B dapat memberi
arus 20 ma dan dapat mengendalikan display LED secara langsung. Data Direction Register port B (DDRB) harus disetting terlebih dahulu sebelum Port B digunakan. Bit-bit DDRB diisi 0 jika ingin memfungsikan pin-pin port B yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Pin-pin port B juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut. Tabel 2.2 Fungsi Pin-pin Port B 2.3.1.1.3. Port C Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port C dapat memberi arus 20 ma dan dapat mengendalikan display LED secara langsung. Data Direction Register port C (DDRC) harus disetting terlebih dahulu sebelum Port C digunakan. Bit-bit DDRC diisi 0 jika ingin memfungsikan pin-pin port C yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, dua pin port C (PC6 dan PC7) juga memiliki fungsi alternatif sebagai oscillator untuk timer/counter 2.
2.3.1.1.4. Port D Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port D dapat memberi arus 20 ma dan dapat mengendalikan display LED secara langsung. Data Direction Register port D (DDRD) harus disetting terlebih dahulu sebelum Port D digunakan. Bit-bit DDRD diisi 0 jika ingin memfungsikan pin-pin port D yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin port D juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut. Tabel 2.3 Fungsi Pin-pin Port D 2.3.1.1.5. RESET RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini diberi masukan low selama minimal 2 machine cycle maka system akan di-reset. 2.3.1.1.6. XTAL1 XTAL1 adalah masukan ke inverting oscillator amplifier dan input ke internal clock operating circuit 2.3.1.1.7. XTAL2 XTAL2 adalah output dari inverting oscillator amplifier. 2.3.1.1.8. AVcc
Avcc adalah kaki masukan tegangan bagi A/D Converter. Kaki ini harus secara eksternal terhubung ke Vcc melalui lowpass filter. 2.3.1.1.9. AREF AREF adalah kaki masukan referensi bagi A/D Converter. Untuk operasionalisasi ADC, suatu level tegangan antara AGND dan Avcc harus diberikan ke kaki ini. 2.3.1.1.10. AGND AGND adalah kaki untuk analog ground. Hubungkan kaki ini ke GND, kecuali jika board memiliki analog ground yang terpisah 2.3.2. Peta Memori ATMega8535 ATMega8535 memiliki dua jenis memori yaitu Program Memory dan Data Memory ditambah satu fitur tambahan yaitu EEPROM Memory untuk penyimpan data.(wardhana.2006) 2.3.2.1. 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. 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 diprogram 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.(agus.2005)
Gambar 2. 6 Peta Memori Program 2.3.2.2. Data Memory. Gambar 2. 7 Peta Memori Data Gambar berikut menunjukkan peta memori SRAM pada ATMEGA 8535. 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.3.2.3. EEPROM Data Memory ATMEGA 8535 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.
Gambar 2. 8 EEPROM Data Memory. 2.3.3. Status Register (SREG) Status register adalah register berisi status yang dihasilkan pada setiap operasi yang dilakukan ketika suatu instruksi dieksekusi. SREG merupakan bagian dari inti CPU mikrokontroler. Gambar 2. 9 Status Register ATMega 8535 Bit 7 I : Global Interrupt Enable Jika bit Global Interrupt Enable diset, maka fasilitas interupsi dapat dijalankan. Bit ini akan clear ketika ada interrupt yang dipicu dari hardware, setelah program interrupt dieksekusi, maka bit ini harus di set kembali dengan instruksi SEI. Bit 6 T : Bit Copy Storage Instruksi bit copy BLD dan BST menggunakan bit T sebagai sumber atau tujuan dalam operasi bit. Bit 5 H: Half Carry Flag Bit 4 S : Sign Bit Bit S merupakan hasil exlusive or dari Negative Flag N dan Two s Complement Overflow Flag V. Bit 3 V : Two s Complement Overflow Flag Digunakan dalam operasi aritmatika Bit 2 N : Negative Flag
Jika operasi aritmatika menghasilkan bilangan negatif, maka bit ini akan set. Bit 1 Z : Zero Flag Jika operasi aritmatika menghaslkan bilangan nol, maka bit ini akan set. Bit 0 C : Carry Flag Jika suatu operasi menghasilkan Carry, maka bit ini akan set. 2.4. Bahasa Pemrograman Mikrokontroler Pengembangan sebuah sistem menggunakan mikrokontroler AVR buatan ATMEL menggunakan software AVR STUDIO dan CodeVisionAVR. AVR STUDIO merupakan software yang digunakan untuk bahasa assembly yang mempunyai fungsi yang sangat lengkap, yaitu digunakan untuk menulis program, kompilasi, simulasi dan download program ke IC mikrokontroler AVR. Sedangkan CodeVisionAVR merupakan software C-cross Compiler, dimana program dapat ditulis dalam bahasa C, CodeVision memiliki IDE (Integrated development Environment) yang lengkap, dimana penulisan program, compile,link, pembuatan kode mesin (assembler) dan download program ke chip AVR dapat dilakukan dengan CodeVision, selain itu ada fasilitas terminal, yaitu melakukan komunikasi serial dengan mikrokontroler yang sudah di program. Proses download program ke IC mikrokontroler AVR dapat menggunakan System programmable Flash on-chip mengizinkan memori program untuk diprogram ulang dalam sistem menggunakan hubungan serial SPI. 2.4.1. CodevisionAVR CodeVisionAVR merupakan sebuah cross-compiler C, Integrated Development Environtment (IDE), dan Automatic Program Generator yang didesain untuk mikrokontroler buatan Atmel seri AVR. CodeVisionAVR dapat dijalankan pada sistem operasi Windows 95, 98, Me, NT4, 2000, dan XP. Crosscompiler C mampu menerjemahkan hampir semua perintah dari bahasa ANSI C, sejauh yang diijinkan oleh arsitektur dari AVR, dengan tambahan beberapa fitur
untuk mengambil kelebihan khusus dari arsitektur AVR dan kebutuhan pada sistem embedded. File object COFF hasil kompilasi dapat digunakan untuk keperluan debugging pada tingkatan C, dengan pengamatan variabel, menggunakan debugger Atmel AVR Studio. IDE mempunyai fasilitas internal berupa software AVR Chip In-System Programmer yang memungkinkan Anda untuk melakukan transfer program kedalam chip mikrokontroler setelah sukses melakukan kompilasi/asembli secara otomatis. Software In-System Programmer didesain untuk bekerja dengan Atmel STK500/AVRISP/AVRProg, Kanda Systems STK200+/300, Dontronics DT006, Vogel Elektronik VTEC-ISP, Futurlec JRAVR dan MicroTronics ATCPU/Mega2000 programmers/development boards. Untuk keperluan debugging sistem embedded, yang menggunakan komunikasi serial, IDE mempunyai fasilitas internal berupa sebuah Terminal. Selain library standar C, CodeVisionAVR juga mempunyai library tertentu untuk: Modul LCD alphanumeric Bus I2C dari Philips Sensor Suhu LM75 dari National Semiconductor Real-Time Clock: PCF8563, PCF8583 dari Philips, DS1302 dan DS1307 dari Maxim/Dallas Semiconductor Protokol 1-Wire dari Maxim/Dallas Semiconductor Sensor Suhu DS1820, DS18S20, dan DS18B20 dari Maxim/Dallas Semiconductor Termometer/Termostat DS1621 dari Maxim/Dallas Semiconductor EEPROM DS2430 dan DS2433 dari Maxim/Dallas Semiconductor SPI Power Management Delay Konversi ke Kode Gray CodeVisionAVR juga mempunyai Automatic Program Generator bernama CodeWizardAVR, yang mengujinkan Anda untuk menulis, dalam hitungan menit, semua instruksi yang diperlukan untuk membuat fungsi-fungsi berikut:
Set-up akses memori eksternal Inisialisasi port input/output Inisialisasi interupsi eksternal Inisialisasi Timer/Counter Inisialisasi Watchdog-Timer Inisialisasi UART (USART) dan komunikasi serial berbasis buffer yang digerakkan oleh interupsi Inisialisasi Pembanding Analog Inisialisasi ADC Inisialisasi Antarmuka SPI Inisialisasi Antarmuka Two-Wire Inisialisasi Antarmuka CAN\ Inisialisasi Bus I2C, Sensor Suhu LM75, Thermometer/Thermostat DS1621 dan Real-Time Clock PCF8563, PCF8583, DS1302, dan DS1307 Inisialisasi Bus 1-Wire dan Sensor Suhu DS1820, DS18S20 Inisialisasi modul LCD