• Tidak ada hasil yang ditemukan

BAB III PERANCANGAN ALAT

3.2. Perancangan Perangkat Lunak

3.2.1.4 Pengaturan Timer

Pengaturan timer dilakukan karena keluaran dari mikrokontrorler yang berupa indikator keamanan memerlukan timer sebagai pengendali dalam pengaktifannya. Dimana indikator keamanan akan nyala dan padam secara bergantian dengan interval waktu nyala dan waktu mati adalah 1 detik. Dalam perancangan ini dilakukan pengaturan dengan interval clock timer sebesar 50ms.

Pada perancangan timer, timer yang digunakan adalah timer 0 dengan mode 0 (TIMSK = 0x01). Pada mikrokontroler, kristal yang digunakan sebesar 4MHZ sehingga dapat memberikan instruksi cycle time (waktu 1 siklus) sebesar 0.25 µs. Jika ditentukan nilai prescaler sebesar 1024 (TCCR0 = 0x05) maka untuk menentukan interval waktu pada timer 0 sebesar 50 ms dapat dicari dari persamaan 2.1 pada dasar teori.

TCNT

N

3.2.1.5 Diagram Alir Pengaturan Timer Indikator Keamanan

Indikator keamanan berfungsi sebagai penanda bahwa kondisi alert mode sedang berlangsung. Indikator keamanan berupa led dengan keadaan menyala selama satu detik dan padam selama satu detik dan terus berulang selama kondisi alert mode masih berlangsung.

Diagram alir untuk indikator keamanan dapat dilihat pada gambar 3.18, ketika tag belum terdeteksi oleh reader dan sensor pintu masih pada kondisi off maka indikator keamanan tetap bekerja. Karena interval clock timer yang digunakan adalah sebesar 50ms, maka saaat indikator keamanan bekerja led akan menyala selama duapuluh kali interval clock timer kemudian padam selama duapuluh kali interval clock timer dan terrus berulang.

Gambar 3.19 Diagram alir timer0 untuk indikator keamanan

HASIL DAN PEMBAHASAN

Pada bab ini akan ditunjukkan beberapa pengujian dan pengamatan yang telah diambil, beserta pembahasannya untuk mengetahui kesesuaian alat yang dibuat dengan alat yang telah dirancang. Pengujian akan meliputi hasil kerja alat secara keseluruhan dan beberapa sub sistem yang ada pada alat.

4.1. Hasil Akhir Perancangan

Dari perakitan perangkat keras dan pemrograman perangkat lunak telah dihasilkan suatu peralatan yang merupakan simulasi dari sistem pengendalian keamanan mobil, seperti ditunjukkan pada gambar 4.1.

Gambar 4.1. Bentuk Fisik Pengendali Sensor Utama Car Immobilizer

(1) Indikator kunci pintu.

(2) Sensor pintu

(3) Indikator sinyal dari reader RFID (4) Indikator kunci mobil

(5) Kunci manual pintu 2

3 4

5 6

1

(6) Indikator out put

Pada awal perancangan, pengendali sensor utama pada car immobilizer terdiri dari 4 bagian, tapi pada perkembangannya dibutuhkan satu bagian tambahan, yang terdiri dari :

1. Mikrokontroler ATmega8535 berfungsi untuk mengolah masukan dan keluaran sistem.

Gambar 4.2 Bentuk Fisik Rangkaian Mikrokontroler ATmega8535

3. Rangkaian LM 35 yang berfungsi sebagai sensor suhu pada mesin mobil.

Gambar 4.3 Bentuk Fisik Rangkaian Sensor Suhu

4. Indikator keluaran sebagai implementasi dari keluaran dari system pengendali sensor utama pada car immobilizer.

Gambar 4.4 Bentuk Fisik Rangkaian Output

5. Rangkaian timer eksternal yang merupakan bagian tambahan yang berfungsi untuk mengendalikan keluaran dari mikrokontroler yang membutuhkan timer.

Gambar 4.5 Bentuk Fisik Rangkaian Timer Eksternal

