Perancangan Alat Pemberi Makan Ikan Otomatis dan Pemantau Keadaan Akuarium Berbasis Mikrokontroler Atmega8535

(1)

BERBASIS MIKROKONTROLER ATMEGA8535

OLEH:

RECKY SUHARMON

NIM: 070402013

DEPARTEMEN TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA

MEDAN


(2)

BERBASIS MIKROKONTROLER ATMEGA8535

OLEH :

RECKY SUHARMON NIM: 070402013

Tugas Akhir ini diajukan untuk melengkapi salah satu syarat untuk memperoleh gelar Sarjana Teknik pada

DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA MEDAN

Sidang pada tanggal 18 bulan 12 tahun 2013 di depan Penguji :

1. Fakhruddin Rizal Batubara, ST. MTI. : Ketua Penguji ... 2. Ir. Kasmir Tanjung, MT. : Anggota Penguji ...

Diketahui oleh : Disetujui oleh :

Ketua Departemen Teknik Elektro, Pembimbing Tugas Akhir,

( Ir. Surya Tarmizi Kasim, M.Si. ) (Ir. T. Ahri Bahriun, M.Sc. ) NIP : 195405311986011002 NIP: 194905241985031001


(3)

ABSTRAK

Tulisan ini membahas tentang perancangan sebuah alat yang dapat memberi makan ikan secara otomatis. Pengendali utama pada alat ini menggunakan mikrokontroler ATMega8535. Alat ini juga dapat memantau keadaan akuarium seperti mendeteksi pergantian catu daya dan mendeteksi suhu ketika berada dalam keadaan tidak normal. Aktivitas-aktivitas yang telah dilakukan akan diinformasikan melalui SMS menggunakan modem GSM ke satu nomor telepon tertentu.


(4)

KATA PENGANTAR

Puji syukur penulis ucapkan atas kehadirat ALLAH SWT atas rahmat dan karunia yang dilimpahkan sehingga dapat menyelesaikan Tugas Akhir ini. Adapun Tugas Akhir ini dibuat untuk memenuhi syarat kesarjanaan di Departemen Teknik Elektro, Fakultas Teknik Universitas Sumatera Utara, yang penulis beri judul

“Perancangan Alat Pemberi Makan Ikan Otomatis dan Pemantau Keadaan Akuarium Berbasis Mikrokontroler ATMega8535”.

Tugas akhir ini penulis persembahkan kepada keluarga besar terkhusus untuk bunda tercinta Winarti. Semoga do’a dan perjuangan bunda berbuah

keberhasilan bagi ananda kelak. Amin.

Selama masa perkuliahan sampai masa penyelesaian tugas akhir ini, penulis banyak memperoleh bimbingan dan dukungan dari berbagai pihak. Untuk itu, dengan setulus hati penulis menyampaikan ucapan terima kasih yang sebesar-besarnya kepada :

1. Bapak Ir. T. Ahri Bahriun, M.Sc selaku dosen Pembimbing Tugas Akhir, atas segala bimbingan, motivasi, dan nasihat yang sangat berarti dalam menyelesaikan tugas akhir ini.

2. Ibu Ir. Windalina Syafiar, selaku dosen wali penulis, atas bimbingan dan arahannya dalam menyelesaikan perkuliahan.

3. Bapak Ir. Surya Tarmizi Kasim, M.Si selaku Ketua Departemen Teknik Elektro FT-USU dan Bapak Rahmat Fauzi, ST. MT, selaku Sekretaris Departemen Teknik Elektro FT-USU.


(5)

4. Seluruh Staf Pengajar di Teknik Elektro USU dan Seluruh Karyawan di Departemen Teknik Elektro Fakultas Teknik Elektro USU.

5. Dwi Budi Prasteyo yang telah banyak mengajarkan kepada penulis tentang betapa indah dan asyiknya perancangan sistem yang menggabungkan sisi hardware dan software.

6. Teman-teman angkatan ’09, Teguh, Reza, Arif, Adityas, Aras yang sudah banyak memotivasi penulis terutama dengan pertanyaan “kapan selesai?”. 7. Teman-teman angkatan ’07, Indra, Umar, Fuad, Sandi, Bayu, dan seluruh

jajaran ’07 masa-masa akhir. Akhiri TA ini dengan indah kawan.

8. Teman-teman UKM ROBOTIK USU SIKONEK yang berbaik hati meminjamkan tools dan ruangannya serta memberikan timah dan

komponen-komponen kecil lainnya secara sukarela, mudah-mudahan. 9. Teman-teman alumni SMAN 8 Pekanbaru tahun 2004, Haris, Bagus, Moli,

Kuat, Eru, Cika, Dina, Ayu, atas segala doa dan semangatnya.

10.Teman-teman seperjuangan dalam menegakkan keadilan dan kesejahteraan, Fauzan, Andre, Bg Faiz, Deni, Aji, Ijal, Delfi, Sulhan, Alim, Dicky, Bg Armia, Bg Bambang, Bg Ridho, Bg David, dan kakanda Faisal Akbar yang telah banyak membantu terkhusus cinta dan doanya kepada penulis.

11.Teman-teman LDK dan LDF serta para penjalin ukhuwah nan penebar dakwah se-USU, se-Medan, se-SUMUT, se-Indonesia, se-dunia dan sejagad raya yang telah banyak mendoakan saya selepas sholatnya.

12.Kepada para Murabbi yang telah membimbing dan mengarahkan kepada jalan yang benar.


(6)

13.Kepada penghuni kosan Jl. DR. Hamzah No. 6, ibuk kos beserta pasangannya, kawan-kawan kos, kucing, semut, jangkrik, nyamuk, lalat, ayam, burung, laptop ASUS A42JE, motor Honda Supra 125 merah beserta helm yang juga merah, printer IP2770punya Bima, tools elektronika,

buku-buku, musik-musik, debu-debu, telur-telur rebus, hujan, pelangi, malam, bintang, bulan, mushaf coklat, HP SE J105i, tisu wajah Indomar*t, peta kota

Medan, botol Tupperware, cermin yang tak pernah berdusta, dan lain sebagainya yang telah memberikan inspirasi dalam penyelesaian Tugas Akhir ini. Thanks guys.

14.Dan pihak-pihak yang tidak dapat penulis sebutkan satu persatu.

Akhir kata, tugas akhir ini masih jauh dari sempurna, masih banyak kesalahan dan kekurangan, namun penulis tetap berharap semoga tugas akhir ini bisa bermanfaat dan memberikan inspirasi bagi pengembangan selanjutnya.

Medan, 28 November 2013 Penulis

RECKY SUHARMON NIM 070402013


(7)

DAFTAR ISI

ABSTRAK ... i

KATA PENGANTAR ... ii

DAFTAR ISI ... v

DAFTAR GAMBAR ... ix

DAFTAR TABEL ... xi

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang Penulisan ... 1

1.2 Tujuan Penulisan ... 2

1.3 Rumusan Masalah ... 2

1.4 Batasan Masalah ... 3

1.5 Metodologi Penelitian ... 4

1.6 Sistematika Penulisan ... 5

BAB II DASAR TEORI ... 7

2.1 Mikrokontroler ... 8

2.1.1 Pengantar Singkat Keluarga Mikrokontroler AVR ... 8

2.1.2 Mikrokontroler AVR ATMega8535 ... 9

2.1.3 Arsitektur AVR ATMega8535 ... 11

2.1.4 Konfigurasi Pena ATMega8535 ... 13

2.1.5 Peta Memori ATMega8535 ... 14


(8)

2.1.7 USART ... 18

2.1.8 ADC (Analog to Digital Converter) ... 19

2.1.9 I2C (Inter-Integrated Circuit) ... 20

2.1.10 Timer/Counter ... 22

2.2 Layanan Pesan Singkat (Short Message Service) ... 23

2.2.1 Pengenalan layanan Pesan Singkat ... 23

2.2.2 Mengirim dan Menerima SMS ... 25

2.2.3 Perintah AT (ATCommand) ... 26

2.3 Bahasa C ... 27

2.3.1 Kompilasi Program ... 28

2.3.2 Bentuk Dasar Program C ... 29

2.3.3 Pengenal (Identifier) ... 30

2.3.4 Variabel ... 30

2.3.5 Pengarah Preprosesor ... 31

2.3.6 Fungsi Pustaka ... 31

2.3.7 Tipe Data Bahasa C ... 32

2.3.8 Struktur Pemilihan ... 33

2.3.9 Struktur Pengulangan ... 33

2.4 CodeVisionAVR ... 34

2.5 Motor Servo ... 35

2.6 LCD (Liquid Crystal Display) ... 37

2.7 Relay ... 39

2.8 RTC (Real Time Clock) DS1307 ... 40


(9)

2.10 Wavecom M1306B Q2406B ... 43

BAB III PERANCANGAN PERANGKAT KERAS ... 45

3.1 Gambaran Umum Sistem ... 45

3.2 Rangkaian Mikrokontroler ATMega8535 ... 47

3.3 Rangkaian Regulator Tegangan ... 50

3.4 Rangkaian RTC (Real Time Clock) ... 52

3.5 Rangkaian Modul LCD ... 53

3.6 Rangkaian Pendeteksi Pergantian Catu Daya ... 54

3.7 Rangkaian Push Button ... 55

3.8 Rangkaian Sensor Suhu ... 56

3.9 Rangkaian Motor Servo ... 57

3.10 Rangkaian Serial USART ... 57

BAB IV PERANCANGAN PERANGKAT LUNAK ... 59

4.1 Gambaran Umum Program ... 59

4.2 Program Utama ... 60

4.3 Rutin Menampilkan Tanggal dan Waktu ... 62

4.4 Proses Pengaturan Waktu dan Jadwal Pakan (Menu) ... 63

4.5 Proses Pemberian Pakan ... 64

4.6 Proses Deteksi Suhu Air ... 66

4.7 Proses Deteksi Pergantian Catuan Daya ... 67


(10)

BAB V IMPLEMENTASI DAN PENGUJIAN ... 71

5.1 Implementasi ... 71

5.2 Pengujian Perangkat ... 72

5.2.1 Pengujian Rangkaian Mikrokontroler AVR ATMega8535 ... 72

5.2.2 Pengujian LCD ... 73

5.2.3 Pengujian Komunikasi Serial RS232 ... 74

5.2.4 Pengujian Rangkaian Sensor Suhu ... 75

5.2.5 Pengujian Rangkaian RTC ... 76

5.2.6 Pengujian Rangkaian Pendeteksi Pergantian Catu Daya ... 76

5.2.7 Pengujian Rangkaian Push Button ... 77

5.2.8 Pengujian Rangkaian Motor Servo ... 78

5.2.9 Pengujian Secara Keseluruhan ... 78

5.3 Hasil Pengujian ... 80

BAB VI KESIMPULAN DAN SARAN ... 82

6.1 Kesimpulan ... 82

6.2 Saran ... 82

DAFTAR PUSTAKA ... 84

LAMPIRAN A GAMBAR RANGKAIAN KESELURUHAN ... 85

LAMPIRAN B LISTING KODE PROGRAM ... 86 LAMPIRAN DATASHEET KOMPONEN


(11)

DAFTAR GAMBAR

Gambar 2.1 Blok Diagram ATMega8535 ... 11

Gambar 2.2 Arsitektur AVR ATMega8535 ... 12

Gambar 2.3 Konfigurasi Pena ATMega8535 ... 13

Gambar 2.4 Peta Memori ATMega8535 ... 14

Gambar 2.5 Peta Memori Program ATMega8535 ... 15

Gambar 2.6 Memori Data SRAM ATMega8535 ... 16

Gambar 2.7 Interkoneksi Antarpiranti dalam Porotokol TWI ... 21

Gambar 2.8 Transfer Data Bit Pada Bus I2C ... 22

Gambar 2.9 Kompilasi Linking dari Program C ... 28

