PERANCANGAN SISTEM
Alat yang dirancang pada tugas akhir ini berjudul “kendali peralatan listrik
jarak jauh ini penulis memanfaatkan teknologi handphone untuk menghubungkan dan
memutus aliran arus listrik secara otomatis. Alasan penulis menggunakan handphone
dalam hal pengaksesannya yang mampu menjangkau tempat dan jarak yang sangat
luas, hal ini berlaku selama tersediannya jaringan yang menghubungkan jalur
sebagai pengontrol dianggap lebih efektif dalam hal pengontrolan jarak jauh
Prinsip kerja alat ini dapat dilihat seperti pada Gambar 3.1. dibawah ini :
Rangkaian
Ponsel Pengontrol Pengolah Sinyal Ponsel Penerima
Catu Daya
Suplai 5V Mikrokontroler Komunikasi
5V dan 12 V ATmega8 Serial USART
Suplai
12V Driver (Relay) Peralatan Listrik
48
49
Sistem ini memanfaatkan koneksi port serial pada konektor data ponsel yang
terdapat pada tiap ponsel untuk keperluan pertukaran data ponsel, sedangkan
mikrokontroler berperan sebagai pengolah data serial yang diterima dari ponsel.
dalam tugas akhir ini adalah Komunikasi UART. UART merupakan sebuah sirkuit
tambahan pada bus paralel di komputer untuk komunikasi serial. UART mengalihkan
sinyal serial menjadi parallel, menyediakan waktu untuk transmisi, dan sebagai data
buffer baik yang menuju atau keluar dari komputer. Komunikasi UART ini nantinya
sebagai interface untuk koneksi ke PC, untuk konfgurasi port data tipe handphone
Command yaitu suatu command yang diawali dengan AT+ (seperti perintah >
(prompt) pada DOS) yang akan dikirimkan oleh mikrokontroler melalui port serial
Setelah terjalin komunikasi, alat akan mendeteksi ada atau tidaknya handphone,
setelah itu handphone akan terus dalam keadaan standby dan menunggu SMS yang
masuk, SMS yang masuk ke handphone akan dideteksi, merupakan sebuah perintah
atau bukan, jika bukan maka SMS tadi akan terhapus secara otomatis dari memory
handphone, jika SMS yang masuk merupakan perintah yang dikenal maka SMS tadi
50
alat.
Perintah yang dapat dikenali oleh alat ini adalah A1-E1 yang berfungsi
menonaktifkan relay 1 sampai dengan relay 5. Setelah perintah dieksekusi maka sms
yang telah diterima oleh handphone akan terhapus otomatis di handphone, dan alat
mikrokontroler ATmega8 dan handphone Siemens M35 ini, terbagi atas 2 bagian
dari handphone ke alat, perancangan rangkaian pengendali saklar dan catu daya.
jalur rangkaian dengan software pembuat PCB Eagle 5.4.0. kemudian setelah
selesai, dilakukan pencetakan jalur rangkaian pada papan PCB melalui metode
setrika, metode ini dipilih karena lebih praktis dan efisien. Langkah selanjutnya
adalah dengan mencuci papan PCB tersebut dengan larutan FeCl3 (Feri Chlorida)
untuk melarutkan logam pada papan PCB yang tidak tertutup jalur rangkaian.
Setelah jalur rangkaian pada PCB tercetak, dilakukan pengeboran papan PCB
untuk menempatkan komponen yang akan dipasang dan langkah terakhir adalah
Catu daya atau power supply digunakan sebagai sumber tegangan untuk
ini dan catu daya yang digunakan adalah catu daya arus searah (DC) 5V dan
12V.
Tegangan input dari catu daya ini diperoleh dari listrik PLN langsung arus
menjadi input dari dua buah diode dan sebuah ground yang akan mengubah arus
bolak balik (AC) menjadi arus searah (DC). Tegangan 5V digunakan untuk
12V VCC
D1 D2
12V VCC
1N4004 U1 U3
J3 D3 LM7812C/TO220 LM7805C/TO220 J1
1 3 1 3
1 IN OUT IN OUT 1
2 2
GND
GND
3
CON2
CON3 1N4004
D4
C1 C2 C3
2
2
2200uF 220uF 220uF
Secara umum rangkaian catu daya terdiri dari empat bagian utama yaitu
a. Transformator
b. Penyearah (Rectifier)
c. Penapis (filter)
catu daya. Fungsi dari filter adalah untuk menapis riak (ripple)
d. Regulator
osilator. Untai osilator terdiri dari Kristal dan dua buah kapasitor. Komponen
54
atas osilator Kristal 4 MHz yang berfungsi untuk memberikan pulsa clock
internal. Osilator kristal ini dihubungkan pada pin 9 (PB6) dan pada pin 10
sebagai Vcc. Vcc ini akan dihubungkan ke AVcc pada pin 20 dan AREF pada
pin 21. AVcc adalah pin tegangan catu untuk A/D converter sedangkan AREF
adalah untuk pin tegangan referensi analog untuk ADC. Pin 2 (RXD) dan pin
listrik sedangkan pin 17 hingga pin 19 serta Vcc dan ground digunakan
tegangan pada peralatan listrik yang akan dikendalikan. Input dari rangkaian
56
dengan hal ini mikrokontroler akan mengendalikan 5 buah relay pada driver.
Pada rangkaian ini digunakan 5 buah transistor dan 5 buah relay untuk
menggunakan arus DC. Skema rangkaian driver dapat dilihat pada Gambar
3.4.
adanya tegangan lebih pada transistor karena adanya gerak gaya listirk balik
yang berasal dari kumparan pada transistor mati. Tegangan balik ini biasanya
Dengan adanya diode maka tegangan balik tersebut akan dihantarkan kearah
Vcc, sehingga tidak akan masuk pada kolektor. Selanjutnya untuk 5 buah Led
sebagai berikut:
Vcc = 12 Volt
digunakan sebesar 10 kali dari nilai R11, maka nilai R12 akan sebesar sebagai
berikut:
R12 = 10*R11
R12 = 10*27 K
R12 = 270 K
Komunikasi dilakukan secara UART dengan jumlah data 8 bit, nonparity, dan
menggunakan baud rate sebesar ±19200 bps, untuk pengiriman data digunakan
fasilitas yang ada pada pengendali mikro yaitu fasilitas pada port D.1 (TXD)
60
dan untuk penerimaan data dari handphone maka digunakan port D.0 (RXD)
siemens M35:
1. Kabel Biru=RxTXD(D.1).
2. Kabel Putih=TxRXD(D.0).
menjadi 2 bagian yaitu program utama dan subrutin program. Program utama
Subrutin program yaitu subrutin untuk pengubahan isi sms format PDU ke format
ASCII. Sub rutin akan menjalankan fungsi-fungsi tertentu yang dibutuhkan untuk
sistem pengontrolan. Adapun diagram alir dari program utama ditunjukkan pada
Deklarasi Karakter
Data Masuk
Tidak
Ada +?
Ya
Ada Koma(,)?
Tidak
Ya
A B
62
A B
Lompati 20 data
Kirim Status
5s
Nomor = ""
X=0
While X <> "+"
X = Waitkey()
Wend
Program ini akan menunggu sms masuk, ditandai dengan data masuk
untuk membaca nomor index yang berada setelah tanda koma (,). Kemudian
index yang terbaca akan dimasukan ke dalam Dig1 dan Dig2. Dig1 digunakan
untuk index yang berjumlah 1 dan jika berjumlah 2 maka index lainnya akan
Print "AT+CMGR=";
Print Chr(dig1);
Print Chr(dig2);
If Dig2 = &H0D Then
Print Chr(&H0a);
Else
Print
End If
While X <> "+"
X = Waitkey()
Wend
While X <> &H0A
X = Waitkey()
Wend
Program ini untuk mengirimkan perintah kepada mikrokontroler untuk
Pdulen = ""
Pdulen = Pdulen + Waitkey()
Pdulen = Pdulen + Waitkey()
I = Hexval(pdulen) * 2
For X = 1 To I
Temp = Waitkey()
Next X
65
Temp = Waitkey()
Temp = Waitkey()
Pdulen = ""
Nomor = ""
Pdulen = Pdulen + Waitkey()
Nomor = Nomor + Pdulen
Pdulen = Pdulen + Waitkey()
Nomor = Nomor + Pdulen
I = Hexval(pdulen)
B2 = I Mod 2
If B2 = 0 Then
I=I+4
Else
I=I+5
End If
For X = 3 To I
Mid(nomor , X , 1) = Waitkey()
Next X
For X = 1 To 20
Temp = Waitkey()
Next X
66
Program ini untuk melompati karakter PDU yang tidak digunakan dan
X = Waitkey()
While X <> &H0D
Pesan_pdu = Pesan_pdu + Chr(x)
X = Waitkey()
Wend
Program ini berfungsi untuk mengopi isi sms dan menyimpan di PDU,
selanjutnya mengubah data PDU yang mempunyai tipe string menjadi tipe char.
Pesan_ascii = ""
Call Pdu2ascii(pesan_pdu)
Program ini untuk memastikan bahwa data ASCII telah kosong dan program
I=1
Cek_isi:
Saklar = Mid(pesan_ascii , I , 2
Select Case Saklar
Case "A1" : Relay1 = 1
Case "B1" : Relay2 = 1
Case "C1" : Relay3 = 1
Case "D1" : Relay4 = 1
67
Cek_lagi:
I=I+2
Saklar = Mid(pesan_ascii , I , 1)
If Saklar = ";" Then
I=I+1
Goto Cek_isi
End If
Program ini untuk memeriksa kembali isi sms tersebut apakah ada lebih dari 1
selanjutnya.
If Relay1 = 1 Then
Pesan_ascii = Pesan_ascii + "RELAY A ON; "
Else
Pesan_ascii = Pesan_ascii + "RELAY A OFF; "
End If
If Relay2 = 1 Then
Pesan_ascii = Pesan_ascii + "RELAY B ON; "
Else
Pesan_ascii = Pesan_ascii + "RELAY B OFF; "
End If
If Relay3 = 1 Then
Pesan_ascii = Pesan_ascii + "RELAY C ON; "
Else
Pesan_ascii = Pesan_ascii + "RELAY C OFF; "
End If
If Relay4 = 1 Then
Pesan_ascii = Pesan_ascii + "RELAY D ON; "
Else
Pesan_ascii = Pesan_ascii + "RELAY D OFF; "
End If
If Relay5 = 1 Then
69
Call Ascii2pdu(pesan_ascii)
Call Kirim_status()
End If
Wait 5
Program ini untuk mengecek apakah sms berisi pesan “STATUS?”, jika benar
maka akan melakukan pengecekan kondisi dan akan melakukan pengubahan dari
ASCII ke PDU dan selanjutnya akan mengirmkan data SMS ke ponsel. Tunda 5
detik bertujuan agar semua sistem dalam kondisi stabil sebelum menjalankan
perintah selanjutnya.
Pesan_ascii = ""
Pesan_pdu = ""
Print "AT+CMGD=";
Print Chr(dig1);
Print Chr(dig2);
If Dig2 = &H0D Then
Print Chr(&H0a);
Else
Print
End If
70
Goto Mulai
End
Program ini untuk membersihkan memori pada data ASCII, data PDU dan
untuk mewakili suatu nilai tertentu di dalam proses program yang bisa
a. Deklarasi konstanta:
$crystal = 4000000
$baud = 19200
Config Portd = &B11111110
Portd.1 = 0
Portd.0 = 1
b. Deklarasi Variabel:
Ate0:
Print "ATE0"
73
X=0
While X <> &H0A
X = Waitkey()
If X = “R” then
Goto Ate0
End If
Wend
Cnmi:
Print "AT+CNMI=1,1,0,0,1"
X=0
While X <> &H0A
X = Waitkey()
If X = “R” Then
Goto Cnmi
End If
Wend
Mulai
Selesai
bentuk data PDU menjadi format ASCII lalu hasil pendekodean ini akan
disimpan di RAM.
Data yang mengalir dari atau ke SMS- centre harus berupa PDU. PDU
ini berisi bit-bit heksa desimal yang mencerminkan bahasa I/O. PDU ini
terdiri dari beberapa header. Header dari SMS terima berbeda dengan header
dari SMS yang akan dikirimkan. Berikut program pengubahan SMS PDU ke
ASCII:
I=1
I1 = 1
I2 = 6
I3 = 8
Char2 = Mid(pdu , I , 2)
B2 = Hexval(char2)
Char2 = Bin(b2)
Char2 = Right(char2 , 7)
B3 = Binval(char2)
Pduhex = Chr(b3)
Pesan_ascii = Pesan_ascii + Pduhex
B1 = Hexval(char1)
Char1 = Bin(b1)
Char1 = Left(char1 , I1)
Char2 = Mid(pdu , I4 , 2)
B2 = Hexval(char2)
Char2 = Bin(b2)
Char2 = Right(char2 , I2)
75
B3 = Binval(char3)
Pduhex = Chr(b3)
Pesan_ascii = Pesan_ascii + Pduhex
I1 = I1 + 1
I2 = I2 - 1
If I1 = I3 Then
I=I+2
I1 = 1
I2 = 6
I3 = I3 + 8
Char2 = Mid(pdu , I , 2)
B2 = Hexval(char2)
Char2 = Bin(b2)
Char2 = Right(char2 , 7)
B3 = Binval(char2)
Pduhex = Chr(b3)
Pesan_ascii = Pesan_ascii + Pduhex
I=I-2
End If
Next
End Sub
Mulai
Kosongkan PDU
Selesai
handphone dari format ASCII ke format PDU. Hal ini dilakukan karena dalam
PDU. Format PDU ini akan mengubah septet kode ASCII (7 bit) menjadi
bentuk byte PDU (8 bit) dan akan diubah kembali menjadi format ASCII pada
PDU:
I=1
I1 = 1
I2 = 7
For I = 1 To Len(ascii)
I3 = I + 1
Char1 = Mid(ascii , I , 1)
B1 = Asc(char1)
Char1 = Bin(b1)
77
Char1 = Right(char1 , 7)
Char1 = Left(char1 , I2)
Char2 = Mid(ascii , I3 , 1)
B2 = Asc(char2)
Char2 = Bin(b2)
Char2 = Right(char2 , 7)
Char2 = Right(char2 , I1)
Char3 = Char2 + Char1
B3 = Binval(char3)
Pduhex = Hex(b3)
Pesan_pdu = Pesan_pdu + Pduhex
I1 = I1 + 1
I2 = I2 - 1
If I1 = 8 Then
I=I+1
I1 = 1
I2 = 7
End If
Next
End Sub
Mulai
Kosongkan
Pesan_Kirim
A
78
Kirim Perintah
Kirim Sms
“AT+CMGS=”
Delay
Selesai
pengiriman data berupa status kondisi relay. Oleh karena itu, utuk
Sub Kirim_status()
Pesan_kirim = ""
Pesan_kirim = "001100" + Nomor + "0000A7" + Pesan_pdu
I = Len(pesan_kirim) / 2
I=I-1
Pduhex = Str(i)
Print "AT+CMGS=";
Print Pduhex
While X <> ">"
79
X = Waitkey()
Wend
Waitms 100
For I = 1 To Len(pesan_kirim)
Print Mid(pesan_kirim , I , 1);
Waitms 50
Next
Print Chr(26)
End Sub