บอร์ด 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 จะให้ไลบรารีมาที่ดูจะช่วยให้ใช้งานได้ง่ายขึ้นแต่ผู้ใช้งานก็ต้องทำความเข้าใจและอาจจะต้องแก้ไขโค้ดกันเองบ้าง ดังนั้นก่อนสั่งบอร์ดนี้จึงควรตระหนักว่ามันเป็นบอร์ดสำหรับนักพัฒนา
Comments
จองรอบไหนครับถึงได้บอร์ดนี้มา
ตอนนั้นผมจองตามข่าว https://www.blognone.com/node/100076 แต่ก็ยังไม่ได้บอร์ดสักที
ดีครับ
ผมลองใช้งานมาพักหนึ่ง ถ้าไม่นับการต้องมาดีลกับขนาด packet ที่ได้น้อยมากก็ถือว่าโอเคครับ สัญญาณนิ่งดี ปัญหาจริงๆ อยู่ที่ support มากกว่าครับ ติดต่อยากเอาเรื่อง แถมข้อมูลมีน้อยมาก กว่าผมจะรู้ว่ามี CoAP ให้ใช้ก็ต้องมีคนอื่นมาบอกอีก ?
ไหนๆ แล้ว ขอฝาก บล็อกรีวิว NB-IoT ด้วยคนครับ
บล็อกส่วนตัวที่อัพเดตตามอารมณ์และความขยัน :P
จะกลายเป็น board ยอดนิยมของโปรเจค เด็กปี 4
เป็นความรู้ระดับปริญญาตรีหรือครับ สัก ม.3 เป็นไปได้ไหม
ได้หมดแหละครับ เหมือน RFID เมื่อสิบปีก่อน เอาไปใช้เป็นโปรเจคจบกันมาก สักพักก็เกร่อและเลิกเห่อไปเอง
(สมัยนั้นผมยังใช้ GPRS อยู่เลย)
ผมก็ได้บอร์ดผ่าน Preorder มาแล้ว ยังไม่ได้ลองเล่นเลย ไว้ลองเล่นก่อนค่อยทำคลิปทีหลัง
ผมนำBoardไปต่อกับArduino Leonardoแล้วลองuploadด้วยArduinoในmac แล้วก็Uploadผ่านนะครับ แต่Serial monitorไม่มีอะไรแสดงเลย หรือmacมีปัญหากับส่วนนี้ ผมต้องทำยังไงให้มันแสดงค่าครับ ขอบคุณครับ