[ตอนที่ 1] ใช้ AT Commands ควบคุมบอร์ด AIS DEVIO NB-DEVKIT I เชื่อมต่อเครือข่าย NB-IoT

ลงไม้ลงมือ : “ใช้ AT Commands เชื่อมต่อเครือข่าย NB-IoT”
บทความ โดย… วิสิทธิ์ เวียงนาค
วันที่ 15 มกราคม 2563

AIS ได้จัดเตรียมไลบรารี่สำหรับบอร์ด DEVIO NB-DEVKIT I มาให้เรียบร้อย คาดว่าจะเปิดให้ดาวน์โหลดในอีกไม่ช้านี้ แต่สำหรับบทความนี้จะสาธิตการใช้ AT Commands ควบคุมการสื่อสารระหว่างโมดูล ESP32 กับโมดูล SIMCom SIM7020E ผ่านทาง UART มันเป็นอีกทางเลือกหนึ่งสำหรับนักพัฒนาที่ต้องการเจาะลึกใช้ฟีเจอร์โมดูลอย่างเต็มที่

สำหรับท่านใดที่ยังไม่ได้ดู REVIEW เปิดกล่องของบอร์ด DEVIO NB-DEVKIT I แนะนำให้เข้าไปดูก่อนอ่านบทความนี้ครับ คลิ๊กอ่านบทความได้ที่นี่

POWER ON/OFF โมดูล SIM7020E ทำอย่างไร ?

ในด้านของ Hardware บอร์ด DEVIO NB-DEVKIT I ได้ออกแบบมาให้สื่อสารระหว่างโมดูล ESP32 กับโมดูล SIMCom SIM7020E ผ่านทาง UART โดยใช้ช่องทาง Hardware Serial (GPIO16 Rx2, GPIO17 Tx2) ที่ Baud Rate 9600 มี PWRKEY เชื่อมต่อกับขา GPIO26 และ RESET เชื่อมต่อกับขา GPIO27

รูปแสดง Schematic ของโมดูล ESP32

แต่ก่อนที่โมดูล ESP32 จะสามารถสื่อสารกับโมดูล SIM7020E ได้นั้น จำเป็นต้องเปิดการทำงานของโมดูล SIM7020E เสียก่อน ขอเรียกขั้นตอนนี้ว่า POWER ON ซึ่งสามารถทำได้สองวิธี ดังนี้

  1. กดปุ่ม PWRKEY ที่อยู่บนบอร์ด DEVIO NB-DEVKIT I เพื่อเปิดการทำงานของโมดูล SIM7020E
รูปแสดง ปุ่ม Power Key บนบอร์ด DEVIO NB-DEVKIT I

2. เขียนโค๊คควบคุมขา GPIO26 ให้เปลี่ยนสถานะเป็น LOW ตามเวลาที่กำหนด 215–800 ms

Note:
โดยปกติแล้ว PWRKEY ใน SIM7020E ได้ต่อขาแบบ PULL_UP ไว้แล้ว โดยการต่อ Resistance กับ VBAT ไว้ในโมดูล ไม่จำเป็นต้องต่อ PULL_UP จากภายนอกแต่อย่างใด สถานะปกติ PWRKEY มีสถานะเป็น HIGH

ส่วนการปิดการทำงานของโมดูล SIM7020E ขอเรียกขั้นตอนนี้ว่า POWER-OFF ก็ทำแบบเดียวกันกับ POWER ON เพียงแต่การเขียนโค๊ดควบคุมขา GPIO26 จะกำหนดเวลาอยู่ที่ 800–1000 ms

ดูรายละเอียดเพิ่มเติมได้ที่นี่

รูปแสดง ช่วงเวลาการเปิดการทำงานของโมดูล SIM7020E

เพื่อให้เห็นภาพการทำงานและง่ายต่อการทดลองสำหรับผู้ที่ต้องการทำตาม ผู้เขียนได้เตรียมโค๊ดสำหรับการสื่อสารระหว่างโมดูล ESP32 ตรงกับโมดูล SIMCom SIM7020E ผ่านทาง UART โดยใช้ช่องทาง Hardware Serial ไว้ให้เรียบร้อย

ก่อนอื่นท่านต้องเลือกบอร์ดให้ถูกต้องเสียก่อน ที่โปรแกรม Arduino IDE ให้ไปที่เมนู “Tools” -> “Board” แล้วเลือกบอร์ดเป็น “ESP32 Dev Module

รูปแสดง การเลือกบอร์ด “ESP32 Dev Module” ใน Arduino IDE