Gambar 2.10 Motor Servo ... 36

Gambar 2.11 Pensinyalan Sebuah Motor Servo ... 37

Gambar 2.12 LCD 16x2 ... 37

Gambar 2.13 Relay Tipe SPDT (Single Pole Double Throw) ... 40

Gambar 2.14 Pena RTC DS1307 ... 41

Gambar 2.15 DI-WLM35TS ... 42

Gambar 2.16 Modem Wavecom M1306B Q2406B ... 43

Gambar 3.1 Diagram Blok Sistem Keseluruhan ... 46

Gambar 3.2 Rangkaian Mikrokontroler AVR ATMega8535 dan Hubungan I/O PORT ... 48

Gambar 3.3 Programmer K-125R ... 50

Gambar 3.4 Rangkaian Regulator Tegangan 5V ... 51


(12)

Gambar 3.6 Rangkaian Modul LCD ... 53

Gambar 3.7 Rangkaian Pendeteksi Pergantian Catu Daya ... 54

Gambar 3.8 Rangkaian Push Button ... 55

Gambar 3.9 Rangkaian Sensor Suhu ... 56

Gambar 3.10 Rangkaian Motor Servo ... 57

Gambar 3.11 Rangkaian Serial USART ... 58

Gambar 4.1 Diagram Alir Program Utama ... 61

Gambar 4.2 Konfigurasi I2C pada Codewizard ... 62

Gambar 4.3 Konfigurasi Mode Timer1 pada Codewizard ... 65

Gambar 4.4 Diagram Alir Pendeteksian Pergantian Catu Daya ... 69


(13)

DAFTAR TABEL

Tabel 2.1 Alamat Vektor Interupsi ATMega8535 ... 18

Tabel 2.2 Fungsi Masing-masing Pena RS232 ... 19

Tabel 2.3 Tipe Data Dalam Bahasa C ... 32

Tabel 2.4 Konfigurasi Pena DI-WLM35TS ... 43

Tabel 3.1 Spesifikasi PORT/Bandar yang Digunakan ... 49


(14)

ABSTRAK

Tulisan ini membahas tentang perancangan sebuah alat yang dapat memberi makan ikan secara otomatis. Pengendali utama pada alat ini menggunakan mikrokontroler ATMega8535. Alat ini juga dapat memantau keadaan akuarium seperti mendeteksi pergantian catu daya dan mendeteksi suhu ketika berada dalam keadaan tidak normal. Aktivitas-aktivitas yang telah dilakukan akan diinformasikan melalui SMS menggunakan modem GSM ke satu nomor telepon tertentu.


(15)

PENDAHULUAN

1.1Latar Belakang Penulisan

Salah satu hobi yang banyak diminati oleh masyarakat pada saat ini adalah memelihara ikan di dalam akuarium. Hal ini disebabkan karena kemudahan dalam perawatan, pemberian pakan dan lain sebagainya. Namun, bagi masyarakat yang memiliki tingkat kesibukan yang cukup padat dalam pekerjaan, pasti merasakan sedikit kesulitan ketika akan meninggalakan rumah terlebih lagi dalam waktu yang cukup lama. Dengan sedikitnya intensitas waktu di rumah yang mereka miliki, pemenuhan kebutuhan ikan terutama pada pakan, regulasi air, penjagaan suhu air dan catuan listrik sedikit banyaknya akan terganggu.

Alternatif yang biasanya dilakukan adalah meminta bantuan kepada orang lain seperti saudara dekat atau kepada tetangga. Namun hal ini bisa menimbulkan masalah baru semisal tidak ada yang bisa dimintai tolong untuk menjaga akuarium. Oleh karena itu dirancanglah sebuah alat dengan teknologi yang sedang berkembang pada saat ini, sehingga dapat diaplikasikan dalam kehidupan sehari-sehari, sederhana namun sangat efektif serta tidak menghabiskan dana yang terlalu banyak. Dengan alat ini maka diharapkan dapat menjadi alternatif solusi bagi masyarakat yang hobi memelihara ikan tanpa perasaan khawatir ketika meninggalkan rumah dalam waktu yang cukup lama.


(16)

Atas dasar ini penulis mengambil judul laporan tugas akhir ini yaitu

“Perancangan Alat Pemberi Makan Ikan Otomatis dan Pemantau Keadaan Akuarium Berbasis Mikrokontroler ATMega8535”.

1.2Tujuan Penulisan

Tujuan Tugas Akhir ini adalah :

1. Memperkaya pengetahuan dan pemahaman tentang penggunaan mikrokontroler AVR ATMega8535.

2. Merancang suatu alat yang dapat memberi makan ikan secara terjadwal dan memantau keadaan akuarium.

1.3Rumusan Masalah

Perancangan alat ini menggunakan mikrokontroler AVR ATMega8535 sebagai pusat pengendali yang terhubung dengan modem GSM Wavecom M1306B Q2406B. Pemilihan mikrokontroler ini disebabkan karena kemampuannya yang sudah cukup lengkap selain harga yang murah dan cara pemrograman yang mudah.

Untuk memberi makan, sistem ini dirancang dengan timer yang didapat

dari modul RTC (Real Time Clock) dengan tipe DS1307. Untuk waktu

penjadwalannya sudah ditentukan dalam pemrograman sehingga pengguna hanya menentukan berapa kali ingin memberi pakan dalam sehari.

Setelah pengguna menentukan berapa kali frekuensi pemberian pakan dalam sehari, maka sistem akan mencocokkan dengan waktu real yang didapat


(17)

dari RTC. Ketika waktu dari RTC sama dengan jadwal yang telah diatur sebelumnya, maka sistem akan mengaktifkan motor servo selama beberapa saat.

Untuk mengetahui kondisi suhu air, sistem menggunakan sensor DI-WLM35TS yang dimodifikasi untuk mengukur suhu dalam zat cair. Pembacaan suhu dilakukan terus-menerus, namun ketika suhu tidak sesuai dengan batasan normal maka sistem akan menginformasikan ke pengguna melalui SMS.

Untuk mengetahui catu daya mana yang sedang digunakan, pada sistem ini dirancang dengan rangkaian pendeteksi pergantian catu daya menggunakan sebuah relay. Kontak NC dihubungkan ke pena interupsi eksternal mikrokontroler. Ketika terjadi perpindahan catu daya, maka sinyal interuspi eksternal akan aktif. Hal ini akan mengakibatkan sistem akan melakukan subrutin sesuai dengan logika yang diterima oleh pena interupsi eksternal. Semua aktivitas yang dilakukan akan diinformasikan ke pemilik melalui SMS sehingga pemilik bisa mengambil tindakan ketika terjadi sesuatu di luar batas kemampuan sistem yang dirancang.

1.4Batasan Masalah

Untuk menghindari pembahasan yang meluas, maka dalam tugas akhir ini ditetapkan batasan-batasan masalah dengan hal-hal sebagai berikut:

1. Pembahasan Tugas Akhir ini terbatas pada pembuatan alat pemberi makan ikan otomatis dan pemantau keadaam akuarium saja sehingga pembahasan teori rangkaian dan peranti yang digunakan hanya terbatas pada teori yang berkaitan dengan sistem yang akan dirancang.


(18)

3. SMS dikirim melalui modem GSM Wavecom M1306B Q2406B. 4. Pengiriman SMS ditujukan ke satu nomor tertentu saja.

5. Analisa kuantitas pakan yang keluar tidak dibahas pada perancangan ini. 6. Frekuensi pemadaman catu daya utama dalam batasan normal.

7. Baterai cadangan dibatasi maksimal untuk 2 hari. 8. Pakan ikan (pelet) yang digunakan berukuran 1 mm.

9. Aerator cadangan pada perancangan ini disimulasikan dengan sebuah

LED.

10. Jadwal pemberian pakan terdiri dari 3 pilihan dan waktu pada masing-masing pilihan sudah ditentukan di dalam pemrograman.

11. Pemanas dan pendingin air pada perancangan ini disimulasikan masing-masing dengan sebuah LED.

1.5Metodologi Penelitian

Penelitian dilakukan dalam beberapa tahapan yakni: 1. Tahap perancangan perangkat keras

Perancangan perangkat keras diimplementasikan pada beberapa rangkaian utama yang terdiri dari rangkaian sistem minimum mikrokontroler AVR ATMega8535, rangkaian regulator tegangan, rangkaian serial USART,

rangkaian pendeteksi pergantian catu daya, rangkaian modul LCD, rangkaian push button, rangkaian RTC (Real Time Clock), dan rangkaian

sensor suhu.


(19)

Perancangan perangkat lunak diimplementasikan dengan menggunakan bahasa C. Aplikasi yang digunakan sebagai compiler adalah

CodeVisionAVR.

3. Tahap implementasi dan pengujian

Implementasi dan pengujian alat dari sistem yang dirancang ini dibutuhkan untuk memeriksa kinerja dari sistem yang dirancang.

1.6Sistematika Penulisan

Untuk memudahkan pemahaman terhadap tugas akhir ini, maka penulis menyusun sistematika penulisan sebagai berikut:

BAB 1 : PENDAHULUAN

Pada bab ini dijelaskan tentang latar belakang masalah, tujuan sistematika pembahasan sebagai gambaran umum dari pembahasan secara keseluruhan.

BAB 2 : DASAR TEORI

Pada bab ini dijelaskan tentang mikrokontroler AVR ATMega8535, SMS (Short Message Service), Motor Servo, RTC

(Real Time Clock), modem Wavecom M1306B Q2406B,

DI-WLM35TS, Relay, LCD.

BAB 3 : PERANCANGAN PERANGKAT KERAS

Pada bab ini akan diulas tentang perealisasian gambaran umum sistem. Diawali dengan pembuatan rangkaian sistem minimum mikrokontroler, rangkaian regulator tegangan, rangkaian RTC,


(20)

rangkaian modul LCD, rangkaian pendeteksi catu daya, rangkaian sensor suhu, rangkaian motor sevo, dan rangkaian serial RS232 (USART).

BAB 4 : PERANCANGAN PERANGKAT LUNAK

Pada bab ini akan diulas tentang hal yang berhubungan dengan perancangan perangkat lunak agar alat yang dirancang dapat bekerja sesuai dengan fungsi yang diinginkan, yaitu dapat memberi pakan dengan bantuan motor servo, mendeteksi suhu air dalam akuarium ketika berada dalam keadaan tidak normal serta dapat mendeteksi pergantian catu daya dari catu daya utama ke baterai dan sebaliknya.

BAB 5 : IMPLEMENTASI DAN PENGUJIAN

Bab ini membahas tentang implementasi dan pengujian terhadap sistem yang telah dirancang.

BAB 6 : KESIMPULAN DAN SARAN

Bab ini merupakan bab penutup yang berisi kesimpulan dari perancangan dan pengujian Tugas Akhir serta saran-saran yang diberikan untuk penyempurnaan dan pengembangan sistem lebih lanjut.


(21)

DASAR TEORI

Dalam perancangan sebuah sistem digital, setidaknya ada 2 cara yang bisa digunakan yaitu dengan mikroprosesor (Embedded System) dan diskrit

(Hardwired). Kedua cara tersebut tentunya memiliki kelebihan dan

kekurangannya masing-masing.

Pada tugas akhir ini, penulis memilih cara mikroprosesor (Embedded

System) atau yang dalam aplikasinya sering disebut dengan serpih (chip)

mikrokontroler. Alasan utama penulis memilih cara ini adalah disebabkan karena kemudahan dalam perancangan yang tidak memerlukan perbaikan di sisi perangkat keras berulang kali. Penulis menggunakan mikrokontroler jenis AVR ATMega8535. Pemilihan ini didasari oleh cara pemakaian yang cukup mudah, baik itu dari segi perangkat keras maupun perangkat lunak. Di samping itu, faktor teknis lain yang mendasari pemilihan mikrokontroler ini adalah ketersediaan fitur dan fasilitas yang cukup lengkap untuk memenuhi kebutuhan perancangan seperti kapasitas memori flash yang menjadi kebutuhan dasar sisi pemrograman, ADC,

