BLE – Bluetooth Low Energy

BLE

Bluetooth Low Energy ( BLE ) เป็นเทคโนโลยีที่ มีประสิทธิภาพ และน่าใช้งานอย่างยิ่ง แต่ยากที่จะทำความเข้าใจ ไม่ง่ายเหมือนกับ การใช้ Bluetooth แบบเดิม ( Classis Bluetooth )
ซึ่ง BLE จะมีการกำหนด Profile ตามมาตรฐาน Bluetooth Special Interest Group ( Bluetooth SIG ) ซึ่งส่วนนี้เป็นแค่ ส่วนหนึ่งของระบบ BLE เท่านั้น ยังมีที่ต้องทำความเข้าใจอีกเยอะ เสมือนเป็นแค่ยอดของภูเขาน้ำแข็ง เท่านั้น
ยังมีในส่วนของการติดต่อสื่อสาร ข้อกำหนดของแต่ละอุปกรณ์ และวิธีการส่งข้อมูล ติดต่อกันในแต่ละอุปกรณ์ ในรูปแบบต่างๆ เช่น master, slave, central, peripheral, client, server, advertise, scan, read, write, notify, and indicate
ซึ่งทั้งหมดนี้ ต้องทำความเข้าใจ ถึงจะใช้งาน BLE ได้เต็มประสิทธิภาพ

ble-talk-5-638

การใช้งานรูปแบบต่างๆ
• Master devices ( Central ) สำหรับ ใช้แสกนหา อุปกรณ์ตัวอื่นๆ อุปกรณ์ตัว Master ส่วนมากก็จะเป็น Smart phone , Tablet หรือ Notebook PC
• Slave devices ( Peripheral ) เป็นอุปกรณ์ตัวลูก ที่รอการติดต่อ เช่นพวก Bluetooth Module
• Client devices จะติดต่อควบคุม โดยใช้ GATT protocol อุปกรณ์ตัว Client ส่วนมากก็จะเป็น Smart phone , Tablet หรือ Notebook PC
• Server devices จะเก็บข้อมูลต่างๆ วิธีการติดต่อสื่อสาร และให้ข้อมูลกับ อุปกรณ์ client

รูปแบบคำสั่งการส่งข้อมูล ระหว่าง Client และ Server ก็คือ read, write, notify, or indicate
Read , Write การอ่านเขียนกันระหว่าง Client และ Server
Notify ,indicate การกำหนดข้อมูล และ ระบุการดำเนินการ โดย Client แต่จะเริ่มด้วย Server เป็นตัวกำหนดที่จะส่ง Data ไปยัง Client
Notifications การแจ้งเตือน จะยังไม่ทำงานในขณะที่ indications ถูกตั้งค่าให้ยอมรับไว้ การแจ้งเตือนจะทำงานเร็วขึ้น แต่มีความถูกต้องของข้อมูลน้อย
ข้อมูลเนื้อหา gatt.xml ใน GATT Server จะถูกตั้งค่า เป็น “typical” เพื่อใช้สำหรับ อุปกรณ์ BLE ที่กำหนดใช้งาน แบบ Custom

 

ble_layout

การเชื่อมต่อกันระหว่าง Master / Slave
หนึ่งในแนวคิดที่สำคัญในการเชื่อมต่อ BLE คือความแตกต่างระหว่างอุปกรณ์ Master และ Slave ซึ่งไม่สามารถสลับหน้าที่ หรือเปลี่ยนแปลงได้
ในแต่ละส่วนนั้นมีความหมายอย่างไร? เริ่มต้น ตั้งค่า ระหว่างกัน ว่าจะเป็น client หรือ Server ซึ่งจะอธิบายต่อไป
Master ( Central ) – เป็นส่วนอุปกรณ์หลักในการเริ่มต้นร้องขอการเชื่อมต่อ ( advertising ) ออกไปยังอุปกรณ์ต่อพ่วงต่างๆ
Slave ( อุปกรณ์ต่อพ่วง ) – อุปกรณ์ที่รับคำขอเชื่อมต่อเข้ามา หลังจากที่มีการร้องขอการเชื่อมต่อ ( advertising )
การจับคู่ ( pairs ) ระหว่าง Master / Slave นั้น ในความเป็นจริงก็สามารถจะเปลี่ยนสลับกันได้ด้วย
ความแตกต่างอีกอย่างหนึ่งที่สำคัญระหว่าง การใช้งานเครือข่าย BLE คือ อุปกรณ์ที่เป็น slave ไม่จำเป็นต้องติดต่อแค่ Master ตัวเดียว คือสามารถต่อได้ Master หลายๆตัว และ Master ก็สามารถติดต่อ slave ได้หลายๆ ตัว
คุณสมบัติการติดต่อของ BLE ไม่จำกัดจำนวน อุปกรณ์ที่จะเชื่อมต่อกัน แต่ก็มีข้อจำกัด ในทางปฏิบัติบ้าง ถ้าเชื่อมต่อกันมากเกินไป ( ทางที่ดีไม่ควรเกิน 8 อุปกรณ์ )

