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 :

ini dapat dilihat seperti pada Gambar 3.1. dibawah ini : Rangkaian Pengolah Sinyal Mikrokontroler ATmega8

Rangkaian

Pengolah Sinyal

Mikrokontroler

ATmega8

ini : Rangkaian Pengolah Sinyal Mikrokontroler ATmega8 Driver (Relay) Ponsel Pengontrol Ponsel Penerima Catu Daya

Driver (Relay)

Pengolah Sinyal Mikrokontroler ATmega8 Driver (Relay) Ponsel Pengontrol Ponsel Penerima Catu Daya 5V dan 12 V

Ponsel Pengontrol

Mikrokontroler ATmega8 Driver (Relay) Ponsel Pengontrol Ponsel Penerima Catu Daya 5V dan 12 V Suplai 5V
Mikrokontroler ATmega8 Driver (Relay) Ponsel Pengontrol Ponsel Penerima Catu Daya 5V dan 12 V Suplai 5V
Mikrokontroler ATmega8 Driver (Relay) Ponsel Pengontrol Ponsel Penerima Catu Daya 5V dan 12 V Suplai 5V
Mikrokontroler ATmega8 Driver (Relay) Ponsel Pengontrol Ponsel Penerima Catu Daya 5V dan 12 V Suplai 5V

Ponsel Penerima

Catu Daya

5V dan 12 V

Suplai 5V
Suplai 5V
Pengontrol Ponsel Penerima Catu Daya 5V dan 12 V Suplai 5V Komunikasi Serial USART Peralatan Listrik
Pengontrol Ponsel Penerima Catu Daya 5V dan 12 V Suplai 5V Komunikasi Serial USART Peralatan Listrik
Komunikasi Serial USART
Komunikasi
Serial USART

Peralatan Listrik

Suplai 12V
Suplai
12V

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.

VCC J2 1 2 CON2
VCC
J2
1
2
CON2
12V VCC D1 LED R1 R
12V
VCC
D1
LED
R1
R

D2

LED

R2

R

12V VCC 1N4004 U1 U3 J3 D3 LM7812C/TO220 LM7805C/TO220 J1 1 3 1 3 1
12V
VCC
1N4004
U1
U3
J3
D3
LM7812C/TO220
LM7805C/TO220
J1
1
3
1
3
1
I N
OUT
I N
OUT
1
2
2
3
CON2
CON3
1N4004
D4
C1
C2
C3
2200uF
220uF
220uF
2
GND
2
GND

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

perangkat

keras

dari

mikrokontoler

ini

sangat

sederhana,karena

54

hanya

menambahkan beberapa komponen pasif seperti terlihat pada Gambar 3.3.

54 hanya menambahkan beberapa komponen pasif seperti terlihat pada Gambar 3.3. Gambar 3.3 Rangkaian Sistem Minimum

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

57 Gambar 3.4 Rangkaian Driver

Gambar 3.4 Rangkaian Driver

58

Berikut gambar transistor yang bekerja sebagai saklar terhadap relay:

transistor yang bekerja sebagai saklar terhadap relay: Gambar 3.5 Transistor sebagai Saklar Nilai-nilai resistor

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 Ω relay = 395 Ω

dengan cara sebagai berikut: Vcc = 12 Volt ; Dengan nilai R relay = 395 Ω
dengan cara sebagai berikut: Vcc = 12 Volt ; Dengan nilai R relay = 395 Ω

dengan cara sebagai berikut: Vcc = 12 Volt ; Dengan nilai R relay = 395 Ω

; hFE=170 (Data Sheet Transistor)

dengan cara sebagai berikut: Vcc = 12 Volt ; Dengan nilai R relay = 395 Ω

 Dengan nilai R11 diatas maka digunakan R11=27K 59 yang sesuai dengan nilai-nilai resistor dipasaran, selanjutnya

Dengan nilai R11 diatas maka digunakan R11=27K

 Dengan nilai R11 diatas maka digunakan R11=27K 59 yang sesuai dengan nilai-nilai resistor dipasaran, selanjutnya

59

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 = 10*27 K
R12 = 270 K

R12 sebenarnya tidak diperlukan untuk rangkaian ini. Tapi umumnya

digunakan

untuk

menyetabilkan

dan

transistor dengan sepenuhnya mati.

3.1.4 Untai Komunikasi Serial

untuk

memastikan

bahwa

saklar

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 :

serial dapat dilihat pada Gambar 3.6. dibawah ini : Gambar 3.6 Untai Komunikasi Serial Berikut siemens

Gambar 3.6 Untai Komunikasi Serial

Berikut

siemens M35:

langkah

penyambungan

1. Kabel Biru=RxTXD(D.1).

2. Kabel Putih=TxRXD(D.0).

mikrokontroler

dengan

kabel

data

3. Kabel Kuning=GNDGND Untai Mikrokontroler.

3.2 Perancangan Perangkat Lunak

Perancangan

perangkat

lunak

pada

tugas

Visual

Basic

dengan

menggunakan

software

61

akhir

ini

menggunakan

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

mengatur

keseluruhan

program utama dan subrutin program. Program utama

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

Mulai

Gambar 3.7.

alir dari program utama ditunjukkan pada Mulai Gambar 3.7. Deklarasi Karakter Inisialisai Modem (HP) Data Masuk

Deklarasi Karakter

utama ditunjukkan pada Mulai Gambar 3.7. Deklarasi Karakter Inisialisai Modem (HP) Data Masuk Tidak Ada +?

Inisialisai Modem (HP)

Data Masuk Tidak Ada +? Ya Ada Koma(,)? Tidak Ya A B
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
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
5 s
Hapus Isi Pesan ASCII
dan Pesan PDU
Relay Tidak ASCII 2 PDU Kirim Status 5 s 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.

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

64

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

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

65

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

selanjutnya.

akan

dieksekusi,

jika

tidak

If Pesan_ascii = "STATUS" Then Pesan_ascii = ""

akan

melanjutkan

ke

perintah

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

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

71

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

72

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"

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

MulaiThen Goto Cnmi End If Wend 3.2.3 Subrutin PDU ke ASCII Ubah Isi SMS dari PDU

Ubah Isi SMS dari PDU ke ASCII

SelesaiSubrutin PDU ke ASCII Mulai Ubah Isi SMS dari PDU ke ASCII 73 Gambar 3.8. Flowchart

73

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)

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

I - 2 End If Next End Sub 3.2.4 Subrutin ASCII ke PDU Mulai Kosongkan PDU

Kosongkan PDU

Next End Sub 3.2.4 Subrutin ASCII ke PDU Mulai Kosongkan PDU Ubah Data dari ASCII ke

Ubah Data dari ASCII ke PDU

ASCII ke PDU Mulai Kosongkan PDU Ubah Data dari ASCII ke PDU Selesai 75 Gambar 3.9.

Selesai

75

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)

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
Mulai
Kosongkan
Pesan_Kirim
A

77

A Kirim Perintah Kirim Sms “AT+CMGS=” Delay Selesai
A
Kirim Perintah
Kirim Sms
“AT+CMGS=”
Delay
Selesai

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

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

79