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