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;
} } }