อุปกรณ์ IoT มีรูปแบบการเชื่อมต่อไร้สายที่หลากหลาย รูปแบบการสื่อสารที่เป็นที่นิยม เช่น LoRaWAN, WiFi, NB-IoT ทั้ง 3 รูปแบบมีข้อจำกัดที่แตกต่างกัน อย่าง LoRaWAN มีผู้ให้บริการเพียงรายเดียวคือ CAT (ปัจจุบันควรรวมกับ TOT ชื่อใหม่คือ NT) หากไม่ใช้เครือข่ายของ CAT จำเป็นจะต้องตั้ง Gateway ขึ้นมาเอง ซึ่งราคา Gateway ค่อนข้างสูง ส่วนรูปแบบ WiFi มีข้อดีที่ราคาถูกกว่าการเชื่อมต่อรูปแบบอื่น ๆ แต่สำหรับพื้นที่ห่างไกล การลากสายแลนเพื่อเชื่อมต่อกับ WiFi Access Point ไม่ใช่เรื่องง่าย ระยะการสื่อสารก็ค่อนข้างใกล้ สำหรับอุปกรณ์ IoT ในพื้นที่ห่างไกล WiFi ตัดไปได้เลย การสื่อสารูปแบบสุดท้าย NB-IoT เมื่อจะผู้ให้บริการหลักถึง 2 ราย คือ True และ AIS แต่เสาสัญญาณ NB-IoT ยังมีอยู่อย่างจำกัด โดยเฉพาะพื้นที่ที่ไม่ใช่เขตเศรษกิจ มีผู้ใช้งานน้อย ผู้ให้บริการมักจะไม่เปิดสัญญาณ NB-IoT ให้
จาก 3 รูปแบบการสื่อสารที่นำเสนอไปข้างต้น จะเห็นได้ว่าทั้ง 3 มีข้อจำกัดที่สามารถแก้ไขได้ด้วยเครือข่ายโทรศัพท์มือถือ (Cellular) มีข้อดีกว่า LoRaWAN ที่มีผู้ให้บริการหลากหลายกว่า ไม่ต้องตั้ง Gateway เอง มีข้อดีกว่า WiFi ที่ใช้งานได้ไกล และใช้ได้ทุกที่ที่มีสัญญาณโทรศัพท์มือถือ มีข้อดีกว่า NB-IoT ที่ผู้ให้บริการเปิดสัญญาณทุกเสาสัญญาณอยู่แล้ว สำหรับงานระบบ IoT ในพื้นที่ห่างไกล หรือต้องการออกแบบให้อุปกรณ์ IoT ใช้งานได้ทุกที่ทั่วไทย การเลือกใช้เครือข่ายโทรศัพท์มือถืออย่าง 3G/4G/5G มีข้อดีกว่าอย่างเห็นได้ชัด
รู้จัก AIS 4G board
AIS 4G board เป็นบอร์ดพัฒนาไมโครคอนโทรลเลอร์ที่มาพร้อมการเชื่อมต่อผ่าน WiFi, บลูทูธ และเครือข่ายโทรศัพท์มือถือ (4G) เครือข่าย AIS ใช้ไมโครคอนโทรลเลอร์ ESP32 (เบอร์นี้เป็นที่คุ้นเลยกันดีในหมู่นักพัฒนาอุปกรณ์สมองกลฝังตัว) CPU สถาปัตยกรรม Tensilica Xtensa LX6 สัญญาณนาฬิกา 240MHz, Flash ขนาด 4MB, แรม (SRAM) ขนาด 520 kB, รองรับการเชื่อมต่อ WiFi คลื่น 2.4GHz และบลูทูธเวอร์ชั่น 4.2, รองรับการเชื่อมต่อ I2C, SPI, I2S อย่างละ 2 ช่อง, รองรับการเชื่อมต่อ UART จำนวน 3 ช่อง (1 ช่องใช้อัพโหลดโปรแกรม), รองรับการเชื่อมต่อ CAN Bus, Ethernet อย่างละ 1 ช่อง
รองรับการเชื่อมต่อเครือข่าย 4G ผ่านโมดูล SIM7600E (ผ่าน กสทช. เรียบร้อย) เทคโนโลยี LTE CAT-1 บนบอร์ดมี eSIM มาในตัว หลังจากซื้อบอร์ดมาแล้ว สามารถเชื่อมต่ออินเตอร์เน็ตผ่าน 4G ได้เลย ติดต่อกับไมโครคอนโทรลเลอร์ ESP32 ผ่าน UART ด้วย AT Command มีคำสั่งรองรับโปรโตคอล TCP, UDP, MQTT, HTTP, FTP
บนบอร์ดมีช่องใส่ MicroSD Card เชื่อมต่อกับ SIM7600E รองรับการอ่าน-เขียนไฟล์ มีช่อง RS485 รองรับการเชื่อมต่อกับอุปกรณ์ Modbus RTU มีเซ็นเซอร์อุณหภูมิและความชื้น SHT-40 เชื่อมต่อผ่าน I2C มีสวิตช์กดติดปล่อยดับโปรแกรมได้อิสระ (GPIO18) จำนวน 1 ตัว มีหลอดแอลอีดีโปรแกรมได้อิสระ (E15) จำนวน 1 ดวง มีหลอดแอลอีดีแสดงผลสถานะการเชื่อมต่อเครือข่าย STS (Status) และ NET (Network) มีช่องเสียบ USB-C จำนวน 2 ช่อง สำหรับอัพโหลดโปรแกรมให้ ESP32 (1) ผ่านชิปแปลง USB to UART เบอร์ FT231XQ และสำหรับเชื่อมต่อกับ SIM7600E (2)
รายละเอียดส่วนประกอบบอร์ด AIS 4G board และตำแหน่งขาต่อใช้งานแสดงดังรูปที่ 2
โครงสร้างการเชื่อมต่อภายใน แสดงดังรูปที่ 3
เตรียมอุปกรณ์เชื่อมต่อ Azure IoT Central
อุปกรณ์ที่ใช้มีเพียง AIS 4G board ต่อเสาอากาศ 4G และสาย USB-C สำหรับใช้เชื่อมต่อบอร์ด AIS เข้ากับเครื่องคอมพิวเตอร์เพื่ออัพโหลดโปรแกรม รายการอุปกรณ์ทั้งหมดแสดงดังรูปที่ 4
เริ่มต้นใช้งานบอร์ด AIS 4G board
ไมโครคอนโทรลเลอร์ ESP32 ที่ใช้บนบอร์ด AIS รองรับเครื่องมือพัฒนาเฟิร์มแวร์หลายตัวทั้ง Arduino IDE, ESP-IDF, PlatformIO สำหรับบทความนี้เลือกใช้โปรแกรม Arduino IDE
การติดตั้งโปรแกรม Arduino IDE มีขั้นตอนดังนี้
1) ดาว์โหลดไฟล์โปรแกรมได้จากเว็บไซต์ http://www.arduino.cc/en/Main/Software เลือกระบบปฏิบัติการที่ต้องการจะติดตั้ง (ตัวอย่างใช้ Windows จึงเลือก Windows Installer)
จากนั้นระบบจะพามาหน้าเชิญให้ร่วมบริจาค หากไม่ต้องการบริจาคสามารถคลิกปุ่ม JUST DOWNLOAD เพื่อเริ่มดาว์โหลดโปรแกรมได้เลย
การดาว์โหลดจะเริ่มขึ้นอัตโนมัติ และรอจนกว่าการดาว์โหลดจะเสร็จสิ้น แล้วจึงทำขั้นตอนถัดไป
เมื่อดาว์โหลดเสร็จแล้วให้เปิดไฟล์ติดตั้งขึ้นมา กดปุ่ม I Agree
มีตัวเลือกให้เลือกติดตั้ง แนะนำให้เลือกทั้งหมด (ค่าเริ่มต้นคือเลือกทั้งหมด) แล้วคลิกปุ่ม Next >
เลือกโฟลเดอร์ติดตั้งโปรแกรม หากไม่ต้องการแก้ไขคลิกปุ่ม Intall ได้เลย
รอจนกว่าโปรแกรมจะติดตั้งเสร็จสิ้น
เมื่อขึ้นคำว่า Completed หมายถึงการติดตั้งเสร็จสมบูรณ์แล้ว คลิกปุ่ม Close เพื่อปิดโปรแกรมลงไปได้เลย
หน้าเดสท็อปก็จะมีไอค่อนโปรแกรม Arduino ขึ้นมาแล้ว
โปรแกรม Arduino IDE ไม่รองรับการเขียนเฟิร์มแวร์สำหรับ ESP32 จำเป็นจะต้องติดตั้งบอร์ด ESP32 เพิ่มก่อน การติดตั้งบอร์ด ESP32 มีขั้นตอนดังนี้
เปิดโปรแกรม ArduinoIDE ขึ้นมา โดยดับเบิลคลิกที่ไอค่อน Arduino บนหน้าเดสท็อป แล้วรอโปรแกรมเริ่มต้นการทำงานซักครู่
จากนั้นกด File เลือก Preferences
ในช่อง Additional Boards Manager URLs ใส่
แล้วกดปุ่ม OK
จากนั้นกด Tools > Board เลือก Boards Manager...
จากนั้นกด Type เลือก Contributed
เลื่อนหา esp32 แล้วกดปุ่ม Install
เมื่อติดตั้งเสร็จแล้ว จะแสดงคำว่า INSTALLED จากนั้นกดปุ่ม Close ได้เลย
จากนั้นกดปุ่ม Tool > Board แล้วเลือก ESP32 Dev Module
เสียบบอร์ด AIS 4G board เข้ากับเครื่องคอมพิวเตอร์ แล้วเลือกพอร์ตโดยกด Tool > Port เลือกพอร์ตที่แสดง
ทดสอบอัพโหลดโปรแกรมและทดสอบ SIM7600E โดยอัพโหลดโปรแกรมตัวอย่าง Read_IMEI โดยกดที่ File > Examples > AIS 4G board > Azure_IoT > GSM > Read_IMEI
กดปุ่มอัพโหลดโปรแกรม
เมื่อขึ้น Upload Done ให้กดปุ่ม เพื่อเปิด Serial Monitor ขึ้นมา แล้วกดปุ่ม EN บนบอร์ด 1 ครั้ง แล้วรอซักครู่ สังเกตหาก SIM7600E ทำงานได้ ไฟ STS จะติดสว่าง หากเชื่อมต่อเครือข่ายได้ ไฟ NET จะกระพริบ ที่ Serial Monitor จะแสดงหมายเลข IMEI ขึ้นมา (ตรงกับหมายเลขที่แปะบนโมดูล SIM7600E)
รู้จักกับ Azure IoT Central
Azure IoT เป็นบริการระบบคราว์ดจากฝั่งไมโครซอฟ มีบริการหลักด้านคลาวด์ IoT อยู่ 2 บริการ คือ Azure IoT Hub และ Auzre IoT Central โดยไลบารี่ของบอร์ด AIS 4G board รองรับทั้ง 2 บริการ โดยทั้ง 2 บริการมีความแตกต่างกันดังนี้
Azure IoT Hub
เป็นบริการระบบคราว์ด IoT ที่ทำหน้าที่เป็นตัวกลางส่งรับ-ส่งข้อมูลระหว่างอุปกรณ์และระบบจัดการอื่น โดยการจัดการเส้นทางของข้อมูลสามารถทำได้ผ่านหน้าเว็บ บริการ Azure IoT Hub ไม่มีฐานข้อมูลในตัว ไม่สามารถเก็บข้อมูลได้ ไม่มีหน้า Dashboard แสดงผลข้อมูล ผู้ใช้ต้องสร้างฐานข้อมูลหรือหน้า Dashboard รอไว้ที่อื่น แล้วค่อยใช้ Azure IoT Hub เป็นตัวส่งข้อมูลเข้าไป
Azure IoT Central
เป็นบริการระบบคราว์ด IoT แบบ One Stop Service คือมีฐานข้อมูลในตัวเอง มีหน้า Dashboard สามารถจัดการข้อมูลจากอุปกรณ์ได้ด้วยตัวเองผ่านหน้าเว็บ
บทความนี้เลือกนำเสนอการใช้งาน AIS 4G board กับ Azure IoT Central เนื่องจากมีขั้นตอนการใช้งานที่ง่ายกว่า Azure IoT Hub เหมาะสำหรับผู้เริ่มต้นศึกษา Azure IoT มากกว่า
ทดลองส่งข้อมูลอุณหภูมิและความชื้นขึ้น Azure IoT Central ด้วย AIS 4G board
การส่งข้อมูลขึ้น Azure IoT Central จำเป็นต้องเพิ่มอุปกรณ์ลงในระบบก่อน โดยมีขั้นตอนดังนี้
เข้าไปที่ https://azure.microsoft.com/en-us/services/iot-central/ จากนั้นกดปุ่ม Start Now
หากยังไม่ได้สมัครสมาชิก ให้สมัครสมาชิกตามขั้นตอน เข้าสู่ระบบให้เรียบร้อย ระบบจะพามาหน้าภาพรวม Azure IoT Central ให้กดปุ่ม Bulid
ส่วน Custom app กดปุ่ม Create app
ตั้งค่าดังนี้
Application name ได้ตามต้องการ
ตั้ง URL เป็นอะไรก็ได้ (ต้องไม่ต้องไม่ซ้ำกับที่คนอื่นตั้ง)
ตั้ง Application template เป็น Custom application
ตั้ง Pricing plan เลือกเป็น Free
แล้วกดปุ่ม Create
รอระบบสร้าง Application ซักครู่
เมื่อเสร็จแล้ว ระบบจะพามาหน้าจัดการ Application (ดังรูป)
การสร้างอุปกรณ์สามารถทำได้ทั้งแบบใช้ Device templates และไม่ใช้ หากใช้จะทำให้แก้ Template เพียงอย่างเดียวก็จะทำให้อุปกรณ์ที่ใช้ Template เดียวกันถูกแก้ข้อมูลไปด้วย หากสร้างอุปกรณ์โดยไม่ใช้ Template อุปกรณ์จะถูกแยกจากกันเป็นอิสระ หากต้องการแก้ข้อมูลจะต้องแก้ไขรายอุปกรณ์ ซึ่งสร้างความยุ่งยากในการจัดการอุปกรณ์จำนวนมาก ผู้เขียนจึงแนะนำให้ใช้ Device templates
การใช้ Device templates จำเป็นต้องสร้างขึ้นมาก่อน โดยมีขั้นตอนดังนี้
กดเมนู Device templates กด Create a device template
เนื่องจาก AIS 4G board ได้รับใบรับรอง Azure IoT plug & play จึงมีบอร์ด AIS 4G board ให้เลือกด้วย โดย Select type ให้เลือกเป็น AIS 4G board แล้วกดปุ่ม Next: Review
กดปุ่ม Create เพื่อยืนยันการสร้าง Device Template
ระบบจะพามาหน้า Model ซึ่งใช้กำหนดที่มีการรับ-ส่งระหว่างอุปกรณ์กับ Azure IoT Central
ข้อมูลที่ใช้ในการรับ-ส่ง แบ่งออกเป็น 3 ชนิด คือ
Telemetry คือ ข้อมูลที่อุปกรณ์ส่งเข้ามาที่ Azure IoT Central
Command คือ ข้อมูลที่ Azure IoT Central ส่งเข้าไปที่อุปกรณ์
Property คือ ข้อมูลที่เป็นค่าคงที่ เกี่ยวกับอุปกรณ์นั้น ๆ เช่น ระยะเวลาในการส่งข้อมูล (Interval) ชื่ออุปกรณ์ (Device Name) ตำแหน่งที่ตั้งของอุปกรณ์นั้น ๆ (Location) เป็นต้น
สำหรับไลบารี่ AIS 4G board รองรับเฉพาะ Telemetry และ Command
จากรูปที่ด้านล่างจะเห็นว่า Template ของ AIS 4G board สร้าง Telemetry ไว้ 2 ตัว คือ temperature และ humidity ซึ่งใช้ส่งข้อมูลค่าอุณหภูมิและความชื้นจากเซ็นเซอร์ SHT40 ขึ้นไปบน Azure IoT Central และมี Command อยู่ 1 ตัว คือ light ใช้สั่งให้หลอดแอลอีดี E18 บนบอร์ด AIS 4G board เปิด-ปิด จากบน Azure IoT Central
กดที่ Views > Overview จะแสดงหน้า Dashboard ที่แสดงผลข้อมูลต่าง ๆ ที่อุปกรณ์ส่งเข้ามา
จากรูปด้านล่าง จะเห็นว่า Template ของ AIS 4G board สร้าง Widget ไว้ 3 ตัว
temperature, humidity เป็นกราฟแบบเส้น (Line chart) แสดงผลข้อมูลอุณหภูมิและความชื้น
temperature เป็นกล่องแสดงผล (Key Performance Indicator : KPI) แสดงผลข้อมูลอุณหภูมิเป็นตัวเลข
humidity เป็นกล่องแสดงผล (Key Performance Indicator : KPI) แสดงผลข้อมูลอุณหภูมิเป็นตัวเลข
ในขั้นตอนนี้หน้านี้ยังไม่ต้องแก้ไขอะไร กดปุ่ม Back ได้เลย
ระบบจะพากลับมาหน้า Model ให้กดเมนู Devices เพื่อไปสร้างอุปกรณ์ได้เลย ที่หน้า Device ให้กดปุ่ม New
หน้าต่าง Create a new device จะแสดงขึ้นมา ตั้งค่าดังนี้
Device name – ให้ตั้งชื่อได้ตามต้องการ (ตัวอย่างตั้งเป็น AIS 4G board test 1)
Device ID - แนะนำให้ใช้ค่าเดิม
Device template – กำหนดเป็น AIS 4G board
ตั้งค่าเรียบร้อยแล้วกดปุ่ม Create
รายการอุปกรณ์จะถูกเพิ่มขึ้นมา (ดังรูปด้านล่าง) ให้กดที่ชื่ออุปกรณ์
หน้า Dashboard ที่ตั้งค่าก็จะแสดงขึ้นมา ให้กดปุ่ม Connect เพื่อดูข้อมูลที่จำเป็นต้องใช้ในการเชื่อต่ออุปกรณ์
ข้อมูลที่ใช้ในการเชื่อมต่ออุปกรณ์ในหน้าต่าง Device connection groups แบ่งข้อมูลเป็น 3 ชุด คือ 1) ID scope 2) Device ID และ 3) Key (แบ่งเป็น Primary key และ Secondary key) ให้เปิดหน้าต่างนี้ไว้ก่อน เตรียมนำข้อมูลไปใส่ในโค้ดโปรแกรมตัวอย่าง
ที่โปรแกรม Arduino IDE ให้เปิดโปรแกรมตัวอย่าง Azure IoT Central ขึ้นมา โดยกดไปที่ File > Example > AIS 4G board > Azure_IoT > 4G กด IoT_Central_sample
บรรทัดที่ 26 ถึง 28 ให้แก้ไขข้อมูลการเชื่อมต่อตามหน้าต่าง Device connection groups ดังรูปที่ ... โดย Key เลือกใช้ Primary key หรือ Secondary key ก็ได้
กดปุ่มอัพโหลดโปรแกรม แล้วรอโปรแกรมอัพโหลดซักครู่ เมื่อขึ้น Upload Done ให้เปิด Serial Monitor ขึ้นมารอ SIM7600E เปิดซักครู่ จากนั้นบอร์ดจะเริ่มเชื่อมต่อ Azure IoT Central เมื่อเชื่อมต่อได้และส่งข้อมูลได้ จะมีข้อความ Send แสดงขึ้นมา
ที่หน้าเว็บ Azure IoT Central ให้รีเฟสหน้าเว็บ 1 ครั้ง จะเห็นว่าสถานะขึ้นเป็น Connected แล้ว (1) รอซักครู่ค่าอุณหภูมิและความชื้นที่วัดได้จากบนบอร์ดจะแสดงขึ้นมาแล้ว (2)
กดไปที่แท๊บ Command ตรง Level ให้ใส่ 1 แล้วกดปุ่ม Run
รอซักครู่ หลอดแอลอีดี E15 จะติดสว่าง ที่หน้าต่าง Serial Monitor แสดงข้อความ Light set to 1
ตรง Level ทดลองใส่ 0 แล้วกดปุ่ม Run รอซักครู่ หลอดแอลอีดี E18 จะดับ ที่หน้าต่าง Serial Monitor แสดงข้อความ Light set to 0
เป็นอันจบการทดลองส่งข้อมูลอุณหภูมิและความชื้นขึ้น Azure IoT Central ด้วย AIS 4G board
Comments