Development Guide For 3G Shield And Module Using Arduino TH 20160321

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 45

DownloadDevelopment Guide For 3G Shield And Module Using Arduino TH 20160321
Open PDF In BrowserView PDF
3G Shield / 3G Module
บน Platform Arduino

ประวัติการเปลี่ยนเวอร์ชั่น
เวอร์ชั่น
1.0

วันที่
21/03/2559

การเปลี่ยนแปลง
เวอร์ชั่นแรก

2

สารบัญ
วิธีเชื่อมต่อ 3G Shield / 3G Module กับ Arduino UNO R3 ...................................................................... 4
3G Shield ................................................................................................................................................ 4
การเซ็ต Jumper ...................................................................................................................................... 4
3G Module ............................................................................................................................................. 5
วิธีเชื่อมต่อ 3G Shield / 3G Module กับ Mic และ Speaker...................................................................... 6
การติดตั้งไลบรารีสาหรับใช้งาน 3G Shield / 3G Module กับ Arduino ...................................................... 7
ใช้งาน AT command โดยใช้ Arduino เป็น USB-to-Serial ........................................................................ 8
การตั้งค่า AT Command ให้กับ 3G Shield / 3G Module ก่อนใช้งานร่วมกับ Library TEE_UC20_Shield
..................................................................................................................................................................... 11
การตั้งค่า UART สาหรับใช้งาน Library TEE_UC20_Shield ...................................................................... 12
การใช้งานไลบรารี TEE_UC20_Shield ร่วมกับ AltSoftSerial.............................................................. 12
การใช้งานไลบรารี TEE_UC20_Shield ร่วมกับ SoftwareSerial .......................................................... 13
การใช้งานไลบรารี TEE_UC20_Shield ร่วมกับ Hardware Serial ....................................................... 13
การใช้งานไลบรารี TEE_UC20_Shield ........................................................................................................ 16
การใช้งานไลบรารี TEE_UC20_Shield โทรออกและรับสาย........................................................................ 19
การใช้งานไลบรารี TEE_UC20_Shield รับ-ส่งข้อความแบบ SMS ............................................................... 21
การใช้งานไลบรารี TEE_UC20_Shield ในการจัดการไฟล์ ........................................................................... 24
การใช้งานไลบรารี TEE_UC20_Shield ในการเชื่อมต่อ Internet................................................................ 29
การใช้งานไลบรารี TEE_UC20_Shield ในการส่ง MMS .............................................................................. 32
การใช้งานไลบรารี TEE_UC20_Shield ในการสื่อสาร TCP ......................................................................... 35
การใช้งานไลบรารี TEE_UC20_Shield ทา HTTP GET / HTTP POST ...................................................... 37
การใช้งานไลบรารี TEE_UC20_Shield ในการทา FTP................................................................................ 39
การใช้งานไลบรารี TEE_UC20_Shield ทางานกับ GNSS ............................................................................ 43

3

วิธีเชื่อมต่อ 3G Shield / 3G Module กับ Arduino UNO R3
3G Shield

การเซ็ต Jumper

4

3G Module

5

วิธีเชื่อมต่อ 3G Shield / 3G Module กับ Mic และ Speaker

6

การติดตั้งไลบรารีสาหรับใช้งาน 3G Shield / 3G Module กับ Arduino
- ดาวน์โหลดไลบรารี AltSoftSerial จาก
http://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
หรือ
https://github.com/PaulStoffregen/AltSoftSerial
- แตกไฟล์ AltSoftSerial-master.zip และแก้ไขชื่อจาก AltSoftSerial-master เป็น AltSoftSerial
- คัดลอกไดเรกทอรี่ AltSoftSerial ไปไว้ในไดเรกทอรี่ libraries ภายในไดเรกทอรี่ของ Arduino IDE
- ดาวน์โหลดไลบรารี TEE_UC20_Shield จาก http://www.thaieasyelec.com/
- แตกไฟล์ TEE_UC20_Shield.7z
- คัดลอกไดเรกทอรี่ TEE_UC20_Shield ไปไว้ในไดเรกทอรี่ libraries ภายในไดเรกทอรี่ของ Arduino
IDE

7