I2C, dan lain sebagainya.

Dalam setiap perancangan yang menggunakan mikrokontroler sebagai perangkat utama, maka mikrokontroler haruslah didukung dengan perangkat atau komponen-komponen lainnya agar hasil yang dicapai sesuai dengan tujuan yang diinginkan. Oleh karenanya, dalam perancangan tugas akhir yang berjudul


(22)

“Perancangan Alat Pemberi Makan Ikan Otomatis dan Pemantau Keadaan Akuarium Berbasis Mikrokontroler ATMega8535” ini, penulis menggunakan perangkat-perangkat peripheral yang bisa dikomunikasikan dengan serpih (chip)

mikrokontroler ATMega8535. Perangkat-perangkat tersebut diantaranya adalah sensor DI-WLM35TS untuk mengukur suhu air dalam akuarim, RTC (Real Time

Clock) yang berfungsi sebagai referensi waktu real bagi mikrokontroler, motor

servo sebagai penggerak wadah pakan, LCD (Liquid Crystal Display) dan modem

GSM yang berfungsi untuk mengirim SMS.

Perangkat-perangkat di atas dapat dengan mudah dikomunikasikan dengan mikrokontroler ATMega8535. Adapun komunikasi yang digunakan diantaranya adalah komunikasi serial USART dan I2C. Jenis-jenis komunikasi ini merupakan fitur unggulan dari mikrokontroler ATMega8535. Selain itu, dalam mengolah data suhu oleh sensor DI-WLM35TS, penulis tidak perlu direpotkan lagi dengan sisi perangkat keras yang cukup kompleks karena ATMega8535 sudah menyediakan fasilitas ADC (Analog to Digital Converter).

2.1 Mikrokontroler

2.1.1 Pengantar Singkat Keluarga Mikrokontroler AVR

Mikrokontroler adalah sebuah sistem komputer lengkap dalam satu serpih (chip). Mikrokontroler lebih dari sekadar sebuah mikroprosesor karena sudah

terdiri dari ROM (Read-Only Memory), RAM (Read-Write Memory), beberapa

bandar (port) masukan maupun keluaran, dan beberapa peripheral seperti

pewaktu/pencacah (timer/counter), ADC (Analog to Digital Converter), DAC


(23)

Salah satu mikrokontroler yang banyak digunakan saat ini yaitu mikrokontroler AVR. Nama AVR sendiri berasal dari "Alf (Egil Bogen) and Vegard (Wollan)'s Risc processor" dimana Alf Egil Bogen dan Vegard Wollan adalah dua penemu berkebangsaan Norwegia yang menemukan mikrokontroller AVR yang kemudian diproduksi oleh Atmel. AVR adalah mikrokontroler RISC (Reduce Instuction Set Compute) 8 bit berdasarkan

arsitektur Harvard. Secara umum mikrokontroler AVR dapat dapat dikelompokkan menjadi 3 kelompok, yaitu keluarga AT90Sxx, ATMega dan ATtiny. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fiturnya.

2.1.2 Mikrokontroler AVR ATMega8535

Mikrokontroler AVR ATMega8535 memiliki fitur yang cukup lengkap. Mulai dari kapasitas memori program dan memori data yang cukup besar, interupsi, timer/counter, PWM, USART, TWI, Analog Comaparator, EEPROM

internal, dan juga ADC internal smuanya ada dalam ATMega8535. Sehingga dengan fitur yang cukup lengkap ini kita bisa belajar mikrokontroler keluarga AVR dengan lebih mudah dan efisien, bahkan kita dapat merancang suatu sistem untuk kepentingan komersial mulai dari sistem yang sederhana sampai sistem yang relatif kompleks hanya dengan menggunakan satu IC saja yaitu dengan IC ATMega8535.

Selain itu kemampuan kecepatan eksekusi yang lebih tinggi menjadi alasan bagi banyak orang untuk beralih dan memilih menggunakan


(24)

mikrokontroler jenis AVR ketimbang mikrokontroler pendahulunya yaitu keluarga MCS-51.

Dari Gambar 2.1, dapat dilihat bahwa ATMega8535 memiliki bagian sebagai berikut:

1. 32 saluran I/O (Port A, Port B, Port C dan Port D). 2. 10 bit 8 channel ADC (Analog to Digital Converter).

3. 4 Channel PWM.

4. 6 Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-Down,

Standby and Extended Standby.

5. 3 buah timer/counter.

6. Analog Compararator.

7. Watchdog timer dengan osilator internal.

8. 512 Byte SRAM. 9. 512 Byte EEPROM.

10.8 KB flash memory dengan kemampuan Read While Write.

11.Unit Interupsi (internal dan eksternal). 12.Port antarmuka SPI8535 memory map.

13.Port USART untuk komunikasi serial dengan kecepatan maksimal 2,5 Mbps.


(25)

Gambar 2.1 Blok Diagram ATMega8535

2.1.3 Arsitektur AVR ATMega8535

