Pelatihan AVR

10 Maret 2011

bahasa AT Command untuk pengiriman SMS

assalamu'alaykum wr wb

kali ini saya mau sharing penggunaan bahasa AT command buat interface mikrokontroler Atmega8 dengan hape jenis siemens C55. namun harus kedua jenis gadget itu, untuk mikrokontroler bisa apa saja asalkan mempunyai fitur USART (Universal Synchronous Asynchronous Receiver Transmitter) dan juga hp apapun yang mendukung AT Command dan juga punya interface USART. kalo hpnya pake interface lain seperti I2C dan SPI, maka mikrokontrolernya juga harus mempunyai interface itu, yang penting bisa komunikasi.




pertama saya tunjukin konfigurasi PIN pada Siemens C55

Untuk koneksi dengan mikrokontroler atau PC yang dipake cuma 3 pin aja, yaitu TX, RX dan GND. Ini configurasi pin c35 karena USART hanya perlu 3 pin untuk komunikasi:

Pin Description SX1 pinout
1 Vbatt, Power Charging
2 Gnd Gnd
3 TX TX (usb D+ in xx65, SX1)
4 RX RX (usb D- in xx65, SX1)
5 CTS CTS, Data Line For Accesory
6 RTS RTS, Data Line For Accesor
7 DCD DCD, Clockline For Accesory
8 AUDIO P AUDIO L
9 - AUDIO GND
10 AUDIO N AUDIO R
11 GND MIC GND (EXT MIC.)
12 EPP EPP 1 (EXT MIC.)

sedangkan konfigurasi pin Atmega8

karena C55 yang saya gunakan baterenya sudah tidak dapat bertahan lama maka saya membuat interface tembahan, yaitu segaligus mencharge agar dapat bertahan lama.

agar terlihat lebih bagus, saya membuatnya menggunakan kabel USB dengan konfigurasi seperti ini

uC Atmega8                              USB                     Siemens C55
VCC                                      1(merah)                    1 VCC
RX (PortD.0)                         2 (putih)                     3 TX
TX (PortD.1)                         3 (hijau)                     4 RX
GND                                     4 (hitam)                    2 GND


oiya, saya lupa sesuatu, level tegangan pada mikro yaitu TTL 5volt tapi level tegangan C55 TTL 3.3v. sebenarnya perlu diberi resistor dan juga dioda zener yang dihubungkan ke ground dan VCC agar arusnya tidak berlebihan, tapi selama saya mencoba, juga ga apa apa kalo ga pake itu. nah kalo udah lewat kabel data yang dikasi dari pabrik untuk ke komputer itu biasanya sama kabel datanya udah diubah ke level tegangan RS232 dan biasanya konverternya terletak di konektor DB9 karena didalemnya sudah ada IC MAX232. nah kalo ingin tetap menggunakan level tegangan TTL ya jangan pake konektor DB9 jadi langsung aja dihubungin ke mikro. pastikan juga nikro juga menggunakan level tegangan TTL. jadi intinya kalo satu pake TTL semuanya pake TTL dan juga kalo satu pake RS232 yang lain juga harus RS232.

nah sekarang baru kita beranjak ke instruksinya

baudrate umum yang digunakan adalah 9600 baud (ada yang bilang baud=bps, tapi sebenarnya baud adalah kecepatan simbol bukan byte. tapi karena disini 1 simbol sama dengan 1bit. ya bolehlah)

kalo inisialisasi USART dan pengiriman data USART saya anggap sudah bisa ya, hehe

nah, ada yang perlu diperlu diperhatikan dalam penggunaan bahasa AT Command. oya format penulisan pada AT Command juga sering disebut PDU (Packet Description Unit) yang menggunakan encoding 7bit. hal ini digunakan semata mata untuk memperkecil jumlah data yang ditransmitkan sehingga pesan yang dapat kirimkan lebih banyak. atau istilah lainnya pesan dikompres dalam 7 bit.