ให้ใช้โค๊ดตามตัวอย่างที่ 1. “hardware_serial_nbiot_dev_board.ino” แล้วโหลดโค๊ดเข้าไปในบอร์ด DEVIO NB-DEVKIT I

หลังจากโหลดโค๊ดเสร็จเรียบร้อยแล้ว ให้กดปุ่ม RESET บนบอร์ดหนึ่งครั้ง เพื่อรีบูตบอร์ดใหม่ เพียงแค่นี้ท่านก็สามารถใช้ AT Commands สื่อสารกับบอร์ด DEVIO NB-DEVKIT I ได้แล้ว

ตัวอย่างที่ 1. โค๊ด Hardware Serial สำหรับบอร์ด DEVIO NB-DEVKIT I

// File name: hardware_serial_nbiot_dev_board.ino
// Control DEVIO NB-DEVKIT I via AT Commands
// By Mr.Visit Wiangnak
// 14/Oct/2019
#include <HardwareSerial.h>HardwareSerial MySerial(1);void setup() { Serial.begin(9600); pinMode(26, OUTPUT); //pwrkey
pinMode(27, OUTPUT); //reset
//power on module
digitalWrite(26, LOW);
delay(800);
digitalWrite(26, HIGH);

MySerial.begin(9600, SERIAL_8N1, 16, 17);
}
void loop() { if (Serial.available()) {
MySerial.write(Serial.read());
}
if (MySerial.available()) {
Serial.write(MySerial.read());
}
}

ให้เปิดหน้าต่าง Serial Monitor ของ Arduino IDE ขึ้นมา แล้วตั้งค่า Buad Rate ที่ 9600 จากนั้นให้พิมพ์ “AT” ใส่ในช่อง Input Command แล้วกดปุ่ม ENTER หรือจะใช้เมาส์คลิ๊กที่ปุ่ม “Send” ก็ได้ ถ้ามีข้อความตอบกลับมาจากโมดูล SIM7020E ก็แสดงว่าตอนนี้ท่านสามารถสื่อสารและควบคุมโมดูลโดยใช้ AT Commands ได้แล้ว

จากนั้นลองใช้คำสั่งอื่นๆ เพิ่มเติมดู เช่น “ATI” “AT+CGMR” และ “AT+CIMI

รูปแสดง หน้าต่าง Serial Monitol ของโปรแกรม Arduino IDE

ATI” เป็นคำสั่งดูรายละเอียดเกี่ยวกับโมดูล NB-IoT

SIM7020E R1752
OK

AT+CGMR” เป็นคำสั่งสำหรับเช็คเวอร์ชันเฟริมแวร์ของโมดูล SIM7020E

1752B13SIM7020E
OK

AT+CIMI” เป็นคำสั่งสำหรับเช็คชื่อผู้ใช้และเลข Key Identification ถ้ามีชุดตัวเลขตอบกลับมาแสดงว่าโมดูล SIM7020E สามารถสื่อสารกับ eSIM ได้

52003XXXXXXXXXX
OK

ใช้ AT Commands ดูค่าคอนฟิกเริ่มต้น SIM7020E

มาถึงตอนนี้ท่านได้ทดลองใช้ AT Commnands ในเบื้องต้นเพื่อควบคุมโมดูล SIM7020E ได้แล้ว ขั้นต่อไปจะมาลองใช้ AT Commands ดูค่าคอนฟิกเริ่มต้นที่มาจากโรงงานของโมดูล SIM7020E

ตัวอย่างที่ 2. AT Commands ดูค่าคอนฟิกเริ่มต้นของ SIM7020E

AT
OK
AT+GSV
SIMCOM_Ltd
SIM7020E
Revision:1752B13SIM7020E
OK
AT+CSQ
+CSQ: 0,0
OK
AT*MCGDEFCONT?
*MCGDEFCONT: "IPV4V6"
OK
AT+CGREG?
+CGREG: 0,2
OK
AT+CGATT?
+CGATT: 0
OK

เร่ิมจากใช้คำสั่ง “AT” เพื่อเริ่มติดต่อกับโมดูล SIM7020E จากนั้นใช้คำสั่ง

คำสั่ง “AT+GSV” เป็นการขอดูรายละเอียดเกี่ยวกับโมดูล SIM7020E

คำสั่ง “AT+CSQ” (Signal Quality Report) เพื่อตรวจเช็คระดับคุณภาพของสัญญาณ NB-IoT จากเครือข่ายของผู้ให้บริการ ตามตัวอย่างแสดง +CSQ: 0,0 หมายถึงไม่มีสัญญาณบริการให้เชื่อมต่อเครือข่ายได้ หรือตั้งค่าบางพารามิเตอร์ผิด เช่น เซ็ทค่า APN ไม่ถูกต้อง หรือตั้งค่า Frequency band ผิด ทำให้ไม่สามารถสแกนหาเครือข่ายเจอ