AVR termasuk kedalam jenis mikrokontroler RISC (Reduced Instruction


(26)

berteknologi CISC (Complex Instruction Set Computing). Pada mikrokontroler

dengan teknologi RISC semua instruksi dikemas dalam kode 16 bit (16 bits

words) dan sebagian besar instruksi dieksekusi dalam 1 clock, sedangkan pada

teknologi CISC seperti yang diterapkan pada mikrokontroler MCS-51, untuk menjalankan sebuah instruksi dibutuhkan waktu sebanyak 12 siklus clock.

Mikrokontroler ATMega8535 memiliki arsitektur Harvard, yaitu memisahkan memori untuk kode program dan memori untuk data sehingga dapat memaksimalkan untuk kerja paralelisme. Instruksi-instruksi dalam memori program dieksekusi dalam satu alur tunggal, di mana pada saat satu instruksi dikerjakan instruksi berikutnya sudah diambil (prefetched) dari memori program.

Konsep inilah yang memungkinkan instruksi-instruksi dapat dieksekusi dalam satu siklus clock.


(27)

Dari Gambar 2.2, 32 x 8-bit register serbaguna digunakan untuk mendukung operasi pada ALU (Arithmetic Logical Unit) yang dapat dilakukan

dalam satu siklus. Enam dari regsiter utama dapat digunakan sebagai 3 buah register pointer 16-bit pada mode pengalamatan tak langsung untuk mengambil data pada ruang memori data. Ketika register pointer 16-bit ini disebut dengan register X (gabungan R26 dan R27), register Y (gabungan R28 dan R29) dan register Z (gabungan R29 dan R30).

2.1.4 Konfigurasi Pena ATMega8535

Konfigurasi pena mikrokontroler ATMega8535 dengan kemasan 40 pena dapat dilihat pada Gambar 2.3. Dari gambar tersebut dapat dilihat bahwa ATMega8535 memiliki 8 pena untuk masing-masing bandar A (Port A), bandar B

(Port B), bandar C (Port C), dan bandar D (Port D).

Gambar 2.3 Konfigurasi Pena ATMega8535

Penjelasan konfigurasi pena ATMega8535 sebagai berikut:


(28)

2. GND merupakan pena ground.

3. Port A (PA0-PA7) merupakan pena I/O dua arah dan pena masukan ADC. 4. Port B (PB0-PB7) merupakan pena I/O dua arah dan pena fungsi khusus

untuk Timer/Counter, komparator analog dan SPI.

5. Port C (PC0-PC7) merupakan pena I/O dua arah dan pena khusus untuk TWI, komparator analog, dan Timer Oscilator.

6. Port D (PD0-PD7) merupakan pena I/O dua arah dan pena khusus untuk interupsi eksternal, dan komunikasi serial.

7. RESET merupakan pena yang digunakan untuk me-reset mikrokontroller.

8. XTAL1 dan XTAL2 merupakan pena masukan clock eksternal.

9. AVCC merupakan pena masukan tegangan untuk ADC. 10.AREF merupkan pena masukan tegangan referensi ADC.

2.1.5 Peta Memori ATMega8535

Mikrokontroler ATMega8535 memiliki 3 jenis memori yaitu memori program, memori data dan memori EEPROM. Ketiganya memiliki ruang sendiri dan terpisah seperti terlihat pada Gambar 2.4.


(29)

2.1.5.1Memori Program

ATMega8535 memiliki kapasitas memori program sebesar 8 KByte yang terpetakan dari alamat 0000h – 0000Fh di mana masing-masing alamat memiliki lebar data 16 bit. Sehingga organisasi memori program seperti ini sering dituliskan dengan 4K x 16 bit. Memori program ini terbagi menjadi 2 bagian yaitu bagian program boot dan bagian

program aplikasi seperti terlihat pada Gambar 2.5. Jika kita tidak menggunakan fitur boot loader flash maka semua kapasitas memori

progam di atas dapat digunakan untuk program aplikasi. Tetapi jika kita menggunkan fitur boot loader flash maka pembagian ukuran kedua bagian

ini ditentukan oleh BOOOTSZ fuse.

Gambar 2.5 Peta Memori Program ATMega8535

2.1.5.2Memori Data SRAM

ATMega8535 memiliki kapasitas memori data sebesar 608 byte yang terbagi menjadi 3 bagian yaitu register serbaguna, register I/O dan SRAM. 32 byte alamat terendah digunakan untuk register serbaguna yaitu R0-R31. 64 byte berikutnya digunakan untuk register I/O yang digunakan


(30)

untuk mengatur fasilitas seperti timer/counter, interupsi, ADC, USART,

SPI, EEPROM, dan port I/O seperti Port A, Port B, Port C dan Port D. Selanjutnya 512 byte di atasnya digunakan untuk memori data SRAM.

Jika register I/O di atas diakses seperti mengakses data pada memori (menggunakan isntruksi LD atau ST) maka register I/O di atas menempati alamat 0020 – 005F. Tetapi jika register-register I/O di atas diakses seperti mengakses I/O pada umumnya (menggunakan isntruksi IN atau OUT) maka register I/O di atas menempati alamat memori 0000h – 003Fh. Gambar 2.6 Menunjukkan peta memori data SRAM.

Gambar 2.6 Memori Data SRAMATMega8535

2.1.5.3Memori EEPROM

ATMega8535 memiliki memori EEPROM sebesear 512 byte yang terpisah dari memori program maupun memori data. Memori EEPROM ini hanya dapat diakses dengan menggunakan register-register I/O yaitu register EEPROM adress (EEARH-EEARL), register EEPROM


(31)

EEPROM Data (EEDR) dan register EEPROM Control (EECR). Untuk

mengakses memori EEPROM ini diperlukan seperti mengakses data eksternal sehingga waktu eksekusinya relatif lebih lama bila dibandingkan dengan mengakeses data dari SRAM.

2.1.6 Interupsi

Interupsi adalah suatu kejadian atau peristiwa yang menyebabkan mikrokontroler berhenti sejenak untuk melayani Interupsi tersebut. Yang harus diperhatikan untuk menggunakan interupsi adalah kita harus mengetahui sumber-sumber interupsi, vektor layanan interupsi dan yang terpenting rutin layanan interupsi, yaitu subrutin yang akan dikerjakan bila terjadi interupsi.

ATMega8535 menyediakan 21 macam sumber interupsi yang masing-masing memiliki alamat vektor interupsi seperti pada Tabel 2.1. Setiap interupsi yang aktif akan dilayani segera setelah terjadi permintaan interupsi, tapi jika dalam waktu bersamaan terjadi lebih dari satu interupsi maka prioritas yang akan diselesaikan terlebih dahulu adalah interupsi yang memiliki nomor urut lebih kecil sesuai Tabel 2.1.


(32)

Tabel 2.1 Alamat Vektor Interupsi ATMega8535

Pada AVR terdapat 3 pena interupsi eksternal, yaitu INT0,INT1,dan INT2. Interupsi eksternal dapat dibangkitkan apabila ada perubahan logika baik transisi naik (Rising Edge) maupun transisi turun (Falling Edge) pada pena interupsi.

Pengaturan kondisi keadaan yang menyebabkan terjadinya interupsi eksternal diatur oleh 2 buah register I/O yaitu MCUCR dan MCUCSR.

2.1.7 USART (Universal Syschronous Asynchronous Receiver/Transmitter)

USART (Universal Syschronous Asynchronous Received/Transmitter)

merupakan salah satu mode komunikasi yang dimiliki oleh Mikrokontroler ATMega8535. USART memiliki 2 pena (RxD dan TxD) untuk asynchronous dan


(33)

Komunikasi serial menggunakan RS232 untuk berhubungan dengan perangkat lainnya. Seperti yang terlihat pada Tabel 2.2, RS232 mempunyai 9 pena.

Tabel 2.2 Fungsi Masing-masing Pena RS232

RS232 Pin Assignments (DB9 PC signal set)

Pena 1

Receive Line Signal Detector (Data Carrier)

Pena 2 Receive Data

Pena 3 Transmit Data Pena 4 Data Terminal Ready Pena 5 Signal Ground Pena 6 Data Set Ready Pena 7 Request To Send Pena 8 Clear To Send Pena 9 Ring Indicator

Untuk mengatur komunikasi USART dilakukan melalui register UCSRA, UCSRB, UCSRC, UBRRH, UBRRL, dan UDR.

2.1.8 ADC (Analog to Digital Converter)

AVR ATMega8535 merupakan tipe AVR yang telah dilengkapi dengan 8 saluran ADC internal dengan resolusi 10 bit. Dalam mode operasinya, ADC dapat dikonfigurasi, baik single ended input maupun diftere differential input. Selain itu,


(34)

operasi, dan kemampuan filter derau (noise) yang sangat fleksibel sehingga dapat

dengan mudah disesuaikan dengan kebutuhan dari ADC itu sendiri. ADC pada ATMega8535 memiliki fitur-fitur antara lain :

- Resolusi mencapai 10 bit. - Akurasi mencapai ± 2 LSB. - Waktu konversi 13-260 µs.

- 8 saluran ADC dapat digunakan secara bergantian.

- Jangkauan tegangan input ADC bernilai dari 0 hingga VCC. - Disediakan 2,56V tegangan referensi internal ADC.

- Mode konversi kontiniu atau mode konversi tunggal. - Interupsi ADC complete.

- Sleep Mode Noise canceler.

Proses inisialisasi ADC meliputi proses penentuan clock, tegangan

referensi, formal data keluaran, dan modus pembacaan. Register-register yang perlu diatur adalah sebagai berikut: ADCSRA, ADMUX, ADCL, ADCH dan SFIOR.

2.1.9 I2C (Inter-Integrated Circuit)

Antarmuka serial 2 kabel atau TWI (Two Wire Seraial Interface) sangat

ideal untuk diterapkan pada aplikasi menggunakan mikrokontroler. Protokol ini mengizinkan desain sistem untuk salin berkoneksi sampai 128 piranti yang berlainan hanya dengan menggunakan 2 jalur dua arah, satu untuk clock (SCL)

dan satunya untuk data (SDA). Perangkat keras yang diperlukan pada jaringan ini adalah resistor pull-up tunggal untuk setiap jalur bus TWI. Setiap piranti memiliki


(35)

alamatnya masing-masing serta mekanisme pengaturan bus yang berkemungkinan saling bertabrakan akibat memiliki jalur yang sama. Hubungan interkoneksi antarpiranti dalam porotokol TWI ditunjukkan pada Gambar 2.7.

Gambar 2.7 Interkoneksi Antarpiranti dalam Porotokol TWI

Dengan perkembangan teknologi yang semakin canggih, banyak perusahaan semikonduktor yang mengembangkan cara berkomunikasi antar IC agar mampu berkomunikasi secara paralel (paralel bus) dengan memakai konsep

TWI. Salah satu metode yang dipakai secara luas adalah I2C (Inter-Integrated

Circuit) yang dikembangkan oleh Philips Semiconductor sejak tahun 1992 dengan

konsep dasar komunikasi 2 arah dan/atau antarsistem secara serial menggunakan 2 kabel.

Pada komunikasi I2C terdapat perangkat master dan slave. Master adalah

perangkat yang mengatur jalur clock SCL. Sedangkan slave adalah perangkat

yang merespon perintah master. Master dapat melakukan pengiriman sinyal untuk

mentransfer data pada jalur I2C sedangkan Slave hanya bisa menerima data dari

master.

Ketika master (kontroler) ingin berkomunikasi dengan slave, master akan

mulai mengirim start sequence pada bus I2C. Start sequence adalah salah satu


(36)

Start sequence dan stop sequence merupakan tahap spesial di mana merupakan

kondisi dimana SDA (jalur data) boleh berubah ketika SCL (jalur clock) dalam

kondisi high (1). Start sequence menandai awal dari transaksi data dengan

perangkat slave. Stop sequence menandai akhir transaksi data dengan perangkat

slave.

Data bit dikirim/diterima melalui SDA, sedangkan sinyal clock

dikirim/diterima melalui SCL, di mana dalam setiap transfer data bit satu sinyal clock dihasilkan, transfer data bit dianggap valid jika data bit pada SDA tetap

stabil selama sinyal clock high. Data bit hanya boleh berubah jika sinyal clock

dalam kondisi low. Transfer data bit pada I2C bus dapat dilihat pada Gambar 2.8.

Gambar 2.8 Transfer Data Bit Pada Bus I2C

2.1.10 Timer/Counter

Pada sebuah ATMega8535 terdapat 3 buah timer, yaitu Timer/Counter 0

(8 bit), Timer/Counter 1 (16 bit) dan Timer/Counter 2 (8 bit). Ketiga

Timer/Counter ini dapat diatur dengan mode yang berbeda tanpa mempengaruhi

satu sama lain. Salin itu Timer/Counter ini juga bisa difungsikan sebagai sumber


(37)

mengatur mode kerjanya. Namun ada 2 register yang digunakan secara bersama-sama yaitu register TIMSK, TIFR dan SFIOR.

Timer/Counter 0

Merupakan 8 bit Timer/Counter. Pengaturan Timer/Counter 0 diatur oleh

TCCR0, TCNT0, dan OCR0 serta TIMSK dan TIFR.

Timer/Counter 1

Merupakan 16-bit timer/counter sehingga terdapat perbedaan cara pengaksesannya dengan 8-bit timer/counter. 16-bit (1 word) timer/counter harus diakses dengan 8 bit high dan 8 bit low. Pengaturan Timer/Counter1 juga diatur oleh register TCCR1A, TCCR1B, TCNT1H, TCNT1L, OCR1AH, OCR1AL, OCR1BH, OCR1BL, serta TIMSK dan TIFR.

Timer/Counter 2

Timer/Counter2 adalah 8-bit Timer/Counter, pengaturan pada Timer/Counter2 diatur oleh register TCCR2, TCNT2 dan OCR2 serta TIMSK dan TIFR.

2.2 Layanan Pesan Singkat (Short Message Service) 2.2.1 Pengenalan layanan Pesan Singkat

SMS merupakan salah satu fitur messaging yang diterapkan oleh standar

ETSI (European TelecommunICations Standards Institute), pada dokumentasi

GSM 03.40 dan GSM 03.38.

SMS semula hanyalah merupakan layanan yang bersifat komplementer terhadap dua layanan utama sistem GSM (atau sistem 2G pada umumnya) yaitu layanan voice dan switced data. Namun karena keberhasilan SMS yang tidak


(38)

terduga, dengan LED akan pelanggan yang mempergunakannya, menjadikan SMS sebagai bagian yang sangat penting dari layanan sistem.

SMS adalah layanan untuk mengirim dan menerima pesan tertulis (teks) dari maupun kepada perangkat bergerak (mobile device). Pesan teks yang

dimaksud tersusun dari huruf, angka, atau karakter alfanumerik. Pesan teks dikemas dalam satu paket (frame) yang berkapasitas maksimal 160 byte yang

dapat direpresentasikan berupa160 karakter huruf latin atau 70 karakter alfabet non-latin seperti alfabet Arab atau Cina.

Pengiriman pesan SMS secara store and forward berarti pengirim pesan

SMS menuliskan pesan dan nomor telepon tujuan dan kemudian mengirimkannya (store) ke server SMS (SMS-Center) yang kemudian bertanggung jawab untuk

mengirimkan pesan tersebut (forward) ke nomor telepon tujuan. Hal ini mirip

dengan mekanisme store and forward pada protokol SMTP yang digunakan

dalam pengiriman e-mail internet. Keuntungan mekanisme store and forward

pada SMS adalah penerima tidak perlu dalam status online ketika ada pengirim yang bermaksud mengirimkan pesan kepadanya, karena pesan akan dikirim oleh pengirim ke SMSC (SMS-Center) yang kemudian dapat menunggu untuk meneruskan pesan tersebut ke penerima ketika ia siap dan dalam status online di lain waktu. Ketika pesan SMS telah terkirim dan diterima oleh SMSC, pengirim akan menerima pesan singkat (konfirmasi) bahwa pesan telah terkirim (message

sent). Hal-hal inilah yang menjadi kelebihan SMS dan populer sebagai layanan


(39)

2.2.2 Mengirim dan Menerima SMS

Dalam pengiriman dan penerimaan SMS ada dua mode yakni mode teks dan mode PDU (Protocol Data Unit).

Mode Teks

Mode ini adalah cara termudah untuk mengirim pesan. Pada mode teks pesan yang kita kirim tidak dilakukan konversi. Teks yang dikirim tetap dalam bentuk aslinya dengan panjang mencapai 160 (7 bit default alphabet) atau 140 (8

bit) karakter. Sesungguhnya, mode teks adalah hasil enkode yang direpresentasikan dalam format PDU. Kelemahannya, kita tidak dapat menyisipkan gambar dan nada dering ke dalam pesan yang akan dikirim serta terbatasnya tipe encoding.

Mode PDU (Protocol Data Unit)

Mode PDU adalah format pesan dalam bentuk oktet heksadesimal dan oktet semi-desimal dengan panjang mencapai 160 (7 bit default alphabet) atau

140 (8 bit) karakter. Kelebihan menggunakan mode PDU adalah kita dapat melakukan encoding sendiri yang tentunya harus pula didukung oleh hardware

dan operator GSM, melakukan kompresi data, menambahkan nada dering dan gambar pada pesan yang akan dikirim. Pada mode PDU dapat juga ditambahkan header ke dalam pesan yang akan dikirim, seperti timestamp, nomor SMSC dan


(40)

2.2.3 Perintah AT (ATCommand)

ATCommand berasal dari kata attention command. Attention berarti

peringatan atau perhatian, command berarti perintah atau instruksi. Maksudnya ialah perintah atau instruksi yang dikenakan pada modem atau handset.

ATCommand adalah perintah-perintah yang digunakan dalam komunikasi dengan

serial port. Dengan ATCommand dapat diketahui vendor dari handphone yang

digunakan, kekuatan sinyal, membaca pesan yang ada pada SIM Card, megirim

pesan, mendeteksi pesan SMS baru yang masuk secara otomatis, menghapus pesan pada SIM Card dan masih banyak lagi. Beberapa perintah ATCommand

yang digunakan untuk keperluan SMS (pengiriman/penerimaan) adalah sebagai berikut :

- AT+CMGS

Perintah AT Command ini digunakan untuk mengirimkan SMS. Format

yang digunakan adalah “AT+CMGS = <length> <CR> <PDU is given>”.

Apabila pengiriman sukses dilakukan, format respon yang diterima adalah

“+CMGS : <mr>”, dengan “<mr>” adalah message reference dari SMSC.

Sedangkan jika pengiriman gagal dilakukan, respon yang diterima adalah

“+CMS error”.

- AT+CMGR

Perintah ini digunakan untuk membaca sebuah SMS pada indeks tertentu.

Format yang digunakan adalah “AT+CMGR = <index>”. Apabila perintah

ini berhasil diesekusi, format respon yang diterima adalah “+CMGR:

<stat>,,<length><CR><LF><pdu>”. “<stat>” berarti status, parameter


(41)

0 : pesan yang diterima dan belum dibaca, merupakan parameter standar. 1 : pesan yang diterima dan sudah dibaca.

2 : pesan tersimpan pada memory SMS yang tidak terkirim. 3 : pesan tersimpan pada memory SMS yang berhasil dikirimkan. 5: semua pesan pada memory SMS.

- AT+CMGD

Perintah ini digunakan menghapus sebuah SMS pada memory SMS.

Format yang digunakan adalah “AT=CMGD=<index>”, respon yang diterima adalah “OK/ERROR/+CMS ERROR”

- AT+CMGL

Perintah ini digunakan untuk membaca daftar SMS sesuai parameter tertentu. Format yang digunakan adalah “AT+CMGL [=<stat>]”. Parameter status pesan adalah sebagai berikut:

0 : pesan yang diterima dan belum dibaca, merupakan parameter standar. 1 : pesan yang diterima dan sudah dibaca.

2 : pesan tersimpan pada memory SMS yang tidak terkirim. 3 : pesan tersimpan pada memory SMS yang berhasil dikirimkan. 4 : semua pesan pada memory SMS.

2.3 Bahasa C

Pembuat bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada sekitar tahun 1972. Bahasa C adalah bahasa pemrograman terstruktur, yang membagi program dalam bentuk sejumlah blok. Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program. Program yang


(42)

ditulis dengan mengunakan bahasa C mudah sekali untuk dipindahkan dari satu jenis mesin ke jenis mesin lainnya. Hal ini berkat adanya standarisasi bahasa C yaitu berupa standar ANSI (American National Standards Institute) yang

dijadikan acuan oleh para pembuat kompiler C.

2.3.1 Kompilasi Program

Agar suatu program dalam bahasa pemrograman dapat dimengerti oleh komputer, program harus diterjemahkan dahulu ke dalam kode mesin. Adapun penerjemah yang digunakan bisa berupa interpreter atau compiler . Interpreter

adalah suatu jenis penerjemah yang menerjemahkan baris per baris instruksi untuk setiap saat. Proses awal dari bentuk program sumber C (source program, yaitu

program yang ditulis dalam bahasa C) hingga menjadi program yang executable

(dapat dieksekusi secara langsung) ditunjukkan pada Gambar 2.9.


(43)

2.3.2 Bentuk Dasar Program C

Sebuah program dalam bahasa C setidaknya harus memiliki sebuah fungsi. Fungsi dasar ini disebut dengan fungsi utama (fungsi main) dan memiliki

kerangka program sebagai berikut:

void main (void) { } // pernyataan-pernyataan

Jika kita memiliki beberapa fungsi yang lain maka fungsi utama inilah yang memiliki kedudukan paling tinggi dibandingkan fungsi-fungsi yang lain sehingga setiap kali program dijalankan akan selalu dimulai dari memanggil fungsi utama terlebih dahulu. Fungsi-fungsi yang lain dapat dipanggil setelah fungsi utama dijalankan melalui pernyataan-pernyataan yang berada didalam fungsi utama.

Contoh:

// prototype fungsi inisialisasi port Void inisialisasi_port (char A, char B, char C, char D)

{

DDRA = A ; DDRB = B ; DDRC = C ; DDRD = D ; }

// fungsi utama void main (void) {

Inisialisasi_port (0xFF, 0xF0, 0x0F, 0x00) ; }