ble-Gatt-protocol
การเชื่อมต่อระหว่าง Client / Server ด้วย GATT Protocol
ข้อสำคัญอีกประการหนึ่ง คือ ข้อแตกต่างในการออกแบบ ระหว่าง GATT Server และ GATT Client ของแต่ละอุปกรณ์
• GATT client – เป็นอุปกรณ์ที่เข้าถึงข้อมูลบน GATT server ด้วยวิธีการอ่าน, เขียน, กำหนด ( notify ) หรือระบุการดำเนินงาน ( indicate )
• GATT server – เป็นอุปกรณ์ที่ใช้ในส่วนเก็บข้อมูลในตัวเอง และให้วิธีการเข้าถึงข้อมูลกับ GATT client

GATT Protocol นี้จะไม่เหมือนกับ วิธี master/slave ที่กล่าวถึงข้างต้น
ในแต่ละอุปกรณ์ สามารถเป็นได้ทั้ง Server และ client ในเวลาเดียวกันได้ด้วย ขึ้นอยู่กับการออกแบบระบบโครงสร้างข้อมูลภายใน GATT ในแต่ละด้าน
ดังนั้น ไม่จำเป็นต้องให้อุปกรณ์ฝั่ง Slave เป็น GATT Server และอุปกรณ์ฝั่ง Master เป็น Client เท่านั้น

GATT Protocol ทำงานคนละส่วนกับ Master/Slave
Master/Slave เป็นการควบคุมจัดการ ติดต่อสื่อสาร
ส่วน Client/Server GATT เป็นวิธีการส่งข้อมูลถึงกันละกัน

bt40-ecosystem

การส่งข้อมูลถึงกัน
ตอนนี้เรารู้จักถึง ข้อแตกต่างระหว่าง Master / Slave และ GATT client / GATT server คราวนี้เราจะกำหนดโครงสร้าง GATT ได้อย่างไร และการส่งข้อมูลติดต่อกัน ระหว่าง device จาก device A ไปยัง device B จะเป็นอย่างไร

 

GATT Structure
Gatt database สามารถมีได้หลาย profiles แต่ละ profile ก็สามารถมีได้หลาย Service และใน service ก็จะมี characteristics

GATT_structure

ดังนั้น เราสามารถจะสร้าง profiles ,services และ characteristics ได้ตามที่ต้องการ
ซึ่งต้องสร้าง 128-bit UUIDs ของตัวเองขึ้นมา หรือ สร้างโดยการอ้างอิงกับ Bluetooth SIG
ตามการใช้งานจริง เราอาจจะใช้ทั้ง 2 ส่วน โดยการใช้ Bluetooth SIG ด้วย และสร้าง UUIDs โดยเฉพาะของตัวเองขึ้นมาด้วย
ใน GATT Server จะมี มาตรฐาน Generic Access Service ซึ่งภายในจะประกอบด้วย 2 characteristics ที่จำเป็นต้องใช้งาน คือ Device Name and Appearance ซึ่งเป็น ชื่อของอุปกรณ์ และ คลาสของอุปกรณ์ ที่ใช้กับ Classic Bluetooth

ble-profile