4.2 Pengamatan Sistem

4.2.1 Cara Kerja Simulasi Pengendali Sensor Utama

Dalam menjalankan alat ini langkah pertama yang dilakukan adalah menghubungkan sistem dengan catu daya tegangan 12 V. Sistem akan langsung membaca masukan sinyal dari reader RFID sesaat setelah perangkat dihubungkan dengan catu daya.

Jika perangkat memperoleh sinyal ON dari RFID maka perangkat akan berada pada kondisi non alert, yang berarti pintu mobil dalam keadaan tidak terkunci, ignition switch

menyala, lampu ruang menyala selama 15 detik, dan tanda dimulainya kondisi non alert aktif, yaitu berupa hazard dan buzzer.

Gambar 4.6 Sistem Dalam Kondisi Non Alert

Tahap selanjutnya adalah sistem akan membaca kondisi dari kunci mobil, jika kunci mobil terpasang maka kunci pintu dapat kendalikan secara manual, tetapi jika tidak terpasang maka walaupun pengguna mengunci pintu secara manual, kunci pintu akan langsung membuka kunci pintu kembali

Gambar 4.7 Sistem Dalam Kondisi Non Alert dan Kunci Mobil Didalam

Saat sinyal dari RFID tidak terdeteksi (RFID off), sistem akan merubah kondisi dari non alert menjadi alert. Kondisi alert ditandai dengan aktifnya hazard dan buzzer yang menyala sesuai dengan perancangan pada table 3.1.

kunci didalam

pintu 1 dan 3 dikunci pintu 1 dan 3

terkunci Indikator pintu

tidak terkunci

Buzzer aktif

Hazard aktif

lampu ruang aktif

Ignition switch = on

Gambar 4.8 Sistem Dalam Kondisi Alert

Pada kondisi alert ini ignition switch dalam keadaan padam, sehingga mesin mobil tidak dapat dinyalakan. Selama dalam kondisi ini, indikator keamanan aktif, berupa led yang nyala dan padam setiap satu detik. Pintu mobil juga akan terkunci dan sensor pintu akan bekerja untuk mendeteksi pintu apakah terbuka atau tertutup, jika ada pintu mobil yang terbuka maka alarm akan menyala dan terus menyala sampai sinyal RFID kembali terdeteksi kembali.

Gambar 4.9 Sistem Dalam Kondisi Alert dan Pintu Terbuka

pintu terkunci

pintu terbuka

ignition switch = off

buzzer menyala

ignition switch off buzzer dan

hazard menyala pintu terkunci

Indikator keamanan

menyala

4.2.2. Pengujian Saklar RFID

Saat tag terdeteksi oleh reader, reader akan memberi sinyal masukan kepada sistem berupa tegangan sebesar 5 volt. Oleh karena itu, digunakan sebuah saklar sebagai simulasi masukan yang berasal dari reader RFID. Kondisi pada saat tag terdeteksi oleh reader disimulasikan dengan saklar masukan yang terhubung pada tegangan sebesar 5 volt.

Tetapi pada saat tag di luar radius pendeteksian reader, disimulasikan dengan saklar masukan yang terhubung pada ground.

Keluaran yang pertama kali aktif saat terjadi perubahan status yang disebabkan oleh saklar RFID ini adalah hazard dan buzzer. Saat RFID on maka hazard dan buzzer berkedip sebanyak satu kali, tapi saat RFID off maka hazard dan buzzer berkedip sebanyak dua kali. Tabel 4.1 adalah tabel yang berisi data percobaan yang dilakukan sebanyak sepuluh kali tentang perubahan pada hazard dan buzzer terhadap perubahan masukan saklar RFID.

Tabel 4.1 Data Percobaan Hazard dan Buzzer Terhadap Saklar RFID Percobaan Saklar RFID Kondisi hazard dan buzzer

1 On Berkedip 1X

2 On Berkedip 1X

3 On Berkedip 1X

4 On Berkedip 1X

5 On Berkedip 1X

6 Off Berkedip 2X

