Pengujian koneksi modul GSM Wavecom dengan Mikrokontroller ATMEGA32 via serial max232 Program Lengkap Pengujian Keseluruhan This program was created by the

PORTB=0x00; DDRC=0xff; PORTC=0x00; DDRD=0x00; PORTD=0x00; while 1 { PORTC=0xff; delay_ms1000; PORTC=0x00; delay_ms1000; } } Setelah program di download ke mikrokontroler, Relay Akan Mengalami Kondisi Terbuka Dan Tertutu Selama 1 Detik, begitu juga dengan lampu.

4.4. Pengujian koneksi modul GSM Wavecom dengan Mikrokontroller ATMEGA32 via serial max232

Pada pengujian komunikasi serial ini, kita lakukan dengan cara mengkomunikasikan mikrokontroller dengan komputer menggunakan kabel serial yang terhubung ke mikro melewati IC MAX232. pengujian dapat dilakukan dan dapat dilihat pada hyper Terminal yang sudah ada pada Windows. Pengujian pada hyper terminal ini akan muncul beberapa pilihan yaitu pilih Universitas Sumatera Utara Com1 dan pada bit per second baud pilih 9600. Dalam pengujian komunikasi serial ini kita harus memperhatikan perhitungan clock generator pada mikro, karena cristal yang harus dipergunakan harus menggunakan perhitungan. Hal ini diperlukan agar data yang masuk bener-bener bisa dibaca oleh komputer. Dalam pengujian ini menggunakan crystal 11.059200 MHz. Mikrokontroller dikomunikasikan secara serial dengan wavecom fastrack 1306 b selanjutnya akan mengirimkan SMS di HP user pemilik rumah, untuk mengetahui kondisi pintu atau jendela.dalam Pengkabelanya kondisi RX wavecom dihubungkan dengan TX mikrokontroller begitu pula sebaliknya. Berikut adalah program untuk mengirimkan sms ke no hp tujuan include mega8535.h include delay.h include stdio.h void mainvoid { PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; void sms_init { printfATE0; putchar0x0D;ENTER whilegetchar=K{}; Universitas Sumatera Utara whilegetchar=0x0A{}; delay_ms500; } sms_init; while 1 { printfAT+CMGF=1 putchar13; printfAT+CMGS=; putchar; printf+6285261065610; putchar; putchar13 printftes modul wavecom; putchar26; } } Jika program dijalankan, maka mikro akan memerintahkan modul gsm untuk mengirim pesan yang berisi karakter “tes modul wavecom”. Universitas Sumatera Utara

4.5 Program Lengkap Pengujian Keseluruhan This program was created by the

