Development Guide For 3G Shield And Module Using Arduino TH 20160321
User Manual:
Open the PDF directly: View PDF .
Page Count: 45
Download | |
Open PDF In Browser | View 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 ดังนี้ #includeAltSoftSerial 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 2013EXIF Metadata provided by EXIF.tools