7 Off Berkedip 2X

8 Off Berkedip 2X

9 Off Berkedip 2X

10 Off Berkedip 2X

Dari data percobaan pada tabel 4.1 dapat dilihat bahwa pengujian saklar RFID terhadap keluaran berupa hazard dan buzzer berjalan sesuai dengan perancangan awal, yaitu berkedip dua kali saat saklar RFID off dan berkedip satu kali saat saklar RFID on.

4.2.3. Pengujian Saklar Kunci Mobil

Saklar kunci mobil adalah masukan yang digunakan sebagai indikator kunci mobil untuk menentukan kendali yang digunakan pada penguncian pintu, apakah otomatis

atau manual. Saat kunci mobil berada di dalam starter mobil, yang berarti saklar kunci mobil on maka semua pintu mobil dapat dikunci secara manual. Tetapi jika kunci mobil tidak berada di dalam starter mobil atau saklar kunci mobil off maka semua pintu mobil tidak dapat dikunci secara manual, yang berarti jika pintu dikunci dan terkunci maka pintu akan langsung terbuka kembali.

Pada saklar kunci mobil, ada dua pengujian yang dilakukan, yaitu saat saklar on dan saat saklar off. Data pengujian saklar kunci mobil dapat dilihat pada tabel 4.2 dan tabel 4.3.

Tabel 4.2 Data Percobaan Saat Saklar Kunci Mobil on Percobaan Pintu Yang Dikunci Pintu Yang Terkunci

1 Pintu 2 dan 3 Pintu 2 dan 3 2 Pintu 1 dan 4 Pintu 1 dan 4 3 Pintu 1 dan 2 Pintu 1 dan 2 4 Pintu 3 dan 4 Pintu 3 dan 4

Tabel 4.3 Data Percobaan Saat Saklar Kunci mobil off Percobaan Pintu Yang Dikunci Keadaan Pintu Yang Dikunci

1 Pintu 2 dan 3 Pintu 2 dan 3 tidak terkunci 2 Pintu 1 dan 4 Pintu 1 dan 4 tidak terkunci 3 Pintu 1 dan 2 Pintu 1 dan 2 tidak terkunci 4 Pintu 3 dan 4 Pintu 3 dan 4 tidak terkunci

Data yang ada pada tabel 4.2 dan tabel 4.3 diambil saat mobil berada pada keadaan non alert. Dari tabel 4.2 dapat dilihat bahwa pintu yang terkunci adalah pintu yang dikunci, dengan kata lain pintu dapat dikunci secara manual. Tetapi pada tabel 4.3 walaupun ada pintu yang dikunci, kondisi semua pintu tetap tidak terkunci semua. Keadaan kunci pintu yang terjadi sesuai dengan perancangan yang dilakukan, yaitu kunci pintu otomatis terbuka saat saklar kunci mobil off dan kunci pintu manual saat saklar kunci mobil on.

4.2.4. Pengujian Sensor Pintu Mobil

Pengujian awal untuk reed switch dilakukan dengan cara mendekatkan sensor ke medan magnet. Dua bagian yang dipisahkan oleh sensor (reed switch) sksn terhubung

saat sensor berada di medan magnet. Hasil pengujian reed switch terhadap medan magnet dapat dilihat pada tabel 4.4.

Tabel 4.4 Data Percobaan Reed Switch Terhadap Medan Magnet Percobaan

Kondisi dari reed switch pada alat ini adalah aktif saat pintu mobil tertutup, dan tidak aktif saat pintu terbuka. Fungsi utama dari sensor pada alat ini adalah untuk membaca kondisi pintu apakah tertutup atau tidak. Jika sistem dalam keadaan alert dan ada pintu yang terbuka maka alarm menyala. Alarm yang dimaksud adalah hazard dan buzzer yang terus berkedip sampai saat sistem berubah keadaan menjadi non alert serta lampu ruang yang menyala selama 15 detik. Percobaan dan pengambilan data yang dilakukan adalah pengujian pada saat sistem pada keadaan alert. Data hasil percobaan dapat dilihat pada tabel 4.5.

