Bab 3 Perancangan Sistem
3.3. Rangkaian Mikrokontroller ATMega8535
Rangkaian sistem minimum mikrokontroler ATMEGA 8535 dapat dilihat pada gambar 3.5 di bawah ini :
Gambar 3.5Rangkaian sistem minimum mikrokontroler ATMEGA 8535
Dari gambar 3.5, Rangkaian tersebut berfungsi sebagai pusat kendali dari seluruh sistem yang ada. Komponen utama dari rangkaian ini adalah IC Mikrokontroler ATMega8535. Semua program diisikan pada memori dari IC ini sehingga rangkaian dapat berjalan sesuai dengan yang dikehendaki.
Pin 12 dan 13 dihubungkan ke XTAL 11,0592 MHz dan dua buah kapasitor 22 pF. XTAL ini akan mempengaruhi kecepatan mikrokontroler ATMega8535 dalam mengeksekusi setiap perintah dalam program. Pin 9 merupakan masukan reset (aktif rendah). Pulsa transisi dari tinggi ke rendah akan me-reset mikrokontroler ini.
Untuk men-download file heksadesimal ke mikrokontroler, Mosi, Miso, Sck, Reset, Vcc dan Gnd dari kaki mikrokontroler dihubungkan ke pin header, pin header sebagai konektor yang akan dihubungkan ke ISP Programmer. Dari ISP Programmer inilah dihubungkan ke komputer melalui konektor usb.
Kaki Mosi, Miso, Sck, Reset, Vcc dan Gnd pada mikrokontroler terletak pada kaki 6, 7, 8, 9, 10 dan 11. Apabila terjadi keterbalikan pemasangan jalur ke ISP Programmer, maka pemograman mikrokontroler tidak dapat dilakukan karena mikrokontroler tidak akan bisa merespon.
3.4.Perancangan Rangkaian LCD (Liquid Crystal Display)
Pada alat ini, display yang digunakan adalah LCD (Liquid Crystal Display) 16 x 2. Untuk blok ini tidak ada komponen tambahan karena mikrokontroler dapat memberi data langsung ke LCD, pada LCD Hitachi - M1632 sudah terdapat driver untuk mengubah data ASCII output mikrokontroler menjadi tampilan karakter. Pemasangan potensio sebesar 5 KΩ untuk mengatur kontras karakter yang tampil. Gambar 3.4 berikut merupakan gambar rangkaian LCD yang dihubungkan ke mikrokontroler.
Dari gambar 3.6, rangkaian ini terhubung ke PA.0... PaA7, yang merupakan pin I/O dua arah dan pin fungsi khusus, yaitu sebagai Analog and Digital Converter .Nilai yang akan tampil pada LCD display akan dapat dikendalikan oleh Mikrokontroller ATMega8535.
3.6. Rangkaian Wavecom Fastrack
Rangkaian antar muka ini bertujuan agar mikrokontroler dapat berkomunikasi dengan modem GSM.
Gambar 3.7. Rangkaian Modul GSM dengan Mikrokontroller
X1 CRYSTAL C4 30p T1IN 11 R1OUT 12 T2IN 10 R2OUT 9 T1OUT 14 R1IN 13 T2OUT 7 R2IN 8 C2+ 4 C2- 5 C1+ 1 C1- 3 VS+ 2 VS- 6 U2 MAX232 C6 1uf C7 1uf C8 1uf C9 1uf 5 V 1 6 2 7 3 8 4 9 5 WACEOM FASTRACK-MODUL GSM
3.7. Flowchart System START INISIALIASASI PORT Mulai pembacaan sensor ultrasonic Mikrokontroller memerintahkan pengiriman data melalui modul GSM
level air tingkat IV Volume air 1 Liter ? YA
TIDAK END Mikrokontroller memerintahkan pengiriman data melalui modul GSM
level air tingkat III Volume air 0,75 Liter ? YA TIDAK Mikrokontroller memerintahkan pengiriman data melalui modul GSM
level air tingkat II Volume air 0,5 Liter
? YA TIDAK Mikrokontroller memerintahkan pengiriman data melalui modul GSM
level air tingkat I Volume air 0,25
Liter ? YA
TIDAK
Gambar 3.8 Flowchart System (Diagram Alir)
Program dimulai dari start dan dilanjutkan dengan inisialisasi untuk memetakan memori dan port – port yang akan digunakan untuk keperluan
pembacaan sensor dan port – port untuk menampilkan ke LCD. Mikro melakukan pembacaan pada sensor ultrasonic:
• Jika “iya”, volume air berada pada kapasitas 1 liter maka mikrokontroller
akan melakukan pengiriman data melalui modul GSM dengan isi pesan “Level air tingkat IV”.
• Jika “tidak”, maka sensor akan meneruskan deteksi apakah volume air
berada pada kapasitas 0.75 liter, jika “iya” maka mikrokontroller akan melakukan pengiriman data melalui modul GSM dengan isi pesan “Level air tingkat III”.
• Jika “tidak”, maka sensor akan meneruskan deteksi apakah volume air
berada pada kapasitas 0.5 liter, jika “iya” maka mikrokontroller akan melakukan pengiriman data melalui modul GSM dengan isi pesan “Level air tingkat II”.
• Jika “tidak”, maka sensor akan meneruskan deteksi apakah volume air
berada pada kapasitas 0.25 liter, jika “iya” maka mikrokontroller akan melakukan pengiriman data melalui modul GSM dengan isi pesan “Level air tingkat I”.
BAB 4
HASIL DAN PENGUJIAN
4.1. Pengujian dan Analisa Rangkaian Sensor Ultrasonic
Pada gambar 3.2.dan 3.3. tentang rangkaian transmitter dan receiver terletak dalam 1 komponen melainkan masing- masing mempunyai fungsi. untuk menganalisa rangkaian ultrasonic dapat di lihat pada pembahasan di bawah ini. Jika sensor terkena suatu benda, maka pantulan gelombang yang berasal dari transmitter sensor ultrasonic akan kembali ke receiver, kemudian akan dihitung waktu dari gelombang terkirim hingga gelombang kembali. Dari waktu yang didapat, dokonversi menjadi jarak.
Tabel 4.1. Data Jarak Deteksi Berbagai Halangan
Jarak (cm) 5 10 15 20 25 30 40 45 50 Pengujian 1 4 10 15 19 24 28 39 44,8 50 2 5 10 15,1 20 25 28 41 45,3 49 3 5 9 15,3 20 23,5 27 39,6 45 49 4 5 10 15,2 21 24,6 30 40 45 51 5 5 9 15,2 20 25 30 40,3 44,5 50 Rata-rata 4,8 9,6 15,16 20 24,42 28,6 39,98 44,92 49,8
8Penjelasan pada table diatas yaitu : Pengujian jarak pendeteksian sensor ultrasonik dilakukan dengan mendekatkan dan menjauhkan posisi objek yang ada didepan sensor.untuk mengetahui kepekaan sensor ketika diberikan objek yang berbeda dilakukan sebanyak 5 kali pada masing-masing objek. Jarak dari objek di variasikan . Setiap pengujian akan menghasilkan pembacaan yang berbeda walau dengan jarak yang sama, tetapi perbedaanya tidak terlalu besar. Tujuan dari pengujian itu untuk mendapatkan nilai yang akurat, misalnya pengujian dengan jarak 50 cm menghasilkan nilai pembacaan 49,8 cm.
Hasil pengujian dapat membuktikan bahwa sensor ultrasonik bekerja berdasarkan kemampuan penghalang memantulkan kembali gelombang ultrasonik yang dikirim oleh sensor ultrasonik, gangguan pada pendeteksiaan sensor dapat diakibatkan oleh penghalang yang tidak mampu memantulkan gelombang bunyi dengan baik dan adanya interferensi gelombang dengan frekuensi yang sama.
Data yang ada di dalam tabel adalah linear karena batas minimal baca sensor adalah 2cm dan apabila pengukuran di bawah 2 cm maka tidak terdefenisi karena jarak dari sensor ke benda terlalu dekat dan tidak menghasilkan data. dalam pengukuran menggunakan sistem perhitungan dan setiap 1 gelombang pulsa nilainya adalah kelipatan 10mS.
4.2. Pengujian Rangkaian Mikrokontroler ATMega8535
Karena pemrograman menggunakan mode ISP (In System Programming) mikrokontroler harus dapat diprogram langsung pada papan rangkaian dan rangkaian mikrokontroler harus dapat dikenali oleh program downloader. Pada pengujian ini berhasil dilakukan dengan dikenalinya jenis
mikrokontroler oleh program downloader yaitu ATMega8535.
Gambar 4.1. Informasi Signature Mikrokontroler
ATMega menggunakan kristal dengan frekuensi 11,0592 MHz, apabila
Chip Signature sudah dikenali dengan baik dan dalam waktu singkat, bisa dikatakan rangkaian mikrokontroler bekerja dengan baik dengan mode ISP-nya.
4.3. Interfacing LCD 2x16
Bagian ini hanya terdiri dari sebuah LCD dot matriks 2 x 16 karakter yang berfungsi sebagai tampilan hasil pengukuran dan tampilan dari beberapa keterangan. LCD dihubungkan langsung ke Port D dari mikrokontroler yang berfungsi mengirimkan data hasil pengolahan untuk ditampilkan dalam bentuk alfabet dan numerik pada LCD.Display karakter pada LCD diatur oleh pin EN, RS dan RW: Jalur EN dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD bahwa anda sedang mengirimkan sebuah data. Untuk mengirimkan data ke LCD, maka melalui program EN harus dibuat logika low “0” dan set ( high ) pada dua jalur kontrol yang lain RS dan RW. Jalur RW adalah jalur kontrol Read/
Write. Ketika RW berlogika low (0), maka informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika high ”1”, maka program akan melakukan pembacaan memori dari LCD. Sedangkan pada aplikasi umum pin RW selalu diberi logika low ( 0 )
Berdasarkan keterangan di atas maka kita sudah dapat membuat progam untuk menampilkan karaker pada display LCD. Adapun program yang diisikan ke mikrokontroller untuk menampilkan karakter pada display LCD adalah sebagai berikut:
#include <mega8535.h> #include <stdio.h> #include <delay.h>
// Alphanumeric LCD Module functions #include <alcd.h>
// Declare your global variables here
void main(void) {
// Declare your local variables here
PORTA=0x00; DDRA=0x00;
DDRB = 0X00; // PORTC = 0X00; DDRC = 0X01; // PORTD = 0X00; DDRD= 0X00; // // LCD module initialization lcd_init(16); lcd_gotoxy(0,0); lcd_putsf("Fajar");
Program di atas akan menampilkan kata “Fajar ” di baris pertama pada display LCD 2x16. Pada alat dalam penelitian ini, Saat keseluruhan rangkaian diaktifkan, maka pada LCD akan menampilkan status sensor dan pemberitahuan apabila mengirim sms .
4.4. Pengujian Koneksi Modul GSM Wavecom dengan Mikrokontroller ATMEGA8535 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 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 krystal 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>
// Standard Input/Output functions #include <stdio.h>
// Declare your global variables here
void main(void) {
// Declare your local variables here
// Input/Output Ports initialization // Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; void sms_init() { printf("ATE0"); putchar(0x0D);//ENTER while(getchar()!='K'){}; while(getchar()!=0x0A){}; delay_ms(500); } sms_init(); while (1) {
printf("AT+CMGF=1"); //menyeting modem GSM ke mode text putchar(13); //mengirim 1 karakter CR / enter printf("AT+CMGS="); //perintah untuk mengirim sms
putchar('"'); //mengirim karakter ‘ ” ’ printf("085760946582"); //no HP yg dituju putchar('"');
putchar(13); //kode ascii untuk enter<CR> printf("tes kirim sms");
putchar(26); // }
}
Jika program dijalankan, maka mikro akan memerintahkan modul gsm untuk mengirim pesan yang berisi karakter “tes kirim sms”.
4.5 Program Code-Vision AVR
/******************************************************* 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 : Author : Company : Comments:
Chip type : ATmega32A Program type : Application
AVR Core Clock frequency: 11,059200 MHz Memory model : Small
External RAM size : 0 Data Stack size : 512
*******************************************************/ #include <mega32a.h> #include <delay.h> // Alphanumeric LCD functions #include <alcd.h> #include <stdio.h>
// Declare your global variables here
char dat,x,penuh,kosong,setengah,satu,satusetengah,dua; #define triger PORTC.1
#define pin_triger DDRC.1 #define echo PINC.0 #define pin_echo DDRC.0
unsigned char buf[33]; unsigned int counter,jarak; float volume;
#define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)
#define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<DOR)
// 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
bit rx_buffer_overflow;
// USART Receiver interrupt service routine interrupt [USART_RXC] void usart_rx_isr(void) {
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; } #endif }
}
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer #define _ALTERNATE_GETCHAR_ #pragma used+ char getchar(void) { 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 #asm("cli") --rx_counter; #asm("sei") 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_isr(void) { 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 putchar(char c) {
while (tx_counter == TX_BUFFER_SIZE); #asm("cli")
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; #asm("sei") } #pragma used-
#endif
// Standard Input/Output functions #include <stdio.h>
// Declare your global variables here void send_sms()
{
printf("AT+CMGF=1"); //menyeting modem GSM ke mode text putchar(13); //mengirim 1 karakter CR / enter. printf("AT+CMGS=");
putchar('"');
printf("085760946582"); //no HP yg dituju putchar('"');
putchar(13); //kode ascii <CR> //printf("tes feedback ok");
printf("tes kirim"); putchar(26); } void sms_init() { printf("ATE0"); putchar(0x0D);//ENTER
while(getchar()!='K'){}; while(getchar()!=0x0A){}; delay_ms(500); } void cek_sms() { while(getchar()!=','){}; while(getchar()!=0x0A){}; }
void send_sms_txt(char flash *fmtstr1, char flash *fmtstr2) { printf("AT+CMGF=1"); putchar(0x0D);//ENTER while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; delay_ms(500); printf("AT+CMGS=\""); printf(fmtstr1); printf("\""); putchar(0x0D);//ENTER while(getchar()!=0x20){}; delay_ms(500);
printf(fmtstr2); putchar(0x1A); while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; delay_ms(500); printf("AT+CMGD=1"); putchar(0x0D);//ENTER while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; delay_ms(500); printf("AT+CMGD=2"); putchar(0x0D);//ENTER while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; delay_ms(500); printf("AT+CMGD=3"); putchar(0x0D);//ENTER while(getchar()!=0x0A){};
while(getchar()!=0x0A){}; delay_ms(500); } char receive_sms() { char data; printf("AT+CMGR=1"); putchar(0x0D); while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; data=getchar(); while(getchar()!='K'){}; while(getchar()!=0x0A){}; delay_ms(500); printf("AT+CMGD=1"); putchar(0x0D);//ENTER while(getchar()!='K'){}; while(getchar()!=0x0A){}; delay_ms(500); printf("AT+CMGD=2");
putchar(0x0D);//ENTER while(getchar()!='K'){}; while(getchar()!=0x0A){}; delay_ms(500); printf("AT+CMGD=3"); putchar(0x0D);//ENTER while(getchar()!='K'){}; while(getchar()!=0x0A){}; delay_ms(500); return(data); }
void tampil_lcd(char x,char y,char flash *teks, int tunda) { lcd_gotoxy(x,y); lcd_putsf(teks); delay_ms(tunda); } void main(void) {
// Input/Output Ports initialization // Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
// Port C initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected
TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00; OCR0=0x00;
// Timer/Counter 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=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock
// Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0<<AS2;
TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00; OCR2=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
// External Interrupt(s) initialization // INT0: Off
// INT1: Off // INT2: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00); MCUCSR=(0<<ISC2);
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On
// USART Mode: Asynchronous // USART Baud Rate: 9600
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(1<<RXCIE) | (1<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00; UBRRL=0x19;
// Analog Comparator initialization // Analog Comparator: Off
// The Analog Comparator's positive input is // connected to the AIN0 pin
// The Analog Comparator's negative input is // connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
SFIOR=(0<<ACME);
// ADC initialization // ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
// SPI initialization // SPI disabled
SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);
// TWI initialization // TWI disabled
TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);
// Alphanumeric LCD initialization // Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTA Bit 0 // RD - PORTA Bit 1 // EN - PORTA Bit 2 // D4 - PORTA Bit 3 // D5 - PORTA Bit 4 // D6 - PORTA Bit 5 // D7 - PORTA Bit 6 // Characters/line: 16
lcd_init(16);
// Global enable interrupts #asm("sei") tampil_lcd(0,0,"pemantau air-GSM",500); tampil_lcd(0,1,"fajar&Fadly",2000);lcd_clear(); tampil_lcd(0,0,"inisialisasi modul gsm",0); sms_init(); delay_ms(2000); lcd_clear(); tampil_lcd(0,0,"inisialisasi oke",1000); while (1) {
pin_triger=1;// pin TRIGGER triger=1;
delay_us(10); triger=0;
pin_echo=0;// pin ECHO counter = 0;
while (echo==0); while (echo==1) {
if ( counter > 13000) break; // ini di break agar ketika mengukur lebih dari 4 m,sistem tidak hang
} jarak=28-((counter/34)*2); volume=(3.14*25*jarak)/1000; sprintf(buf,"volume=%.1f L ",volume); lcd_clear(); lcd_gotoxy(0,0); lcd_puts(buf); delay_ms(500);
if ( volume>0 && volume<=0.5 && setengah==0) { tampil_lcd(0,0,"tangki setengah L",1000); tampil_lcd(0,1,"kirim pesan",1000); send_sms_txt("085760946582","tangki setengah L"); setengah=1; satu=0; satusetengah=0; dua=0; }
if ( volume>0.5 && volume<=1 && satu==0) {
tampil_lcd(0,1,"kirim pesan",1000); send_sms_txt("085760946582","tangki satu L"); setengah=0; satu=1; satusetengah=0; dua=0; }
if ( volume>1 && volume<=1.5 && satusetengah==0) { tampil_lcd(0,0,"tangki 1.5 L",1000); tampil_lcd(0,1,"kirim pesan",1000); send_sms_txt("085760946582","tangki 1.5 L"); setengah=0; satu=0; satusetengah=1; dua=0; }
if ( volume>1.5 && volume<=2 && setengah==0) { tampil_lcd(0,0,"tangki 2 L",1000); tampil_lcd(0,1,"kirim pesan",1000); send_sms_txt("085760946582","tangki 2 L"); setengah=0; satu=0;
satusetengah=0; dua=1;
} } }
BAB 5 PENUTUP
5.1 Kesimpulan
Setelah melakukan tahap perancangan dan pembuatan sistem yang kemudian dilanjutkan dengan tahap pengujian dan analisa maka dapat diambil kesimpulan sebagai berikut :
1. Bahwa MODEM GSM WAVECOME dapat mengirirnkan dan menerima SMS dengan baik. Penggunaan SMS gateway adalah sebagai komunikasi antara mikrokontroler home, mikrokontroler pos dan user. Mikrokontroler akan mengirimkan SMS setelah sensor ultrasonic mendteksi naiknya air pada tangki penisian.
2. Sensor ultrasonic dapat dijadikan sebagai pengukur kapasitas. Jarak pantulan sinyalnya 10 cm sampai 80 cm dengan frekuensi sebesar 40 ini memungkinkan untuk mengukur sebuah tangki atau tong.
3. Didalam sebuah IC mikrokontroler sudah terdapat kebutuhan minimal agar mikroprosesor dapat bekerja yaitu meliputi mikroprosesor, ROM, RAM, I/O dan clock. Dengan inputan sensor yang membaca perubahan ketinggian air dan diolah oleh mikrokontroler. Kecepatan dan ketepatan dalam pengaksesan system pengontrolan sangat memadai dalam penghematan waktu.
5.2 Saran
Dari hasil tugas akhir ini masih terdapat beberapa kekurangan dan dimungkinkan untuk pengembangan lebih lanjut. Oleh karenanya penulis merasa perlu untuk memberi saran-saran sebagai berikut:
1. Pada Tugas Akhir ini masih menggunakan system pengontrolan jarak jauh masih memanfaatkan sistem sms. Agar lebih menarik lagi, perlu digunakan pengotrolan jarak jauh menggunakan Wifi atau sejenisnya.
DAFTAR PUSTAKA
Catur Edi Widodo & Retna Prasetia. 2004. Teori dan Praktek Interfacing Port Serial Komputer dengan VisualBasic 6.0. Yogyakarta: Andi.
Eko Putra, Agfianto. 2002. Teknik Antarmuka Komputer Konsep dan Aplikasi. Yogyakarta: Graha Ilmu
Elektur.1996.302 Rangkaian Elektronika.Penerjemahan P.Pratomo dkk.Jakarta: Percetakan PT Gramedia.
Putra eko afgianto.2002.Teknik Antar Muka Komputer: Konsep dan Aplikasi Yogyakarta: Graha ilmu.