(44)

2.3.3 Pengenal (Identifier)

Pengenal (identifier) merupakan sebuah nama yang diisikan oleh

pemrogram untuk menunjukkan identitas dari sebuah konstanta, variable, fungsi, label atau tipe data khusus. Pemberian nama sebuah pengenal dapat ditentukan bebas sesuai keinginan pemrogram tetapi harus memenuhi aturan berikut:

a. Karakter pertama tidak boleh mengunakan angka.

b. Karakter kedua dapat berupa huruf, angka atau garis bawah. c. Tidak boleh menggunakan spasi.

d. Case sensitive, yaitu huruf kapital dan huruf kecil dianggap berbeda.

e. Tidak boleh menggunakan kata-kata yang merupakan operator dalam pemrograman C, misalnya: void, short, const, if, bit, long, case, do, switch, char, float, for, else, break, int, double, include, while.

2.3.4 Variabel

Variabel Merupakan suatu tempat untuk menampung data atau konstanta di memori yang mempunyai nilai atau data yang dapat berubah-ubah selama proses program.

Dalam Bahasa C, kitapun akan menemukan dan menggunakan variabel dalam penulisan program. Dalam pemberian variabel terdapat ketentuan – ketentuan sebagi berikut:

1. Tidak boleh ada spasi (contoh : recky suharmon), dan dapat menggunakan garis bawah (_) sebagai pengubung. Contoh: recky_suharmon.

2. Tidak boleh diawali oleh angka dan mengggunakan operator aritmatika. Ada dua jenis variabel yaitu:


(45)

1. Variabel Numerik terdiri dari : a. Bilangan bulat.

b. Bilangan desimal bepresisi tunggal atau floating point.

c. Bilangan desimal berpresisi ganda atau double precision.

2. Variabel teks terdiri dari:

a. Character (karakter tungggal). b. String (untaian rangkaian karakter).

2.3.5 Pengarah Preprosesor

Pengarah preprosesor digunakan untuk mendefenisikan prosesor yng digunakan, dalam hal ini adalah untuk mendefenisikan jenis mikrokontroler yang digunakan. Dengan pengarah preprosesor ini maka pendeklarasian register-register dan penamaanya dilakukan pada file lain yang disisipkan dalam program utama dengan sintaks #include <nama_preprosesor>.

Contoh: #include <mega8535.h>

2.3.6 Fungsi Pustaka

Bahasa C memiliki sejumlah fungsi pustaka yang berada pada file-file tertentu dan sengaja disediakan untuk menangani berbagai hal dengan cara memanggil fungsi-fungsi yang telah dideklarasikan dalam file tersebut. Dalam banyak hal, pustaka-pustaka yang tersedia tidak berbentuk kode sumber melainkan dalam bentuk yang telah dikompilasi. Penggunaan fungsi pustaka ini adalah sebagai berikut:


(46)

Contoh: #include <lcd.h>

Beberapa fungsi pustaka yang telah disediakan oleh CodeVisionAVR antara lain:

1. Fungsi Standar I/O (stdio.h). 2. Fungsi Tunda (delay.h). 3. Fungsi LCD (lcd.h).

4. Fungsi I2C (i2c.h), Fungsi SPI (SPI.h).

5. Fungsi Real Time Clock (RTC) (ds1302.h, ds1307.h).

2.3.7 Tipe Data Bahasa C

Tipe data merupakan bagian yang paling penting karena tipe data mempengaruhi seriap instruksi yang akan dilaksanakan oleh komputer. Misalnya saja 5 dibagi 2 bisa saja memberikan hasil yang berbeda tergantung pada tipe datanya. Jika 5 dan 2 bertipe integer, akan menghasilkan nilai 2. Namun jika keduanya bertipe float maka akan memberikan nilai 2.5000000. Pemilihan tipe data yang tepat akan membuat proses operasi data menjadi lebih efisien. Tipe data pada bahasa C dapat dilihat pada Tabel 2.3.

Tabel 2.3 Tipe Data Dalam Bahasa C

No. Tipe Data Ukuran (byte) Format Keterangan

1 char 1 %c Karakter / String

2 int 2 %i %d Bilangan Bulat (integer)

3 float 4 %f Bilangan pecahan (float)

4 double 8 %lf Pecahan presisi ganda


(47)

2.3.8 Struktur Pemilihan

- If

Perintah if sering digunakan untuk menyeleksi suatu kondisi tunggal. Bila proses yang diseleksi terpenuhi atau bernilasi benar, maka pernyataan yang berada dalam blok akan dieksekusi.

- if else

Dalam struktur ini minimal terdapat dua pernyataan. Jika kondisi yangdiperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang diproses dan jika kondisi yang diperiksa bernilai salah maka pernyataan yang kedua yang diproses.

- switch case

Jika terdapat kemungkinan yang cukup banyak, dengan menggunakan struktur if kita akan menuliskan cukup banyak perintah if. Untuk itu, kita dapat menggunakan struktur switch case.

2.3.9 Struktur Pengulangan

- for

Perintah for sangat cocok digunakan untuk perulangan karena jumlah pengulangan sudah diketahui. Begitu juga awal dan akhir pengulangan sudah diketahui. Bentuk pengulangan dengan perintah for relatif lebih mudah digunakan.

- while

Perintah while sama halnya dengan perintah for, yaitu melakukan perulangan selama kondisi berhenti dipenuhi. Perintah while akan memeriksa


(48)

apakah kondisi sudah terpenuhi atau belum. Jika belum maka proses akan dilaksanakan. Namun, jika sudah terpenuhi maka proses dihentikan.

- do while

Pada perintah for dan while, pengecekan dilakukan sebelum melakukan perulangan. Namun, pada perintah do while, proses akan dijalankan terlebih dahulu kemudian dilakukan pengecekan terhadap kondisi. Jadi perintah ini paling tidak melakukan satu kali proses.

2.4 CodeVisionAVR

CodeVisionAVR merupakan salah satu software compiler yang khusus

digunakan untuk mikrokontroler keluarga AVR. CodeVisionAVR merupakan yang terbaik bila dibandingkan dengan compiler yang lain karena beberapa

kelebihan yang dimiliki oleh CodeVisionAVR antara lain:

1. Menggunakan IDE (Integrated Development Environment).

2. Fasilitas yang disediakan lengkap (mengedit program, meng-compile

program, men-download program) serta tampilannya terlihat menarik dan

mudah dimengerti. Kita dapat mengatur settingan editor sedemikian rupa

sehingga memudahkan kita dalam penulisan program.

3. Mampu membangkitkan kode program secara otomatis dengan menggunakan fasilitas CodeWizardAVR.

4. Memiliki fasilitas untuk men-download program langsung dari

CodeVisionAVR dengan menggunakan hardware khusus seperti Atmel STK500, Kanda System STK200+/300 dan beberapa hardware lain yang telah didefenisikan oleh CodeVisionAVR.


(49)

5. Memiliki fasilitas debugger sehingga dapat menggunakan software compiler lain untuk mengecek kode assembler nya, contohnya AVRStudio.

6. Memiliki terminal komunikasi serial yang terintegrasi dalam CodeVisionAVR sehingga dapat digunakan untuk membantu pengecekan program yang telah dibuat khususnya yang menggunakan fasililtas komunikasi serial UART.

Salah satu kelebihan dari CodeVisionAVR adalah tersedianya fasilitas untuk men-download program ke mikrokontroler yang telah terintegrasi sehingga

demikian CodeVisionAVR ini selain dapat berfungsi sebagai software compiler

juga dapat berfungsi sebagai software programmer/ downloader. Jadi kita dapat

melakukan proses download program yang telah dikompilasi dengan

menggunakan software CodeVisionAVR juga.

2.5 Motor Servo

Motor servo adalah sebuah motor dengan sistem closed feedback di mana

posisi dari motor akan diinformasikan kembali ke rangkaian kontrol yang ada di dalam motor servo. Motor ini terdiri dari sebuah motor DC, serangkaian gear,

