• Tidak ada hasil yang ditemukan

BAB V. PENUTUP

5.2. Saran

Proyek tugas akhir ini masih membutuhkan pengembangan untuk waktu yang akan datang. Saran untuk proyek tugas akhir ini yaitu sebagai berikut :

1. Penggunaan sistem pelacakan lain yang lebih akurat untuk melakukan pelacakan lokasi sepeda motor.

2. Penggunaan mikrokontroler lain untuk melakukan komunikasi serial menggunakan

mobile phone 3330 yang memiliki baudrate lebih cepat dibandingkan mobile phone

62

[1] http://positiveinfo.wordpress.com/2007/12/25/cara-merawat-motor-4-tak, diakses tanggal 3 Maret 2010

[2] http://id.88db.com/id/Knowledge/Knowledge_Detail.page?kid=2392 , diakses

tanggal 3 Maret 2010

[3] www.detikinet.com, diakses tanggal 14 Februari 2010

[4] http://id.wordpress.com/id/TechnologyBrief_GPSatauLBS ,diakses tanggal 9

Februari 2010

[5] Widyamantri, G.,2009, Sistem Pelacakan dan Pengendalian Mobil Jarak Jauh Menggunakan GPS dan Data Mode pada Telepon Selular GSM, Yogyakarta.

[6] www.embedtronics.com, diakses tanggal 11 Desember 2009

[7] ---,2009,Data Sheet Mikrokontroler Atmega8535, Atmel

[8] Wardhana, L.,2003, Mikrokontroler AVR Seri ATMe8535 Simulasi, Hardware, dan Aplikasi, ANDI, Yogyakarta.

[9] ---,2009,Data Sheet IC MAX232

[10] Yi-Bing Lin and Imrich Chlamtac, 2001, Wireless and Mobile Network Architectures, John Wiley & Sons, New York.

[11] www.ITAddict.com , diakses tanggal 1 Maret 2010 [12]

www.panasonic.com/MPMotionSensorNaPiOnRating_Performance_Panaso nic.mht , diakses tanggal 1 Maret 2010

[13] http://kurniadiansyah.blogspot.com/2009/02/artikel-perawatan-sepeda-motor.html, diakses tanggal 5 Maret 2010

[14] R. Boylestad dan L. Nashelky,1996, Electronic Devices and Circuit Theory, Prentice Hall, New Jersey.

Rangkaian Sistem Minimum AtMega8535

Rangkaian Sensor Kunci Kontak

Listing Program

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

Project : Sistem Keamanan dan Pengendalian Sepeda Motor

Version : 11.12.88

Date : 28/04/2010

Author : Damasus Kristiyanto Purnomo Nugroho

Company : USD College

Comments : "Terlahir dengan 2 bh mata untuk memandang masa depan . . . ."

Chip type : ATmega8535L Program type : Application

Clock frequency : 20,000000 MHz // 11059200 Memory model : Small

External SRAM size : 0 Data Stack size : 128 PortA : LED Indikator PortA.0 = Mode SMS PortA.1 = ALARM PortA.2 = Mesin On PortA.3 = Safety PortA.4 = GND PortA.5 = Mesin Heat PortB.0 : Klakson

PortD.5(OC1) : CDI OFF // setelah 2 menit port di onkan sebentar kondisi off mesin PortA.6 : Starter Motor

PORTA.7 : GND motor (1)Menghidupkan mesin (0)Normal PortC : Keypad

PortD.2(INT0) : Sensor PIR

PortB.2 : (1)Kelistrikan Sepeda Motor (0)Sensor Kunci kontak pengaktif (1=aktif) PortB.3(INT2) : Sensor Kunci kontak output

PORTD.1(TX) : HandphoneTX PORTD.0(RX) : HandphoneRX *****************************************************/ #include <mega8535.h> #include <delay.h> #include <stdio.h> // Global variables

int resetpassword, cekkeypad, modesms, modekeypad, finish, aktif_kunci_kontak, kirimsms; int b,d,r,i,s;

int a0,a1,a2,a3,a4,a5,a6; char k[10];

unsigned char data[100];