1. no service center
maka datanya:
* panjang pasangan angka (lihat berapa panjang nomer service center kemudian dibagi 2 dan ditambah 1)
* format nasional :81 (kalo nulisnya dalam format 08xxx), kalo format internasional : 91 (format nulisnya 628xxx)
* nomer telp dengan dibalik antara high nibble dan low nibble (ingat semua huruf dalam hexadesimal sehingga ditulis dalam format nibble) jika tersisa satu diakhir nomer maka beri hexa "F" pada high nibblenya
misal nomer 0812345678 (nasional), 62812345678 (internasional)
format nasional: panjang 5pasang +1= 06
format nasional :81
no telp yang dibalik: 8021436587
jadi PDU service center 06818021436587
nah kalo format internasional PDUnya menjadi 07912618325476f8 (coba renungkan mengapa)

2. sms 01 (default)

3. default gateway 00

4. no tujuan
hampir sama dengan service center, hanya ada sedikit perbedaan
format datanya:
* banyaknya angka (bukan pasangan angka) ditambah 2
*format nasional :81, format internasional :91
*nomer yang ditulis terbalik antara high nibble dan low nibble (sama seperti sebelumnya)
misal:
nasional :081357924680, internasional : 6281357924680
untuk format nasional:
banyaknya angka : 12+2=14(desi)=0e(hexa)
format nasional :81
nomer yang dibalik :803175296408
jadi PDUnya: 0e81803175296408
kalo format internasionalnya : 0f91261853974286f0 (coba renungkan lagi)

5. form : sms 00, fax 01, pager 02. jadi pake 01 aja untuk sms

6. encoding 7 bit 00, 8 bit 01. karena default PDU 7 bit gunakan 00

7. panjang pesan, ini tinggal hitung berapa karakter yang akan dikirim

8. isi pesan (ini yang rumit)

karena selama ini kita sudah terbiasa menuliskan sesuatu dalam 8 bit. namun pada PDU ini digunakan encoding 7 bit maka perlu dilakukan pengolahan bit terlebih dahulu
coba perhatikan contoh dibawah ini:
  M(4Dh)      I (49h)       K (4Bh)        R (52h)      O (4Fh)
01001101 | 01001001 | 01001011 | 01010010 | 01001111

perhatikan pada semua MSB (Most significant bit) bernilai 0 semua
dan hasil pengolahan encoding ke 7 bit

M (4Dh)                                                                                   | 01001101
I (49h)                                                                       0100100 | 1
K (4Bh)                                                      010010 | 11           |
R (52h)                                     01010 | 010           |               |
O (4Fh)                     0100 | 1111       |                  |               |

hasil                  00000100 | 11111010 | 01010010 | 11100100 | 11001101
                             04h              FAh            52h            E4h          CDh
karena pada bit terakhir belum cukup 8 bit, maka perlu ditambahkan bit dummy yang bernilai 0. terlihat bahwa karakter terakhir memerlukan 4 bit 0 tambahan.
seperti diatas, digunakan operasi OR untuk menghasilkan hasil seperti diatas, namun tunggu dulu, ada yang perlu dilakukan lagi,, ya membaliknya!
data PDU untuk SMS yaitu : CDE452FA04

benar sekali! data perlu dibalik sesuai urutannya kembali

nah sekarang saatnya kita gabungin semua PDU diatas, sehingga untuk nomer service center (0812345678), nomer tujuan (6281357924680), dan isi pesan ("MIKRO"), maka PDUnya

0681802143658701000f91261853974286f0000005CDE452FA04

gimana? mudah bukan (sebenarnya ngga sih :hammer: )
mungkin itu yang baru bisa saya share, kalo ada masukan tinggal dikomen saja di bawah.

thx


wassalamu'alaykum wr wb
Fardhady Himawan KH
(tabel ascii)

2 komentar:

Toko Jazeera mengatakan...

wahhhh lumayan nihhh buat referensi TA gw,,, mas punya contoh program kirim sms melalui mikro menggunakan c55...yang sedrhana saja,,,saya susah memulainya,, thank

Fardhady Himawan KH, ST mengatakan...

kalo untuk memulai, cara mengirim sms bisa dengan 2 cara:
1. coba dengan format data 7 bit. tinggal ganti di bit UCSZ0-2
2. tetep pake yang 8 bit, tapi harus pake algoritma penggeseran