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
N3.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 775x
= 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);
}