potensiometer dan rangkaian kontrol. Potensiometer berfungsi untuk menentukan batas sudut dari putaran servo. Sedangkan sudut dari sumbu motor servo diatur berdasarkan lebar pulsa yang dikirim melalui kaki sinyal dari kabel motor. Semakin lebar pulsa OFF maka akan semakin besar gerakan sumbu ke arah jarum


(50)

arah yang berlawanan dengan jarum jam. Gambar 2.10 memperlihatkan tampilan fisik dari sebuah motor servo.

Gambar 2.10 Motor Servo

Motor servo mampu bekerja dua arah yaitu searah jarum jam dan berlawanan arah jarum jam dimana arah dan sudut pergerakan rotornya dapat dikendalikan hanya dengan memberikan pengaturan duty cycle sinyal PWM dari

mikrokontroler pada bagian pena kontrolnya. Dalam aplikasinya, motor servo tidak memerlukan rangkaian driver karena yang diperlukan hanya sinyal PWM

dengan range 0V-5V.

Motor servo secara umum terbagi ke dalam 2 jenis: 1. Motor Servo Standar 180°.

Motor servo jenis ini hanya mampu bergerak dua arah (CW dan CCW) dengan defleksi masing-masing sudut mencapai 90° sehingga total defleksi sudut dari kanan – tengah – kiri adalah 180°.

2. Motor Servo Continuous

Motor jenis ini mampu bergerak dua arah (CW dan CCW) tanpa batasan defleksi sudut putar (dapat berputar secara kontinyu).

Operasional motor servo dikendalikan oleh sebuah pulsa selebar ± 20 ms, dimana lebar pulsa antara 0.5 ms dan 2 ms menyatakan akhir dari range sudut maksimum. Apabila motor servo diberikan pulsa dengan besar 1.5 ms mencapai


(51)

gerakan 90°, maka jika kita berikan pulsa kurang dari 1.5 ms maka posisi mendekati 0° dan jika kita berikan pulsa lebih dari 1.5 ms maka posisi mendekati 180°. Gambar 2.11 memperlihatkan pensinyalan sebuah motor servo.

Gambar 2.11 Pensinyalan Sebuah Motor Servo

2.6 LCD (Liquid Crystal Display)

LCD 16x2 adalah Liquid Crystal Display dot matrix yang mampu

menampilkan 16x2 karakter atau 16 kolom dan 2 baris. Alat ini membutuhkan daya yang kecil dan dilengkapi panel LCD dengan tingkat kontras yang cukup tinggi serta kontroler LCD CMOS yang telah terpasang dalam modul tersebut. Kontroler ini memiliki ROM/RAM dan display data RAM. Semua fungsi display

dikontrol dengan instuksi khusus. Modul LCD ini juga dapat dengan mudah dihubungkan dengan unit mikrokontroler. Secara fisik, LCD 16x2 dapat dilihat dari Gambar 2.12 berikut:


(52)

Adapun konfigurasi dan deskripsi dari pena-pena LCD ini antara lain: 1. Pena 1 dihubungkan ke ground.

2. Pena 2 dihubungkan ke VCC (+5V).

3. Pena 3 dihubungkan ke bagian tengah potensiometer 10 KOhm sebagai pengatur kontras.

4. Pena 4 untuk RS (Register Selection). Jika diberi nilai logika 1 (High) =

display data dan jika diberi nilai logika 0 (Low) = Write Operational.

5. Pena 5 digunakan untuk mengatur fungsi LCD. Jika di set ke logika 1 (high, +5V) maka LCD berfungsi untuk membaca data, jika pena ini di set

ke logika 0 (low, 0V) akan berfungsi untuk menulis data.

6. Pena 6 adalah terminal enable (Enable Signal). Berlogika 1 setiap kali

pengiriman atau pembaca data.

7. Pena 7 – pena 14 adalah saluran dua arah (bi-directional) data 8 bit dan 4 bit bus data (untuk 4 bit pena data yang digunakan Pena 11 – pena 14). 8. Pena 15 dan pena 16 adalah tegangan untuk menyalakan lampu LCD.

Pena-pena LCD yang dihubungkan ke mikrokontroler antara lain pena 4, 5 dan 6 sebagai pena kontrol logika tulis dan baca serta pena 11-14 sebagai pena data 4 bit seperti yang dijelaskan dalam konfigurasi dan deskripsi pena-pena LCD di atas.

Dari sisi perangkat lunak, cara mengakses LCD dilakukan dengan menyisipkan fungsi pustaka lcd.h yang telah disediakan oleh software


(53)

2.7 Relay

Relay adalah saklar mekanik yang dikendalikan atau dikontrol secara elektronik (elektromagnetik). Saklar pada relay akan terjadi perubahan posisi OFF

ke ON pada saat diberikan energi elektromagnetik pada armatur relay tersebut.

Relay pada dasarnya terdiri dari 2 bagian utama yaitu bagian kumparan dan contact point. Ketika kumparan diberikan tegangan DC atau AC, maka akan

terbentuklah medan elektromagnetik yang mengakibatkan contact point akan

mengalami switch ke bagian lain. Keadaan ini akan bertahan selama arus masih

mengalir pada kumparan relay. Contact point akan kembali switch ke posisi

semula jika tidak ada lagi arus yang mengalir pada kumparan relay.

Relay memiliki kondisi contact point dalam 2 posisi. Kedua posisi ini akan

berubah pada saat relay mendapat tegangan sumber pada kumparan. Kedua posisi tersbut adalah :

1. Posisi NO (Normally Open), yaitu posisi contact point yang terhubung ke

terminal NO (Normally Open). Kondisi ini akan terjadi pada saat relay

mendapat tegangan sumber pada elektromagnetnya.

2. Posisi NC (Normally Colse), yaitu posisi contact point yang terhubung ke

terminal NC (Normally Close). Kondisi ini terjadi pada saat relay tidak

mendapat tegangan sumber pada elektromagnetnya.

Dilihat dari desain saklarnya maka relay dibedakan menjadi:

1. SPST (Single Pole Single Throw), relay ini memiliki 4 terminal yaitu 2

terminal untuk input kumparan elektromagnet dan 2 terminal saklar. Relay ini hanya memiliki posisi NO (Normally Open) saja.


(54)

2. SPDT (Single Pole Double Throw), relay ini memiliki 5 terminal yaitu

terdiri dari 2 terminal untuk input kumparan elektromagnetik dan 3 terminal saklar. relay jenis ini memiliki 2 kondisi NO dan NC.

3. DPST (Double Pole Single Throw), relay jenis ini memiliki 6 terminal

yaitu terdiri dari 2 terminal untuk input kumparan elektromagnetik dan 4 terminal saklar untuk 2 saklar yang masing-masing saklar hanya memilki kondisi NO saja.

4. DPDT (Double Pole Double Throw), relay jenis ini memiliki 8 terminal

yang terdiri dari 2 terminal untuk kumparan elektromagnetik dan 6 terminal untuk 2 saklar dengan 2 kondisi NC dan NO untuk masing-masing saklarnya.

Pada tugas akhir ini, penulis menggunakan realy dengan catuan tegangan 12V DC berjenis SPDT (Single Pole Double Throw) serpeti yang terlihat pada

Gambar 2.13.

Gambar 2.13 Relay Tipe SPDT (Single Pole Double Throw)

2.8 RTC (Real Time Clock) DS1307

RTC (Real Time Clock) DS1307 adalah IC yang dibuat oleh perusahaan

Dallas Semiconductor. DS1307 merupakan sebuah IC yang dapat digunakan sebagai pengatur waktu yang meliputi detik, menit, jam, hari, tanggal, bulan dan tahun. Pengaksesan data dilakukan dengan sistem serial sehingga hanya


(55)

membutuhkan dua jalur untuk berkomunikasi yaitu jalur clock untuk membawa

informasi data clock dan jalur data yang membawa data atau yang sering disebut

dengan I2C (Inter-integrated Circuit). Susunan kaki-kaki dari IC DS1307

diperlihatkan pada Gambar 2.14.

Gambar 2.14 Pena RTC DS1307

Penjelasan dari masing-masing pena adalah sebagai berikut :

1. X1 dan X2 adalah pena yang dihubungkan dengan kristal32.768 KHz.

2. VBAT adalah pena yang dihubungkan masukan baterai +3V.

3. GND adalah pena yang dihubungkan ground.

4. SDA adalah pena yang difungsikan sebagai jalur data.

5. SCL adalah pena yang fungsikan sebagai jalur clock.

6. SQW/OUT adalah pena yang digunakan sebagai keluaran sinyal kotak.

7. VCC adalah pena untuk mencatu tegangan 5V.

Untuk berkomunikasi dengan mikrokontroler ATMega8535, RTC DS1307 menggunakan jenis komunikasi serial I2C. Fungsi pustaka yang digunakan adalah i2c.h. Dengan fungsi ini kita tidak perlu direpotkan lagi dengan pendefinisian

protokol komunikasi serial I2C, tetapi cukup memanggil beberapa fungsi yang telah disediakan oleh CodeVisionAVR. Adapun fungsi utama yang digunakan dalam menginisialisasi I2C dalam CodeVisionAVR adalah i2c_init (void). Fungsi


(56)

2.9 DI-WLM35TS (DI-Waterproof LM35 Temperature Sensor)

Sensor ini dimodifikasi oleh perusahaan Depok Instruments. Komponen utamanya memakai sensor suhu tipe LM35DZ. Namun, pada setiap kaki-kakinya telah dipasang kabel sepanjang 300 mm yang tahan terhadap air dan suhu panas. Kelebihan sensor ini sama dengan kelebihan yang dimiliki oleh sensor LM35DZ yaitu

1. Terkalibrasi dalam satuan celcius.

2. Faktor skala yang linear 10 mV/ºC.

3. Daerah pengukuran 0ºC – 100ºC.

4. Tegangan sumber 4VDC – 30VDC.

Selain itu, sensor ini dilapisi dengan 3 lapisan, sehingga sensor tetap dapat bekerja dengan baik di dalam air. Secara fisik, sensor ini dapat dilihat pada Gambar 2.15.

Gambar 2.15 DI-WLM35TS

Fungsi setiap kaki sama dengan fungsi kaki yang dimiliki oleh sensor LM35DZ, namun karena sudah disambung dengan kabel berwarna, maka fungsi kaki-kakinya dapat dilihat pada Tabel 2.4.


(57)

Tabel 2.4 Konfigurasi Pena DI-WLM35TS

Kabel Fungsi

1 Kelabu / Kuning / Jingga VCC Sumber (+) 2 Putih / Hijau / Merah Vout Output Sensor 3 Hitam / Biru / Coklat GND Sumber (-)

2.10 Wavecom M1306B Q2406B

Wavecom M1306B Q2406B TCP/IP adalah GSM/GPRS modem yang siap digunakan sebagai modem untuk suara, data, fax dan SMS. Kelas ini juga

mendukung 10 tingkat kecepatan transfer data. Wavecom M1306B Q2406B TCP/IP dengan mudah dikendalikan dengan menggunakan perintah AT untuk semua jenis operasi karena mendukung fasilitas koneksi RS232 dan juga fasilitas TCP/IP stacked. Dapat dengan cepat terhubung ke port serial

komputer desktop atau notebook. Casing logam Wavecom M1306B Q2406B

TCP/IP menjadi solusi yang tepat untuk aplikasi berat seperti telemetri atau Wireless Local Loop (PLN metering & Telepon Umum). Ukurannya yang kecil

memudahkan dalam peletakan di berbagai macam area, indoor/outdoor. Secara

fisik, Wavecom M1306B Q2406B dapat dilihat pada Gambar 2.16.


(58)

Secara teknis, modem Wavecom M1306B Q2406B mempunyai spesifikasi sebagai berikut:

- Dualband GSM 900/1800 MHz.

- Mendukung data/ SMS/ voice/ fax.

- Max Power Output: 2W (900 MHz), 1 W (1800 MHz).

- Tegangan masukan: 5V-24V DC (not applicable for USB interface).