ใช้งาน AT command โดยใช้ Arduino เป็น USB-to-Serial
การใช้ ง าน 3G Shield / 3G Module สามารถสั่ ง งานและสื่ อ สารกั บ โมดู ล ด้ ว ยการใช้ AT
Command ผ่านทางช่อง Serial UART และ USB ซึ่งหากเป็นสั่งงานโมดูลจากเครื่องคอมพิวเตอร์จะสามารถ
ใช้งานผ่านทาง USB ได้อย่างสะดวก โดยมีพอร์ต USB Modem สาหรับการสั่งงานและสื่อสารกับเครือข่าย
และ พอร์ต USB AT สาหรับการสั่งงานเพียงอย่างเดี ยว แต่ถ้าหากเป็นการสั่งงานจากไมโครคอนโทรลเลอร์
แล้วต้องใช้งานผ่านทางช่อง Serial UART
นอกจากนี้ จ ากค าสั่ ง AT Command บางค าสั่ ง ที่ สั่ ง ผ่ าน USB จะไม่ ส่ งผลถึ งการท างานบนช่ อ ง
Serial UART ยกตัวอย่างเช่นคาสั่งเปลี่ยนค่า Baud Rate ของการสื่อสาร การใช้คาสั่งนี้จะส่งผลกับค่า Baud
Rate เฉพาะช่องที่ได้รับคาสั่งนี้เท่านั้น คือ สั่งบน USB ก็จะเป็นการเปลี่ยน Baud Rate ของ USB แต่หากสั่ง
บน Serial UART ก็จะเปลี่ยน Baud Rate เฉพาะพอร์ต Serial UART เพียงอย่างเดียว
หากเราไม่มีโมดูล USB-to-Serial เราสามารถใช้ Arduino ทาหน้าที่แทน USB-to-Serial ในการส่ง
คาสั่ง AT Command ให้กับ 3G Shield / 3G Module ผ่านทาง Serial UART ได้เช่นกัน
วิธีใช้งาน
- เชื่อมต่อ 3G Shield / 3G Module เข้ากับบอร์ด Arduino
- เขียนโปรแกรมแล้วอัพโหลดลงใน Arduino ดังนี้
#include 
AltSoftSerial mySerial;
void setup() {
Serial.begin(9600);
mySerial.begin(115200);
}
void loop() {
if (mySerial.available()) {
Serial.write(mySerial.read());
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
}

- การทางานของ Code
Serial คื อ ออบเจคต์ ข องช่ อ ง Hardware Serial บนบอร์ ด Arduino ซึ่ ง เชื่ อ มต่ อ อยู่ กั บ ชิ พ
ATmega16U2 บนบอร์ด ทาหน้ าที่เป็ น USB-to-Serial สาหรับอัพโหลดโปรแกรม Arduino และใช้รับ-ส่ ง
ข้อมูลกับเครืองคอมพิวเตอร์
mySerial คือ ออบเจคต์ของ Software Serial ที่เราสร้างขึ้น ทาให้ Arduino มีพอร์ต Serial เพิ่ม
ขึ้นมาโดยกระบวนการสื่อสารจัดการด้วยโค้ดของ Software สาหรับเชื่อมต่อกับอุปกรณ์ อื่นๆ ที่สื่อสารผ่าน
Serial UART ได้ ในที่นี้เรานา Software Serial มาเชื่อมต่อกับ 3G Shield / 3G Module

8

ข้อจากัด คือ ไลบรารี Software Serial บางตัวอาจจะรองรับ Baud Rate ได้ไม่สูงนัก มีการทางานที่
ช้าและใช้ทรัพยากรบนไมโครคอนโทรลเลอร์เพิ่มขึ้นในการประมวลผลเมื่อเทียบกับการใช้งาน Hardware
Serial ซึ่งมีวงจร Hardware ในการทางานจริง แต่ Software Serial ช่วยให้เราสามารถเพิ่มช่องทางสื่อสาร
ให้ กับ Arduino ที่มี ช่อง Serial น้ อยไปไม่ เพี ยงพออย่ าง Arduino Uno ซึ่งมี Hardware Serial เพี ยงช่อ ง
เดียว
จากตั ว อย่ า งโค้ ด ภ ายใน ฟั ง ก์ ชั น loop() หากมี ข้ อ มู ล ส่ ง เข้ า มาทาง Software Serial ด้ ว ย
mySerial.available() จ ะ รั บ ค่ า ด้ ว ย mySerial.read() แ ล้ ว ส่ ง อ อ ก ไป ที่ Hardware Serial ด้ ว ย
Serial.write()
แ ล ะ ห าก มี ข้ อ มู ล ส่ งเข้ าม าท าง Hardware Serial ด้ ว ย Serial.available() จ ะ รั บ ค่ าด้ ว ย
Serial.read() แล้วส่งออกไปที่ Software Serial ด้วย mySerial.write() เช่นกัน
เสมือนกับเป็นการนาเอา Usb-to-Serial ของ Arduino ต่อเข้ากับ Serial UART ของ 3G Shield /
3G Module
หมายเหตุ !!! ที่ mySerial.begin(115200) จะต้ อ งตั้ ง ค่ า Baud rate ให้ ต รงกั บ ที่ 3G Shield / 3G
Module โดยค่า Default Baud Rate จะเป็น 115200 หรือ 9600 ขึ้นกับเฟิร์มแวร์ที่ติดมากับโมดูล
- อัพโหลดโปรแกรมลงบนบอร์ด Arduino

- เปิดSerial Monitor

9

- ตั้งค่า Baud rate และ NL/CR

- ทดลองพิมพ์คาสั่ง AT

- โมดูลจะตอบ OK กลับมาแสดงว่าสื่อสารกันได้

10

การตั้งค่า AT Command ให้กับ 3G Shield / 3G Module ก่อนใช้งาน
ร่วมกับ Library TEE_UC20_Shield
หมายเหตุ!!! 3G Shield ได้มีการตั้งค่าเหล่านี้มากจากการผลิตแล้ว ไม่จาเป็นต้องตั้งค่าใหม่
- ปิด Echo
ATE0
- ตั้งค่าพอร์ต URC ไปที่ UART1 พอร์ต URC ใช้แสดงผลและสถานะการทางานต่างๆ ที่โมดูลตอบ
กลับมาในขณะทางานหรือมีข้อผิดพลาด เช่น ข้อความ RING เมื่อมีสายโทรเข้า ข้อความตอบกลับ
เมื่อใช้งาน USSD เป็นต้น
AT+QURCCFG="urcport","uart1"
- เปลี่ยน Baud Rate เป็น 9600
AT+IPR=9600
AT+IFC=0,0
- บันทึกค่าคอนฟิกไว้ในหน่วยความจาของโมดูล เมื่อเปิดขึ้นมาโมดูลจะใช้ค่าที่กาหนดไว้
AT&W

11

การตั้งค่า UART สาหรับใช้งาน Library TEE_UC20_Shield
การใช้งานไลบรารี TEE_UC20_Shield ร่วมกับ AltSoftSerial
AltSoftSerial เป็ น ไลบรารี ส าหรั บ ใช้ งานขา GPIO ที่ ก าหนดให้ ท างานเป็ น Software Serial ซึ่ ง
สามารถทางานใน Baud Rate ที่สูงกว่าไลบรารี SoftwareSerial ปกติที่มากับตัว Arduino IDE โดยสามารถ
ใช้กับบอร์ดได้หลายรุ่น โดย AltSoftSerial กาหนดให้ใช้กับขาสัญญาณของบอร์ดรุ่นต่างๆ ดังนี้

อ้างอิงจาก http://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
3G Shield ได้ออกแบบให้สามารถเลือกใช้งาน Software Serial โดยเลือกจัมพ์เปอร์ไปที่ SW ทาให้
ขา Tx และ Rx เชื่อมต่อกับขา 8 และ 9 ของ Arduino Uno ทาให้ใช้งานร่วมกับ AltSoftSerial ได้
หมายเหตุ!!! Software Serial ควรใช้ Baud Rate ในช่วง 9600 – 57600 bps

ตัวอย่างการใช้งาน
#include "TEE_UC20.h"
#include "SoftwareSerial.h"
#include 
AltSoftSerial mySerial;
void setup(){
Serial.begin(9600);
gsm.begin(&mySerial,9600);
}
void loop(){
}

12

การใช้งานไลบรารี TEE_UC20_Shield ร่วมกับ SoftwareSerial
SoftwareSerial เป็นไลบรารีพื้นฐานที่ติดมากับ Arduino IDE และเป็นที่นิยมในการนาไปเชื่อมต่อ
อุปกรณ์กับ Arduino ผ่านทาง Serial Port สามารถเลือกกาหนด GPIO ได้หลายขาสัญญาณทาให้ยืดหยุ่นต่อ
การใช้ ง านแต่ ใ น Baud Rate ที่ สู ง กว่ า 19200 bps จะพบว่ า มี ค วามผิ ด พลาดของข้ อ มู ล ที่ รั บ เข้ า มา
ค่อนข้างมาก
ตัวอย่างการใช้งาน
#include "TEE_UC20.h"
#include "SoftwareSerial.h"
#include 
SoftwareSerial mySerial(8,9);
void setup(){
Serial.begin(9600);
gsm.begin(&mySerial,9600);
}
void loop(){
}

การใช้งานไลบรารี TEE_UC20_Shield ร่วมกับ Hardware Serial
Hardware Serial คือ Serial ที่เป็ น Hardware ของ Arduino โดยตรง สามารถท างานได้ดีและมี
ประสิทธิภาพที่สุด แต่เนื่องจาก Arduino บางบอร์ดอย่าง Uno มี Hardware Serial เพียงแค่ช่องเดียวและ
ใช้งานเป็นพอร์ตหลักสาหรับโปรแกรม การใช้งานจึงค่อนข้างลาบากเนื่องจากหากมี Hardware อื่นมาต่อพ่วง
ที่ขา 0 (Rx) และ 1 (Tx) ของ Uno อาจทาให้ไม่สามารถอัพโหลดโปรแกรมลงบอร์ด Arduino ได้ และพอร์ตนี้
มักนิ ย มใช้ในการรับ -ส่ งข้อมูล กับ คอมพิ วเตอร์ห รือใช้เพื่ อการดีบักแก้ปั ญ หาหรือดูส ถานะการทางานของ
โปรแกรม สาหรับการใช้งานกับ Arduino Uno จึงแนะนาให้ใช้ Software Serial จะสะดวกมากกว่า การใช้
งาน Hardware Serial แนะนาให้ใช้กับบอร์ด Arduino ที่มี Hardware Serial มากกว่า 1 ช่อง เช่น Arduino
Mega 2560 Arduino Due Arduino Leonardo (Hardware Serial แยกกับช่องอัพโปรแกรม USB CDC)

13

- การต่อใช้งาน Hardware Serial กับ Arduino Uno และ Leonardo

- การต่อใช้งาน Hardware Serial กับ Arduino Mega 2560

14

ตัวอย่างการใช้งาน
#include "TEE_UC20.h"
#include "SoftwareSerial.h"
#include 
void setup(){
gsm.begin(&Serial,9600);
}
void loop(){
}

Note!!!
gsm.begin(&Serial,9600);
gsm.begin(&Serial1,9600);
gsm.begin(&Serial2,9600);
gsm.begin(&Serial3,9600);

//สาหรับใช้งานกับ Serial Pin 0, 1 ของ Uno
//สาหรับใช้งานกับ Serial1 Pin 19, 18 ของ Mega 2560
//สาหรับใช้งานกับ Serial2 Pin 17, 16 ของ Mega 2560
//สาหรับใช้งานกับ Serial3 Pin 15, 14 ของ Mega 2560

15

การใช้งานไลบรารี TEE_UC20_Shield
เรียกใช้งานไลบรารี TEE_UC20_Shield โดยเพิ่ม include ดังต่อไปนี้
#include "TEE_UC20.h"
#include "SoftwareSerial.h"
#include 

ฟังก์ชัน begin()
void begin(SerialPort, baudrate) คือ ฟังก์ชันสาหรับตั้งค่าเริ่มต้นให้โมดูลใช้ไลบรารี ของ Serial
จาก AltSoftSerial SoftwareSerial หรือ HardwareSerial โดยในส่ วนหั วต้นโปรแกรมก่อนเข้า setup()
เราประกาศตัวแปรสร้างออบเจคต์ของ Serial ตัวอย่างเช่น
AltSoftSerial mySerial; เมื่อเรียกใช้ AltSoftSerial หรือ
SoftwareSerial mySerial(8,9); เมื่อเรียกใช้ Software Serial
และกาหนดค่า Baud Rate ในการสื่อสารกับ 3G Shield / 3G Module (สามารถดูตัวอย่างใช้งาน
จากหัวข้อการตั้งค่า UART สาหรับใช้งานไลบรารี TEE_UC20_Shield)
ตัวแปร Event_debug
Event_debug เป็นตัวแปรสาหรับกาหนดแอดเดรสของฟังก์ชันที่มารองรับการแสดงผลการดีบัก ของ
ไลบรารี ซึ่ ง ฟั ง ก์ ชั น ที่ จ ะมารั บ ข้ อ มู ล ดี บั ก จะอยู่ ใ นรู ป แบบ void functionname(String data) โดย
functionname คือค่าที่กาหนดให้ตัวแปร Event_debug และข้อมูลจะถูกส่งมายังตัวแปร data ของฟังก์ชัน
ดังกล่าว

ตัวอย่าง
#include "TEE_UC20.h"
#include "SoftwareSerial.h"
#include 
AltSoftSerial mySerial;
void debug(String data){
Serial.println(data);
}
void setup(){
Serial.begin(9600);
gsm.begin(&mySerial,9600);
gsm.Event_debug = debug;
}
void loop(){
}

16

ฟังก์ชัน SetPowerKeyPin()
void SetPowerKeyPin(int pin) คือ ฟังก์ชัน กาหนดค่าขา (Pin) ที่ใช้สั่ งเปิด-ปิด 3G Shield / 3G
Module โดยกาหนดหมายเลขขาที่ต้ องการใช้งานลงในพารามิเตอร์ pin โดยปกติแล้วหากไม่มีการตั้งค่าจาก
ฟังก์ชันนี้จะใช้ขา Digital 4 ของ Arduino
ฟังก์ชัน PowerOn()
void PowerOn() คื อ ฟั ง ก์ ชั น เปิ ด ใช้ ง าน 3G Shield / 3G Module โดยใช้ ข าสั ญ ญ าณ ของ
Arduino ที่ เชื่ อ มต่ อ กั บ Power Key ของ 3G Module ปกติ เป็ น ดิ จิ ต อลขา 4 สามารถเปลี่ ย นขาได้ จ าก
ฟังก์ชัน SetPowerKeyPin() การทางานของฟังก์ชันนี้จะสั่งทริกสัญญาณไปเปิดให้ 3G Shield / 3G Module
ทางาน แต่หากกาลังทางานอยู่แล้วเป็นการสั่งให้ปิด 3G Shield / 3G Module แล้วเปิดขึ้นมาใหม่
ฟังก์ชัน PowerOff()
void PowerOff() คือ ฟังก์ชันปิดการทางานของ 3G Shield / 3G Module โดยใช้ขาของ Arduino
ที่ เชื่ อ ม ต่ อกั บ ขา Power Key ข อง 3G Shield / 3G Module สาม ารถเป ลี่ ยน ขาได้ จากฟั งก์ ชั น
SetPowerKeyPin()
ฟังก์ชัน WaitReady()
bool WaitReady() คือ ฟังก์ชันรอให้ 3G Shield / 3G Module พร้อมเมื่อเปิดใช้งาน เนื่องจากการ
เปิดโมดูลขึ้นมาจะใช้เวลาสาหรับ Initial การทางานต่างๆ เช่น การจับสัญญาณเข้ากับเครือข่าย การตรวจสอบ
SIM Card เป็นต้น โดยฟังก์ชันนี้จะให้ค่าตอบกลับ Boolean เป็น false ออกมาเมื่อโมดูลพร้อมทางานแล้ว
ฟังก์ชัน GetOperator
String GetOperator() คือ ฟังก์ชันตรวจสอบว่าตอนนี้ 3G Shield / 3G Module กาลังเชื่อมต่อกับ
เครือข่ายของผู้ให้บริการใด โดยโดยนี้จะตอบกลับข้อมูล String เป็นชื่อของผู้ให้บริการออกมา

17

ฟังก์ชัน SignalQuality()
unsigned char SignalQuality() คือ ฟั งก์ชัน ส าหรับ ตรวจสอบคุณ ภาพสั ญ ญาณ ที่ 3G Module
ได้รับ จากผู้ ให้ บ ริการเครือข่าย โดยฟังก์ชันนี้จะตอบกลับ ค่าความแรงของสัญ ญาณออกมาเป็น ตัวเลขที่มี
ความหมายดังนี้
ฟังก์ชัน Return
0
1
2...30
31
99

Signal Quality
-113 dBm or less
-111 dBm
-109... -53 dBm
-51 dBm or greater
Not known or not detectable

18

การใช้งานไลบรารี TEE_UC20_Shield โทรออกและรับสาย
เรียกใช้งานไลบรารี TEE_UC20_Shield โดยเพิ่ม include ดังต่อไปนี้
#include
#include
#include
#include

"TEE_UC20.h"
"SoftwareSerial.h"

"call.h"

สร้างออบเจคต์ CALL
CALL call;

ฟังก์ชัน Call()
unsigned char Call(String call_number) คื อ ฟั ง ก์ ชั น โทรออกโดยใส่ String ของหมายเลขที่
ต้องการโทรออกไปลงในพารามิเตอร์ call_number โดยฟังก์ชันจะตอบกลับค่าผลการทางานของออกมาเป็น
ตัวเลขซึ่งมีความหมายดังนี้
ฟังก์ชัน Return
0
1
2
3

Description
Timeout
Ok
No Carrier
Busy

ฟังก์ชัน HangUp()
bool HangUp() คือ ฟังก์ชันวางสายโทรศัพท์ โดยฟังก์ชันจะตอบกลับเป็น true เมื่อวางสายสาเร็จ
ฟังก์ชัน DisconnectExisting()
bool DisconnectExisting() คือ ฟังก์ชันยกเลิกการทางานทั้งหมดเกี่ยวกับการ Call โดยฟังก์ชันจะ
ตอบกลับเป็น true เมื่อทางานสาเร็จ
ฟังก์ชัน Answer()
bool Answer() คือ ฟังก์ชันรับสายโทรศัพท์ โดยฟังก์ชันจะตอบกลับมาเป็น true เมื่อรับสายได้
ฟังก์ชัน CurrentCallsMe
String CurrentCallsMe() คือ ฟังก์ชันแสดงค่าหมายเลขโทรที่กาลังโทรเข้ามาในขณะนั้น โดยฟังก์ชัน
จะตอบกลับเป็น String ของหมายเลขที่กาลังโทรศัพท์เข้ามา
19

ฟังก์ชัน WaitRing
bool WaitRing() คื อ ฟั งก์ ชั น ตรวจจั บ สั ญ ญาณ RING เมื่ อ มี ส ายโทรเข้ ามา โดยฟั งก์ ชั น จะตอบ
กลับมาเป็น true เมื่อมีสายโทรเข้ามาแล้วโมดูลตรวจจับ RING ได้
สามารถดูตัวอย่างการใช้งาน 3G Shield / 3G Module สาหรับการโทรเข้าและรับสายได้จาก
File > Examples > TEE_UC20_Shield > Call

20

การใช้งานไลบรารี TEE_UC20_Shield รับ-ส่งข้อความแบบ SMS
เรียกใช้งานไลบรารี TEE_UC20_Shield โดยเพิ่ม include ดังต่อไปนี้
#include
#include
#include
#include

"TEE_UC20.h"
"SoftwareSerial.h"

"sms.h"

สร้างออบเจคต์ SMS
SMS sms;

ฟังก์ชัน DefaultSetting()
void DefaultSetting() คื อ ฟั ง ก์ ชั น ก าหนดค่ า ต่ า งๆ ที่ ส าหรั บ ใช้ ง าน SMS เช่ น ด้ ว ยค าสั่ ง
AT+CMGF, AT+CSMP, AT+CSCS เป็นต้น
ฟังก์ชัน Start()
void Start(String rx_number) คื อ ฟั ง ก์ ชั น เริ่ ม ต้ น ส่ ง SMS และก าหนดหมายเลขโทรศั พ ท์
ปลายทางที่ต้องการส่ง SMS โดยกาหนดเป็น String ของหมายเลขโทรศัพท์ที่ต้องการส่ง SMS
ฟังก์ชัน Send() และ Sendln()
void Send(String data) และ void Sendln(String data) คือ ฟั งก์ชัน ส่งข้อความที่ต้องการไปยัง
ผู้รับโดยกาหนด ข้อความที่จะส่งลงในพารามิเตอร์ String data
Send() คือ ส่งข้อความต่อกันไปเรื่อยๆ ในบรรทัดเดิม
Sendln() คือ ส่งข้อความพร้อมส่งคาสั่งให้ขึ้นบรรทัดใหม่
ฟังก์ชัน Stop
void Stop() คือ ฟังก์ชันสิ้นสุดการส่งข้อความ
สามารถดูตัวอย่างการใช้งาน 3G Shield / 3G Module สาหรับการส่ง SMS ได้จาก
File > Examples > TEE_UC20_Shield > Send_SMS_Thai_English

21

ฟังก์ชัน IndexNewSMS()
unsigned char IndexNewSMS() คื อ ฟั ง ก์ ชั น แสดงค่ า ต าแหน่ ง SMS ล่ า สุ ด ที่ เข้ า มาในกล่ อ ง
ข้อความ โดย ฟังก์ชันจะตอบกลับเป็นหมายเลข Index ของข้อความล่าสุด
ฟังก์ชัน ReadSMS()
String ReadSMS(int index) คือ ฟังก์ชัน อ่าน SMS ในกล่องข้อความโดยกาหนดพารามิเตอร์ int
index เป็นหมายเลขเพื่ออ่าน SMS ที่เก็บอยู่ใน Index ที่ต้องการอ่าน และฟังก์ชันจะตอบกลับมาเป็น String
ข้อความที่ SMS ทีเ่ ก็บอยู่ใน Index นั้นออกมา
ตัวแปร SMSInfo
String SMSInfo เป็นตัวแปรที่เก็บรายละเอียดของ SMS ที่กาลังอ่านอยู่
ฟังก์ชัน ConvertStrUnicodeToTIS620()
String ConvertStrUnicodeToTIS620(String data) คือ ฟังก์ชันแปลงตัวอักษรจาก Unicode ให้
เป็ น TIS620 เพื่ อแสดงข้อความที่ เป็ น ภาษาไทยบนหน้าต่าง Serial Monitor ได้ โดยฟังก์ชัน จะตอบกลั บ
ออกมาเป็น String

22

ฟังก์ชัน ConvertStrUnicodeToUTF8()
String ConvertStrUnicodeToUTF8(String data) คื อ ฟั งก์ ชั น แปลงตั ว อั ก ษรจาก Unicode ให้
เป็น UTF-8 เพื่อนาข้อความไปใช้ทาเงื่อนไขเปรียบเทียบ โดยฟังก์ชันตอบกลับออกมาเป็น String
ฟังก์ชัน DeleteSMS()
bool DeleteSMS(int index) คื อ ฟั ง ก์ ชั น ลบ SMS ในกล่ อ งข้ อ ความโดยก าหนด Index ของ
ข้อความที่ต้องการลบผ่านพารามิเตอร์ int index และเมื่อฟังก์ชันทางานสาเร็จจะตอบกลับเป็น true ออกมา
สามารถดูตัวอย่างการใช้งาน 3G Shield / 3G Module สาหรับการรับ SMS ได้จาก
File > Examples > TEE_UC20_Shield > Read_SMS_Thai_English

23

การใช้งานไลบรารี TEE_UC20_Shield ในการจัดการไฟล์
ภายใน 3G Shield / 3G Module มีส่วนสาหรับเก็บข้อมูลให้ใช้งานอยู่ภายในทั้งแบบชั่ วคราวและ
ถาวร ซึ่งเปิดให้ผู้ใช้สามารถนาข้อมูลเข้าไปเก็บบันทึกหรือพัก ข้อมูลก่อนนาไปใช้งานต่างๆ ได้ ยกตัวอย่างเช่น
เก็บรูปภาพก่อนส่ง MMS หรือพักข้อมูลจากที่ดาวน์โหลดจาก Internet
ส่วนสาหรับเก็บข้อมูลของ 3G Shield และ 3G Module จะถูกแบ่งออกเป็น 2 ส่วนได้แก่
UFS (User File Storage directory) คือ ส่วนเก็บข้อมูล ถาวร บันทึกข้อมูลลงใน Flash Memory หากเก็บ
ข้อมูลไว้ในส่วน UFS ข้อมูลจะไม่สูญหายเมื่อไม่มีไฟฟ้าเลี้ยงโมดูล
ใน 3G Shield ซึ่งใช้ UC20 มีพื้นที่ใช้งานประมาณ
60 MB
ใน 3G Module ซึ่งใช้ UC15 มีพื้นที่ใช้งานประมาณ
70 MB
RAM (Random Access Memory) คือ ส่วนเก็บข้อมูลชั่วคราว สามารถเข้าถึงข้อมูลได้รวดเร็วกว่า UFS แต่
ข้อมูลจะสูญหายเมื่อไม่มีไฟฟ้าเลี้ยงโมดูล
ใน 3G Shield ซึ่งใช้ UC20 มีพื้นที่ใช้งานประมาณ
2.5 MB
ใน 3G Module ซึ่งใช้ UC15 มีพื้นที่ใช้งานประมาณ
3 MB
หมายเหตุ!!! พื้นที่ว่างในใช้งานขึ้นอยู่กับปัจจัยหลายอย่าง ทั้งการเปิดใช้งานคุณสมบัติต่างๆ ของโมดูลซึ่งจะลด
พื้นที่ของ RAM ลง และเฟิร์มแวร์ของโมดูลเวอร์ชั่นใหม่ๆ ซึ่งอาจใช้ UFS ของโมดูลมากกว่าเดิมในการเก็บส่วน
ที่รองรับฟีเจอร์การทางานที่เพิ่มมากขึ้น ในการใช้งานทั่วไปแนะนาให้ใช้ UFS และคอยตรวจสอบพื้นที่ว่างบน
โมดูลไม่ให้เก็บข้อมูลจนเต็ม ในส่วนของ RAM ไม่แนะนาให้ใช้งานจนเต็มเพราะจะส่งผลต่อการทางานและ
สมรรถภาพโดยรวมของการทางานของโมดูล
เรียกใช้งานไลบรารี TEE_UC20_Shield โดยเพิ่ม include ดังต่อไปนี้
#include
#include
#include
#include

"TEE_UC20.h"
"SoftwareSerial.h"

"File.h"

สร้างออบเจคต์ UC_FILE
UC_FILE file;

ฟังก์ชัน begin()
void begin() คือ ฟังก์ชันกาหนดค่าเริ่มต้นการใช้งานเกี่ยวกับไฟล์

24

ฟังก์ชัน GetSpace()
long GetSpace(String pattern) คือ ฟังก์ชันแสดงขนาดหน่วยความจาทั้งหมด สามารถเลือกแสดง
ขนาดของหน่วยความจาในแต่ละส่วนโดยกาหนดพารามิเตอร์ลงในตัวแปร String pattern เช่น แ ส ด ง
หน่วยความจาทั้งหมดของ UFS = file.GetSpace(“UFS”);
แสดงหน่วยความจาทั้งหมดของ RAM = file.GetSpace(“RAM”);
และฟังก์ชันจะตอบกลับขนาดของหน่วยความจาทั้งหมดเป็นจานวนเต็มแบบ long
ฟังก์ชัน GetFreeSpace()
long GetFreeSpace(String pattern) คือ ฟัฟังก์ชันแสดงขนาดหน่วยความจาที่ว่าง สามารถเลือก
แสดงขนาดของหน่วยความจาในแต่ละส่วนโดยกาหนดพารามิเตอร์ลงในตัวแปร String pattern เช่น
แสดงหน่วยความจาที่ว่างของ UFS = file.GetFreeSpace (“UFS”);
แสดงหน่วยความจาที่ว่างของ RAM = file.GetFreeSpace(“RAM”);
และฟังก์ชันจะตอบกลับขนาดของหน่วยความจาที่ว่างเป็นจานวนเต็มแบบ long
ฟังก์ชัน List()
List(String pattern) คือ ฟังก์ชันแสดงรายชื่อไฟล์ทั้ง หมดในหน่วยความจา สามารถเลือกแสดงไฟล์
ของหน่วยความจาในแต่ละส่วนโดยกาหนดพารามิเตอร์ลงในตัวแปร String pattern เช่น
แสดงรายชื่อไฟล์ของ UFS = file. List (“UFS”);
แสดงรายชื่อไฟล์ของ RAM = file. List (“RAM”);
โดยฟังก์ชันนี้จะแสดงรายชื่อไฟล์ในตัวแปรที่เรากาหนด
ตัวแปร ListOutput
ListOutput เป็ น ตัว แปรส าหรับ กาหนดตาแหน่งของฟังก์ชัน ที่ม ารองรับ การแสดงผลของฟั งก์ชัน
List() ซึ่งฟังก์ชันที่จะมารับข้อมูลจะอยู่ในรูปแบบ void functionname(String data) โดย functionname
คือ ค่าที่กาหนดให้ตัวแปร ListOutput และข้อมูลจะถูกส่งมายังตัวแปร data ของฟังก์ชันดังกล่าว
ฟังก์ชัน Open()
int Open(String pattern, String fn) คือ ฟังก์ชันเปิดไฟล์ขึ้นมาใช้งานเพื่ออ่านหรือเขียน สามารถ
เลือกตาแหน่งที่อยู่ของไฟล์ โดยกาหนดพรารามิเตอร์ลงในตัวแปร String pattern และกาหนดชื่อไฟล์ได้จาก
พารามิเตอร์ String fn และเมื่อเปิ ดไฟล์ สาเร็จ ฟังก์ชัน ตอบกลับเป็น หมายเลข Handle Number ออกมา
เพื่อให้ใช้อ่านหรือเขียนไฟล์ต่อไป หากไม่สามารถเปิดไฟล์ได้ ฟังก์ชันตอบกลับค่าเป็น -1 ออกมา

25

ฟังก์ชัน Close()
bool Close(int handle) คือ ฟังก์ชันปิดไฟล์หลังจากอ่านหรือเขียนไฟล์แล้ว โดยการปิดไฟล์จะใช้
หมายเลข Handle Number ที่ได้จากฟังก์ชัน Open() ในการระบุไฟล์ที่ต้องการปิด และเมื่อปิดไฟล์สาเร็จ
ฟังก์ชันจะตอบกลับเป็น true ออกมา
ฟังก์ชัน BeginWrite()
BeginWrite(int handle,int size) คือ ฟังก์ชัน เริ่มเขียนไฟล์ที่เปิดด้วยฟังก์ชัน Open() เอาไว้ โดย
นาเอาหมายเลข Handel Number ที่ได้จากการเปิดไฟล์ใส่ลงในพารามิเตอร์ int handle และการเขียนไฟล์
ต้องกาหนดขนาดของข้อมูลที่ต้องการลงในพารามิเตอร์ int size ฟังก์ชัน BeginWrite จะตอบกลับเป็นค่า
true ออกมา
ฟังก์ชัน Write()
Write(char data) คือ ฟังก์ชันเขียนไฟล์โดยเขียนข้อมูลลงทีละ 1 ไบต์
ฟังก์ชัน Print()
Print(String data) คือ ฟังก์ชันเขียนไฟล์โดยส่งข้อมูลที่ต้องการเขียนลงไปเป็นข้อความ
ฟังก์ชัน Println()
Println(String data) คือ ฟังก์ชันเขียนไฟล์โดยส่งข้อมูลที่ต้องการเขียนลงไปเป็นข้อความและปิดท้าย
ด้วยการขึ้นบรรทัดใหม่ (0x0A,0x0D)
ฟังก์ชัน WaitFinish()
WaitFinish() คือ ฟังก์ชันรอให้การเขียนไฟล์สิ้นสุดลง
ฟังก์ชัน Seek()
Seek(int handle,long start_at) คือ ฟังก์ชันเลื่อนไปยังตาแหน่งที่ต้องการอ่านหรือเขียนไฟล์โดย
กาหนดไฟล์ที่ต้องการด้วย Handle Number จากพารามิเตอร์ int handle และกาหนดตาแหน่งที่ต้องการ
เลื่อนไปอ่านหรือเขียนไฟล์จากพารามิเตอร์ long start_at

26

ตัวอย่างการใช้ฟังก์ชัน Open(), BeginWrite(), Print(), WaitFinish(), Close()
void write_file(String file_name,String data){
int handle = file.Open(UFS,file_name);
if(handle!=-1){
if(file.BeginWrite(handle,data.length())){
file.Print(data);
file.WaitFinish();
}
}
file.Close(handle);
}

ฟังก์ชัน Read()
Read(int handle,int buf_size,char *buf) คือ ฟั งก์ชัน อ่านไฟล์ ที่เปิ ดเอาไว้ด้วยฟังก์ชัน Open()
สามารถกาหนดไฟล์ที่ต้องการอ่านจากหมายเลข Handle Number โดยใช้พารามิเตอร์ int handle ในการ
อ่านไฟล์ ต้องกาหนดขนาดของข้อมูล ที่ต้องการอ่านออกมาโดยในพารามิเตอร์ int buf_size และกาหนด
ตาแหน่งของบัฟเฟอร์ที่จะนามาเก็บข้อมูลที่อ่านออกมาเก็บไว้ในพารามิเตอร์ char *buf
ฟังก์ชัน ReadFile()
ReadFile(String pattern,String file_name) คือ ฟังก์ชันสาหรับอ่านไฟล์ที่อานวยความสะดวกมาก
ยิ่งขึ้น โดยรวมเอาฟั งก์ชัน Open() และ Read() ไว้ในฟังก์ชัน เดียว โดยกาหนดตาแหน่งที่ อยู่ของไฟล์ จาก
พารามิเตอร์ String pattern และชื่อไฟล์จากพารามิเตอร์ String file_name
ตัวแปร DataOutput
DataOutput เป็นตัวแปรสาหรับกาหนดแอดเดรสของฟังก์ชันที่มารองรับข้อมูลที่ได้จากการอ่านไฟล์
ของฟังก์ชัน ReadFile() ซึ่งฟังก์ชันที่จะมารับข้อมูลจะอยู่ในรูปแบบ void functionname(char data) โดย
functionname คือค่าที่กาหนดให้ตัวแปร DataOutput และข้อมูลจะถูกส่งมายังตัวแปร data ของฟังก์ชัน
ดังกล่าว
ตัวอย่างการใช้ฟังก์ชัน ReadFile()
void data_out(char data){
Serial.write(data);
}
void read_file(String pattern,String file_name){
file.DataOutput = data_out;
file.ReadFile(pattern,file_name);
}

27

ฟังก์ชัน Delete()
Delete(String pattern,String fn) คือ ฟังก์ชันลบไฟล์โดยสามารถกาหนดที่อยู่ของไฟล์ที่ต้องการลบ
จากพารามิเตอร์ String pattern และกาหนดชื่อของไฟล์ที่ต้องการลบจากพารามิเตอร์ String fn ตัวอย่างเช่น
file.Delete(“UFS”,”test”);
//ลบไฟล์ชื่อ test ที่อยู่บน UFS
file.Delete(“RAM”,"*");
//ลบทุกไฟล์ที่อยู่บน RAM
สามารถดูตัวอย่างการใช้งาน 3G Shield / 3G Module สาหรับการอ่านและเขียนไฟล์ได้จาก
File > Examples > TEE_UC20_Shield > Read_Write_File
File > Examples > TEE_UC20_Shield > Dump_file_from_SD_to_Flash

28

การใช้งานไลบรารี TEE_UC20_Shield ในการเชื่อมต่อ Internet
การเชื่อมต่อ Internet เป็นส่วนสาคัญที่ต้องนาไปเป็นพื้นฐานในการใช้งานหัวข้ออื่นต่อไป เช่น การส่ง
MMS การใช้ FTP การใช้ SMTP และการใช้งานเป็น Web client เป็นต้น ในส่วนนี้จึงเป็นเนื้อหาสาหรับใช้
3G Shield / 3G Module เชื่อมต่อกับเครือข่าย Internet ของผู้ให้บริการรายต่างๆ ที่มีในไทยปัจจุบัน โดย
แต่ละเครือข่ายในประเทศไทยจะใช้พารามิเตอร์การตั้งค่าการเชื่อมต่อไม่เหมือนกันดังตารางนี้
ตารางพารามิเตอร์การเชื่อมต่อของผู้ให้บริการเครือข่ายต่างๆ
ผู้ให้บริการ AIS
Parameter
Internet
MMS
APN
internet
multimedia
MMSC
http://mms.mobilelife.co.th
MMS Proxy
203.170.229.34
MMS Port
8080
User
Password
APN Type
default
mms
ผู้ให้บริการ DTAC
Parameter
Internet
MMS
APN
www.dtac.co.th
mms
MMSC
http://mms2.dtac.co.th/8002
MMS Proxy
203.155.200.133
MMS Port
8080
User
Password
APN Type
default
mms
ผู้ให้บริการ TRUE
Parameter
APN
MMSC
MMS Proxy
MMS Port

Internet
internet
-

MMS
hmms
http://mms.trueworld.net:8002
10.4.7.39
8080

29

User
Password
APN Type

true
true
default

ผู้ให้บริการ TOT
Parameter
APN
MMSC
MMS Proxy
MMS Port
User
Password
APN Type
ผู้ให้บริการ My by Cat
Parameter
APN
MMSC
MMS Proxy
MMS Port
User
Password
APN Type

true
true
mms

Internet
internet
default

mms
http://mmsc.tot3g.net:8002
10.218.24.83
8080
mms

Internet
internet
default

MMS

MMS
ผู้ให้บริการยังไม่เปิดให้ใช้บริการ
-

เรียกใช้งานไลบรารี TEE_UC20_Shield โดยเพิ่ม include ดังต่อไปนี้
#include
#include
#include
#include

"TEE_UC20.h"
"SoftwareSerial.h"

"internet.h"

สร้างออบเจคต์ INTERNET
INTERNET net;

30

ฟังก์ชัน Configure()
bool INTERNET::Configure(String apn,String user,String password) คื อ ฟั ง ก์ ชั น ตั้ ง ค่ า การ
เชื่ อ มต่ อ Internet โดยมี พ ารมิ เตอร์ ดั งต่ อ ไปนี้ String apn, String user, String password ผู้ ใช้ งานต้ อ ง
เลือกตั้งค่าพารามิเตอร์ตามตารางของผู้ให้บริการในแต่ละค่าย
ฟังก์ชัน Connect()
bool Connect() คือ ฟังก์ชัน สั่ งให้ 3G Shield / 3G Module เชื่อมต่อเข้ากับเครือข่าย Internet
ของผู้ให้บริการตามพารามิเตอร์ที่กาหนดไว้ก่อนหน้าจากฟังก์ชัน Configure() เมื่อเชื่อมต่อสาเร็จ ฟังก์ชันจะ
ตอบกลับมาเป็นค่า true
ฟังก์ชัน DisConnect()
bool DisConnect() คือ ฟังก์ชันสั่งให้ 3G Shield / 3G Module ยกเลิกการเชื่อมต่อกับเครือข่าย
Internet โดยเมื่อยกเลิกการเชื่อมต่อสาเร็จ ฟังก์ชันจะตอบกลับมาเป็นค่า true
ฟังก์ชัน GetIP()
String INTERNET::GetIP() คื อ ฟั ง ก์ ชั น แสดงค่ า IP Address ของตั ว 3G Module ที่ ได้ รั บ จากผู้
ให้บริการหลังจากการเชื่อมต่อกับเครือข่าย Internet ได้แล้ว โดยฟังก์ชันจะตอบกลับออกมาเป็นค่า String ip

31

การใช้งานไลบรารี TEE_UC20_Shield ในการส่ง MMS
เรียกใช้งานไลบรารี TEE_UC20_Shield โดยเพิ่ม include ดังต่อไปนี้
#include
#include
#include
#include
#include
#include

"TEE_UC20.h"
"SoftwareSerial.h"

"internet.h"
"File.h"
"mms.h"

สร้างออบเจคต์ INTERNET UC_FILE และ MMS
INTERNET net;
UC_FILE file;
MMS mms;

ฟังก์ชัน SetMMSC()
bool SetMMSC(String data) คื อ ฟั ง ก์ ชั น ตั้ ง ค่ า MMSC ให้ ผู้ ใช้ ตั้ ง ค่ า MSSC ตามที่ ผู้ ใ ห้ บ ริ ก าร
เครือข่ายเป็นผู้กาหนด สามารถดูข้อมูลได้จากตารางของเครือข่ายต่างๆ ในหัวข้อการเชื่อมต่อ Internet
ฟังก์ชัน SetProxy()
bool SetProxy(String ip,String port) คือ ฟังก์ชัน ตั้งค่า IP Address ของ Proxy และ Port ที่ใช้
ในการส่ง ให้ผู้ใช้ตั้งค่าตามที่ผู้ให้บริการเครือข่ายเป็นผู้กาหนด สามารถดูข้อมูลได้จากตารางของเครือข่ายต่างๆ
ในหัวข้อการเชื่อมต่อ Internet
ฟังก์ชัน Title()
bool Title(String title) คือ ฟังก์ชันตัง้ ชื่อหัวข้อของ MMS
ฟังก์ชัน SendTo()
SendTo(String receive) คือ ฟังก์ชันตั้งค่าหมายเลขโทรศัพท์ของผู้รับ MMS

32

ฟังก์ชัน AddFile()
bool AddFile(String pattern,String Filename) คือ ฟังก์ชันเพิ่มไฟล์จาก UFS หรือ RAM เข้าไป
สร้างรายการไฟล์สาหรับส่ง MMS
ฟังก์ชัน ListMMSFile
String ListMMSFile() คือ ฟังก์ชัน แสดงรายชื่อไฟล์ ที่ถูกเพิ่มเข้ามาไว้ในรายการเพื่อส่ง MMS โดย
ฟังก์ชันตอบกลับชื่อของไฟล์ทั้งหมดออกมาเป็น String
ฟังก์ชัน Send()
String Send() คือ ฟังก์ชันส่ง MMS ไปยังหมายเลขโทรศัพท์ที่กาหนดไว้ ฟังก์ชันตอบกลับผลการส่ง
MMS ออกมาเป็น String
ฟังก์ชัน Clear()
bool Clear() คือ ฟังก์ชันล้างการตั้งค่าต่างๆ รวมทั้งไฟล์ทเี่ พิ่มไว้สาหรับส่ง MMS
สามารถดูตัวอย่างการใช้งาน 3G Shield / 3G Module ในการส่ง MMS ได้จาก
File > Examples > TEE_UC20_Shield > Send_MMS

33

ภาพวิธีต่อโมดูล SD Card เพื่อทดสอบตัวอย่างการส่ง MMS
การเตรียม SD Card
ข้อมู ล ใน SD Card ให้ ใส่ ไฟล์ รูป ภาพนามสกุล .jpg เป็ นภาพอะไรก็ได้ ตั้งชื่อ ว่า pic.jpg โปรแกรม
ตัวอย่างจะอ่านรูปภาพจาก SD Card ไปเก็บบนหน่วยความจาของ 3G Shield / 3G Module แล้วส่ง SMS
รูปภาพนี้ไปยังหมายเลขโทรศัพท์ของผู้รับ

34

การใช้งานไลบรารี TEE_UC20_Shield ในการสื่อสาร TCP
เรียกใช้งานไลบรารี TEE_UC20_Shield โดยเพิ่ม include ดังต่อไปนี้
#include
#include
#include
#include
#include

"TEE_UC20.h"
"SoftwareSerial.h"

"internet.h"
"tcp.h"

สร้างออบเจคต์ INTERNET และ TCP
INTERNET net;
TCP tcp;

ฟังก์ชัน Open()
bool Open(String ip_url,String port) คือ ฟังก์ชันเริ่มต้นการเชื่อมต่อ TCP กับ Server โดยผู้ ใช้
สามารถกาหนด IP Address หรือ URL ของ Server ได้จากพารามิเตอร์ String ip_url และกาหนด TCP
Port ในการสื่อสารได้จากพารามิเตอร์ String port ฟังก์ชันจะตอบกลับเป็น true เมื่อสามารถเชื่อมต่อกับ
Server ได้สาเร็จและตอบกลับเป็น false หากเชื่อมต่อไม่สาเร็จ
ฟังก์ชัน Close()
bool Close() คือ ฟังก์ชันปิดการเชื่อมต่อ TCP กับ Server ฟังก์ชันตอบกลับเป็น true เมื่อสามารถ
ปิดการเชื่อมต่อกับ Server ได้สาเร็จ และตอบกลับเป็น false หากปิดการเชื่อมต่อไม่สาเร็จ
ฟังก์ชัน CheckConnection()
bool CheckConnection คื อ ฟั งก์ ชั น ตรวจสอบว่ า มี ก ารเปิ ด การเชื่ อ มต่ อ TCP กั บ Server อยู่
หรือไม่ โดยฟังก์ชันจะตอบกลับเป็น true เมื่อมีการสร้างการเชื่อมต่อกับ Server อยู่ และตอบกลับเป็น false
หากไม่มีการเชื่อมต่อกับ Server อยู่ในขณะนั้น
ฟังก์ชัน StartSend
bool StartSend() คือ ฟังก์ชันเริ่มต้นการส่งส่งข้อมูลผ่าน TCP ไปยัง Server ฟังก์ชัน จะตอบกลับ
true เมื่อสามารถเชื่อมต่อกับ Server ได้สาเร็จ และ Return false เมื่อเชื่อมต่อไม่สาเร็จ
ฟังก์ชัน Write()
Write(char data) คือ ฟังก์ชันส่งข้อมูลทีละ 1 ไบต์

35

ฟังก์ชัน Print()
Print(String data) คือ ฟังก์ชันส่งข้อมูลเป็นข้อความ
ฟังก์ชัน Println()
Println(String data) คื อ ฟั ง ก์ ชั น ส่ ง ข้ อ มู ล เป็ น ข้ อ ความและปิ ด ท้ า ยด้ ว ยการขึ้ น บรรทั ด ใหม่
(0x0A,0x0D)
ฟังก์ชัน StopSend()
bool StopSend() คือ ฟังก์ชันสิ้นสุดการส่งข้อมูลผ่าน TCP ไปยัง Server
ฟังก์ชัน ReceiveAvailable()
bool ReceiveAvailable() คือ ฟังก์ชันตรวจสอบว่ามี ข้อมูลตอบกลับมาจาก Server หรือไม่ โดย
ฟังก์ชันจะได้ค่าเป็น true ออกมาเมื่อมีข้อมูลตอบกลับมา แต่ขณะที่ไม่มขี ้อมูลตอบกลับมาจะได้ค่าเป็น False
ฟังก์ชัน ReadBuffer()
String ReadBuffer() คื อ ฟั งก์ ชั น สั่ งให้ 3G Module อ่ า นข้ อ มู ล ที่ Server ตอบกลั บ มาซึ่ งอยู่ ใน
บัฟเฟอร์ส่งออกมาทาง UART ฟังก์ชันตอบกลับมาเป็นข้อมูลที่อยู่ในบัฟเฟอร์
ฟังก์ชัน Ping()
void Ping(unsigned char contextid,String ip_url) คือ ฟังก์ชันตรวจสอบการเชื่อมต่อโดยการส่ง
Ping ไปยั ง Server ใช้ พ ารามิ เ ตอร์ unsigned char contextid เพื่ อ ก าหนดช่ อ งในการเชื่ อ มต่ อ และ
พารามิเตอร์ String ip_url เพื่อกาหนด IP Address หรือ URL ของ Server
ฟังก์ชัน NTP()
String NTP(unsigned char contexid,String ip_url,String port) คื อ ฟั ง ก์ ชั น รั บ ค่ า เวลาจาก
Server ใช้ พ ารามิ เตอร์ unsigned char contextid เพื่ อ ก าหนดช่ อ งในการเชื่ อ มต่ อ พารามิ เตอร์ String
ip_url ก าหนด IP Address หรื อ URL ของ Server และพารามิ เตอร์ String port เพื่ อ ก าหนด Port ที่
เชื่อมต่อ
สามารถดูตัวอย่างการใช้งาน 3G Shield / 3G Module ในการทางาน TCP ได้จาก
File > Examples > TEE_UC20_Shield > TCP
File > Examples > TEE_UC20_Shield > Ping
File > Examples > TEE_UC20_Shield > NTP
36

การใช้งานไลบรารี TEE_UC20_Shield ทา HTTP GET / HTTP POST
เรียกใช้งานไลบรารี TEE_UC20_Shield โดยเพิ่ม include ดังต่อไปนี้
#include
#include
#include
#include
#include
#include

"TEE_UC20.h"
"SoftwareSerial.h"

"internet.h"
"File.h"
"http.h"

สร้าง Object INTERNET , UC_FILE , HTTP
INTERNET net;
UC_FILE file;
HTTP http;

ฟังก์ชัน begin()
bool begin(unsigned char context_ID) คือ ฟั งก์ ชัน เริ่ม ต้ น การใช้ งาน HTTP โดยผู้ ใช้ส ามารถ
กาหนด Context ID หรือตัวชี้ตาแหน่ง PDP (Packet Data Protocol) ได้จากพารามิเตอร์ unsigned char
context_ID มีค่าตั้งแต่ 1 ถึง 16
ฟังก์ชัน url()
bool url(String url) คือ ฟังก์ชันกาหนด URL ที่ต้องการส่ง HTTP GET หรือ HTTP POST
ฟังก์ชัน get()
int get() คือ คาสั่งส่ง HTTP GET ไปยัง Server และฟังก์ชัน จะตอบกลับ ผลการทางานของ HTTP
GET ออกมาเป็นตัวเลขดังตารางแสดงค่า Return GET/POST
ฟังก์ชัน post()
int post() คือ ฟังก์ชัน ส่ง HTTP POST ไปยัง Server และฟังก์ชัน จะตอบกลั บผลการทางานของ
HTTP GET ออกมาเป็นตัวเลขดังตารางแสดงค่า Return GET/POST

37

ตารางแสดงค่า Return GET/POST

200
403
404
409
411
500

Meaning
OK
Forbidden
Not found
Conflict
Length required
Internal Server error

ฟังก์ชัน ReadData()
void ReadData() คือ ฟังก์ชันให้อ่านข้อมูลที่ Server ตอบกลับมาออกทาง Serial UART ของ 3G
Shield / 3G Module โดยไม่เก็บข้อมูลเอาไว้บน UFS หรือ RAM
ฟังก์ชัน SaveResponseToMemory()
bool SaveResponseToMemory(String pattern,String Filename) คื อ ฟั ง ก์ ชั น อ่ า นข้ อ มู ล ที่
Server ส่งค่ากลับ มาเก็บ ลงในหน่ ว ยความจาโดยสามารถเลื อกที่เก็บข้อมูล ได้ทั้งบน UFS และ RAM ด้ว ย
พารามิเตอร์ String pattern และตั้งชื่อไฟล์ด้วยพารามิเตอร์ String Filename
จากนั้นหากต้องการนาข้อมูลออกมาให้ใช้ฟังก์ชัน ReadFile ในหัวข้อการจัดการไฟล์
สามารถดูตัวอย่างการใช้งาน 3G Shield / 3G Module การทา HTTP GET / HTTP POST ได้จาก
File > Examples > TEE_UC20_Shield > HTTP_GET
File > Examples > TEE_UC20_Shield > HTTP_POST

38

การใช้งานไลบรารี TEE_UC20_Shield ในการทา FTP
เรียกใช้งานไลบรารี TEE_UC20_Shield โดยเพิ่ม include ดังต่อไปนี้
#include
#include
#include
#include
#include
#include

"TEE_UC20.h"
"SoftwareSerial.h"

"internet.h"
"File.h"
“ftp.h"

สร้างออบเจ็ค INTERNET UC_FILE FTP
INTERNET net;
UC_FILE file;
FTP ftp;

ฟังก์ชัน begin()
bool begin(unsigned char context_ID) คือ ฟั งก์ ชัน เริ่ม ต้ น การใช้ งาน HTTP โดยผู้ ใช้ส ามารถ
กาหนด Context ID หรือตัวชี้ตาแหน่ง PDP (Packet Data Protocol) ได้จากพารามิเตอร์ unsigned char
context_ID มีค่าตั้งแต่ 1 ถึง 16
ฟังก์ชัน SetUsernamePassword()
bool SetUsernamePassword(String user,String pass) คือ ฟังก์ชันกาหนดชื่อผู้ใช้ (Username)
และรหัสผ่าน (Password) ที่ต้องการใช้ล็อกอินเข้าระบบของ FTP Server
ฟังก์ชัน SetFileType()
bool SetFileType(unsigned char type) คือ ฟังก์ชันตั้งค่าชนิดของไฟล์ ที่ต้องการรับสั่ง FTP โดย
สามารถกาหนดได้ 2 ชนิด คือ 0 = Binary และ 1 = ASCII
ฟังก์ชัน SetTransMode()
bool SetTransMode(unsigned char type) คือ ฟังก์ชัน ตั้งค่าการส่ งข้อมูล กับ FTP Server โดย
สามารถกาหนดได้ 2 ชนิดคือ 0 = Active mode และ 1 = Passive mode
ฟังก์ชัน SetTimeout()
SetTimeout(int t) คือ ฟังก์ชันกาหนดเวลา Timeout เมื่อเชื่อมต่อกับ FTP Server แล้วไม่มีการ
ตอบสนอง สามารถกาหนด Timeout ได้ตั้งแต่ 20 ถึง 180 วินาที (ค่า default value = 90 วินาที)

39

ฟังก์ชัน LoginServer()
int LoginServer(String serv,int port) คือ ฟั งก์ชัน สั่ งให้ 3G Module ลอกอิน ไปยัง FTP Server
โดยก าหนด URL หรื อ IP Address ของ Server จากพารามิ เตอร์ String serv และก าหนด Port จาก
พารามิเตอร์ int port ฟังก์ชันจะตอบกลับผลของการลอกอินเป็นตัวเลข 0 = สาเร็จ สามารถดูตารางค่าตอบ
กลับเพิ่มเติมได้จากเอกสาร Quectel UC20 FTP AT Commands Manual V1.1 ในบทที่ 4
ฟังก์ชัน Logout()
int Logout() คือ ฟังก์ชันสั่งให้ 3G Module ลอกเอาต์ออกจาก FTP Server โดยฟังก์ชัน ตอบกลับ
ผลของการลอกเอาต์ Logout เป็นตัวเลข สามารถดูตารางค่าตอบกลับ ได้จากเอกสาร Quectel UC20 FTP
AT Commands Manual V1.1 ในบทที่ 4
ฟังก์ชัน SetPath()
int SetPath(String path) คือ ฟังก์ชันเข้าถึง Path หรือไดเรกทอรีของไฟล์ที่ต้องการเข้าถึงบน FTP
Server ตามสิทธิ์การใช้งานของผู้ใช้ที่ลอกอินเข้าไป
ฟังก์ชัน List()
bool List(String path) คื อ ฟั งก์ ชั น แสดงรายชื่ อ ไฟล์ ที่ อ ยู่ ใน Path นั้ น ๆ แสดงผ่ านทางตั ว แปร
ListOutput
ตัวแปร ListOutput
ListOutput เป็ น ตัว แปรส าหรับ กาหนดตาแหน่งของฟังก์ชัน ที่ม ารองรับ การแสดงผลของฟั งก์ชัน
List() ซึ่งฟังก์ชันที่จะมารับข้อมูลจะอยู่ในรูปแบบ void functionname(String data) โดย functionname
คือ ค่าที่กาหนดให้ตัวแปร ListOutput และข้อมูลจะถูกส่งมายังตัวแปร data ของฟังก์ชันดังกล่าว
ฟังก์ชัน ListToMemory()
Int ListToMemory(String path,String pattern,String fn) คือ ฟังก์ชันสาหรับแสดงรายชื่อไฟล์บน
FTP Server แล้วเก็บลงบน UFS หรือ RAM โดยกาหนด Path ที่ต้องการแสดงรายชื่อด้วยพารามิเตอร์ String
path กาหนดตาแหน่งทีเ่ ก็บด้วยพารามิเตอร์ String pattern และกาหนดชื่อไฟล์ด้วยพารามิเตอร์ String fn
ฟังก์ชัน MakeFolder()
int MakeFolder(String name) คือ ฟังก์ชันสร้างโฟลเดอร์หรือไดเรกทอรีบน FTP Server สามารถ
กาหนดชื่อโฟลเดอร์ด้วยพารามิเตอร์ String name
40

ฟังก์ชัน RenameFolder()
int RenameFolder(String name_old,String name_new) คือ ฟังก์ชัน เปลี่ ยนชื่อ โฟลเดอร์ห รือ
ไดเรกทอรีบน FTP Server สามารถกาหนดชื่อโฟลเดอร์ที่ต้องการเปลี่ยนด้วยพารามิเตอร์ String name_old
และกาหนดชื่อใหม่ด้วยพารามิเตอร์ String name_new
ฟังก์ชัน DeleteFolder()
Int DeleteFolder(String name) คือ ฟังก์ชันลบโฟลเดอร์หรือไดเรกทอรี บน FTP Server สามารถ
กาหนดชื่อโฟลเดอร์ที่ต้องการลบด้วยพารามิเตอร์ String name
ฟังก์ชัน DeleteFile()
int DeleteFile(String name) คือ ฟังก์ชันลบไฟล์บน FTP Server สามารถกาหนดชื่อไฟล์ทตี่ ้องการ
ลบได้ด้วยพารามิเตอร์ String name
ฟังก์ชัน put()
int put(String File,String pattern,String fn,int startpos,int uploadlen,int beof) คือ ฟังก์ชัน
อัพโหลดไฟล์ขึ้นไปบน FTP Server โดยมีพารามิเตอร์ดังต่อไปนี้
String File
คือ ชื่อไฟล์ปลายทางที่ต้องการอัพโหลดไว้บน FTP Server (ความยาวไม่
เกิน 50 ไบต์)
String pattern
คือ ที่อยู่ของไฟล์ที่ต้องการอัพโหลดไปยัง Server สามารถเลือกได้จาก 3
แหล่งได้แก่ UFS RAM และ COM ( Stream ข้อมูลจาก Serial UART)
String fn
คือ ชื่อไฟล์ที่อยู่ใน UFS หรือ RAM ที่ต้องการอัพโหลดไปยัง FTP Server
int startpos
คือ ตาแหน่งของไฟล์ที่เริ่มต้นอัพโหลด
int uploadlen
คือ จานวนไบต์ที่ต้องการ Stream ข้อมูลจาก COM ไปยัง FTP Server
int beof
คือ ตัวกาหนดการอัพโหลดโดยกาหนดได้ 2 ค่า คือ
0
เมื่ออัพโหลดจนครบตามจานวนไบต์ที่กาหนดใน uploadlen แล้ว
จะยังไม่ปิดไฟล์สามารถสั่ง put() ต่อเนื่องเพื่อ Stream ข้อมูลเข้า
ไปในไฟล์เดิมได้
1
เมื่ออัพโหลดจนครบตามจานวนไบต์ที่กาหนดใน uploadlen แล้ว
จะปิดไฟล์สิ้นสุดการอัพโหลดทันที

41

ฟังก์ชัน get()
int get(String File,String pattern,String fn,int startpos,int downloadlen) คื อ ฟั งก์ ชั น ดาวน์
โหลดไฟล์จาก FTP Server โดยมีพารามิเตอร์ดังต่อไปนี้
String File
คือ ชื่อไฟล์ที่ต้องการดาวน์โหลดลงจาก FTP Server (ความยาวไม่เกิน 50
ไบต์)
String pattern
คือ อยู่ของไฟล์ที่ต้องการดาวน์โหลดจาก Server สามารถเลือกได้จาก 3
แหล่งได้แก่ UFS RAM และ COM ( Stream ข้อมูลจาก Serial UART)
String fn
คือ ชื่อไฟล์ที่ต้องการเก็บไว้อยู่ใน UFS หรือ RAM
int startpos
คือ ตาแหน่งของไฟล์ที่เริ่มต้นดาวน์โหลด
int downloadlen
คือ จานวนไบต์ที่ต้องการดาวน์โหลด
สามารถดูตัวอย่างการใช้งาน 3G Shield / 3G Module การทา FTP ได้จาก
File > Examples > TEE_UC20_Shield > FTP_File_Operation
File > Examples > TEE_UC20_Shield > FTP_List_File
File > Examples > TEE_UC20_Shield > FTP_List_File_To_RAM
File > Examples > TEE_UC20_Shield > FTP_PUT
File > Examples > TEE_UC20_Shield > FTP_GET_To_FLASH
File > Examples > TEE_UC20_Shield > FTP_GET_To_RAM

42

การใช้งานไลบรารี TEE_UC20_Shield ทางานกับ GNSS
เรียกใช้งานไลบรารี TEE_UC20_Shield โดยเพิ่ม include ดังต่อไปนี้
#include
#include
#include
#include

"TEE_UC20.h"
"SoftwareSerial.h"

"gnss.h"

สร้างออบเจคต์ GNSS
GNSS gps;

ฟังก์ชัน Start()
bool Start() คือ ฟังก์ชันเปิดการใช้งาน GPS/GNSS บน 3G Module
ฟังก์ชัน Stop
bool Stop() คือ ฟังก์ชันปิดการใช้งาน GPS/GNSS บน 3G Module
ฟังก์ชัน GetPosition
String GetPosition() คือ ฟังก์ชันแสดงข้อมูลที่ได้รับจาก GPS/GNSS เมื่อโมดูลระบุตาแหน่งได้จะ
ตอบกลับคาสั่งมีรูปแบบดังนี้
+QGPSLOC: ,,,,,,,,,
,
Parameter





Meaning
UTC time. Format: hhmmss.sss (quoted
from GPGGA sentence).
Latitude. Format: ddmm.mmmm N/S
(quoted from GPGGA sentence).
dd
00-89 (degree).
mm.mmmm 00.0000-59.9999 (minute).
N/S
North latitude/ South latitude.
Longitude. Format: dddmm.mmmm E/W
(quoted from GPGGA sentence).
ddd
000-179 (degree).
43















mm.mmmm 00.0000-59.9999 (minute).
E/W
East longitude/West longitude.
Horizontal precision, 0.5-99.9 (quoted from
GPGGA sentence).
The altitude of the antenna away from the
sea level (unit: m), accurate to one decimal
place(quoted from GPGGA sentence).
GNSS positioning mode (quoted from
GNGSA/GPGSA).
2
2D positioning.
3
3D positioning.
Ground heading based on true north.
Format: ddd.mm (quoted from GPVT
sentence).
ddd
000-359 (degree).
mm
00-59 (minute).
Speed over ground. Format: xxxx.x, unit:
Km/h, accurate to one decimal place.
(quoted from GPVTG sentence).
Speed over ground. Format: xxxx.x, unit:
knots, accurate to one decimal place.
(quoted from GPVTG sentence).
UTC date when positioning. Format:
ddmmyy (quoted from GPRMC sentence).
Number of satellites, from 00 to 12 (the first
0 will also be transferred, quoted from
GPGGA sentence).

ฟังก์ชัน EnableNMEA()
bool EnableNMEA() คือ ฟังก์ชันเปิดใช้งาน NMEA

44

ฟังก์ชัน DisableNMEA
bool DisableNMEA() คือ ฟังก์ชันปิดการใช้งาน NMEA
ฟังก์ชัน GetNMEA()
String GetNMEA(String nmea) คือ ฟังก์ชันดึงค่า NMEA ที่สนใจออกมาแสดง ผู้ใช้สามารถกาหนด
ชุดข้อมูล NMEA ที่เราสนใจลงในพารามิเตอร์ String nmea ฟังก์ชันตอบกลับมาเป็นชุดข้อมูลตามที่ต้องการ
ออกมา ยกตัวอย่างเช่น ต้องการ NMEA เฉพาะส่วนของ GGA สามารถเรียกใช้ฟังก์ชัน GetNMEA(“GGA”)

45



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 45
Language                        : en-US
Tagged PDF                      : Yes
Author                          : stk
Creator                         : Microsoft® Word 2013
Create Date                     : 2016:03:21 12:03:33+07:00
Modify Date                     : 2016:03:21 12:03:33+07:00
Producer                        : Microsoft® Word 2013
EXIF Metadata provided by EXIF.tools

Navigation menu