Kamis, 07 Juli 2011

Tutorial Mengirim SMS dengan Mikrokontroler dan HP (Send SMS with Microcontroller and HP)


Sebelumnya saya sudah pernah membahas tentang tutorial mengirim dan menerima SMS dengan mikrokontroler dan modem GSM, sekarang saya akan membahas tutorial SMS dengan mikrokontroler juga tetapi menggunakan handphone sebagai modem. HP yang saya gunakan adalah Siemens C55. Bisa juga menggunakan HP siemens C45, M55, atau HP lainnya yang dapat digunakan sebagai modem. Bentuk HP Siemens C55 adalah sbb:



Sebelumnya kita lakukan pengecekan terlebih dahulu pada komputer. Buka Hyperterminal dan lakukan pengaturan sbb:
Kemudian ketikkan AT untuk mengecek respon HP, jika pengaturan sudah benar maka HP akan merespon OK. Kemudian ketikkan ATE1, yang berfungsi agar data yang kita ketikkan di echo sama HP, alias dikirimkan kembali sehingga dapat tampil di Hyperterminal.
 Nah, sekarang kita pelajari dahulu sistem PDU (Protocol Data Unit) sebelum SMS dikirimkan.

 Contoh bentuk PDU yang siap dikirimkan adalah sbb:



Urutannya adalah sebagai berikut:
1) 07 adalah jumlah nomor pusat pesan operator pengirim SMS dalam hexadesimal.
    Kartu yang digunakan adalah IM3 yang memiliki nomor pusat: 912658050000F0
2) 91 adalah keterangan cara pemakaian nomor Internasional yaitu menggunakan nomor 628xxx, kalau nasional  81 dengan nomor 08xxx.
nomor operator: 62855000000
dibuat menjadi pasangan-pasangan seperti ini: 62 - 85 - 50 - 00 - 00 - 0F
karena kekurangan 1 angka ditambahkan F untuk melengkapi menjadi 6 pasang.
Kemudian ditukar tempat menjadi: 26 - 58 - 05 - 00 - 00 - F0
dan menjadi 7 pasang ditambah 91, menjadi: 912658050000F0
Tabel nomor SMS center:









3) Tipe SMS yang dipilih (tipe Send atau mengirim)
4) Nomor referensi SMS dibiarkan atau diisi 00.
5) 0D adalah jumlah hexadesimal nomor handphone untuk penerima SMS.
6) Cara yang digunakan adalah International, sehingga diberi tambahan 91. Nomor yang akan dikirimkan SMS adalah : 6289636213487 berjumlah 13 atau 0D dalam hexadesimal.
Kemudian nomor tsb dibuat berpasangan: 62 - 89 - 63 - 62 - 13 - 48 - F7, ditambahkan F karena kekurangan 1 angka untuk melengkapi pasangan.
Kemudian diubah menjadi: 26 - 98 - 36 - 26 - 31 - 84 - 7F.
7)  Bentuk yang dikirimkan adalah SMS atau 00. 
     01 untuk telex dan 02 untuk fax.
8) Skema encoding data I/O yang digunakan adalah 7 bit ditandai dengan angka 00.
9) Jangka waktu SMS sebelum expired.
10) Panjang karakter SMS yang dikirimkan dalam hexadesimal.
Pada contoh diatas SMS yang dikirimkan adalah "Hello World", sehingga panjang karakternya adalah 11 atau 0B dalam hexadesimal.
11) Isi SMS yang diubah menjadi bilangan bilangan hexadesimal.

Cara mengubahnya adalah sbb:





















Setiap karakter yang akan dikirimkan diubah menjadi bilangan hexadesimal, kemudian diubah menjadi data biner 7 bit. Data biner 7 bit tersebut di mirror dan diurutkan setiap 8 bit sehingga menjadi data biner 8 bit.
Kemudian data biner 8 bit diubah kembali menjadi bilangan hexadesimal.

Sehingga berdasarkan hasil konversi tabel diatas, kata "Hello world" diubah menjadi deretan hexadesimal "C8329BFD065DDF72361900".

Tabel Hexadesimal karakter:






























































Untuk mengirimkan SMS perintahnya adalah AT+CMGS = <panjang PDU>, panjang PDU dihitung berdasarakan jumlah pasangan dari urutan ke-3 atau angka "11" atau tipe SMS yang dipilih sampai dengan urutan ke-11 atau isi SMS dalam hexadesimal.
Contoh diatas memiliki panjang 52 karakter atau 26 pasang hexadesimal.

Sehingga untuk mengirimkan SMS, ketikkan AT+CMGS=26, diikuti dengan bentuk PDU lengkap pada contoh diatas, dan dikirimkan dengan menekan CTRL+Z.





















atau bisa juga untuk mudahnya mendapatkan data PDU lengkap dengan software yang telah saya buat seperti ini:

Pilih operator sellular yang digunakan pada HP, isi nomor HP penerima, isi SMS yang akan dikirimkan maksimal 160 karakter, dan klik CONVERT TO PDU, maka akan tampil hasil PDU lengkap dan panjang PDU. Kemudian klik Koneksi --> Hubung maka secara otomatis akan terhubung dengan port serial yang terhubung dengan HP, kemudian klik kirim.

Selanjutnya untuk ujicoba pengiriman dengan mikrokontroler, buat rangkaian dengan skematik sbb:

Dan listing programnya sbb:

'================================================================
'MENGIRIM SMS DENGAN MIKROKONTROLER DAN HP
'PROGRAMMER = WAHYU RAHMANIAR
'TECHNOLOGINATION
'================================================================

$regfile = "m8535.dat"
$crystal = 4000000
$baud = 19200

Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2

Declare Sub Getline(s As String)
Declare Sub Flushbuf

Config Serialin = Buffered , Size = 12
Enable Interrupts

Dim Respon As String * 10
Dim Y As Byte

Cls
Cursor Off
Locate 1 , 1
Lcd "Tes SMS dengan HP"
Locate 2 , 1
Lcd "Technologination"
Wait 2

Call Flushbuf

Do
  Print "AT"
  Call Getline(respon)                                     
      Cls
      Cursor Off
      Locate 1 , 1
      Lcd "Respon HP: " ; Respon                           
      Wait 1
Loop Until Respon = "OK"                                   
Call Flushbuf
Goto Kirim

Sub Getline(s As String )
  S = ""
  Do
    Y = Inkey()
    Select Case Y
       Case 0
       Case 13
       Case 10 : If S <> "" Then Exit Do                   
       Case Else
         S = S + Chr(y)
    End Select
  Loop
End Sub


Sub Flushbuf()
  Waitms 100
  Do
    Y = Inkey()                                            
  Loop Until Y = 0
End Sub


Kirim:

   Cls
   Cursor Off
   Locate 1 , 1
   Lcd "No :089636213487"
   Locate 2 , 1
   Lcd "SMS: Hello world" 

Print "AT+CMGS=26" 
Waitms 500 
Print "07912658050000F011000C912618927533730000FF0BC8329BFD065DDF72361900" ; Chr(26) 
Wait 1

Pertama dicek terlebih dahulu respon dari HP, jika dijawab "OK" maka koneksi sudah beres dan SMS siap dikirimkan. Download programnya disini.
-ayuchan-