วันพุธที่ 4 สิงหาคม พ.ศ. 2553

การส่ง sms โดยใช้ gsm module

การส่ง sms โดยใช้ gsm module ในการทดลองนี้ผมใช้ sim300cz
ในการส่ง sms จะส่งอยู่ใน mode Unicode (UCS2) 16bit
ส่งที่จำเป็นในการส่งใน mode นี้คือ sms center ขึ้นอยู่กับว่าใช้เครือข่ายใด จะเซตค่าที่คำสั่ง AT+CSCA ในที่นี้ผมใช้ sim ของ dtac

SMS Center AIS = +66818110888
SMS Center DTAC = +66816110400
SMS Center True = +66891009120

ในการส่ง sms ผมจะส่งหาเบอร์ 0867352297 สิ่งที่ต้องเปลี่ยนคือตัด 0 ทิ้งและใส่ +66 จะได้เบอร์ดังนี้ +66867352297 ในที่นี้จะทดลองส่งข้อความ

“ฉันรักประเทศไทย” แต่ก่อนอื่นต้องแปลงเป็น unicode เสียก่อน ดูใน ตารางครับ

ฉ 0E09
ไม้หัน 0E31
น 0E19
ร 0E23
ไม้หัน 0E31
ก 0E01
ป 0E1B
ร 0E23
สระอะ 0E30
เ 0E40
ท 0E17
ศ 0E28
ไ 0E44
ท 0E17
ย 0E22

AT+CMGF=1
OK
AT+CSCS=”UCS2″
OK
AT+CSCA=”002B00360036003800310036003100310030003400300030″,145
OK
AT+CSMP=17,167,0,24
OK
AT+CMGS=”002B00360036003800360037003300350032003200390037″
OK
>0E090E310E190E230E310E010E1B0E230E300E400E170E280E440E170E22[ctrl+z]

CMGS:1
OK

AT+CMGF=1 โหมดการส่งข้อความ text
AT+CSCS=”UCS2″ unicode
AT+CSCA=”002B00360036003800310036003100310030003400300030″,145

sms center ของ dtac คือ +66816110400
+ = 002B >> ดูในตาราง
6 = 0036
6 = 0036
8 = 0038
1 = 0031
6 = 0036
1 = 0031
1 = 0031
0 = 0030
4 = 0034
0 = 0030
0 = 0030

AT+CSMP=17,167,0,24

AT+CMGS=”002B00360036003800360037003300350032003200390037″ >> เบอร์โทรปลายทาง

>0E090E310E190E230E310E010E1B0E230E300E400E170E280E440E170E22 >> ข้อความ “ฉันรักประเทศไทย”

หวังว่าคงเป็นประโยชน์ครับ
@10

ปล. การส่งข้อความนี้ไม่จัดเก็บในกล่องข้อความนะครับต้องส่งอีกรูปแบบ(สำหรับ sim300cz)

จากการทดลองด้านบนผมใช้ sim300cz module ในการส่งข้อความ ผมทดลองใช้กับ wavecom fastrack m1306B ปรากฏว่าไม่สามารถใช้รูปแบบตัวอักษร แบบ UCS2 ได้

AT+CSCS=”UCS2″ ไม่สามารถใช้ได้กับ m1306B ทดลองใช้คำสั่งดูรูปแบบการส่งโดยใช้คำสั่ง

AT+CSCS=?
+CSCS: (“GSM”,”PCCP437″,”CUSTOM”,”HEX”)

จะเห็นว่า m1306 สามารถส่งได้ 4 รูปแบบ ซึ่งต่างจาก sim300cz

AT+CSCS=?
+CSCS: (“GSM”,”HEX”,”IRA”,”PCCP”,”PCDN”,”UCS2″,”8859-1″)

ซึ่งดูแล้วของ sim300cz จะมีรูปแบบการส่งที่มากกว่าของ wavecom m1306B เอาล่ะพูดมาความ เพราะเรื่องของเรื่องคือผมจะใช้ m1306 ส่งข้อความภาษาไทยครับซึ่งมีขั้นตอนดังนี้เลย

/////////////////////// MESSAGE1
ati
WAVECOM MODEM

MULTIBAND 900E 1800

OK
at+cmgf?
+CMGF: 1 // ส่งข้อความ text mode

OK
at+cscs?
+CSCS: “PCCP437″ // แสดงรูปแบบการส่งก่อนหน้านี้เป็นแบบ PCCP437

OK
at+cscs=”HEX” // กำหนดรูปแบบ cscs เป็น “HEX”
OK
at&w // save ค่า config

OK

AT+CSMP = 17,167,0,25
OK
at+cmgs=”0867352297″
> 0E200E320E290E320E440E170E220E440E1B0E440E2B0E21[ctrl+z]
+CMGS: 76

OK
//////////////////////// MESSAGE2
at+cmgf=1
OK
AT+CSMP = 17,167,0,25
OK
at+cmgs=”0867352297″
> 0E090E310E190E230E310E010E1B0E230E300E400E170E280E440E170E22[ctrl+z]
+CMGS: 77

OK

////////////////// MESSAGE3

AT+CMGF=1
OK
AT+CSCS=”HEX”
OK
AT+CSMP = 17,167,0,25
OK
AT+CMGS=”0867352297″
> 0E400E2E0E490E2D00210E190E310E010E010E320E230E400E210E370E2D0E070E440E170E22[ctrl+z]
+CMGS: 78

OK

แต่ผมนำรูปแบบการส่ง cscs=”HEX” ไปใช้กับ sim300cz ไม่ได้ มันก็แปลกเหมือนกัน ต้องทดลอง

////////////////////////////////////////////////////////////////////////

วันนี้ต่อจากการใช้ sim300cz ส่ง sms เป็นภาษาไทยแต่ครั้งนี้ให้ข้อความไปจัดเก็บในกล่องข้อความ ในที่นี้ใช้ pdu mode ในการส่งข้อความเริ่มกันเลยครับ

AT
OK
ATI
SIMCOM_Ltd
SIMCOM_SIM300C
Revision:1008B13SIM300C32_SST34HF3284

OK
AT+COPS?
+COPS: 0,0,”DTAC”

OK

AT+CSCS=”HEX”
OK

AT+CMGF=0
OK
AT+CMGS=43
> 07916618160104F011000A9280765322790008AA1E0E2A0E270E310E2A0E140E350E1B0E230E30
0E400E170E280E440E170E22
+CMGS: 30

OK

เ่อ่อตรงจุดที่คำสั่ง AT+CMGS=43 ให้ทดลองใช้การแปลงข้อความเป็น pdu 16bit ที่เว็บนี้

http://stud.usv.ro/~amurariu/SMS%20and%20PDU%20format.htm

SMS Center ตามด้านล่างนี้เลยครับ

SMS Center AIS = +66818110888
SMS Center DTAC = +66816110400
SMS Center True = +66891009120

Receiver ป้อนเบอร์ปลายทาง
Alphabet Size เลือก 16
แล้ว convert และคัดลอกด้าน Hexadecimal PDU Message มาวางที่ hyperterminal ได้เลยครับ!!!!!!

@10