MA’RIFATUL IMAN
NRP. 7203030038
Dosen Pembimbing:
AMANG SUDARSONO, ST
NIP. 132 300 371
Oleh:
MA’RIFATUL IMAN
7203 030 038
Disetujui oleh
3. Haniah Mahmudah, ST
NIP. 132 297 803
Mengetahui,
Ketua Jurusan Telekomunikasi
Wassalamu’alaikum Wr.Wb.
Penulis
UCAPAN TERIMA KASIH
1. Ayah & Ibu yang saya sayangi dan hormati, ‘Kakakku’ (Alm. M. Nurul
Chakim), ‘Neng’ Eli dan Nafi terima kasih telah memberikan kasih
sayang dan do’a yang tak henti – henti di panjatkan.
2. Keluarga Besar Alm. Sulchan dan Almh. Malichah Serta Keluarga
Besar Bapak Subandi B. dan Rani Matur sembah Nuwun atas
semangat dan do’anya .
3. Bapak Dr. Ir. Titon Dutono, M.Eng, selaku Direktur Politeknik
Elektronika Negeri Surabaya.
4. Bapak Drs. Miftahul Huda, MT selaku ketua Jurusan Telekomunikasi
Politeknik Elektronika Negeri Surabaya.
5. Bapak Amang Sudarsono, ST dan Bapak Akuwan Saleh, SST selaku
dosen pembimbing.
6. Ibu Ir. Prima Kristalina, MT, Bapak I Gede Puja Astawa, ST, MT, dan
Ibu Haniah Mahmudah, ST selaku dosen penguji.
7. 3 TB Teman satu kelas 30 anak ini TOP BGT deh… I Luv U &
Thank’s For all serta smua Ce_21.
Dan mohon ma’af apabila semua pihak yang banyak membantu dalam
proyek akhir ini tidak dapat disebutkan satu persatu. Akan tetapi, hanya ucapan
terima kasihlah yang dapat terlontarkan.
DAFTAR ISI
BIODATA PENULIS
DAFTAR GAMBAR
1.2 TUJUAN
Tujuan proyek akhir ini adalah merancang sebuah sistem yang mampu
mengontrol (opened atau closed) pintu garasi pada jarak jauh menggunakan
Short Message Service (SMS).
1.3 PERMASALAHAN
Batasan masalah dalam proyek akhir ini adalah mengerjakan Input Karakter
SMS yang ada pada Handphone Server, Kemudian diproses untuk mengatur
pergerakan Motor DC.
1.5 METODOLOGI
Studi Literatur
Mempelajari prinsip kerja dari sistem membuka dan menutup pintu
garasi menggunakan teknologi SMS, yang dilanjutkan dengan
pembelajaran tentang karakteristik SMS, program bahasa C pada
CodeVisionAVR dan Mikrokontroller AVR ATmega8535.
Perencanaan dan Pembuatan
Merencanakan dan membuat peralatan dan sistem yang dibutuhkan
secara perangkat keras.
Pengujian Alat dan Analisa Sistem
Mengintegrasikan sistem antara perangkat keras dengan perangkat
lunak. Kemudian dilakukan pengujian antar segmen dan analisa
terhadap hasil yang telah didapatkan
Bab I Pendahuluan
Menguraikan tentang latar belakang, tujuan, permasalahan, batasan
masalah, metodologi, dan sistematika pembahasan masalah yang
digunakan dalam pembuatan proyek akhir ini.
Bab V Penutup
Berisi tentang kesimpulan dan saran yang berdasarkan analisa hasil data
yang diperoleh.
<Halaman ini sengaja dikosongkan>
BAB II
TEORI PENUNJANG
Gambar 2.3.
Arsitektur CPU dari AVR
2.1.3 Deskripsi Mikrokontroller ATmega8535
608 lokasi alamat data memori menunjuk register file, I/O memori, dan
internal data SRAM. Yang pertama 96 lokasi alamat file register dan I/O
memori penempatan menunjuk Memori I/O dan yang berikutnya 512 lokasi
alamat internal data SRAM.
Lima perbedaan mode pengalamatan data memori cover: Langsung,Tidak
langsung dengan jarak, Tidak langsung, Tidak langsung dengan Pre-Decrement,
dan Tidak langsung dengan Post-Increment. Di dalam file register, register R26
ke R31 memiliki fitur penunjukan pengalamatan register tidak langsung.
Jangkauan pengalamatan langsung adalah keseluruhan ruang data.
Mode Tidak langsung dengan jarak jangkauan 63 lokasi alamat dari alamat
dasar yang diberi oleh Y- atau Z-Register. Manakala penggunaan register mode
tidak langsung dengan pre-decrement otomatis dan postincrement, alamat
register X, Y, dan Z adalah decremented atau incremented.
32 tujuan umum kerja register, 64 I/O register, dan 512 bytes data internal
SRAM di dalam ATmega8535 adalah semua dapat diakses melalui semua mode
pengalamatan.
Gambar 2.5.
Pemetaan Data Memori
2.2 BAHASA C
Gambar 2.6.
Proses Kompilasi-Linking dari program C.
2.2.2 Struktur Penulisan Program C
Fungsi_Fungsi_Lain()
{ Fungsi – fungsi lain yang
statemen – statemen Ditulis oleh Pemrograman
} Komputer
2.2.3.2 Operator
Operator atau tanda operasi adalah suatu tanda atau simbol yang
digunakan untuk suatu operasi tertentu.
Motor DC atau motor arus searah adalah suatu mesin yang berfungsi
untuk mengubah tenaga listrik arus searah menjadi tenaga gerak atau tenaga
mekanik, yang tenaga gerak tersebut berupa putaran dari rotor. Prinsip kerja dari
motor DC hampir sama dengan generator AC, perbedaannya hanya terletak
dalam konversi daya. Prinsip dasarnya adalah apabila suatu kawat berarus
diletakkan diantara kutub – kutub magnet (U- S), maka pada kawat itu akan
bekerja suatu gaya yang menggerakkan kawat tersebut.
Gambar 2.7.
Prinsip Kerja Motor DC
Apabila sebuah belitan terletak dalam medan magnet yang homogen, arah
gerakan ditunjukkan seperti gambar diatas, karena kedua sisi lilitan mempunyai
arus yang arahnya berlawanan.
(a) (b)
Gambar 2.8. Motor DC
a. Konstruksi Motor DC
b. Diagram Skematik Motor
Kumparan penguat dihubungkan seri, jangkar merupakan besi laminasi
yang bergerak untuk mengurangi arus eddy. Letak kumparan jangkar pada slot
besi disebelah luar permukaan jangkar. Pada jangkar terdapat komutator yang
terbentuk silender dan isolasi sisi kumparan
dihubungkan dengan segmen komutator pada beberapa bagian yang berbeda,
sesuai dengan jenis lilitannya.
2. Karakteristik Torsi
τ = K .Ia.φ ............................................... (2.2)
Dimana : τ = Torsi
K = Konstanta
Ia = Arus Armature (Ampere)
φ = Fluks (Wb/m2)
2. 4. DRIVER MOTOR DC
Gambar 2.9.
Rangkaian Driver Motor DC
Gambar 2.10.
Dasar Pengaturan Arah Putar Motor
Gambar 2.11.
Pengatur Arah dengan Menggunakan Saklar
Gambar 2.12.
Format Pengiriman Data Serial
Gambar 2.13.
IC Serial MAX 232
Gambar 2.15.
RS232 (Sebagai Komunikasi Serial )
Tabel 2.4.
Fungsi masing-masing pin RS232
BAB III
PERENCANAAN DAN PEMBUATAN PERANGKAT KERAS
DAN LUNAK
Pada bab ini akan dibahas sistem perencanaan dan pembuatan perangkat
keras dan perangkat lunak yang dibuat yang meliputi :
1. Proses Kerja Sistem
2. Perencanaan dan Pembuatan Perangkat Keras
3. Perencanaan dan Pembuatan Perangkat Lunak
Pada Proyek akhir akan dirancang dan dibuat suatu alat (Modul
Mikrokontroller) untuk mengontrol pintu garasi secara otomatis menggunakan
ATmega8535 dengan Short Message Service (SMS). Dalam hal ini pengiriman
karakter hanya menggunakan satu kata yaitu opened atau closed. Jika dikirim
karakter opened, maka di dalam mikrokontroller akan diproses, sehingga kata
tersebut dapat dikenali sebagai perintah untuk membuka pintu garasi.
Sebaliknya jika dikirim karakter closed maka di dalam mikrokontroller akan
diproses, sehingga kata tersebut dapat dikenali sebagai perintah untuk menutup
pintu garasi. Tetapi jika karakter yang dikirim selain kata opened atau closed
maka kata tersebut akan dihapus, karena tidak sesuai dengan perintah yang
ditentukan (opened atau closed). Blok diagram sistem yang dibuat dapat dilihat
pada gambar 3.1
Gambar 3.1
Blok Diagram Sistem
3.2. PERENCANAAN DAN PEMBUATAN PERANGKAT KERAS
Gambar 3.2.
Rangkaian Pengubah Level Tegangan
Ada 4 kapasitor yang digunakan dalam rangkaian ini yaitu pada pin 1 (+)
dengan pin 3 (-), pin 4 (+) dengan pin 5 (-), pin 2 (+) dengan pin 16 (-). Untuk
pin 6, karena bertegangan -10 Volt maka terhubung dengan kaki kapasitor (-)
sedangkan Ground (+). Koneksi antara IC MAX232 dengan RS232 terhubung
melalui pin 14 (driver 1 output) yaitu sebagai Tx (transmitter) dengan DB9 pin2
(received data) dan pin 13 (receiver 1 input) sebagai Rx (receiver) dengan DB9
pin 3 (transmitted data). Sedangkan pin 12 dan pin 13 menuju ke
mikrokontroller.
Tabel 3.1
Konfigurasi Pin IC MAX 232
Gambar 3.5.
Flowchart Utama
3.3.2. Kontrolling
1. Pencarian file dilakukan pada direktori khusus (direktori file include, yang
bisa disetel melalui kompiler).
#include <mega8535.h>
#include <stdio.h>
#include <delay.h>
bit flag_no,xpsn;
#define enter putchar(13)
#define buka PORTA.6
#define tutup PORTA.7
#define xbuka PORTA.4
#define xtutup PORTA.5
flash unsigned char
no[13]={"085648565249"},psn1[13]={"6F78D95D2603"},psn2[13]={"63F67B5E2603"};
unsigned char rx_no[13],rx_psn[13],i,hasil;
3. Membuat fungsi untuk mengirim laporan membuka dari mikrokontroller ke
handphone user
void report1()
{ printf("at"); putchar(13);
while (getchar()!='O');
if (getchar()=='K')
PORTA.2=1;
printf("at+cmgs=28");putchar(13);
while (getchar()!=62);
if (getchar()==32)
{
printf("07912658050000F001000D91265846585642F900000F");
printf("E8F01C242E97DDA037BCEC2E9301");// "has been
opened"
putchar(26);
PORTA.2=0;
}
void report2()
{ printf("at"); putchar(13);
while (getchar()!='O');
if (getchar()=='K')
PORTA.2=1;
printf("at+cmgs=24");putchar(13);
while (getchar()!=62);
if (getchar()==32)
{
printf("07912658050000F001000D91265846585642F900000F");
printf("E8F01C242E97DDA031FB3D2F9301");// "has been
closed"
putchar(26);
PORTA.2=0;}
}
Baud rate yang digunakan dalam komunikasi serial ini adalah 19200 bps.
Penentuan baud rate sangat bergantung pada crystal yang digunakan, crystal ini
adalah sebagai oscillator. Crystal yang digunakan adalah 20,000 MHz.
Penghitungannya adalah sebagai berikut :
f OSC
19200 = ................................................ (3.1)
16(UBRR + 1)
20.000MHz
19200 = ……………………………… (3.2)
16(UBRR + 1)
3.3.5 CodeVisionAVR
Gambar 3. 8.
CodeVision AVR
2. Buat project baru Pilih FileÆNew Pilih project lalu tekan tombol OK.
Gambar 3.9.
Create Project Baru
3. Kemudian muncul dialog apakah akan menggunakan CodeWizard AVR
untuk mempermudah merancang kerangka program. Pilih YES. dengan portB.
Gambar 3.10.
Pilihan untuk menggunakan CodeWizardAVR
Gambar 3.11.
Menseting Jenis Chip Port I/O
5. Kemudian pilih FileÆGenerate, Save and Exit.
Gambar 3.12.
Menghasilkan Kode Program
BAB IV
PENGUJIAN ALAT DAN ANALISA
Gambar 4.1.
Pengujian Komunikasi Serial pada Hyper Terminal
Tabel 4.1
Hasil Pengujian Komunikasi Serial
Input dari Keyboard Output RS232
a a
b b
c c
dst dst
Berdasarkan Tabel diatas maka dapat di analisa bahwa ketika diberi input
FFH atau karakter opened maka LED 1 akan menyala sehingga mengkondisikan
relay 1 bergerak ke kanan (pintu terbuka). Dan sebaliknya jika diberi input 00H
atau karakter closed maka LED 2 akan menyala sehingga mengkondisikan relay
2 bergerak ke kiri (pintu tertutup).
Tabel 4.3
Hasil Pengujian Driver Dengan Beban (Motor DC)
No Input Output (Arah Putar Motor DC)
1. FF H (opened) KANAN
2. 00 H (closed) KIRI
Berdasarkan Tabel diatas maka dapat di analisa bahwa ketika diberi input
FFH atau karakter opened maka arah putar motor DC akan bergerak ke kanan
(pintu terbuka). Dan sebaliknya jika diberi input 00H atau karakter closed maka
arah putar motor DC akan bergerak ke kiri (pintu tertutup). Apabila semua
langkah sudah terpenuhi maka rangkaian driver sudah siap untuk dihubungkan
dengan ATmega8535.
Gambar 4.4
Blok Diagram Pengujian Sistem
Tabel 4.4
Hasil Pengujian Sistem Keseluruhan
No User Server Report kondisi MotorDC
pintu
1. opened opened has been opened Buka Putar kanan
2. closed closed has been closed Tutup Putar Kiri
Berdasarkan Tabel diatas maka dapat di analisa bahwa ketika Handphone
User mengirimkan SMS dengan karakter opened ke Handphone Server yang
kemudian karakter tersebut akan diproses oleh mikrokontroller untuk membuka
pintu dengan menggerakkan arah putar motor DC ke kanan. Setelah pintu
terbuka maka mikrokontroller akan mengirimkan laporan (report) berupa
karakter has been opened ke Handphone User.
Dan sebaliknya ketika Handphone User mengirimkan SMS dengan
karakter closed ke Handphone Server yang kemudian karakter tersebut akan
diproses oleh mikrokontroller untuk menutup pintu dengan menggerakkan arah
putar motor DC ke kiri. Setelah pintu tertutup maka mikrokontroller akan
mengirimkan laporan (report) berupa karakter has been closed ke Handphone
User.
<Halaman ini sengaja dikosongkan>
BAB V
PENUTUP
5.1 KESIMPULAN
Setelah melakukan proses pengujian dan analisa terhadap sistem yang telah
dibuat dapat diambil kesimpulan bahwa:
5.2 SARAN
Listing Program
#include <mega8535.h>
#include <stdio.h>
#include <delay.h>
// Declare your global variables here
bit flag_no,xpsn;
int no_hp;
#define enter putchar(13)
#define buka PORTA.6
#define tutup PORTA.7
#define xbuka PORTA.4
#define xtutup PORTA.5
void set_noecho()
{ printf("ate0"); enter;
while(getchar()!='O'){printf("ate0"); enter;};
delay_ms(100);
}
void ready_gsm()
{ printf("at");enter;
while(getchar()!='O'){printf("at");enter;};
delay_ms(500);
}
void delete()
{ PORTA.1=1;
printf("at+cmgd=1");putchar(13);
// while(getchar()!='O'){printf("at+cmgd=1");enter;};
delay_ms(300);
PORTA.1=0;
}
void scan_number() //manual scan number is easier to compare with reference
Number........!
{ rx_no[0]='0';
rx_no[2]=getchar();rx_no[1]=getchar();rx_no[4]=getchar();rx_no[3]=g
etchar();
rx_no[6]=getchar();rx_no[5]=getchar();rx_no[8]=getchar();rx_no[7]=g
etchar();
rx_no[10]=getchar();rx_no[9]=getchar();getchar();rx_no[11]=getchar();
}
void cek_number1()
{ unsigned char hasil;
for(i=0;i<12;i++) //cek no 1
{
hasil=rx_no[i]-no1[i];
if(i==11 && hasil==0)
{ flag_no=1;
no_hp=1;
return flag_no;
}
if(hasil!=0)
{ break;
}
}
}
void cek_number2()
{ unsigned char hasil;
for(i=0;i<12;i++) //cek no 2
{
hasil=rx_no[i]-no2[i];
if(i==11 && hasil==0)
{ flag_no=1;
no_hp=1;
return flag_no;
}
if(hasil!=0)
{ break;
}
}
}
void cek_number3()
{ unsigned char hasil;
for(i=0;i<12;i++) //cek no 3
{
hasil=rx_no[i]-no2[i];
if(i==11 && hasil==0)
{ flag_no=1;
no_hp=1;
return flag_no;
}
if(hasil!=0)
{ break;
}
}
}
void report1()
{ printf("at"); putchar(13);
while (getchar()!='O');
if (getchar()=='K')
PORTA.2=1;
printf("at+cmgs=28");putchar(13);
while (getchar()!=62);
if (getchar()==32)
{ if(no_hp==1){
printf("07912658050000F001000D91265846585642F900");
}
if(no_hp==2)
{
printf("");
}
if(no_hp==3){
printf("06912618010000240D91261833925801F500")
printf("E8F01C242E97DDA037BCEC2E9301");// "has
been opened"
putchar(26);
PORTA.2=0;
}
}
void report2()
{ printf("at"); putchar(13);
while (getchar()!='O');
if (getchar()=='K')
PORTA.2=1;
printf("at+cmgs=24");putchar(13);
while (getchar()!=62);
if (getchar()==32)
{ if(no_hp==1){
printf("07912658050000F001000D91265846585642F900");
if(no_hp==2)
{
printf("");
}
if(no_hp==3){
printf("06912618010000240D91261833925801F500")
printf("E8F01C242E97DDA031FB3D2F9301");// "has
been closed"
putchar(26);
PORTA.2=0;
}
}
void compare_sms()
{
if(flag_no==1) //command bellow will be accesed if SMS from number
................
{ xpsn=0;
for(i=0;i<=11;i++) //bukA
{ hasil=rx_psn[i]-psn1[i];
if(i==11&& hasil==0)
{ xpsn=1;tutup=1; buka=0;report1();
}
if(hasil!=0) break;
}
hasil=0;
if(!xpsn)
{ for(i=0;i<=11;i++) //tutp
{ hasil=rx_psn[i]-psn2[i];
if(i==11&& hasil==0)
{ xpsn=1;buka=1;tutup=0;report2();
}
if(hasil!=0) break;
}
hasil=0;
}
}
}
void cek_new_SMS()
{ unsigned char dat;
PORTA.0=1;
ready_gsm();//.....................................................be sure that GSM is
ready
printf("at+cmgl=0");enter;dat=getchar();//............AT+CMGL=0 to read
UNREAD SMS (New SMS)
//.....................................+ as header New SMS and E indicate ERROR / No
New SMS
while(dat!='+'&& dat!='O'){printf("at+cmgl=0");enter;dat=getchar();};
if(dat=='+') //............................... !=R (ERROR) indicate recieve New
SMS
{ for(i=0;i<=25;i++) getchar();//43
scan_number();
for(i=0;i<=19;i++) getchar();
for(i=0;i<12;i++) rx_psn[i]=getchar();
//...............................masukkan psn
cek_number1();//....................................................Cek no
USER
cek_number2();
cek_number3();
cek=cek_number1();
if cek==1
delay_ms(1000);
compare_sms(); //....................................compare SMS with
reference data
delay_ms(1000);
for(i=0;i<10;i++){ rx_no[i]=0;}//................................CLEAR NO in
SRAM uC
for(i=0;i<=5;i++){ rx_psn[i]=0;}//..............................CLEAR
PSN in SRAM uC
}
else
{
}
delete(); //..........................................DELETE SMS
in HP
delay_ms(2000);
PORTA.0=0;
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func0=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out
Func6=Out Func7=Out
// State0=0 State1=0 State2=0 State3=0 State4=0 State5=0 State6=0 State7=0
PORTA=0xC0;
DDRA=0xFF;
// Port B initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In
Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In
Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In
Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 19200
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x23;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;
ready_gsm();
set_noecho();//.............................................Turn off GSM ECHO */
//delay_ms(1000);
while (1)
{
// Place your code here
cek_new_SMS();
delay_ms(1000);
};
}
LAMPIRAN DATA SHEET
MIKROKONTROLLER AVR ATmega8535
BIODATA PENULIS