Tabel 4.5 Data Percobaan Alarm Terhadap Sensor Reed Switch Percobaan Reed Switch yang Aktif

Kondisi Alarm

Hazard buzzer Lampu Ruang 1 Reed Switch pintu 1 Berkedip Berkedip Menyala 14 detik 2 Reed Switch pintu 2 Berkedip Berkedip Tidak menyala 3 Reed Switch pintu 3 Berkedip Berkedip Tidak menyala 4 Reed Switch pintu 4 Berkedip Berkedip Tidak menyala

Dari empat kali percobaan yang dilakukan, dapat diketahui bahwa sensor reed switch dapat bekerja dengan baik karena dapat mengaktifkan alarm. Dari tabel 4.5 dapat dilihat bahwa pada alarm, lampu ruang menyala hanya pada percobaan pertama sedangkan pada percobaan yang lainnya lampu ruang tidak menyala. Penyebab tidak menyalanya lampu ruang saat alarm aktif dijelaskan bagian pengujian timer untuk astable timer LM555 ON = 15 s.

4.2.5 Pengujian Keluaran Timer

Pengujian pada keluaran timer terbagi menjadi dua bagian, yaitu timer eksternal dan timer internal. Timer eksternal digunakan untuk keluaran ATMEGA8535 yang berupa hazard, buzzer dan lampu ruang, sedangkan timer internal digunakan untuk indikator keamanan.

4.2.5.1 Pengujian Keluaran Astable Timer LM555 ON = 350ms dan OFF = 350ms Pada percobaan dan pengambilan data yang dilakukan, ternyata rangkaian astable timer dengan nilai komponen dari hasil perancangan yang telah dilakukan sebelumnya tidak menghasilkan gelombang keluaran yang sesuai dengan perancangan awal, untuk itu dilakukan penyesuaian dan diperoleh nilai komponen sebagai berikut :

R1 = 3652 Ω R2 = 4460 Ω C = 100 µ

Dan diperoleh gelombang keluaran seperti pada gambar 4.11.

Gambar 4.10 Gelombang Keluaran Timer 555 (TL=350ms) TL = 350ms

Gambar 4.11 Gelombang Keluaran Timer 555 (TH=350ms)

4.2.5.2 Pengujian Keluaran Astable Timer LM555 ON = 250ms dan OFF = 450ms Pada percobaan dan pengambilan data yang dilakukan, ternyata rangkaian astable timer dengan nilai komponen dari hasil perancangan yang telah dilakukan sebelumnya tidak menghasilkan gelombang keluaran yang sesuai dengan perancangan awal, untuk itu dilakukan penyesuaian dan diperoleh nilai komponen sebagai berikut :

R1 = 2920 Ω R2 = 5930 Ω C = 100 µ

Dan diperoleh gelombang keluaran seperti pada gambar 4.12 dan gambar 4.13.

Gambar 4.12 Gelombang Keluaran Timer 555 (TH=250ms) TH = 250ms

TH = 350ms

Gambar 4.13 Gelombang Keluaran Timer 555 (TL=450ms)

4.2.5.3 Pengujian Keluaran Astable Timer LM555 ON = 15s

Dari hasil pengujian rangkaian astable timer untuk periode tinggi 15s tidak sesuai dengan hasil akhir yang diharapkan pada perancangan awal. Hasil akhir untuk rangkaian astable timer untuk periode tinggi 15s yang diharapkan adalah indikator lampu ruang yang merupakan keluaran dari rangkaian astable timer akan menyala selama 15s saat sistem pertama kali berada dalam keadaan non alert atau saat alarm aktif. Tetapi pada kenyataannya lampu ruang hanya menyala saat percobaan pertama, yaitu saat setelah sistem terhubung dengan catu daya. Data percobaan dapat dilihat pada tabel 4.4.

Penyebab ketidaksesuaian ini adalah karena adanya kesalahan pada perancangan rangkaian astable timer yang digunakan, seperti pada gambar rangkaian yang ditunjukan pada gambar 4.14.