คำสั่ง *MCGDEFCONT: “IPV4V6” คือค่า PSD ตั้งค่าการเชื่อมต่อ ตามข้อความที่ตอบกลับ “IPV4V6” จะหมายถึง เลือกใช้ PDP (Packet Data Protocol Type) เป็นแบบ Dual Stack คือใช้ IP Address แบบ IPV4 และ IPV6 รวมกัน และค่าเริ่มต้นของคำสั่งนี้กำหนดให้ค่า APN (Access Point Name) ว่างเปล่า ซึ่งจะหมายความว่า ไม่ได้คอนฟิก APN เอง แต่จะให้โมดูล SIM7020E ร้องขอค่า APN จากเครือข่ายมาใช้งาน

คำสั่ง “AT+CGREG” (Network Registration Status) คำสั่งนี้จะแสดงสถานะการลงทะเบียนเชื่อมต่อโครงข่าย ตามข้อมูลที่ตอบกลับ ตัวเลขแรก “0” หมายถึงปิดการขอลงทะเบียนกับโครงข่ายที่ไม่พึงประสงค์ และตัวเลขที่สองจะแสดงถึงสถานะต่างๆ มีดังต่อไปนี้

1 ลงทะเบียนเชื่อมต่อโครงข่ายสำเร็จ
2 กำลังพยายามขอลงทะเบียนเชื่อมต่อ
3 การลงทะเบียนเชื่อมต่อถูกปฏิเสธ
4 ไม่รู้จักการเชื่อมต่อ

คำสั่ง AT+CGATT (GPRS/Packet Domain Attach or Detach) เป็นคำสั่งใช้ Attach หรือ Detach กับ Packet Domain Service ซึ่งโดยปกติแล้ว ถ้าดีไวซ์ได้ลงทะเบียนเชื่อมต่อโครงข่ายสำเร็จแล้ว ตัวดีไวซ์จะถูก Attach เข้าเครือข่ายแบบอัตโนมัติเลย มีสถานะดังต่อไปนี้

0: Detached
1: Attached

Note:
ผู้เขียนจะดูสถานะการเชื่อมต่อจาก Commands “AT+CGATT?” เป็นหลัก ถ้าค่าที่ตอบกลับมาเป็น 1 ก็หมายความว่าดีไวซ์สามารถเชื่อมต่อเครือข่าย NB-IoT สำเร็จแล้ว

ใช้ AT Commnands เชื่อมต่อเครือข่าย NB-IoT

ตัวอย่างที่ 3. AT Commands สำหรับการเชื่อมต่อดีไวซ์เข้าเครือข่าย NB-IoT

AT+CFUN=0
+CPIN: NOT READY
OK
AT*MCGDEFCONT="IPV4V6",""
OK
AT+CFUN=1
OK
+CPIN: READY
AT+CGATT=1
OK

การใช้ AT Commands ตามตัวอย่างที่ 3 เริ่มจากการตั้งค่าฟังก์ชันโมดูลให้ทำงานอยู่ในระดับตำ่สุดคือ 0 ด้วยคำสั่ง “AT+CFUN=0” ซึ่งจะส่งผลทำให้ปิดการทำงานของ RF ลงด้วย จากนั้นตั้งค่า PDP (Packet Data Protocol type) มาใช้แบบ IPV4V6 ใช้คำสั่ง AT*MCGDEFCONT=“IPV4V6”,“” โดยไม่ต้องกำหนดค่า APN จากนั้นใช้คำสั่ง “AT+CFUN=1” ให้กลับไปตั้งค่าฟังก์ชันโมดูลให้ทำงานอยู่ในระดับสูงสุดคือ 1 (Full Functionality) ซึ่งจะเปิดการทำงานของ RF ขึ้นมาอีกครั้ง แล้วใช้คำสั่งเพื่อ Attach เข้า Packet Domain Service ด้วยคำสั่ง “AT+CGATT=1

ตัวอย่างที่ 4. AT Commands สำหรับเช็คสถานะการเชื่อมต่อ

AT+CGREG?
+CGREG: 0,1
OK
AT+CGATT?
+CGATT: 1
OK
AT+CSQ
+CSQ: 25,0
OK
AT+CGCONTRDP
+CGCONTRDP: 1,5,"devkit.nb","10.0.12.46.255.255.255.0"
OK

