Perancangan Flowchart Perancangan Program

39 tidak tidak tidak Gambar 3.4 flow chart Mulai Reset hardware inisialisasi port LCD Baca input RFID melalui kontroler sekunder Ada kode RFID ? ya Verifikasi kode ID Kode benar ? Buka pintu gerbang masuk . Baca berat muatan sensor dengan sensor Load cell Baca sensor ID yang keluar gerbang ? 2 Ton 5 ? Buka gerbang keluar , indicator hijau Kirim pesan sms load normal Buka gerbang keluar , indicator hijau Kirim pesan sms over load Selesai 40

3.3.2 Perancangan Program

Dalam perancangan program, dibutuhkan beberapa pembagian dari program tersebut untuk memudahkan dalam pembuatan aplikasi per bagiannya, adapun masing-masing pembagian program seperti berikut ini: program bagian pertama include mega8535.h asm .equ __lcd_port=0x15 ;PORTC endasm include lcd.h include stdio.h include delay.h Perintah diatas adalah perintah untuk menyertakan file – file bantu pada library yangb tersedia pada paket CV AVR misalnya file mega 8535, file LCD, dsb. program bagian kedua define ADC_VREF_TYPE 0x00 define fosc 4000000 define baud 19200 define ubrr_val fosc16baud-1 define RXC 7 Merupakan perintah untuk mendefenisikan konstanta sesuai dengan data yang akan digunakan oleh program. 41 program bagian ketiga unsigned int read_adcunsigned char adc_input { ADMUX=adc_input | ADC_VREF_TYPE 0xff; delay_us10; ADCSRA|=0x40; while ADCSRA 0x10==0; ADCSRA|=0x10; return ADCW; } Perintah diatas merupakan rutin untuk membaca data ADC program bagian ketiga Declare your global variables here long int W; char buf[33],j; perintah untuk mendeklarasikan variable sesuai dengan tipenya. program bagian kelima void SendMessage1void; void SendMessage2void; void Displayvoid; void step_INvoid; void step_OUTvoid; void mainvoid { 42 Perintah untuk mendeklarasikan nama rutin yang dibuat. program bagian ke enam PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0xFF; PORTC=0x00; DDRC=0x00; PORTD=0xFF; DDRD=0x30; Merupakan perintah untuk inisialisasi port dan mengisi nilai port. program bagian ke tujuh UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x0C; perintah untuk menginisialisasi port serial yaitu 19200 Bps byte dan 1 byte stop. program bagian ke delapan ADMUX=ADC_VREF_TYPE 0xff; ADCSRA=0x84; SFIOR=0xEF; perintah untuk menginisialisasi ADC. 43 program bagian ke Sembilan lcd_init16; perintah untuk menginisialisasi LCD. program bagian kesepuluh lcd_gotoxy0,0; lcd_putsfLOAD MONITORING; lcd_gotoxy0,1; lcd_putsf VIA SMS; lcd_gotoxy0,1; delay_ms1000; perintah untuk menampilkan pesan pembuka pada LCD. program bagian kesebelas SendMessage; while 1 { while PIND.6 == 1{} Perintah untuk mendeteksi input pada port P.6 yaitu input yang diberikan oleh sensor RFID jika berlogika 1 perintah akan menunggu hingga port P.6 berlogika 0. program bagian keduabelas lcd_clear;lcd_gotoxy0,0;lcd_putsf OPEN GATE;PORTD=0xFF; step_IN; 44 perintah untuk membuka pintu palang dan menampilkan pesan pintu palang terbuka pada LCD. program bagian ketigabelas x1: delay_ms2000; perintah untuk menunda waktu 2 detik. program bagian empatbelas while PIND.7 == 1{W = read_adc010;Display;if W 5000 {PORTD.4 = 1;PORTD.5 = 0;}else {PORTD.4 = 0;PORTD.5 = 1;}} merupakan perintah untuk mendeteksi pin P.7 yaitu masuk dari rangkaian RFID untuk fase keluar. Jika port P.7 berlogika 1 maka program akan melakukan pembacaan berat menampilkan berat pada LCD dan menghidupkan lampu indikator sesuai dengan kondisi berat. program bagian limabelas if W 5000 {PORTD.4 = 1;PORTD.5 = 0;SendMessage2;while W 5000 {W = read_adc010;Display;} goto x1;} perintah untuk mendeteksi apakah berat 5000 kg jika yam aka lampu indikator akan merah disertai pengiriman pesan over load. program bagian keenambelas if W = 5000W = 2000 {step_OUT;PORTD.4 = 0;PORTD.5 = 1;SendMessage1;} jik berat diantara 2000 kg 5000 kg maka pintu palang akan terbuka lampu indikator hijau dan pengiriman pesan sms load normal. program bagian ketujuh belas if W 2000 {PORTD.4 = 1;PORTD.5 = 0; goto x1;} 45 }; Jika berat dibawah 2000 kg maka indikator akan merah tidak akan terbuka. program bagian kedelapanbelas } void SendMessage1void { lcd_gotoxy0,0; lcd_putsf SEND MESSAGE ; lcd_gotoxy0,1; lcd_putsf NORMAL LOAD ; printfAT+CMGS=24; delay_ms1000; printfc,0x0D; delay_ms2000; printf06912618010000B1000C810812562063820000FF0BCEB7BC1D 6683D8EF303100; delay_ms1000; printfc,0x1A; delay_ms2000; Display; } Merupakan perintah untuk mengirim pesan load normal yaitu perintah – perintah untuk menampilkan status pada LCD kemudian mengirim kode sms ke ponsel dan disertai pengiriman kode pdu ke ponsel. 46 program bagian kesembilanbelas void SendMessage2void { lcd_gotoxy0,0; lcd_putsf SEND MESSAGE ; lcd_gotoxy0,1; lcd_putsf OVER LOADING ; printfAT+CMGS=25; delay_ms1000; printfc,0x0D; delay_ms2000; printf06912618010000B1000C810812562063820000FF0C4F7B590E62 BEC3E4B4FB0C00; delay_ms1000; printfc,0x1A; delay_ms2000; Display; } Merupakan perintah untuk mengirim pesan over load yaitu perintah – perintah untuk menampilkan status pada LCD kemudian mengirim kode sms ke ponsel dan disertai pengiriman kode pdu ke ponsel. program bagian keduapuluh void Displayvoid 47 {lcd_clear; lcd_gotoxy0,0; lcd_putsfLOAD MONITORING; sprintfbuf,WEIGHT : i kg,W; lcd_gotoxy0,1; lcd_putsbuf;delay_ms500; } Merupakan rutin untuk menampilkan berat terukur pada layar LCD program bagian keduapuluh satu void step_INvoid{ for j=0;j16;j++{ PORTB=0x01; delay_ms5; PORTB=0x03; delay_ms5; PORTB=0x02; delay_ms5; PORTB=0x06; delay_ms5; PORTB=0x04; delay_ms5; PORTB=0x0c; delay_ms5; PORTB=0x08; delay_ms5; PORTB=0x09; delay_ms5; } PORTB=0x00; delay_ms3000; for j=0;j16;j++{ PORTB=0x09; delay_ms5; 48 PORTB=0x08; delay_ms5; PORTB=0x0c; delay_ms5; PORTB=0x04; delay_ms5; PORTB=0x06; delay_ms5; PORTB=0x02; delay_ms5; PORTB=0x03; delay_ms5; PORTB=0x01; delay_ms5; } PORTB=0x00; } program pada bagian keduapuluh dua void step_OUTvoid{ for j=0;j13;j++{ PORTB=0x90; delay_ms5; PORTB=0x80; delay_ms5; PORTB=0xc0; delay_ms5; PORTB=0x40; delay_ms5; PORTB=0x06; delay_ms5; PORTB=0x20; delay_ms5; PORTB=0x30; delay_ms5; PORTB=0x10; delay_ms5; } PORTB=0x00; delay_ms3000; for j=0;j13;j++{ PORTB=0x10; delay_ms5; 49 PORTB=0x30; delay_ms5; PORTB=0x20; delay_ms5; PORTB=0x60; delay_ms5; PORTB=0x40; delay_ms5; PORTB=0xc0; delay_ms5; PORTB=0x80; delay_ms5; PORTB=0x90; delay_ms5; } PORTB=0x00; } Merupakan perintah untuk menggerakkan motor stepper buka dan tutup kembali pintu keluar dengan cara yang sama.