int mesin_heat,cnt_tim,starter_on,aktif_PIR,nomorsms; const long int osilator=11059200;

unsigned long int UBRR; #define klakson PORTB.0 #define CDI PORTD.5 #define stater PORTA.6 #define GND PORTA.7 #define listrik PORTB.1

#define SensorKuncikontak PortB.3 #define led_SMS PORTA.0 #define led_alarm PORTA.1 #define led_mesin PORTA.2 #define led_safety PORTA.3 #define led_GND PORTA.4 #define led_heat PORTA.5

// Timer 1 output compare A interrupt service routine

interrupt [TIM1_COMPA] void timer1_compa_isr(void) // Timer Pemanasan Mesin Motor {

if(mesin_heat==1) {

cnt_tim++; //Pengulangan timer starter_on=0;

if (cnt_tim>21) // 2 menit {

CDI=1; //Mesin OFF CDI diputus GND=0;

led_heat=0; //Led Heat off delay_ms(1000);

CDI=0; // CDI ON mesin_heat=0; //Timer NonAktif }

}}

// External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) {

if (aktif_PIR==1) //Sensor mendeteksi adanya tanda bahaya {

klakson=1; //Aktifkan klakson delay_ms(600); //Klakson nyala 1 kali klakson=0; //NonAktifkan klakson }

}

void InisialisasiUART( unsigned long int baud_rate) {

// USART initialization

// USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate:

UBRR = (osilator/(16*baud_rate))-1; UBRRL=UBRR; UBRRH=UBRR>>8; UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; } //////////////////////////MODE KEYPAD////////////////////////////// void Keypad4x4(void) { PORTC=0b01111111; delay_ms(1); while(PINC.0==0)

{delay_ms(10);resetpassword=1;} // A --> Reset Password while(PINC.1==0)

{delay_ms(10);cekkeypad=0;} // B --> Non Aktifkan Tombol Keypad while(PINC.2==0) {delay_ms(10);} // C while(PINC.3==0) {delay_ms(10);} // D PORTC=0b10111111; delay_ms(1); while(PINC.0==0) {delay_ms(50);if(s==0){k[i]=3;s=1;}} // 3 while(PINC.1==0) {delay_ms(10);if(s==0){k[i]=6;s=1;}} // 6 while(PINC.2==0) {delay_ms(10);if(s==0){k[i]=9;s=1;}} // 9 while(PINC.3==0)

{delay_ms(10);finish=1;} // # --> Selesai Memasukan Data PORTC=0b11011111;delay_ms(1); while(PINC.0==0) {delay_ms(10);if(s==0){k[i]=2;s=1;}} // 2 while(PINC.1==0) {delay_ms(10);if(s==0){k[i]=5;s=1;}} // 5 while(PINC.2==0) {delay_ms(10);if(s==0){k[i]=8;s=1;}} // 8 while(PINC.3==0) {delay_ms(10);if(s==0){k[i]=0;s=1;}} // 0 PORTC=0b11101111;delay_ms(1); while(PINC.0==0) {delay_ms(10);if(s==0){k[i]=1;s=1;}} // 1 while(PINC.1==0) {delay_ms(10);if(s==0){k[i]=4;s=1;}} // 4 while(PINC.2==0) {delay_ms(10);if(s==0){k[i]=7;s=1;}b=1;} // 7

while(PINC.3==0)

{delay_ms(10);cekkeypad=1;b=0;} // * --> Aktifkan tombol keypad }

void cek_passwordkeypad() {

Keypad4x4(); //cek apakah ada pengaktifan

keypad

k[0]=99;k[1]=99;k[2]=99;k[3]=99;k[4]=99;k[5]=99; //inisialisasi awal Password Keypad i=0; finish=0; resetpassword=0; s=0; while(cekkeypad==1) { Keypad4x4(); if(finish==0) //Password : *111288# {if(s==1){i++;s=0;}} if(finish==1) { a0=k[0];a1=k[1];a2=k[2];a3=k[3];a4=k[4];a5=k[5];a6=k[6];

if ((a0==1)&&(a1==1)&&(a2==1)&&(a3==2)&&(a4==8)&&(a5==8)) //Cek Nilai Kebenaran Password { modekeypad=1; modesms=0; }; cekkeypad=0; } if(resetpassword==1) { k[0]=99;k[1]=99;k[2]=99;k[3]=99;k[4]=99;k[5]=99; resetpassword=0; i=0; }}} //////////////////////////MODE SAFETY////////////////////////// void alarm_on() {

klakson=1; // Aktifkan klakson

kirimsms=1; // Aktifkan pengiriman SMS led_alarm=1; // Led Alarm aktif

CDI=1; // CDI dioffkan aktif_PIR=0;

}