Attributes and Characteristics
ในบางครั้ง เราอาจจะได้ยินว่า หรือเห็นว่า การใช้คำว่า “attribute” and “characteristic” สลับกัน จึงทำให้เกิดความสับสน จำได้ไหมว่า Service จะประกอบไปด้วย characteristics หลายๆตัว
ซึ่งในแต่ละ characteristics ก็จะมี ค่าข้อมูล ค่าตัวแปร หรือ คุณลักษณะ ( attribute ) ที่แตกต่างกัน จำนวนไม่เท่ากัน ขึ้นอยู่กับโครงสร้างของ GATT Server
แต่ละ attribute จะได้รับ ค่าตัวเลขที่ไม่ซ้ำกัน ( unique number ) มาจาก GATT client เพื่อใช้ในการอ้างอิง ในแต่ละ Characteristics จะมี attribute หลักที่สามารถเข้าถึงข้อมูล และจัดเก็บข้อมูล ดังนั้นเมื่อเราอ่าน หรือ เขียนค่าใน Characteristic การอ่านเขียนนั้น ก็จะกระทำใน attribute หลัก
Attribute บางตัว อาจจะเป็นแบบ อ่านอย่างเดียว ( Read only ) อย่างเช่น ใน Characteristic User Description Attribute บางตัว ก็ควบคุมการทำงานของ Characteristic เช่น ใน Client Characteristic Configuration ซึ่งทำหน้าที่ เปิดการใช้งาน notify หรือ indicate
ในแต่ละ attribute จะมี UUID ซึ่งเป็นได้ทั้งแบบ 16 บิต ( เช่น “180A”) หรือ แบบ 128 บิต (เช่น “e7add780-b042-4876-aae1-112855353cc1″) จะถูกกำหนดโดย Bluetooth SIG และ 128-bit UUIDs สำหรับการนำไปใช้เฉพาะ เป็น custom characteristics สามารถกำหนด 128-bit UUIDs เองได้ด้วยโดยไม่ต้องผ่านการอนุมัติจาก Bluetooth SIG ก็ได้
16-bit UUIDs ที่ใช้บ่อยมี 2 ตัว
“2901” เป็น Characteristic User Description
“2902” เป็น Client Characteristic Configuration

มีส่วนคำคัญอีกอย่าง คือ UUIDs บางตัวสามารถซ้ำกันได้ด้วย แต่ความเป็นจริง จะไม่ได้ซ้ำกัน เพราะจะอยู่กัน คนละ Characteristic ตัวอย่างเช่น ในทุกๆ Client Characteristic Configuration จะมี UUID 0x2902 อยู่จำนวนมาก
แต่ UUID 0x2902 จะอยู่ในทุกๆ custom characteristics ที่ เรากำหนดขึ้นมาเอง ที่ มี 128-bit UUIDs ที่ไม่ซ้ำกันอยู่แล้ว
เราต้องไปดูโครงสร้าง GATT จริง ก็จะเข้าใจมากยิ่งขึ้น
Data Transfer Methods

มีการดำเนินงานขั้นพื้นฐาน 4 แบบ สำหรับการใช้งานข้อมูลใน BLE คือ: Read, Write, notify และ Indicate รูปแบบการติดต่อ BLE โปรโตคอลต้องการข้อมูล ขนาด 20 bytes เรียกว่า Data Payload Size หรือกรณีการอ่านข้อมูล ใช้ 22 bytes
BLE ถูกสร้างขึ้นสำหรับการใช้พลังงานต่ำ การส่งข้อมูลระยะสั้นๆ แบบ burst จะไม่ส่งออกมาบ่อยนัก ส่วนการส่งข้อมูลจำนวนมากก็พอได้ แต่จะมีประสิทธิภาพการส่งน้อยกว่า บลูทู ธ แบบ คลาสสิก เมื่อพยายามที่จะส่งด้วยความเร็วสูงสุด
การติดต่อสื่อสาร รับส่งข้อมูล เราก็จะลงลึก ในรายละเอียด การใช้คำสั่งต่างๆ ใน หัวข้อต่อไป

 

 

Bluetooth-Low-Energy3

ที่มา

https://bluegiga.zendesk.com/entries/25053373–REFERENCE-BLE-master-slave-GATT-client-server-and-data-RX-TX-basics

Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>