- Arus masukan: 1-2A.

- Mendukung Group 3 Fax (Kelas 2) GPRS # Kelas B, Kelas 10. - SimToolKit Kelas 2.

- ATCommand set (GSM 07,05, 07,07 dan fungsi AT pada GSM

WAVECOM).

- Protokol TCP/IP stack tersedia untuk data dan internet.

- Maksimum tingkat pengaturan baudrate: 115200 bps.

Untuk berkomunikasi dengan mikrokontroler ATMega8535, modem Wavecom M1306B Q2406B menggunakan jenis komunikasi serial USART. Konfigurasi pena yang digunakan sama dengan konfigurasi pena komunikasi serial USART pada umumnya yaitu pena RX, TX, dan ground karena modem


(59)

PERANCANGAN PERANGKAT KERAS

3.1 Gambaran Umum Sistem

Sistem yang akan dirancang menggunakan mikrokontroler AVR ATMega8535 sebagai pengendali sistem. Pengaturan jadwal pemberian pakan (feeding) dilakukan dengan penekanan tombol push button. Jumlah push button

yang dirancang terdiri dari 4 buah. Fungsi push button tersebut akan dijelaskan

pada perancangan perangkat lunak.

Sebagai pewaktu (timer) yang memberikan informasi waktu real, penulis

menggunakan RTC (Real Time Clock) dengan tipe DS1307. Informasi dari

DS1307 ini digunakan oleh mikrokontroler untuk mencocokkan jadwal yang telah diatur melalui push button. Ketika jadwal yang diatur sama dengan waktu real

dari RTC DS1307, maka mikrokontroler akan memberikan perintah kepada motor servo untuk aktif selama beberapa saat.

Untuk mendeteksi perubahan suhu, sistem ini menggunakan sensor suhu DI-WLM35TS yang merupakan modifikasi dari sensor suhu LM35DZ. Sistem akan melakukan respon ketika suhu di atas ataupun di bawah normal.. Lalu informasi ini akan dikirimkan melalui SMS dengan modem GSM.

Dalam tugas akhir ini, juga dirancang rangkaian pendeteksi pergantian catu daya yang berfungsi untuk mengetahui catu daya mana yang sedang digunakan oleh sistem. Rangkaian ini dirancang dengan sebuah relay 12V DC.


(60)

Catuan 12V DC yang akan mengaliri kumparan didapat dari catu daya utama setelah mengalamai penyearahan oleh dioda bridge. Rangkaian ini juga

menggunakan resistor pull down agar logika default yang diterima oleh

mikrokontroler adalah 0 (low). Rangkaian ini akan memberikan sinyal interupsi

eksternal pada pena interupsi mikrokontroler. Ketika terjadi perubahan logika pada pena interupsi eskternal baik dari logika 0 (low) ke logika 1 (high) atau

sebaliknya, maka mikrokontroler akan melakukan subrutin interupsi yang telah dirancang.

Setiap aktivitas yang mengalami perubahan seperti pemberian pakan, pendeteksian suhu yang tidak normal, pergantian catu daya serta memutus atau menyambungkan saklar aerator cadangan akan diinformasikan melalui SMS dengan menggunakan modem GSM Wavecom M1306B Q2406B. Secara umum, diagram blok keseluruhan sistem dapat dilihat pada Gambar 3.1.

Mikrokontroler ATMega8535 RTC

DS1307

Relay interupsi eksternal

Motor servo

LCD

Saklar Aerator Cadangan berupa LED

ON

RS232 HP user

Wavecom M1306B (Q2406B)

LM35

4 push buttons


(61)

3.2 Rangkaian Mikrokontroler ATMega8535

Gambar 3.2 menunjukkan rangkaian mikrokontroler ATMega8535. Rangkaian sistem minimum mikrokontoler ATMega8535 terdiri dari rangkaian sistem minimum dan rangkaian I/O. Rangkaian minimum mikrokontroler terdiri dari rangkaian clock dan rangkaian reset.

Rangkaian clock pada mikrokontroler ATMega8535 membutuhkan

osilator kristal dan 2 buah kapasitor non polar agar dapat berosilasi. Pada perancangan ini, besar frekuensi osilator kristal yang digunakan adalah 8 MHz dan besar kapasitas kapasitor adalah 20 pF. Pemilihan frekuensi dan besar kapasitor tersebut dirancang berdasarkan datasheet mikrokontroler ATMega8535.

Rangkaian reset pada mikrokontroler ATMega8535 berfungsi untuk

mengembalikan mikrokontroler pada program awal (vektor reset). Rangkaian

reset terdiri dari resistor 1 KΩ (R3) dan kapasitor nonpolar 100nF (C7). Kombinasi komponen R-C ini berfungsi untuk menentukan nilai konstanta waktu pengisian muatan pada kapasitor C7. Ketika catudaya dihidupkan, kapasitor C7 akan melakukan pengisian muatan awal sehingga logika yang diterima pena reset

saat itu dalam keadaan logika rendah dan mikrokontoler masuk ke dalam modus reset. Akan tetapi setelah pengisian muatan kapasitor C7 penuh, pena reset akan

berubah menjadi logika tinggi. Setelah itu, mekanisme reset dilakukan dengan


(62)

PC6/TOSC1 28 PC5 27 PC4 26 PC3 25 PC2 24 PC1/SDA 23 PC0/SCL 22 PC7/TOSC2 29 PA6/ADC6 34 PA5/ADC5 35 PA4/ADC4 36 PA3/ADC3 37 PA2/ADC2 38 PA1/ADC1 39 PA0/ADC0 40 PA7/ADC7 33 PB6/MISO 7 PB5/MOSI 6 PB4/SS 5 PB3/AIN1/OC0 4 PB2/AIN0/INT2 3 PB1/T1 2 PB0/T0/XCK 1 PB7/SCK 8 PD6/ICP1 20 PD5/OC1A 19 PD4/OC1B 18 PD3/INT1 17 PD2/INT0 16 PD1/TXD 15 PD0/RXD 14 PD7/OC2 21 RESET 9 XTAL1 13 XTAL2 12 AVCC 30 AREF 32 U1 ATMEGA8535 PUSH_RST SCL SDA TX

INT0 IND PLN

TEMP MENU UP DOWN SUHU SERVO CRYSTAL 8MHz C5 20pF C4 20pF C6 100nF MOSI MISO SCK R9 220 R10 220 R11 220 RS RW E D4 D5 D6 D7 INT1 LCD R2 470 LED2 INDIKATOR VCC RX R3 1k RESET PUSH_RST C7 100nF D3 1N4148 PB1 VCC 1 2 3 4 10 9 8 7 5 6 J5 CONN-DIL10 MOSI SCK MISO VCC RESET TX RX

Gambar 3.2 Rangkaian Mikrokontroler AVR ATMega8535 dan Hubungan I/O PORT

Rangkaian I/O adalah semua rangkaian yang terhubung dengan mikrokontroler ATMega8535. Bandar-bandar yang digunakan untuk mengendalikan rangkaian I/O dapat dilihat pada Tabel 3.1:


(63)

Tabel 3.1 Spesifikasi PORT/Bandar yang Digunakan

PORT/ Bandar

Bit Fungsi

A 0 Masukan sensor suhu DI-WLM35TS

B

0-7 Hubungan ke LCD

6-8 MOSI, MISO dan SCK pada ISP (In System Programming)

C

0 Pena SCL dari RTC DS1307

1 Pena SDA dari RTC DS1307

2

Keluaran untuk mengaktifkan LED sebagai indikator catu daya utama dalam keadaan ON atau OFF

3

Keluaran untuk mengaktifkan LED sebagai indikator suhu di bawah normal (Heater ON)

4-7 Masukan dari push button

D

1 Keluaran untuk pena TX pada rangkaian serial USART 2 Masukan interupsi INT.0 untuk mendeteksi pergantian catu daya 5 Keluaran untuk mengaktifkan motor servo

7

Keluaran untuk mengaktifkan LED sebagai indikator suhu di atas normal (Chiller ON)

Untuk pemrograman ke mikrokontroler ATMega8535, maka diperlukan suatu programmer/downloader ISP (In System Programming). Programmer ISP

mempunyai keuntungan yaitu dapat memprogram mikrokontroler yang sedang terpasang dengan rangkaian lainnya tanpa harus mencabut serpih (chip)


(64)

secara berulang-ulang. Pemrograman berbasis ISP cukup menghubungkan antara pin MOSI, MISO, SCK, RESET, VCC dan Ground dengan programmer ISP

tersebut. Programmer ISP yang digunakan adalah programmer K-125R yang

dapat memprogram hampir semua jenis serpih (chip) AVR dan menggunakan

catu daya USB (5V) langsung dari sumber catu daya programmer tersebut.

Secara fisik, programmer K-125R dapat dilihat pada Gambar 3.3.

Gambar 3.3 Programmer K-125R

3.3 Rangkaian Regulator Tegangan

Regulator tegangan berfungsi untuk menstabilkan tegangan sehingga membuat nilai tegangan selalu konstan. Komponen yang harus dicatu pada tugas akhir ini antara lain mikrokontroler ATMega8535, MAX232, DI-WLM35TS, RTC (Real Time Clock) DS1307, motor servo, dan LCD. Konsumsi arus yang

dibutuhkan komponen tersebut dapat diperhitungkan seperti yang tertera pada Tabel 3.1:


(65)

Tabel 3.1 Konsumsi Arus Dari Komponen yang Dicatu No Komponen yang dicatu Konsumsi arus

1 Rangkaian sistem minimun 50 mA

2 Rangkaian komunikasi serial USART 12 mA

3 Rangkaian sensor suhu 13 mA

4 LCD dan backlight putih 48 mA

5 RTC DS1307 0,2 mA

6 Motor servo 150 mA

Total 273,2 mA

Dari Tabel 3.1 maka arus total yang dikonsumsi oleh sistem sebesar 273,2 mA. Oleh karena itu digunakan LM7805 sebagai penstabil tegangan. LM7805 merupakan regulator tegangan tetap untuk mendapat tegangan +5V yang dapat memberikan arus maksimal 1A sehingga kebutuhan arus dari setiap komponen yang digunakan dapat terpenuhi. LM7805 memiliki tiga terminal, yaitu terminal Vin, GND dan Vout. Semakin besar nilai kapasitor maka akan semakin kecil riak yang muncul. Fungsi kapasitor 3300uF/25V pada rangkaian regulator tegangan adalah sebagai penapis (filter) dan penghilang riak (ripple). Rangkaian regulator

tegangan 5Vdapat dilihat pada Gambar 3.4

VI

1 VO 3

G N D 2 LM7805 1 2 POWER SUPPLY CONN-SIL2 R1 270 C3 100nF C1 3300uF/25V

TRAFO STEP DOWN

V1 AC DIODA BRIDGE BAT2 12V LED1 VCC 12 V D2 1N4007 D1 1N4007 C2 0.1uF/25V


(66)

BAT2 12V digunakan sebagai catu daya cadangan ketika catu daya utama dalam keadaan OFF. Dioda D1 dengan tipe 1N4007 berfungsi untuk menahan arus yang masuk dari catu daya utama ketika keadaannya masih ON sehingga baterai tidak masuk ke dalam modus charging.

3.4 Rangkaian RTC (Real Time Clock)

Rangkaian RTC (Real Time Clock) dengan tipe DS1307 berhubungan dengan mikrokontroler ATMega8535 menggunakan komunikasi I2C (

Inter-Integrated Circuit) seperti yang ditunjukkan pada Gambar 3.5.

VBAT 3

X1 1

X2 2 SCL 6

SDA 5

SOUT 7

U3

DS1307 SCL

SDA

CRYSTAL 32.768KHz

R8

10k

R7

10k VCC

BAT1

3V

Gambar 3.5 Rangkaian RTC (Real Time Clock)

Sesuai dengan datasheet RTC DS1307, komunikasi I2C antar device

