Anda di halaman 1dari 32

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 :

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

Gambar 3.1 Blok Diagram Sistem

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.

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.

12V VCC

D1 D2

VCC LED LED


J2
1
2 R1 R2
CON2 R R

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

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.


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=RxTXD(D.1).

2. Kabel Putih=TxRXD(D.0).

3. Kabel Kuning=GNDGND 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. Mulai

Deklarasi Karakter

Inisialisai Modem (HP)

Data Masuk
Tidak
Ada +?
Ya

Ada Koma(,)?
Tidak

Ya
A B
62

A B

Simpan No Index Dig1 dan Dig2

Kirim Perintah Baca AT+CMGR

Kirim Posisi Index Sms

Simpan Panjang Data PDU

Baca 2 Digit Pertama PDU

Lompati n Sejumlah Digit Pertama

Simpan Nomor Pengirim

Lompati 20 data

Simpan Isi Pesan PDU

PDU 2 ASCII Disimpan di Pesan ASCII

Ambil 2 Karakter Pertama Pesan ASCII

Cocokan Dengan Keadaan Yang Telah Ditentukan

Ambil Karakter Berikutnya


Ya
Ada ; ?
Tidak Ya Cek Kondisi
STATUS? Relay
Tidak
ASCII 2 PDU

Kirim Status

5s

Hapus Isi Pesan ASCII


dan Pesan PDU
Gambar 3.7 Diagram Alir Program Utama
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
Print
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
Print
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

Mulai

Ubah Isi SMS dari PDU


ke ASCII

Selesai

Gambar 3.8. Flowchart Subrutin pengubahan SMS dari PDU ke ASCII


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

Mulai

Kosongkan PDU

Ubah Data dari


ASCII ke PDU

Selesai

Gambar 3.9. Flowchart Subrutin Pengubahan Data dari ASCII ke PDU


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

Kirim Perintah
Kirim Sms
“AT+CMGS=”

Delay

Selesai

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 <> ">"
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

Anda mungkin juga menyukai