TL = 450ms

Gambar 4.14 Saklar Transistor Untuk Astable Timer Menggunakan LM 555

Konsep awal dari rangkaian seperti yang ditunjukan pada gambar 4.14 adalah, transistor akan berfunsi sebagai saklar yang akan memutus dan menyambungkan koneksi kapasitor dan beban ke ground. Kesalahannya adalah bahwa kaki GND LM555 ke ground tidak ikut dipisahkan melalui saklar transistor. Sehingga saat rangkaian timer ini terhubung ke sistem yang menyediakan ground dan VCC sebesar 5 volt, LM555 langsung aktif.

4.2.5.4 Pengujian Timer internal

Pada awal perancangan timer internal ditentukan interval waktu pada timer 0 sebesar 50ms dengan memberikan nilai pada TCNTO = 0 x 3C. Tetapi dari hasil percobaan yang dilakukan, ternyata interval waktu yang dihasilkan tidak mencapai 50ms. Hal ini dapat dimungkinkan terjadi karena crystal ATMEGA8535 yang terpasang pada rangkaian mikrokontroler yang seharusnya sebesar 4Mhz tidak dapat diketahui secara pasti bahwa frekuensi crystal tepat sebesar 4Mhz. perbedaan frekuensi ini dapat menyebabkan selisih interval waktu.

4.2.6 Pengujian ADC

Pengujian yang dilakukan untuk mengetahui apakah alat dapat bekerja dengan baik dalam mengukur suhu atau tidak. Pengujian pertama adalah pengujian ADC internal ATMEGA8535, yang dilakukan dengan cara memberikan tegangan masukan pada pin masukan ADC. Tegangan masukan yang diberikan ini dibatasi dengan tegangan maksimal adalah tegangan referensi internal ADC, yaitu 2,5v (hasil pengukuran). Besarnya nilai tegangan masukan ini kemudian akan disimpan di EEPROM ATMEGA8535, dan nilai

yang tersimpan di dalam EEPROM ATMEGA8535 inilah yang kemudian dibandingkan dengan tegangan masukan. Dan hasil pengujiannya dapat dilihat pada table 4.6.

Tabel 4.6 Perbandingan Tegangan Masukan dan Data di Memori Tegangan Masukan ADC

(volt) Data di Memori Selisih Data

0 0.068 0.068 nilai tegangan masukan dengan nilai yang tersimpan pada EEPROM ATMEGA8535, yang mana rata-rata selisihnya adalah 0,0686. Yang berarti setiap tegangan masukan yang diterima, ADC akan membaca nilai tersebut dan ditambahkan 0.0686.

Pada pengujian ADC yang dilakukan selanjutnya adalah mengukur tegangan keluaran dari LM35 dan membandingkan dengan suhu yang terukur.

Tabel 4.7 Perbandingan Data Suhu dan Tegangan Keluaran LM35 Suhu

Dari hasil pengujian antara suhu yang terdeteksi dengan tegangan keluaran dari LM35 tersebut dapat dilihat bahwa LM35 bekerja sesuai dengan dasar teori, yaitu perubahan suhu setiap 1°C sama dengan perubahan tegangan sebesar 10mv.

Setelah menguji setiap bagian, langkah selanjutnya adalah mengukur suhu menggunakan LM35 yang langsung terhubung dengan sistem, dimana sistem akan menyimpan data suhu ke dalam EEPROM ATMEGA8535. Data di dalam EEPROM ATMEGA8535 tersebut kemudian dibandingkan dengan suhu yang terukur menggunakan thermometer dan juga tegangan keluaran LM35 yang diukur menggunakan multimeter.

Hasil pengujian yang dilakukan menggunakan thermometer dan multimeter dapat dilihat pada tabel 4.8 berikut ini.

Tabel 4.8 Perbandingan Antara Data Tersimpan dan Data Terukur Data Suhu Tersimpan

(°C)

Data Suhu Terukur (°C)

38.7 31

