48
BAB III
PERANCANGAN SISTEM
Alat yang dirancang pada tugas akhir ini berjudul “kendali peralatan listrik
melalui sms berbasis mikrokontroler ATmega”. Pada pengendalian 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
komunikasi terhadap handphone tersebut. Sehingga penggunaan media handphone
sebagai pengontrol dianggap lebih efektif dalam hal pengontrolan jarak jauh
dibandingkan dengan pengonrol lainnya yang sangat terbatas dengan jarak.
Prinsip kerja alat ini dapat dilihat seperti pada Gambar 3.1. dibawah ini :
Ponsel Pengontrol Ponsel Penerima
Gambar 3.1 Blok Diagram Sistem
Komunikasi
Serial USART
Rangkaian
Pengolah Sinyal
Mikrokontroler
ATmega8
Suplai 5V
Catu Daya
5V dan 12 V
Suplai
12V Driver (Relay) Peralatan Listrik
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.
Komunikasi antara ponsel (handphone) dengan mikrokontroler yang digunakan
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
yang digunakan yaitu Siemens M35.
Dalam mengakses handphone, mikrokontroler mengirimkan perintah AT-
Command yaitu suatu command yang diawali dengan AT+ (seperti perintah >
(prompt) pada DOS) yang akan dikirimkan oleh mikrokontroler melalui port serial
handphone untuk memerintahkan handphone agar menjalankan aplikasinya seperti
membaca dan mengirimkan SMS.
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
akan dikodekan oleh pengendali mikrokontroler dan kemudian diteruskan ke keluaran
alat.
Perintah yang dapat dikenali oleh alat ini adalah A1-E1 yang berfungsi
mengaktifkan relay 1 sampai dengan relay 5, perintah A0-E0 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
kembali ke keadaan standby untuk menunggu perintah selanjutnya.
Pada perancangan kendali peralatan listrik melalui SMS berbasis
mikrokontroler ATmega8 dan handphone Siemens M35 ini, terbagi atas 2 bagian
yaitu perancangan perangkat keras (hardware) dan perancangan perangkat lunak
(software). Perancangan perangkat keras dilakukan dengan menyusun komponen-
komponen elektronika sesuai dengan fungsinya masing-masing yang kemudian
dirangkai menjadi satu kesatuan sistem pengontrolan otomatis.
Untuk perancangan perangkat keras (hardware), terbagi menjadi 4 bagian,
yaitu perancangan untai pengendali mikrokontroler, perancangan komunikasi serial
dari handphone ke alat, perancangan rangkaian pengendali saklar dan catu daya.
Sedangkan pada perancangan perangkat lunak (software) disusun dengan
menggunakan bahasa Visual Basic dengan kompiler Bascom AVR.
3.1 Perancangan Perangkat Keras
Proses pembuatan alat diawali dengan mengambarkan skema dan juga
51
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
penyolderan komponen pada papan PCB.
3.1.1 Catu Daya
Catu daya atau power supply digunakan sebagai sumber tegangan untuk
mengaktifkan komponen-komponen elektronika yang digunakan pada peralatan
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
AC sehingga memerlukan sebuah Transformator CT (Center Tap) 1A, trafo ini
berfungsi untuk menurunkan tegangan (Transformator Step Down) AC dari
220V ke tegangan yang dibutuhkan missal 12V,9V dan 6V yang kemudian
menjadi input dari dua buah diode dan sebuah ground yang akan mengubah arus
bolak balik (AC) menjadi arus searah (DC). Tegangan 5V digunakan untuk
menjalankan atau sebagai sumber tegangan dari mikrokontroler sedangkan
52
tegangan 12V digunakan untuk menggerakan relay. Susunannya dapat dilihat
pada Gambar 3.2.
Gambar 3.2 Rangkaian Catu Daya
Secara umum rangkaian catu daya terdiri dari empat bagian utama yaitu
transformator, penyearah, penapis (filter) dan regulator.
a. Transformator
Tansformator atau trafo CT berfungsi menurunkan tegangan AC dari
jala-jala listrik pada kumparan primernya menjadi tegangan AC yang
lebih kecil pada kumparan sekundernya, dengan trafo CT berarti
cukup menggunakan 2 buah dioda tanpa harus menggunakan 4 buah
dioda atau diode bridge sebagai penyearahnya.
J1
CON2
12
12V
R1R
VCC
J3
CON3
123
U3LM7805C/TO220
1 3
2
IN OUT
GN
D
D2
LED
R2R
VCC
C3220uF
U1LM7812C/TO220
1 3
2
IN OUT
GN
D
VCC
J2
CON2
12
C12200uF
12V
C2220uF
D41N4004
D1
LED
D3
1N4004
53
b. Penyearah (Rectifier)
Penyearah berfungsi sebagai untuk mengubah arus bolak-balik (AC)
menjadi arus searah (DC) komponen yang diperlukan adalah dua
buah diode 1N4004 sebagai penyearah gelombang penuh.
c. Penapis (filter)
Komponen dari penapis ini adalah berupa kapasitor pada rangkaian
ini digunakan kapasitor 2200uF dan 220uF. Tegangan kerja
kapasitor yang digunakan harus lebih besar dari tegangan keluaran
catu daya. Fungsi dari filter adalah untuk menapis riak (ripple)
gelombang keluaran dari penyearah agar lebih halus sehingga
mendekati bentuk gelombang DC murni.
d. Regulator
Regulator voltage berfungsi sebagai filter tegangan agar sesuai
dengan keinginan dan untuk menjaga kestabilan tegangan keluaran
agar tetap konstan meskipun terjadi perubahan tegangan AC pada
masukan. IC regulator yang digunakan adalah LM7805 untuk
keluaran 5V dan LM7812 untuk keluaran 12V.
3.1.2 Untai Pengendali Mikrokontroler
Pengendali mikrokontroler adalah bagian utama dan merupakan “otak
kendali” yang terdiri dari IC pengendali mikrokontroler ATMega8 dan untai
osilator. Untai osilator terdiri dari Kristal dan dua buah kapasitor. Komponen
54
perangkat keras dari mikrokontoler ini sangat sederhana,karena hanya
menambahkan beberapa komponen pasif seperti terlihat pada Gambar 3.3.
Gambar 3.3 Rangkaian Sistem Minimum
55
Rangkaian ini juga dapat dikatakan sebagai rangkaian pegolah sinyal
karena rangkaian ini mengolah data dari handphone kemudian memproses
data tersebut sehingga dihasilkan output yang diinginkan. Dalam rangkaian
pengolah sinyal (Minimum System ATmega8), seperti Gambar 3.3 tersusun
atas osilator Kristal 4 MHz yang berfungsi untuk memberikan pulsa clock
internal. Osilator kristal ini dihubungkan pada pin 9 (PB6) dan pada pin 10
(PB7). Dua buah kapasitor 22pF yang berfungsi menstabilkan frekuensi.
Resistor 330 Ω dan LED sebagai indikator aktifnya mikrokontroler.
Supalai 5V diberikan pada pin7 kaki mikrokontroler yang bertugas
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
3 (TXD) terhubung dengan handphone Siemens M35. Selanjutnya pin 23
hingga pin 27 (PC0-PC4) terhubung ke driver untuk mengendalikan peralatan
listrik sedangkan pin 17 hingga pin 19 serta Vcc dan ground digunakan
sebagai input downloader.
3.1.3 Rangkaian Pengendali Saklar
Rangkaian pengendali saklar ini berfungsi untuk memberikan input
tegangan pada peralatan listrik yang akan dikendalikan. Input dari rangkaian
56
ini diperoleh dari pin 23 sampai pin 27 (PC0-PC4) pada mikrokontroler,
dengan hal ini mikrokontroler akan mengendalikan 5 buah relay pada driver.
Driver ini mendapatkan suplai tegangan yang lebih besar dari
mikrokontroler karena untuk bekerjanya transistor dan relay membutuhkan
sumber tegangan yang lebih besar dari pada 5V.
Pada rangkaian ini digunakan 5 buah transistor dan 5 buah relay untuk
mengendalikan 5 buah peralatan listrik. Fungsi transistor yang telah dibahas
sebelumnya yaitu berfungsi sebagai saklar, konfigurasi transistor yang
digunakan adalah common emitter. Selanjutnya fungsi relay pada rangkaian
ini sebagai penghubung dan pemutus arus AC yang pengontrolnya
menggunakan arus DC. Skema rangkaian driver dapat dilihat pada Gambar
3.4.
Diode 1N4004 adalah sebagai diode pelindung untuk mencegah
adanya tegangan lebih pada transistor karena adanya gerak gaya listirk balik
yang berasal dari kumparan pada transistor mati. Tegangan balik ini biasanya
melebihi tegangan maksimum kolektor, sehingga bisa merusak transistor.
Dengan adanya diode maka tegangan balik tersebut akan dihantarkan kearah
Vcc, sehingga tidak akan masuk pada kolektor. Selanjutnya untuk 5 buah Led
digunakan sebagai indikator relay telah bekerja dengan baik.
57
Gambar 3.4 Rangkaian Driver
58
Berikut gambar transistor yang bekerja sebagai saklar terhadap relay:
Gambar 3.5 Transistor sebagai Saklar
Nilai-nilai resistor pada transistor diatas dapat dihitung dengan cara
sebagai berikut:
Vcc = 12 Volt
; Dengan nilai Rrelay = 395 Ω
; hFE=170 (Data Sheet Transistor)
59
Dengan nilai R11 diatas maka digunakan R11=27K yang sesuai
dengan nilai-nilai resistor dipasaran, selanjutnya untuk nilai R12 normalnya
digunakan sebesar 10 kali dari nilai R11, maka nilai R12 akan sebesar sebagai
berikut:
R12 = 10*R11
R12 = 10*27 K
R12 = 270 K
R12 sebenarnya tidak diperlukan untuk rangkaian ini. Tapi umumnya
digunakan untuk menyetabilkan dan untuk memastikan bahwa saklar
transistor dengan sepenuhnya mati.
3.1.4 Untai Komunikasi Serial
Seperti yang sudah dijelaskan pada bab sebelumnya, komunikasi antara
handphone dengan alat dilakukan secara serial, dengan komunikasi UART.
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)
yang dihubungkan ke kabel data handphone. Selanjutnya diode zener disini
berfungsi sebagai penyetabil tegangan yang dihubungkan sebelum TXD.
Dengan menggunakan diode ini maka tidak diperlukan IC MAX232 sebagai
interface antara handphone dengan mikrokontroler. Untai komunikasi serial
dapat dilihat pada Gambar 3.6. dibawah ini :
Gambar 3.6 Untai Komunikasi Serial
Berikut langkah penyambungan mikrokontroler dengan kabel data
siemens M35:
1. Kabel Biru=RxTXD(D.1).
2. Kabel Putih=TxRXD(D.0).
3. Kabel Kuning=GNDGND Untai Mikrokontroler.
61
3.2 Perancangan Perangkat Lunak
Perancangan perangkat lunak pada tugas akhir ini menggunakan
Visual Basic dengan menggunakan software BASCOM-AVR sebagai
kompailernya. Perancangan perangkat lunak ini sangat penting, karena program
yang dibuat akan menentukan program pengontrolan relay terhadap peralatan
listrik yang akan dikendalikan agar bekerja dengan baik.
Perancangan perangkat lunak pada mikrokontroler atmel ATmega8 terbagi
menjadi 2 bagian yaitu program utama dan subrutin program. Program utama
mengatur keseluruhan jalannya program yang meliputi subrutin-subrutin.
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
Gambar 3.7.
Tidak
Ya
Tidak
Ya
Inisialisai Modem (HP)
Ada +?
Ada Koma(,)?
B A
Data Masuk
Mulai
Deklarasi Karakter
62
Ya
Tidak Ya
Tidak
Gambar 3.7 Diagram Alir Program Utama
Hapus Isi Pesan ASCII
dan Pesan PDU
B
5 s
ASCII 2 PDU
Kirim Status
STATUS?
Ambil 2 Karakter Pertama Pesan ASCII
Cocokan Dengan Keadaan Yang Telah Ditentukan
Ada ; ?
Ambil Karakter Berikutnya
PDU 2 ASCII Disimpan di Pesan ASCII
Cek Kondisi
Relay
Simpan Panjang Data PDU
Simpan Isi Pesan PDU
Simpan No Index Dig1 dan Dig2
Kirim Perintah Baca AT+CMGR
Kirim Posisi Index Sms
Lompati n Sejumlah Digit Pertama
A
Baca 2 Digit Pertama PDU
Simpan Nomor Pengirim
Lompati 20 data
63
Selanjutnya untuk program utama dapat ditunjukan sebgai berikut:
Nomor = ""
X = 0
While X <> "+"
X = Waitkey()
Wend
Program ini akan menunggu sms masuk, ditandai dengan data masuk
(+CMTI:”SM”, <index>), kemudian nomor akan dikosongkan dan selanjutnya
akan mencari tanda positif (+) pada data (+CMTI:”SM”, <index>).
While X <> ","
X = Waitkey()
Wend
Dig1 = Waitkey()
Dig2 = Waitkey()
While X <> &H0A
X = Waitkey()
Wend
Program ini akan mencari tanda koma (,) pada (+CMTI:”SM”, <index>)
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
dimasukan ke dalam dig2.
64
Print "AT+CMGR=";
Print Chr(dig1);
Print Chr(dig2);
If Dig2 = &H0D Then
Print Chr(&H0a);
Else
End If
While X <> "+"
X = Waitkey()
Wend
While X <> &H0A
X = Waitkey()
Wend
Program ini untuk mengirimkan perintah kepada mikrokontroler untuk
mambaca sms (AT+CMGR) dan untuk mengirimkan posisi index sms.
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
menyimpan panjang data PDU.
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
untuk memanggil subrutin pengubahan PDU ke ASCII
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
Case "E1" : Relay5 = 1
Case "R1" : Relay = &H1F
Case "A0" : Relay1 = 0
Case "B0" : Relay2 = 0
Case "C0" : Relay3 = 0
Case "D0" : Relay4 = 0
Case "E0" : Relay5 = 0
Case "R0" : Relay = &H00
End Select
Program ini untuk memeriksa isi sms dan selanjutnya akan di eksekusi
terhadap isi sms tersebut.
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
perintah yang akan dieksekusi, jika tidak akan melanjutkan ke perintah
selanjutnya.
If Pesan_ascii = "STATUS" Then
Pesan_ascii = ""
68
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
Pesan_ascii = Pesan_ascii + "RELAY E ON"
Else
Pesan_ascii = Pesan_ascii + "RELAY E OFF"
End If
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
End If
70
Goto Mulai
End
Program ini untuk membersihkan memori pada data ASCII, data PDU dan
juga mengirimkan perintah ke handphone untuk menghapus sms.
3.2.1 Deklarasi Karakter
Pada awal program terlebih dahulu deklarasikan variable-variabel yang
digunakan didalam program. Variable adalah suuatu pengenal yang digunakan
untuk mewakili suatu nilai tertentu di dalam proses program yang bisa
diubah-ubah sesuai kebutuhan. Deklarasi sangat perlu jika ingin digunakan
pengenal di dalam program. Deklarasi ini terbagi menjadi beberapa bagian
yaitu deklarasi variable, deklarasi konstanta dan deklarasi fungsi.
Berikut deklarasi-deklarasi program yang digunakan:
a. Deklarasi konstanta:
$crystal = 4000000
$baud = 19200
Config Portd = &B11111110
Portd.1 = 0
Portd.0 = 1
b. Deklarasi Variabel:
Relay1 Alias Portc.0
71
Relay2 Alias Portc.1
Relay3 Alias Portc.2
Relay4 Alias Portc.3
Relay5 Alias Portc.4
Relay Alias Portc
Config Portc = Output
Dim I As Integer
Dim X As Byte
Dim Temp As Byte
Dim Digit1 As Byte
Dim Digit2 As Byte
Dim Dig1 As Byte
Dim Dig2 As Byte
Dim Panjang As Byte
Dim Pdulen As String * 2
Dim Nomor As String * 18
Dim Pesan_pdu As String * 160
Dim Pesan_ascii As String * 80
Dim Pesan_kirim As String * 180
Dim Saklar As String * 2
Dim I1 As Integer
Dim I2 As Integer
Dim I3 As Integer
Dim I4 As Integer
Dim Char1 As String * 8
72
Dim Char2 As String * 8
Dim Char3 As String * 8
Dim B1 As Byte
Dim B2 As Byte
Dim B3 As Byte
Dim Pduhex As String * 2
c. Deklarasi Fungsi:
Declare Sub Pdu2ascii(pdu As String )
Declare Sub Ascii2pdu(ascii As String )
Declare Sub Kirim_status()
3.2.2 Inisialisasi Modem
Diawal program utama, setelah melakukan deklarasi karakter maka yang
selanjutnya dilakukan adalah inisialisai prangkat keras yaitu inisialisai modem
(handphone). Insialisasi modem ini menggunakan command sebagai berikut:
1. ATE0 digunakan untuk mematikan echo atau feedback karakter saat
mengirimkan data ke modem. Hal ini bertujuan untuk mengurangi
kesibukan pada jalur komunikasi serial.
2. AT+CNMI sebagai pemberi keterangan saat ada sms baru masuk.
Selanjutnya untuk program inisialisai modem sebagai berikut:
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
3.2.3 Subrutin PDU ke ASCII
Gambar 3.8. Flowchart Subrutin pengubahan SMS dari PDU ke ASCII
Mulai
Ubah Isi SMS dari PDU
ke ASCII
Selesai
74
Subrutin pendekodean ini digunakan untuk menerjemahkan isi SMS dari
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:
Sub Pdu2ascii(pdu As String * 100)
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
For I = 1 To Len(pdu) Step 2
I4 = I + 2
Char1 = Mid(pdu , I , 2)
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
Char3 = Char2 + Char1
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
3.2.4 Subrutin ASCII ke PDU
Gambar 3.9. Flowchart Subrutin Pengubahan Data dari ASCII ke PDU
Mulai
Kosongkan PDU
Ubah Data dari
ASCII ke PDU
Selesai
76
Subrutin pendekodean ini untuk mengubah data yang akan dikirimkan ke
handphone dari format ASCII ke format PDU. Hal ini dilakukan karena dalam
pengiriman data, semua produsen MS (Mobile Station) menggunakan format
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
saat diterima oleh mobile station. Berikut program pengubahan ASCII ke
PDU:
Sub Ascii2pdu(ascii As String )
Pesan_pdu = ""
I = Len(ascii)
Char1 = Hex(i)
Pesan_pdu = Right(char1 , 2)
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
3.2.5 Subrutin Kirim Status
Mulai
Kosongkan
Pesan_Kirim
A
78
Gambar 3.10. Flowchart Subrutin Kirim Status
Subrutin kirim status digunakan untuk memerintah handphone melakukan
pengiriman data berupa status kondisi relay. Oleh karena itu, utuk
memerintahkan mengirim data maka digunakan command “AT+CMGS=”.
Berikut program subrutin pengiriman status:
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 <> ">"
Kirim Perintah
Kirim Sms
“AT+CMGS=”
Delay
Selesai
A
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