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
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
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
<CR>: ASCII character 13<LF>: ASCII character 10
Skematik yang akan digunakan:
Flowchart
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
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
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
Top Related