41.75 35

49 42

56.75 50

70.5 63

86.75 80

103.5 96

121.5 115

135.75 128

141 134

Jika dari semua data suhu yang tersimpan di EEPROM ATMEGA8535 dikurangi dengan nilai 0.0686 (volt) atau 6,86 (°C), kemudian dilihat selisihnya dengan suhu sebenarnya, maka diperoleh data bahwa kemungkinan perbedaan suhu terukur dan suhu tersimpan sebesar 1°C.

KESIMPULAN

Dari pembahasan dan pengujian dari alat yang telah dibuat berdasarkan hasil rancangan, maka pada bab ini dapat diambil kesimpulan dan beberapa saran yang berguna untuk pengembangan alat.

5.1 Kesimpulan

1. Pemilihan mode penguncian pintu otomatis atau manual yang dipengaruhi indikator kunci mobil dapat berjalan dengan baik.

2. Reed switch yang digunakan sebagai sensor pintu dapat mendeteksi buka dan tutup pintu dengan baik.

3. Rangkaian timer eksternal astable timer 555 dapat memberikan keluaran yang baik, kecuali untuk keluaran T

H

= 15s karena proses pengisian dan pengosongan yang berjalan dengan tidak sempurna.

4. Selisih waktu pada indikator keamanan yang menggunakan timer internal tidak bekerja sesuai dengan perancangan.

5. Data ADC yang tersimpan di EEPROM ATMEGA8535 selisih maksimal 1ºC.

5.2 Saran

Pengembangan lebih lanjut pada alat ini dapat dilakukan dengan lebih mengaplikasikan dan menyesuaikan pada perangkat mobil dalam keadaan yang sesungguhnya.

Pemahaman dalam hal penggunaan timer internal sangat membantu keberhasilan dalam

pembuatan alat ini. Selain itu, salah satu faktor keberhasilan dalam pembuatan suatu alat

terletak pada komponen alat yang sesuai dengan perancangan, kesesuaian ini dapat diperoleh

dengan melakukan pengukuran awal komponen.

Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma : Nama : Thomas Joko Lelana

Nomor Mahasiswa : 045114064

Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universi-tas Sanata Dharma karya ilmiah saya yang berjudul :

PENGENDALI UTAMA CAR IMMOBILIZER DENGAN RFID BERBASIS ATMEGA8535

beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, me-ngalihkan dalam ben-tuk media lain, mengelolanya dalam benben-tuk pangkalan data, mendistribusikan secara terba-tas, dan mempublikasikannya di Internet atau media lain untuk kepentingan akademis tan-pa perlu meminta ijin dari saya maupun memberikan royalti ketan-pada saya selama tetap mencantumkan nama saya sebagai penulis.

Demikian pernyataan ini yang saya buat dengan sebenarnya.

Dibuat di Yogyakarta

Pada tanggal : 9 Maret 2010 Yang menyatakan

( Thomas Joko Lelana)

LAMPIRAN

Perbandingan Data Tegangan Masukan dan Data ADC Tersimpan

Tegangan masuk 0 V

Data tersimpan 07 0 = 0000 0111 0000 = 0000 0111 00 xx = 28

= 2.5

1024 28 x

 

= 0.068

Tegangan masuk 0.72 V

Data tersimpan 50 C = 0101 0000 1100 = 0101 0000 11 xx = 323

= 2.5

1024 323 x

 

= 0.788 Data ADC yang tersimpan

Data ADC yang tersimpan

Tegangan 1v = 1.074

Data tersimpan 6E 0 = 0110 1110 0000 = 0110 1110 00 xx = 440

= 2.5

1024 440 x

 

= 1.074

Tegangan 1.20v + 1.267

Data tersimpan 81 C = 1000 0001 1100 = 1000 0001 11 xx = 28

= 2.5

1024 519 x

 

= 1.267 Data ADC yang tersimpan

Data ADC yang tersimpan

Tegangan 1.846

Data tersimpan C1 C = 1100 0001 1100 = 1100 0001 11 xx = 28