void kuncikontak() {

{

PORTB.1=0; // Mengaktifkan Port kunci kontak if(PINB.3==1) // Ada tanda bahaya

{

alarm_on();

aktif_kunci_kontak=0; // Menonaktifkan kunci kontak }

}

if(aktif_kunci_kontak==0) {

if(PINB.3==1) // Ada pengaktifan manual { GND=0; CDI=0; listrik=0; r=11; } if((PINB.3==0)&&(r==11)) { mesin_heat=0; PORTA.2=0;PORTA.5=0; r=0; } } } void safety_on() { aktif_kunci_kontak=1; aktif_PIR=1;

led_safety=1; //Led indikator safety aktif listrik=0; //Kelistrikan OFF

stater=0; //Starter OFF CDI=1; //CDI OFF GND=1; //GND OFF kuncikontak();

}

void safety_off() {

listrik=0; //Kelistrikan OFF stater=0; //Starter OFF CDI=0; //CDI ON GND=0;

klakson=0; //Non Aktifkan klakson aktif_kunci_kontak=0;

aktif_PIR=0;

led_safety=0; //Led indikator Safety Nonaktif led_alarm=0; //Led indikator Alarm off }

//////////////////////////MODE MESIN///////////////////////////////// void motor_on()

{

led_mesin=1; //Led indikator Mesin aktif listrik=1; //Listrik ON

GND=1; //GND OFF CDI=0; //CDI ON delay_ms(500);

stater=1; //Stater aktif 3 detik delay_ms(1000);

stater=0; //Memutuskan starter-GND

listrik=0; //Memutuskan kuncikontak-12V (Pengaruh GND) klakson=0; //Nonaktifkan klakson

}

void motor_off() {

listrik=0; //Listrik OFF stater=0; //Starter OFF

led_mesin=0; //Led indikator Mesin nonaktif GND=0; // GND ON

CDI=1; //CDI diputus sesaat delay_ms(1000);

CDI=0; //CDI dihubungkan kembali }

void motor_heat() {

led_heat=1; //Led indikator Heat aktif CDI=0; //CDI ON

GND=1; //GND OFF listrik=1; //Listrik ON delay_ms(1000);

stater=1; // Starter dihidupkan selama 5 detik delay_ms(1000);

stater=0; // Stater dioffkan

mesin_heat=1; // Mesin dipanaskan selama 2 menit }

void modenormal() {

safety_off();

listrik=0; // Sensor Kunci Kontak Nonaktif CDI=0; // CDI terhubung

GND=0;

aktif_kunci_kontak=0; aktif_PIR=0;

}

void Kirim_SMS_BAHAYA() {

printf("AT+CMGS=20"); // Kirim SMS BAHAYA putchar(13); delay_ms(1000); printf("05912618164201000D91265866645495F2000006C22032980D02"); putchar(26); delay_ms(500); } void lacak_lokasi() { // Kirim SMS ke *123# }

void Delete() // Penghapusan SMS { printf("AT+CMGD=1"); putchar(13); delay_ms(1000); } void cek_isisms() {

if((data[85]=='C')&&(data[96]=='D')&&(data[97]=='9')) // Menghidupkan mesin {motor_on();PORTA.2=1;}

if((data[85]=='C')&&(data[96]=='D')&&(data[97]=='8')) // Mematikan mesin {motor_off();PORTA.2=0;}

if((data[85]=='C')&&(data[96]=='1')&&(data[97]=='8')) // Memanaskan mesin {motor_heat();PORTA.5=1;}

if((data[85]=='4')&&(data[96]=='D')&&(data[97]=='9')) // Mengaktifkan keamanan {safety_on();PORTA.3=1;}

if((data[85]=='4')&&(data[96]=='D')&&(data[97]=='8')) // Menonaktifkan keamanan {safety_off();PORTA.3=0;}

if((data[85]=='D')&&(data[96]=='E')&&(data[97]=='8')) // Melacak lokasi motor {lacak_lokasi();PORTA.1=1;} } void cek_nohp() { for(d=16;d<99;d++) {data[d]=getchar();} if((data[52]=='5')&&(data[53]=='8')&&(data[54]=='6')&&(data[55]=='6')&&(data[56]=='6')&&(data [57]=='4')&&(data[58]=='5')&&(data[59]=='4')&&(data[60]=='9')&&(data[61]=='5')&&(data[62]==' F')&&(data[63]=='2')) { //Cek No HP : 5866645495F2 = 085664645592 cek_isisms();

Delete(); }}

void cek_smsbaru() {

printf("AT+CMGL=0");putchar(13); // Program Pembacaan SMS Baru data[15]=0;

for(d=0;d<16;d++) {data[d]=getchar();}

if(data[15]=='+') // Pengecekan ada tidaknya SMS {cek_nohp();} // Jika ada SMS maka cek no HP else { while(kirimsms==1) {Kirim_SMS_BAHAYA();kirimsms=0;} } } ///////////////////////////PROGRAM UTAMA/////////////////////////////////////// void main(void) { PORTA=0x00;

DDRA=0xFF; //Setting PortA sebagai output PORTB=0x00;

DDRB=0xF7; //Setting PortB.3 sebagai input PORTC=0xFF; //Keypad 4x4

DDRC=0xF0; PORTD=0x00; DDRD=0xF0;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 0,977 kHz // Mode: CTC top=OCR1A // OC1A output: Discon // OC1B output: Discon. // Noise Canceler: Off

// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: On // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x0D; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00;

OCR1AH=0xE4; //Timer selama 5s OCR1AL=0xE1;

OCR1BL=0x00;

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

// INT0 Mode: Rising Edge // INT1: Off

// INT2: On

// INT2 Mode: Rising Edge GICR|=0x60;

MCUCR=0x03; MCUCSR=0x40; GIFR=0x60;

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

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;

SFIOR=0x00;

// Global enable interrupts #asm("sei")

// Inisialisasi awal sistem

modesms=1; // Penggunaan mode SMS sebagai prioritas I modekeypad=0; // Penggunaan mode Keypad sebagai prioritas II listrik=0; // Kondisi Mesin siap dihidupkan

mesin_heat=0; // Kondisi Mesin untuk pemanasan starter_on=1; // Kondisi siap pengaktifan starter CDI=0; // Kondisi Mesin off

stater=0; // Kondisi awal starter off

cnt_tim=0; // Penghitung timer pemanasan sepeda motor selama 2 menit PORTD.2=0; // Kondisi Interupsi0 untuk sensor PIR

nomorsms=0; // Kondisi awal nomor sms user belum terdeteksi kirimsms=0;

led_GND=0;r=0;

InisialisasiUART(19200);// Kondisi inisialisasi sistem UART delay_ms(100);

printf("at+cpms=sm"); // Inisialisasi Memori Mobile Phone putchar(13); delay_ms(100); while (1) { while(modesms==1) {

led_SMS=1; //LED Mode SMS Aktif

cek_passwordkeypad(); //Pengecekan ada tidaknya pengaktifan keypad kuncikontak(); //Pengecekan sensor kunci kontak

cek_smsbaru(); //Pengecekan ada tidaknya SMS baru delay_ms(500); led_SMS=0; delay_ms(600); } while(modekeypad==1) {

//Mode normal aktif

led_SMS=0; //LED Mode SMS OFF modenormal();

PORTA.1=0;PORTA.2=0;PORTA.3=0;PORTA.5=0; delay_ms(1000);

modekeypad=0; //Program kembali ke modesms modesms=1;

} } }

Dokumen terkait