3.4 Prinsip kerja sistem

Cara kerja sistem ini adalah dengan cara membaca output dari sensor berat, jika berat yang diukur sesuai dengan berat yang diinginkan, maka lampu indikator warna hijau akan menyala yang menandakan bahwa pintu palang keluar bisa dibuka dengan menggunakan kartu pengenal RFID sekaligus mengirim pesan kepada pemilik yang isi pesannya adalah load normal, dan sebaliknya jika berat yang diukur melebihi kapasitas, maka lampu indicator warna merah akan menyala yang menandakan bahwa pintu palang keluar tidak bisa dibuka sekaligus mengirim pesan kepada pemilik yang isi pesannya adalah over load. Untuk membuka pintu palang keluar solusinya adalah dengan mengurangi berat muatan kendaraan. 50

BAB IV PENGUJIAN DAN ANALISA ALAT

4.1 Pengujian RFID

Pengujian rangkaian proximity reader adalah untuk mengetahui apakah proximity reader dapat menbaca kode dari kartu akses dan mengirimkan kode tersebut rangkaian mikrokontroller AVR 8535. Adapun langkah- langkah pengujian adalah sebagai berikut : 1. Memasukkan catu daya pada rangkaian. 2. Memeriksa pin output dari RFID pada pin 9 dengan menggunakan logika probe

4.1.1 Rangkaian RFID

VCC 5 9 1 GND Gambar 3.5 Rangkaian Proximity Reader ID 12 READER