CodeWizardAVR V3.12 Advanced Automatic Program Generator © Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l. http:www.hpinfotech.com Project : Version : Date : 3312016 Author : Company : Comments: Chip type : ATmega32A Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 512 include mega32a.h include delay.h define lampu1 PORTC.0 define lampu2 PORTC.1 define lampu3 PORTC.2 define lampu4 PORTC.3 define lampu5 PORTC.4 define hidup 1 define mati 0 char kata; Declare your global variables here define DATA_REGISTER_EMPTY 1UDRE define RX_COMPLETE 1RXC define FRAMING_ERROR 1FE Universitas Sumatera Utara define PARITY_ERROR 1UPE define DATA_OVERRUN 1DOR USART Receiver buffer define RX_BUFFER_SIZE 8 char rx_buffer[RX_BUFFER_SIZE]; if RX_BUFFER_SIZE = 256 unsigned char rx_wr_index=0,rx_rd_index=0; else unsigned int rx_wr_index=0,rx_rd_index=0; endif if RX_BUFFER_SIZE 256 unsigned char rx_counter=0; else unsigned int rx_counter=0; endif This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow; USART Receiver interrupt service routine interrupt [USART_RXC] void usart_rx_isrvoid { char status,data; status=UCSRA; data=UDR; if status FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN==0 { rx_buffer[rx_wr_index++]=data; if RX_BUFFER_SIZE == 256 special case for receiver buffer size=256 if ++rx_counter == 0 rx_buffer_overflow=1; else if rx_wr_index == RX_BUFFER_SIZE rx_wr_index=0; if ++rx_counter == RX_BUFFER_SIZE { rx_counter=0; rx_buffer_overflow=1; } Universitas Sumatera Utara endif } } ifndef _DEBUG_TERMINAL_IO_ Get a character from the USART Receiver buffer define _ALTERNATE_GETCHAR_ pragma used+ char getcharvoid { char data; while rx_counter==0; data=rx_buffer[rx_rd_index++]; if RX_BUFFER_SIZE = 256 if rx_rd_index == RX_BUFFER_SIZE rx_rd_index=0; endif asmcli --rx_counter; asmsei return data; } pragma used- endif USART Transmitter buffer define TX_BUFFER_SIZE 8 char tx_buffer[TX_BUFFER_SIZE]; if TX_BUFFER_SIZE = 256 unsigned char tx_wr_index=0,tx_rd_index=0; else unsigned int tx_wr_index=0,tx_rd_index=0; endif if TX_BUFFER_SIZE 256 unsigned char tx_counter=0; else unsigned int tx_counter=0; endif USART Transmitter interrupt service routine interrupt [USART_TXC] void usart_tx_isrvoid Universitas Sumatera Utara { if tx_counter { --tx_counter; UDR=tx_buffer[tx_rd_index++]; if TX_BUFFER_SIZE = 256 if tx_rd_index == TX_BUFFER_SIZE tx_rd_index=0; endif } } ifndef _DEBUG_TERMINAL_IO_ Write a character to the USART Transmitter buffer define _ALTERNATE_PUTCHAR_ pragma used+ void putcharchar c { while tx_counter == TX_BUFFER_SIZE; asmcli if tx_counter || UCSRA DATA_REGISTER_EMPTY==0 { tx_buffer[tx_wr_index++]=c; if TX_BUFFER_SIZE = 256 if tx_wr_index == TX_BUFFER_SIZE tx_wr_index=0; endif ++tx_counter; } else UDR=c; asmsei } pragma used- endif Standard InputOutput functions include stdio.h char receive_sms { char data; printfAT+CMGR=1; putchar0x0D; Universitas Sumatera Utara whilegetchar=0x0A{}; whilegetchar=0x0A{}; data=getchar; whilegetchar=K{}; whilegetchar=0x0A{}; delay_ms500; printfAT+CMGD=1; putchar0x0D;ENTER whilegetchar=K{}; whilegetchar=0x0A{}; delay_ms500; printfAT+CMGD=2; putchar0x0D;ENTER whilegetchar=K{}; whilegetchar=0x0A{}; delay_ms500; printfAT+CMGD=3; putchar0x0D;ENTER whilegetchar=K{}; whilegetchar=0x0A{}; delay_ms500; returndata; } void cek_sms { whilegetchar=,{}; whilegetchar=0x0A{}; } void sms_init { printfATE1; putchar0x0D;ENTER whilegetchar=K{}; Universitas Sumatera Utara whilegetchar=0x0A{}; delay_ms500; } void send_sms_txtchar flash fmtstr1, char flash fmtstr2 { printfAT+CMGF=1; putchar0x0D;ENTER whilegetchar=0x0A{}; whilegetchar=0x0A{}; delay_ms500; printfAT+CMGS=\; printffmtstr1; printf\; putchar0x0D;ENTER whilegetchar=0x20{}; delay_ms500; printffmtstr2; putchar0x1A; whilegetchar=0x0A{}; whilegetchar=0x0A{}; whilegetchar=0x0A{}; whilegetchar=0x0A{}; delay_ms500; printfAT+CMGD=1; putchar0x0D;ENTER whilegetchar=0x0A{}; whilegetchar=0x0A{}; delay_ms500; printfAT+CMGD=2; putchar0x0D;ENTER whilegetchar=0x0A{}; whilegetchar=0x0A{}; delay_ms500; printfAT+CMGD=3; putchar0x0D;ENTER whilegetchar=0x0A{}; Universitas Sumatera Utara whilegetchar=0x0A{}; delay_ms500; } void mainvoid { Declare your local variables here InputOutput Ports initialization Port A initialization Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=0DDA7 | 0DDA6 | 0DDA5 | 0DDA4 | 0DDA3 | 0DDA2 | 0DDA1 | 0DDA0; State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=0PORTA7 | 0PORTA6 | 0PORTA5 | 0PORTA4 | 0PORTA3 | 0PORTA2 | 0PORTA1 | 0PORTA0; Port B initialization Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRB=0DDB7 | 0DDB6 | 0DDB5 | 0DDB4 | 0DDB3 | 0DDB2 | 0DDB1 | 0DDB0; State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTB=0PORTB7 | 0PORTB6 | 0PORTB5 | 0PORTB4 | 0PORTB3 | 0PORTB2 | 0PORTB1 | 0PORTB0; Port C initialization Function: Bit7=In Bit6=In Bit5=In Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out DDRC=0DDC7 | 0DDC6 | 0DDC5 | 1DDC4 | 1DDC3 | 1DDC2 | 1DDC1 | 1DDC0; State: Bit7=T Bit6=T Bit5=T Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0 PORTC=0PORTC7 | 0PORTC6 | 0PORTC5 | 0PORTC4 | 0PORTC3 | 0PORTC2 | 0PORTC1 | 0PORTC0; Port D initialization Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=0DDD7 | 0DDD6 | 0DDD5 | 0DDD4 | 0DDD3 | 0DDD2 | 0DDD1 | 0DDD0; State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTD=0PORTD7 | 0PORTD6 | 0PORTD5 | 0PORTD4 | 0PORTD3 | 0PORTD2 | 0PORTD1 | 0PORTD0; Universitas Sumatera Utara TimerCounter 0 initialization Clock source: System Clock Clock value: Timer 0 Stopped Mode: Normal top=0xFF OC0 output: Disconnected TCCR0=0WGM00 | 0COM01 | 0COM00 | 0WGM01 | 0CS02 | 0CS01 | 0CS00; TCNT0=0x00; OCR0=0x00; TimerCounter 1 initialization Clock source: System Clock Clock value: Timer1 Stopped Mode: Normal top=0xFFFF OC1A output: Disconnected OC1B output: Disconnected Noise Canceler: Off Input Capture on Falling Edge Timer1 Overflow Interrupt: Off Input Capture Interrupt: Off Compare A Match Interrupt: Off Compare B Match Interrupt: Off TCCR1A=0COM1A1 | 0COM1A0 | 0COM1B1 | 0COM1B0 | 0WGM11 | 0WGM10; TCCR1B=0ICNC1 | 0ICES1 | 0WGM13 | 0WGM12 | 0CS12 | 0CS11 | 0CS10; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; TimerCounter 2 initialization Clock source: System Clock Clock value: Timer2 Stopped Mode: Normal top=0xFF OC2 output: Disconnected ASSR=0AS2; Universitas Sumatera Utara TCCR2=0PWM2 | 0COM21 | 0COM20 | 0CTC2 | 0CS22 | 0CS21 | 0CS20; TCNT2=0x00; OCR2=0x00; TimersCounters Interrupts initialization TIMSK=0OCIE2 | 0TOIE2 | 0TICIE1 | 0OCIE1A | 0OCIE1B | 0TOIE1 | 0OCIE0 | 0TOIE0; External Interrupts initialization INT0: Off INT1: Off INT2: Off MCUCR=0ISC11 | 0ISC10 | 0ISC01 | 0ISC00; MCUCSR=0ISC2; USART initialization Communication Parameters: 8 Data, 1 Stop, No Parity USART Receiver: On USART Transmitter: On USART Mode: Asynchronous USART Baud Rate: 9600 UCSRA=0RXC | 0TXC | 0UDRE | 0FE | 0DOR | 0UPE | 0U2X | 0MPCM; UCSRB=1RXCIE | 1TXCIE | 0UDRIE | 1RXEN | 1TXEN | 0UCSZ2 | 0RXB8 | 0TXB8; UCSRC=1URSEL | 0UMSEL | 0UPM1 | 0UPM0 | 0USBS | 1UCSZ1 | 1UCSZ0 | 0UCPOL; UBRRH=0x00; UBRRL=0x33; Analog Comparator initialization Analog Comparator: Off The Analog Comparators positive input is connected to the AIN0 pin The Analog Comparators negative input is connected to the AIN1 pin ACSR=1ACD | 0ACBG | 0ACO | 0ACI | 0ACIE | 0ACIC | 0ACIS1 | 0ACIS0; SFIOR=0ACME; ADC initialization Universitas Sumatera Utara ADC disabled ADCSRA=0ADEN | 0ADSC | 0ADATE | 0ADIF | 0ADIE | 0ADPS2 | 0ADPS1 | 0ADPS0; SPI initialization SPI disabled SPCR=0SPIE | 0SPE | 0DORD | 0MSTR | 0CPOL | 0CPHA | 0SPR1 | 0SPR0; TWI initialization TWI disabled TWCR=0TWEA | 0TWSTA | 0TWSTO | 0TWEN | 0TWIE; Global enable interrupts asmsei sms_init; send_sms_txt 085261065610 ,Modem Wavecome OK; while 1 { Place your code here cek_sms; kata=receive_sms; if kata==A{lampu1=hidup;} if kata==B{lampu2=hidup;} if kata==C{lampu3=hidup;} if kata==D{lampu4=hidup;} if kata==E{lampu5=hidup;} if kata==1{lampu1=mati;} if kata==2{lampu2=mati;} if kata==3{lampu3=mati;} if kata==4{lampu4=mati;} if kata==5{lampu5=mati;} if kata==Z{PORTC=0xff;} if kata==0{PORTC=0x00;} } } Universitas Sumatera Utara

BAB 5 PENUTUP