Menerima Data Dari Sms

9
MENERIMA DATA DARI SMS Tujuan: Menerima SMS Alat dan bahan : 1. Modul microcontroller AVR 2. Modem GSM dgn serial Port 4. GSM SIM CARD (XL ,simpati ,tri, dll) 5. Software Codevision Prinsip dan Cara kerja : Microcontroller mengirim data ( isi SMS dan No tujuan) ke modem GSM melalui RS232,kemudian modem GSM mengirim data tsb ke SMS center yang akan menyampaikan ke No Hp yg dituju. Blok diagram mengirim-menerima SMS dgn Mikrokontroller

Transcript of Menerima Data Dari Sms

Page 1: Menerima Data Dari Sms

MENERIMA DATA DARI SMS

Tujuan:

Menerima SMS

Alat  dan bahan :

1.  Modul microcontroller AVR

2.  Modem GSM  dgn serial Port

4.  GSM SIM CARD (XL ,simpati ,tri, dll)

5.  Software Codevision

Prinsip dan Cara kerja :

Microcontroller mengirim  data ( isi SMS dan No tujuan) ke modem GSM  melalui RS232,kemudian modem GSM mengirim  data tsb ke SMS center yang akan menyampaikan ke No Hp yg dituju.

Blok diagram mengirim-menerima SMS dgn Mikrokontroller

Page 2: Menerima Data Dari Sms

Perintah yang di mengerti modem  adalah “AT Command” . Disebut AT Command karena perintah2nya  didahului oleh “AT” ( Atention).

Contoh beberapa AT command  untuk Modem GSM:

AT+CPBF  : cari no telp.AT+CPBR  : membaca buku telp.AT+CPBW : menulis  no telp di buku telp.AT+CMGF  : menyeting mode SMS text atau PDUAT+CMGL : melihat semua daftar sms yg ada.AT+CMGR : membaca sms.AT+CMGS  : mengirim sms.AT+CMGD  : menghapus sms.AT+CMNS : menyeting lokasi penyimpanan ME(hp) atau SM(SIM Card)

AT+CGMI : untuk mengetahui nama atau jenis ponselAT+CGMM : untuk mengetahui kelas ponselAT+COPS? : untuk mengetahui nama provider kartu GSMAT+CBC : untuk mengetahui level bateraiAT+CSCA : untuk mengetahui alamat SMS Center

Dalam proses pengiriman atau penerimaan SMS, terdapat  2 mode  yaitu:

1. Mode SMS  text

2. Mode SMS PDU (Protocol Data Unit).

Mode yang paling mudah digunakan yaitu mode teks (kode ASCII). tapi mode PDU(kode hexa) lebih powerful.

Penjelasan Beberapa AT Command

AT+CPMS : Mengeset Target lokasi memory

AT Command Respon  Modem

AT+CPMS=[Mode1],[Mode2],[Mode3] OK

Mode1],[Mode2],[Mode3] , SM =SIM Card , ME (HP) , MT semua storage.

-AT+CMGF : Mengeset Modem sebagai Mode text atau PDU.

AT Command Respon  Modem

AT+CMGF=<mode><CR> OK

Page 3: Menerima Data Dari Sms

Parameter <mode>     0 =Mode PDU,   1 =  Mode text

<CR> = ASCII character 13

Contoh  Set  GSM modem ke  Text Mode SMS dan kirim  sms ke  No : +6285695341050.

(anda bisa mencobanya lebih dahulu pada hyperterminal)

AT+CMGF=1          <akhiri dg enter(CR) >OK // ini respon ok dari modem AT+CMGS="+6285695341050"  <akhiri dg enter(CR) > > hallo apa kabar.  <akhiri dgn CTRL-Z>+CMGS: 324  //parameter jawaban dari modemOK // jawaban ok dari modemUntuk mengetahui Mode apa yang sedang aktif gunakan perintah:AT+CMGF?

- AT+CMGL: Melihat  sms yang ada 

AT Command Respon Modem

AT+CMGL=<stat><CR> +CMGL: <index>,<stat>,<oa>,[<alpha>],[<scts>]<CR><LF><data><CR><LF>…OK

Parameter<stat>:  Status , antara lain:

status sms  mode text  mode PDU

sms blm dibaca “REC UNREAD” 0

sms sdh dibaca “REC READ” 1

sms tak terkirim “STO UNSENT” 2

sms terkirim “STO SENT” 3

semua sms “ALL” 4

<index>: Index  pesan<oa>: alamat Originator<alpha>: Originator name (jika ada di phonebook)<scts>:  waktu<data>:  isi pesan

Page 4: Menerima Data Dari Sms

<CR>: ASCII character 13<LF>: ASCII character 10

Skematik yang akan digunakan:

Page 5: Menerima Data Dari Sms

Flowchart

Page 6: Menerima Data Dari Sms

Program pada Bascom

'Program menerima sms'--------------------

'Deklarasi mikrokontroler$regfile = "m8def.dat"$crystal = 11059200$baud = 9600

'Deklarasi Variabel

Declare Sub Baca_sms

Dim Pesan As String * 100Dim Input_data As String * 100Dim Posisi_cmti As ByteDim Posisi_indeks As ByteDim Panjang_data As ByteDim Panjang_indeks As ByteDim Indeks_sms As String * 3Dim Ciri_sms As Byte

Enable InterruptsEnable UrxcOn Urxc Mencari_sms

Open "comc.0:9600,8,n,1" For Output As #1'Membuat pin D 3 menjadi virtual Tx

'Main program'-------------

Pesan = ""

Print "AT" ; Chr(13)

Wait 1

'Pesan awal kosong

Page 7: Menerima Data Dari Sms

Do nopLoop

Mencari_sms:

'Menunggu data dari modemInput Input_data

'Menentukan panjang data dari modemPanjang_data = Len(input_data)

'Mencari CMTIPosisi_cmti = Instr(input_data , "CMTI")

'Jika CMTI ditemukan maka mencari posisi indeks smsIf Posisi_cmti <> 0 Then Posisi_indeks = Instr(input_data , ",") Incr Posisi_indeks 'Posisi_indeks = Posisi_indeks + 1

'Menentukan panjang indeks sms Panjang_indeks = Panjang_data - Posisi_indeks Incr Panjang_indeks

'Menentukan indeks sms Indeks_sms = Mid(input_data , Posisi_indeks , Panjang_indeks)

'Jika indeks telah ditentukan, maka go to baca sms

Gosub Baca_sms End IfReturn

Baca_sms:

Print "AT+CMGR=" ; Indeks_sms ; Chr(13) 'Membaca SMS yang masukDo Ciri_sms = Inkey() If Ciri_sms = "*" Then Exit Do 'Mencari karakter ciri *

Loop

Page 8: Menerima Data Dari Sms

Do Ciri_sms = Inkey() If Ciri_sms = "#" Then Exit Do 'Mencari karakter ciri #

Pesan = Pesan + Chr(ciri_sms) 'Pesan = "" + karakter antara * dan # Loop

Print #1 , "=" ; Pesan ; "d" 'Pesan dikirim melalui virtual tx

Print "AT+CMGD=1,4" ; Indeks_sms ; Chr(13) ; Chr(10) 'AT+CMGD= 1,4 delet all message 'Menghapus pesan setelah dibaca

Pesan = ""

Return