ค่าที่โมดูล SIM7020E ตอบกลับมาจากตัวอย่างที่ 4 ได้แก่ +CGREG: 0,1 และ +CGATT: 1 หมายความว่า ตอนนี้โมดูล SIM7020E ได้ขอลงทะเบียนเชื่อมต่อและ Attached เข้าโครงข่าย NB-IoT เสร็จสมบูรณ์เรียบร้อย พร้อมใช้งาน

คำสั่ง “AT+CSQ” เป็นคำสั่งเช็คคุณภาพของสัญญาณ ค่าที่โมดูลตอบกลับมาตัวแรกจะเป็นค่า RSSI (Received Signal Strength Indicator) มีค่าอยู่ระหว่าง 0–99 ส่วนตัวที่สองจะเป็นค่า BER (Bit Error Rate) มีค่าอยู่ระหว่าง 0–7

รายละเอียดค่า RSSI

  • 0 คือ -110 dBm หรือน้อยกว่า
  • 1 คือ -109 dBm <= RSSI < -107 dBm
  • 2 คือ -107 dBm <= RSSI < -105 dBm
  • 3…30 คือ -105dBm <= RSSI < -48 dBm
  • 31 คือ -48dBm <= RSSI
  • 99 คือ ไม่ทราบสถานะ

NOTE
ค่าตอบกลับจากตัวอย่างที่ 4 +CSQ: 25,0 หมายความว่า มีสัญญาณดีสามารถรับส่ง Payload ได้ มีค่า RSSI อยู่ระหว่าง -48dBm ถึง -105dBm

คำสั่ง “AT+CGCONTRDP” เป็นคำสั่งดูชื่อ APN และ IP Address ที่ได้รับจากเครือข่าย จากตัวอย่างที่ 4 ชื่อ APN ที่ได้รับคือ “devkit.nb” และ Public IP เท่ากับ “10.0.12.46.255.255.255.0”

ตัวอย่างที่ 5. AT Commands ตรวจสอบระบบเครือข่าย

AT+CDNSGIP="www.google.com"
OK
+CDNSGIP: 1,"www.google.com","172.217.160.68"
AT+CIPPING="172.217.160.68"
OK
+CIPPING: 1,172.217.160.68,18,45
+CIPPING: 2,172.217.160.68,3,45
+CIPPING: 3,172.217.160.68,3,45
+CIPPING: 4,172.217.160.68,2,45

คำสั่ง AT+CDNSGIP=”www.google.com" เป็นการร้องขอ IP Address จาก DNS ที่ระบุ จากตัวอย่างที่ 5 เป็นการร้องขอ IP Address ของ DNS “google.com” ได้ค่าตอบกลับมาคือ “172.217.160.68”

คำสั่ง AT+CIPPING=”172.217.160.68" เป็นการทดสอบเครือข่ายโดยการ Ping ด้วยโปรโตคอล ICMP ไปยัง IP ปลายทางที่ระบุ จำนวน 4 ครั้ง จากตัวอย่างที่ 5 คือ การ Ping ไปยัง IP Address 172.217.160.68

การใช้ AT Commands เพื่อเชื่อมต่อเครือข่าย NB-IoT ท่านจะทำเพียงแค่ครั้งเดียวเท่านั้น หลังจากน้ันโมดูล SIM7020E มันจะจดจำค่าต่างๆ ที่ท่านได้ตั้งค่าไว้ ถ้ามีการเปิดใช้งานโมดูล (POWER ON) มันจะเชื่อมต่อเครือข่ายให้โดยอัตโนมัติ

ในบทความหน้า [ตอนที่ 2] ใช้ AT Commands ควบคุมบอร์ด AIS DEVIO NB-DEVKIT I รับส่ง Paylaod ด้วยโปรโตคอล TCP/UDP และ MQTT

ผู้เขียนมีความตั้งใจที่จะนำเสนอการใช้ IoT / LoRaWAN / NB-IoT สำหรับพัฒนา SMART CITY เพื่อให้ผู้ที่สนใจนำไปพัฒนาต่อยอดสร้างนวตกรรมใหม่ๆ ขอเป็นส่วนหนึ่งเล็กๆ น้อยๆ ช่วยผลักดันประเทศของเราให้เข้าสู่ยุคดิจิตอล Thailand 4.0 อย่างแท้จริง

ติดตามข่าวสารทาง facebook ได้ที่ลิงค์นี้
เข้ากลุ่ม IoT-SmartCity ได้ที่นี่

--

--

Responses (1)