menggunakan resistor pull up (R7 dan R8) pada pin SDA dan SCL dengan

resistansi antara 1K-47K. Pada tugas akhir ini, dipilih nilai resistor pull up

sebesar 10K. Pena SDA pada RTC dihubungkan ke PORTC.1 pada mikrokontroler dan pena SCL dihubungkan ke PORTC.0. Pena X1 dan X2 dihubungkan dengan kristal quartz 32,768 KHz. VCC dan GND sebagai power


(67)

merupakan ground. Ketika tegangan 5V digunakan pada batas normal, RTC dapat

diakses secara penuh serta data dapat ditulis dan dibaca. Ketika VCC kurang dari 1,25 x Vbat, proses penulisan dan pembacaan terhenti. Namun proses penghitungan waktu masih berjalan. Pada saat VCC kurang dari Vbat, RAM dan penghitung waktu terhubung dengan BAT1 dengan tegagan 3V.

3.5 Rangkaian Modul LCD

Pada tugas akhir ini, LCD digunakan untuk menampilkan pengaturan jadwal pemberian pakan dan waktu sebenarnya (real), sehingga tidak memerlukan

media display yang terlalu besar. LCD yang digunakan adalah LCD 2x16 dengan

tipe 1602ZFA dengan lebar display 2 baris dan 16 kolom. Hubungan antara

mikrokontroler dan LCD diperlihatkan pada Gambar 3.5.

D 7 1 4 D 6 1 3 D 5 1 2 D 4 1 1 D 3 1 0 D 2 9 D 1 8 D 0 7 E 6 R W 5 R S 4 V S S 1 V D D 2 V E E 3 LCD 1602ZFA RV1 1K RS RW E D4 D5 D6 D7 VCC

Gambar 3.6 Rangkaian Modul LCD

Untuk mengatur kontras pada LCD, dipasang potensiometer dengan besar 1K–10K sebagai pengatur tegangan. Hubungan antara LCD dengan mikrokontroler ATMega8535 menggunakan PORTB. Pena 4-6 pada LCD secara berurutan dihubungkan ke PORTB.0-2 dan pena 11-14 pada LCD secara berurutan dihubungkan ke PORTB.4-7 pada mikrokontroler.


(68)

3.6 Rangkaian Pendeteksi Pergantian Catu Daya

Dalam tugas akhir ini, rangkaian pendeteksi pergantian catu daya berfungsi untuk mengetahui catu daya mana yang sedang digunakan oleh sistem. Rangkaian ini dirancang dengan sebuah relay 12V DC dan sebuah resistor pulldown sebesar 1 KΩ (R5). Catuan 12V DC yang akan mengaliri kumparan diperoleh dari catu daya utama setelah mengalami penyearahan oleh dioda bridge.

Resistor pull down dipasang agar logika default yang diterima oleh

mikrokontroler adalah 0 (low). Rangkaian pendeteksi catu daya dapat dilihat pada

Gambar 3.7.

INT0

R5 1k

RELAY DC12V VCC 12 V

Gambar 3.7 Rangkaian Pendeteksi Pergantian Catu Daya

Ketika catu daya utama mati, maka kontak NC akan terhubung dengan VCC yang menjadi sumber interupsi eksternal (INT0/PORTD.2) bagi mikrokontroler. Hal ini akan membuat logika yang diterima oleh PIND.2 menjadi tinggi (high). Ketika PIND.2 berlogika tinggi, maka sistem akan menjalankan

perintah untuk menghidupkan LED di PORTC.2 sebagai indikator bahwa catu daya utama sedang OFF dan simulasi aerator cadangan telah hidup yang

kemudian diikuti dengan mengirimkan SMS pemberitahuan melalui modem GSM.


(69)

Begitu juga sebaliknya, ketika catu daya utama hidup, maka kontak NC akan terhubung kembali dengan ground. Hal ini akan mengakibatkan logika yang

diterima oleh PIND.2 menjadi rendah (low). Ketika logika yang diterima oleh

PIND.2 rendah, maka sistem akan mematikan LED di PORTC.2 sebagai indikator bahwa catu daya utama kembali ON dan simulasi bahwa aerator cadangan telah

dimatikan yang kemudian diikuti dengan mengirimkan SMS pemberitahuan melalui modem GSM.

3.7 Rangkaian Push Button

Rangkaian push button pada tugas akhir ini digunakan untuk mengatur

jadwal pemberian pakan (feeding) dan mengatur waktu (jam dan menit)

sebenarnya. Jumlah push button yang digunakan sebanyak 4 buah. Tiga buah push

button pertama digunakan untuk fungsi utama yaitu mengatur jadwal pemberian

pakan dan mengatur waktu sebenarnya. Sedangkan 1 push button tambahan

digunakan untuk mengetahui besar suhu air dalam akuarium yang kemudian akan ditampilkan pada LCD. Hubungan push button dengan mikrokontroler secara

berurutan dihubungkan ke pena PORTC.4-7 seperti tampak pada Gambar 3.8.

PB1 PB2 PB3 PB4 PC6/TOSC1 28 PC5 27 PC4 26 PC3 25 PC2 24 PC1/SDA 23 PC0/SCL 22 PC7/TOSC2 29 PA6/ADC6 34 PA5/ADC5 35 PA4/ADC4 36 PA3/ADC3 37 PA2/ADC2 38 PA1/ADC1 39 PA0/ADC0 40 PA7/ADC7 33 PB6/MISO 7 PB5/MOSI 6 PB4/SS 5 PB3/AIN1/OC0 4 PB2/AIN0/INT2 3 PB1/T1 2 PB0/T0/XCK 1 PB7/SCK 8 PD6/ICP1 20 PD5/OC1A 19 PD4/OC1B 18 PD3/INT1 17 PD2/INT0 16 PD1/TXD 15 PD0/RXD 14 PD7/OC2 21 RESET 9 XTAL1 13 XTAL2 12 AVCC 30 AREF 32 U5 ATMEGA8535


(70)

Seperti yang tampak pada Gambar 3.8 , ketika push button ditekan, maka

pena-pena mikrokontroler akan tersambung pada ground sehingga menyebabkan

logika berubah menjadi 0 (low). Sebaliknya, ketika push button kembali dilepas,

maka pena-pena mikrokontroler akan terputus dari ground sehingga menyebabkan

logika berubah menjadi 1 (high).

3.8 Rangkaian Sensor Suhu

Gambar 3.9 menunjukkan rangkaian sensor suhu DI-WLM35TS. Komponen pembentuk rangkaian sensor suhu DI-WLM35TS terdiri dari 2 buah kapasitor 100 nF (C12 dan C13) serta sensor suhu DI-WLM35TS.

Sensor DI-WLM35TS memiliki tiga pena koneksi, yakni pena VCC (tegangan masukan), pena GND (ground), dan pena Vout (tegangan keluaran).

Pena VCC dihubungkan dengan tegangan supply 5V DC, pena GND dihubungkan

dengan ground perangkat-perangkat lainnya, dan pena Vout dihubungkan ke

PORTA.0 sebagai masukan analog. Kapasitor C12 digunakan sebagai bypass

tegangan Vout dan kapasitor C13 digunakan untuk pembacaan tegangan yang lebih stabil.

VCC

+

V

s

Vout

G

N

D

TEMP

C12

100nF

C13

100nF

LM35

1

3

2


(71)

3.9 Rangkaian Motor Servo

Rangkaian motor servo hanya terdiri dari motor servo saja seperti yang terlihat pada Gambar 3.10. Hal ini disebabkan karena dalam penggunaannya motor servo dikendalikan dengan metode PWM (Pulse Width Modulation).

Sehingga untuk mengaktifkannya tidak diperlukan komponen atau rangkaian tambahan.

SERVO

+88.8

Motor Servo VCC

Gambar 3.10 Rangkaian Motor Servo

Seperti yang terlihat dari Gambar 3.10, motor servo mempunyai 3 pena yaitu pena VCC, sinyal, dan GND. Pena VCC dihubungkan ke catu daya 5V, pena

sinyal dihubungkan ke PORTD.5 pada mikrokontroler, dan pena GND dihubungkan ke ground.

3.10 Rangkaian Serial USART

Komunikasi serial digunakan agar sistem minimum mikrokontroler dapat berkomunikasi dengan modem GSM untuk mengirim SMS. Tegangan yang digunakan pada komunikasi serial berada pada level tegangan 0V sampai 5V, sedangkan tegangan yang digunakan untuk berkomunikasi dengan modem GSM menggunakan level tegangan RS-232. Agar sistem minimum dapat berkomunikasi dengan modem GSM maka digunakan IC MAX232 sebagai pengubah level tegangan.


(72)

Pada RS-232, tegangan negatif merepresentasikan bit 1 dan tegangan positif merepresentasikan bit 0. Mikrokontroler mempunyai level TTL logika rendah sampai dengan 1.8V dan TTL logika tinggi 2.2V sampai dengan 5V, sedangkan pada RS-232 memiliki logika rendah 3V sampai dengan 15V dan untuk logika tinggi -15V sampai dengan -3V. Komunikasi RS232 yang digunakan berupa komunikasi asinkron dengan baud rate 19200 bps, 8 bit data, tanpa paritas

dan start bit 1.

Dalam pembuatan rangkaian, IC MAX232 memerlukan beberapa kapasitor. Sesuai dengan datasheet, kapasitor yang digunakan adalah kapasitor

1uF/16 V. Ada 4 kapasitor yang digunakan dalam rangkaian ini yaitu, pada pena 1(+) dengan pena 3(-), pena 4(+) dengan pena 5(-), seperti yang terlihat pada Gambar 3.11. Hubungan antara MAX232 dengan DB9 yang digunakan sebagai Tx (transmitter) terhubung melalui pena 14 pada MAX232 dengan pena 3 pada

DB9 (Transmitted Data). Sedangkan sebagai Rx (receiver) terhubung melalui

pena 13 pada MAX232 dengan pena 2 pada DB9 (Received Data). Pena 11 pada

MAX232 dihubungkan ke mikrokontroler pena PORTD.1 sebagai Tx.

T1IN 11 R1OUT 12 T2IN 10 R2OUT 9 T1OUT 14 R1IN 13 T2OUT 7 R2IN 8 C2+ 4 C2-5 C1+ 1 C1-3 VS+ 2 VS- 6 U4 MAX232 VCC 1 6 2 7 3 8 4 9 5 Y2 CONN-D9M C8 1uF/16V C9 1uF/16V C10 1uF/16V C11 1uF/16V TX RX


(73)

PERANCANGAN PERANGKAT LUNAK

4.1 Gambaran Umum Program

Perancangan program pada sistem bertujuan agar sistem dapat melakukan pemberian pakan secara otomatis ke dalam akuarium. Selain itu, sistem akan menampilkan waktu sebenarnya serta mengatur jadwal pemberian pakan yang terdiri dari beberapa pilihan jadwal.

Jika waktu yang diberikan oleh RTC sama dengan jadwal yang telah diatur sebelumnya, maka sistem akan mengaktifkan motor servo beberapa saat dengan menggunakan fasilitas timer dari mikrokontroler.

Untuk keadaan akuarium, sistem akan memantau beberapa hal, seperti suhu air dalam akuarium dan pergantian catu daya. Jika suhu air yang dibaca melebihi atau kurang dari batas suhu normal, maka sistem akan mengaktifkan alat pendingin atau penghangat air serta memberikan peringatan berupa sms kepada pemilik melalui modem GSM. Untuk mendeteksi catu daya yang sedang digunakan, sistem ini dirancang dengan rangkaian pendeteksi catu daya. Hal ini disebabkan karena pemadaman catu daya utama bisa terjadi kapan saja, sehingga sistem yang dirancang harus selalu dalam keadaan siap untuk mendeteksi pemadaman listrik.


(1)

(2)

(3)

(4)

(5)

(6)