ลองเล่นบอร์ด Devio NB-Shield I ทางเริ่มต้นใช้เครือข่าย IoT ทั่วประเทศของ AIS

by lew
28 May 2018 - 18:32

บอร์ด AIS NB-IoT นั้นเริ่มประกาศวางจำหน่ายมากตั้งแต่งาน AIS Vision 2018 ที่ผ่านมา และเพิ่งเริ่มส่งมอบบอร์ดจริงเมื่อเดือนพฤษภาคมนี้ หลังจากที่ประกาศเปิดเครือข่ายทั่วประเทศเรียบร้อยแล้ว

ทาง Blognone ได้รับบอร์ดทดสอบจาก AIS มาระยะหนึ่งแล้ว จึงมารายงานกัน

บอร์ด Devio NB-Shield I ไม่ใช่แค่บอร์ดอย่างเดียว แต่มาพร้อมกับ eSIM ในตัว และไลบรารี Arduino โดยตัวไลบรารีนั้นอยู่ใน Library Manager ของ Arduino IDE เรียบร้อย อันนี้ถือว่าตั้งใจทำดี

ตัว Shield คือการวางโมดูล Quectel BC95 ลงเป็น shield ของ Arduino โมดูลตัวนี้เชื่อมต่อกับชิปอื่นๆ ด้วย UART ที่ความเร็ว 9600bps ดังนั้นหากใครเห็นสเปค NB-IoT ที่ dl/up 24kbps/15.625kbps แล้วคิดว่ายังต่ำไปก็อาจจะพบว่าความเร็วจริงที่ได้ต่ำกว่านั้นเสียอีก เพราะติดความเร็วของตัว UART เอง

คำสั่งของ Quectel BC95 นั้นใช้คำสั่งแบบ AT มีเอกสารจาก Quectel ให้ดาวน์โหลด แสดงคำสั่งที่รองรับไว้ครบถ้วน แต่ผมเองไม่แน่ใจนักเครือข่ายของ AIS เปิดให้ใช้งานหมดหรือไม่ เช่นตัวผมเองลองพยายามส่ง SMS แล้วพบว่าไม่สำเร็จแต่อย่างใด (แต่อาจจะเป็นเพราะผมสร้างคำสั่งผิดเองก็ได้

ไลบรารี AIS_NB_BC95 บังคำสั่ง AT ของตัว BC95 ไว้ให้ ทำให้เรียกใช้งานโดยไม่ต้องส่งคำสั่ง AT เอง คำสั่งที่ไลบรารีรองรับมีดังนี้

  • ping ไอพีที่ระบุ
  • รับและส่งแพ็กเก็ต UDP ได้ อย่างไรก็ดี ขนาดแพ็กเก็ตสูงสุดคือ 512 ไบต์
  • เปิด/ปิด การเชื่อมต่อ
  • อ่านเวอร์ชั่นเฟิร์มแวร์
  • อ่าน IMEI หรือหมายเลขประจำโมดูล
  • อ่าน IMSI หรือหมายเลขประจำ SIM
  • อ่านค่าไอพีที่ได้รับจากเครือข่าย
  • อ่านความแรงสัญญาณ

ที่จริงแล้วคำสั่งที่น่าสนใจอีก 2 คำสั่งของ BC95 คงเป็นการอ่านค่าเวลา ที่ทำให้โมดูลไม่ต้องพึ่ง real-time clock (หรือหากมีอยู่แล้วก็ใช้นาฬิกาจากเสาสัญญาณโทรศัพท์เพิ่มความแม่นยำได้) แะคำสั่งส่ง SMS

ตัวบอร์ดออกแบบให้รองรับได้ทั้งบอร์ดที่มีพอร์ต serial เพียงช่องเดียว เช่น Arduino Uno โดยบอร์ดจะคอนฟิกให้ใช้ขาหมายเลข 8 และ 9 เป็น serial เพื่อเชื่อมต่อกับ Arduino แทนขา 0 และ 1 แต่มีจัมป์เปอร์ให้กลับมาใช้ขา O และ 1 ได้ด้วย โดยเลือกเสียบจัมป์เปอร์ฝั่ง HW จากเดิมที่ออกมาจากโรงงานจะเสียบฝั่ง SW ไว้

แพตช์เพิ่มไปอีกหน่อย เพื่อใช้งานกับ Arduino Leonardo

อย่างไรก็ตาม ตัวไลบรารีนั้นดูจะออกแบบให้ใช้งานกับบอร์ด Uno โดยเฉพาะ โดยไม่มีโค้ดรองรับบอร์ดอื่นแต่อย่างใด ผมเองได้ fork ไลบรารีออกมาเพื่อแก้ไขให้ใช้งานกับบอร์ด Leonardo ได้

สำหรับตัวเน็ตเวิร์ค NB-IoT ของ AIS ยังเป็นแบบ IPv4 และ NAT เอาไว้ ทำให้การส่งข้อมูลโดยตรง โดยไม่ต้องรอตัวบอร์ดส่งแพ็กเก็ตออกไปนั้นทำไ้ดยาก ผมเองพยายามดู IP และพอร์ตที่บอร์ดใช้ยิงแพ็กเก็ตออกมา แล้ว UDP ตรงเข้าไปก็ยังไม่สำเร็จแต่อย่างใด เราคงต้องรอ NB-IoT รองรับ IPv6 เพื่อให้สามารถสื่อสารกันโดยตรงได้ในอนาคต

ข้อจำกัดอย่างหนึ่งคือ latency ของเครือข่ายค่อนข้างสูง ผมทดลอง ping ไปยังเซิร์ฟเวอร์บน Google Cloud สิงคโปร์ พบว่าได้ระยะเวลา 900-1000ms ระยะเวลาขนาดนี้อาจจะทำให้งานบางอย่างที่ต้องการระยะเวลาตอบสนองสั้นๆ เช่น การควบคุมทางเข้าออกพนักงาน อาจจะไม่เหมาะนัก

บทสรุปหลังการใช้งาน

หลังได้ลองใช้งานบอร์ดนี้มาระยะหนึ่ง ผมพบว่าบอร์ด BC95 นั้นยังคงเป็นเรื่องน่าตื่นเต้นสำหรับการเข้าใช้งานเครือข่าย NB-IoT การที่เราสามารถใช้เครือข่ายที่กินพลังงานต่ำ และมีค่าเชื่อมต่อไม่ราคาแพงสำหรับการใช้งานต่อเนือง จะเปิดโอกาสให้เราสร้างแอปพลิเคชั่นใหม่ๆ ได้มากมาย

อย่างไรก็ดี บอร์ด Devio NB-Shield I และเครือข่าย NB-IoT ในตอนนี้ยังมีข้อจำกัดอยู่หลายอย่าง ทำให้แอปพลิเคชั่นแม้จะเหมาะกับเครือข่ายความเร็วต่ำๆ แต่หากพบกับข้อจำกัดของตัวบอร์ดก็อาจจะทำให้การพัฒนาทำได้ยากขึ้น เช่นการล็อกข้อมูลขนาดใหญ่เกิน 512 ไบต์ ในแต่ละรอบ หรือการส่งข้อมูลที่ต้องการเข้ารหัส และแม้ว่าทาง AIS จะให้ไลบรารีมาที่ดูจะช่วยให้ใช้งานได้ง่ายขึ้นแต่ผู้ใช้งานก็ต้องทำความเข้าใจและอาจจะต้องแก้ไขโค้ดกันเองบ้าง ดังนั้นก่อนสั่งบอร์ดนี้จึงควรตระหนักว่ามันเป็นบอร์ดสำหรับนักพัฒนา

Blognone Jobs Premium