= 2.5

1024 775x

 

= 1.892

Perbandingan Data Suhu Terukur dan Data ADC Tersimpan

Saat Suhu = 31°C

26 C = 0010 0110 1100 = 0010 0110 11 xx = 155

56 . 1024 2

155 x

Vinput

 



387 . 0

Vinput v = 38.7°C Data ADC yang tersimpan Data ADC yang tersimpan

Saat Suhu = 35°C Data ADC yang tersimpan Data ADC yang tersimpan

Saat Suhu = 50°C Data ADC yang tersimpan

Data ADC yang tersimpan

Saat Suhu = 80°C Data ADC yang tersimpan

Data ADC yang tersimpan

Saat Suhu = 115°C Data ADC yang tersimpan

Data ADC yang tersimpan

Saat Suhu = 134°C

8D 0 = 1000 1101 0000 = 1000 1101 00 xx = 564

56 . 1024 2

564 x

Vinput

 



41 . 1

Vinput v = 141°C Data ADC yang tersimpan

Listing Program

//==================================================

//

// File Name : '1-1'

// Title : ATmega 8535 in Car Immobilizer RFID // Author : Thomas Jangis

// Created : 2009-06-04 // Revision : 2009-03-02

// Target MCU : Atmel AVR ATMEGA8535 //

//==================================================

#include <avr/io.h>

#include <avr/eeprom.h>

#include <avr/interrupt.h>

#include <compat/deprecated.h>

#include <inttypes.h>

#include <stdio.h>

#include <util/delay.h>

//

volatile unsigned char counter_ind=0;

volatile unsigned char var_indi;

volatile unsigned char sta_rfid, sta_ind=0;

volatile unsigned char rfid;

volatile unsigned int sta_mode=0;

volatile unsigned int sta_maling=0;

volatile unsigned long int baca_adc1=0, baca_adc2=0;

volatile unsigned char data_adc1=0, data_adc2=0;

volatile unsigned int alamat=0;

//=========================================================

// init timer internal void timer_init(void) {

TCCR0|=(0<<WGM01)|(0<<WGM00)|(0<<COM01)|(0<<COM00)|(1<<

CS02)|(0<<CS01)|(1<<CS00);

TCNT0=0X3C;

TIMSK=(0<<OCIE0)|(1<<TOIE0);

TIFR=0x00;

}

//interupsi timer internal ISR (TIMER0_OVF_vect) {

if (sta_ind==1) {

TCNT0=0XB1;

sbi(PORTC,0);

if (counter_ind<20) {

counter_ind++;

//

if (counter_ind>=10)

{cbi(PORTC,0);}

else if (counter_ind<10) {sbi(PORTC,0);}

}

else if (counter_ind>=20) {counter_ind=0;}

}

else if (sta_ind==0) {

cbi(PORTC,0);

} }

// INIT DELAY void delay_ms(int ms) {

for (int i=0; i<=ms;i++) {

_delay_ms(1);

};

}

// INIT ADC void adc_init(void) {

ADMUX=(1<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(0<<MUX3)|(0<<MU X2)|(0<<MUX1)|(0<<MUX0);

ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE);

}

// BACA RFID void baca(void) {

sta_rfid=0; //nilai awal status rfid //

if(bit_is_set(PIND,7)) //baca RFID signal {

delay_ms (100); //tunda utk memastikan if(bit_is_set(PIND,7)) //uji ulang

{ sta_rfid = 1; //jika on, status=1 } }

//kesimpulan if (sta_rfid==1) { rfid=1; } else

{ rfid=0; } }

// MODE ALERT void alert(void) {

sta_ind=1;

sei();

if ((sta_mode==0) | (sta_mode==1))

{

sta_mode=2;

sbi(PORTC,5); // buzzer sbi(PORTC,6); // hazard delay_ms(400);

cbi(PORTC,5);

cbi(PORTC,6);

}

cbi(PORTC,7); // ig_sw mati sbi(PORTC,1); // pintu1 tutup sbi(PORTC,2); // pintu2 tutup sbi(PORTC,3); // pintu3 tutup sbi(PORTC,4); // pintu4 tutup //

// cek sensor pintu

if ((bit_is_set(PINB,0)) | (bit_is_set(PINB,1)) | (bit_is_set(PINB,2)) | (bit_is_set(PINB,3)))

{

sbi(PORTC,6); // hazard sbi(PORTC,5); // Alarm sta_maling=1;

//sbi(PORTD,6); // lampu ruang nyala }

}

// MODE NON ALERT void non_alert(void) {

sta_ind=0;

sei();

//cbi(PORTC,0); // mati indikator if (sta_maling==1)

{

sta_maling=0;

cbi(PORTC,5); // matikan Alaram cbi(PORTC,6); // matikan hazard cbi(PORTD,6); //lampu ruang padam }

if ((sta_mode==0) | (sta_mode==2)) {

sta_mode=1;

sbi(PORTC,5); // buzzer sbi(PORTC,6); // hazard

//sbi(PORTD,6); // lampu ruang nyala delay_ms(200);

cbi(PORTC,5);

cbi(PORTC,6);

} //

//POSISI kunci mobil

if(bit_is_clear(PIND,5)) // cek kunci starter {

//AUTOMATIC OPERATION

//================================================

//cek orang yg mengunci pintu

eeprom_write_byte(1,0); // memberi nilai nol pada alamat 1 eeprom_write_byte(0,0); // memberi nilai nol pada alamat 1 if(bit_is_set(PINA,1))

{ sbi(PORTC,1); }

if(bit_is_set(PINA,2))

{ sbi(PORTC,2); }

if(bit_is_set(PINA,3))

{ sbi(PORTC,3); }

if(bit_is_set(PINA,4))

{ sbi(PORTC,4); }

//cek pintu ada yang tertutup?

if ((bit_is_set(PINC,1)) | (bit_is_set(PINC,2)) | (bit_is_set(PINC,3)) | (bit_is_set(PINC,4)))

{ delay_ms(200); } //kalau tdk ada masalah

cbi(PORTC,1); // pintu1 buka cbi(PORTC,2); // pintu2 buka cbi(PORTC,3); // pintu3 buka cbi(PORTC,4); // pintu4 buka }

else {

//MANUAL OPERATION

//================================================

if(bit_is_set(PINA,1)) // PINTU 1

{ sbi(PORTC,1); }

else if(bit_is_clear(PINA,1))

{ cbi(PORTC,1); }

if(bit_is_set(PINA,2)) //PINTU 2

{ sbi(PORTC,2); }

else if(bit_is_clear(PINA,2))

{ cbi(PORTC,2); }

if(bit_is_set(PINA,3)) // PINTU 3

{ sbi(PORTC,3); }

else if(bit_is_clear(PINA,3))

{ cbi(PORTC,3); }

if(bit_is_set(PINA,4)) //PINTU 4

{ sbi(PORTC,4); }

else if(bit_is_clear(PINA,4))

{ cbi(PORTC,4); }

//

//Akses ADC

//baca ADC 10 bit baca_adc1= ADCW;

if(baca_adc1 > baca_adc2)

{

baca_adc2 = baca_adc1;

data_adc1 = ADCH;

data_adc2 = ADCL;

eeprom_write_byte((unsigned char *)0,data_adc1);

eeprom_write_byte((unsigned char *)1,data_adc2);

} }

//================================================

sbi(PORTC,7); // ig_sw nyala }

int main(void) {

//inisialisasi

PORTA=0XFF;

DDRA=0X00;

PORTB=0XFF;

DDRB=0X00;

DDRD=0x02;

PORTD=0xF7;

DDRC=0xFF;

PORTC=0x00;

sta_mode=0;

sta_maling=0;

//panggil adc

adc_init();

timer_init();

//loop truz while(1) {

baca(); //baca RFID if (rfid==1)

{ non_alert(); } else if(rfid==0)

{ alert(); } }

return(0);

}

Dokumen terkait