- คำศัพท์ที่เกี่ยวข้องกับ BLE (Bluetooth Low Energy)
- กำลังเตรียมฮาร์ดแวร์
- การเขียนโปรแกรม ESP32 สำหรับการระบุระดับแบตเตอรี่โดยใช้บริการ GATT
- ทดสอบบริการ GATT ของคุณบน ESP32 BLE
หูฟังไร้สายวงดนตรีออกกำลังกายลำโพงบลูทู ธ หูฟังชนิดใส่ในหูโทรศัพท์มือถือแล็ปท็อป… มีอุปกรณ์บลูทู ธ มากมายอยู่รอบตัวเราและอุปกรณ์เหล่านี้ส่วนใหญ่ใช้แบตเตอรี่ คุณเคยสงสัยบ้างไหมว่าเมื่อคุณเชื่อมต่ออุปกรณ์บลูทู ธ เข้ากับโทรศัพท์มือถือของคุณมันจะเข้าใจโดยอัตโนมัติว่าอุปกรณ์ที่เชื่อมต่อนั้นเป็นคอมพิวเตอร์หรืออุปกรณ์เสียงหรือโทรศัพท์มือถือได้อย่างไร? สำหรับอุปกรณ์บางอย่างโทรศัพท์ของเราอาจแสดงเปอร์เซ็นต์แบตเตอรี่ของอุปกรณ์ที่เชื่อมต่อโดยอัตโนมัติบนแถบการแจ้งเตือน ทั้งหมดนี้เกิดขึ้นเองได้อย่างไร? ควรมีโปรโตคอลที่ใช้ร่วมกันระหว่างโทรศัพท์และอุปกรณ์บลูทู ธ ถูกต้อง!
คอยขี้สงสัย, คุณจะได้คำตอบสำหรับคำถามเหล่านี้ในขณะที่เราพยายามที่จะเข้าใจบลูทู ธ พลังงานต่ำ (BLE สั้น) กับความนิยม ESP32 โมดูล ซึ่งแตกต่างจากบลูทู ธ แบบคลาสสิกใน ESP32 BLE จะทำงานเฉพาะเมื่อมีการเปิดใช้งานการสื่อสารและอยู่ในโหมดสลีปเท่านั้นจึงเป็นตัวเลือกที่เหมาะสมสำหรับแอปพลิเคชันที่ใช้พลังงานแบตเตอรี่ BLE ยังสามารถสร้างเครือข่ายตาข่ายและทำหน้าที่เป็นบีคอน โดยปกติโมดูล BLE ทำงานเป็นเซิร์ฟเวอร์หรือเป็นไคลเอนต์ที่นี่เราจะใช้ ESP32 BLE เป็นเซิร์ฟเวอร์
ที่นี่เราได้แบ่งESP32 Bluetooth ที่สมบูรณ์ออกเป็นสามส่วนเพื่อความสะดวกในการทำความเข้าใจ
1. Serial Bluetooth บน ESP32 สลับ LED จากโทรศัพท์มือถือ
2 . เซิร์ฟเวอร์ BLE เพื่อส่งข้อมูลระดับแบตเตอรี่ไปยังโทรศัพท์มือถือโดยใช้บริการ GATT
3. ไคลเอนต์ BLE เพื่อสแกนหาอุปกรณ์ BLE และทำหน้าที่เป็นสัญญาณเตือน
เราได้กล่าวถึงบทความแรกแล้ว ในบทความนี้เราจะได้เรียนรู้วิธีที่จะทำให้ ESP32 BLE การทำงานเป็นเซิร์ฟเวอร์และใช้บริการแกตต์ในการส่งข้อมูลระดับแบตเตอรี่ เพื่อวัตถุประสงค์ในการทดสอบเราจะส่งค่าฮาร์ดโค้ดจาก ESP32 เป็นเปอร์เซ็นต์แบตเตอรี่ไปยังโทรศัพท์มือถือของเราผ่านบริการ BLE GATT วิธีนี้มือถือของเราจะถือว่า ESP32 เป็นอุปกรณ์บลูทู ธ ที่ใช้แบตเตอรี่ซึ่งพยายามส่งไปยังเปอร์เซ็นต์แบตเตอรี่ ก่อนที่จะลงรายละเอียดเราจะอธิบายคำศัพท์บางคำที่เกี่ยวข้องกับ Bluetooth Low Energy
คำศัพท์ที่เกี่ยวข้องกับ BLE (Bluetooth Low Energy)
เซิร์ฟเวอร์ BLE:ตามที่บอกไว้ก่อนหน้านี้ BLE สามารถตั้งโปรแกรมให้ทำงานเป็นเซิร์ฟเวอร์หรือเป็นไคลเอนต์ เมื่อทำงานเป็นเซิร์ฟเวอร์ BLE สามารถให้ข้อมูลได้เท่านั้นไม่สามารถเริ่มการเชื่อมต่อได้ ตัวอย่างจะเป็นวงออกกำลังกาย เซิร์ฟเวอร์สามารถส่งข้อมูลได้ก็ต่อเมื่อไคลเอ็นต์ร้องขอ
โดยทั่วไปแล้ว BLE ของ ESP32 จะใช้กับเซิร์ฟเวอร์ แต่ละเซิร์ฟเวอร์จะมีบริการอย่างน้อยหนึ่งบริการอยู่ภายในและในทำนองเดียวกันแต่ละบริการจะมีลักษณะที่เกี่ยวข้องอย่างน้อยหนึ่งอย่าง ลักษณะอาจมีศูนย์ตัวบอกหนึ่งหรือมากกว่าหนึ่งตัวอยู่ข้างใน ทุกบริการลักษณะเฉพาะหรือตัวบอกจะมี ID เฉพาะที่กำหนดไว้ล่วงหน้าเรียกว่า UUID
ไคลเอนต์BLE:ไคลเอนต์สามารถสแกนเชื่อมต่อและฟังอุปกรณ์บลูทู ธ อื่น ๆ ตัวอย่างจะเป็นโทรศัพท์มือถือของคุณ โปรดทราบว่าอุปกรณ์ฮาร์ดแวร์ BLE ส่วนใหญ่สามารถทำงานเป็นเซิร์ฟเวอร์และเป็นไคลเอนต์ได้ซึ่งเป็นซอฟต์แวร์ที่กำหนดบทบาทของอุปกรณ์
อุปกรณ์ต่อพ่วง / อุปกรณ์กลาง: ในเครือข่าย BLE อาจมีอุปกรณ์ส่วนกลางเพียงเครื่องเดียว แต่สามารถมีอุปกรณ์ต่อพ่วงได้มากเท่าที่ต้องการ อุปกรณ์ส่วนกลางสามารถเชื่อมต่อกับอุปกรณ์ต่อพ่วงทั้งหมดได้ในเวลาเดียวกัน แต่อุปกรณ์ต่อพ่วงสามารถเชื่อมต่อกับอุปกรณ์ส่วนกลางเท่านั้นวิธีนี้จะไม่มีอุปกรณ์ต่อพ่วงสองเครื่องสามารถแชร์ข้อมูลระหว่างกันได้ ตัวอย่างที่ดีที่สุดสำหรับอุปกรณ์ส่วนกลางคือโทรศัพท์สมาร์ทโฟนของเราและสำหรับอุปกรณ์ต่อพ่วงจะเป็นหูฟังบลูทู ธ หรือแถบฟิตเนส
การโฆษณา BLE: โฆษณา BLE เป็นคำที่น่าสนใจในการสั่งให้ทุกคนมองเห็นอุปกรณ์บลูทู ธ เพื่อให้สามารถจับคู่และสร้างการเชื่อมต่อได้ถือได้ว่าเป็นการสื่อสารทางเดียว ที่นี่เซิร์ฟเวอร์เก็บข้อมูลโฆษณาโดยคาดว่าเซิร์ฟเวอร์จะได้รับ BLE Beacon เป็น BLE ประเภทหนึ่ง
UUID (Universal Unique Identifier):อุปกรณ์บลูทู ธ BLE ทุกตัวจะได้รับ Universal Unique Identifier Number เมื่อโปรแกรมเมอร์โปรแกรม คุณสามารถคิดว่าตัวระบุนี้เป็นลำดับของตัวเลขซึ่งแสดงถึงฟังก์ชัน / บทบาทของอุปกรณ์ BLE UUID มีสองประเภทอีกครั้ง หนึ่งคือบริการ UUIDและอื่น ๆ เป็นUUID ลักษณะ
บริการ GATT: GATT ย่อมาจาก Generic Attribute Profile; สิ่งนี้กำหนดวิธีมาตรฐานบางอย่างโดยใช้อุปกรณ์ BLE สองตัวที่ควรสื่อสารกันเสมอ โปรโตคอลแอตทริบิวต์ (ATT) นี้กำหนดไว้ล่วงหน้าและเป็นเรื่องปกติสำหรับอุปกรณ์ BLE ทั้งหมดดังนั้นด้วยวิธีนี้อุปกรณ์ BLE สองเครื่องจะสามารถระบุกันและกันได้ ดังนั้น GATT จึงเป็นคำตอบสำหรับคำถามก่อนหน้าของเรา
เทคนิคที่ใช้อุปกรณ์ BLE สองเครื่องควรส่งข้อมูลไปมาถูกกำหนดโดยแนวคิดที่เรียกว่าบริการและลักษณะ
คุณลักษณะของบริการ BLE / BLE: UUID ของบริการจะบอกให้เราทราบว่าอุปกรณ์ BLE กำลังจะดำเนินการประเภทใดและ UUID ลักษณะจะบอกว่าอะไรคือพารามิเตอร์หรือฟังก์ชันที่บริการนั้นจะดำเนินการ ดังนั้นทุกบริการจะมีลักษณะอย่างน้อยหนึ่งอย่างภายใต้พวกเขา ตกลง! โปรแกรมเมอร์รับ UUID นี้มาจากไหน? ทุก UUID ถูกกำหนดโดย GATT (Generic Attribute Profile) อยู่แล้วคุณสามารถเยี่ยมชมเว็บไซต์ของพวกเขาและเลือก UUID ตามที่จำเป็นสำหรับโครงการ ฉันรู้ว่ามันเด้งขึ้นมาบนหัวเรานิดหน่อย มาลองทำความเข้าใจกับตัวอย่าง
สมมติว่าเป็นอุปกรณ์ BLE ของเครื่องเล่นเสียง เริ่มแรกเมื่อคุณจับคู่กับโทรศัพท์โทรศัพท์ของคุณจะระบุว่าเป็นอุปกรณ์เสียงและยังแสดงระดับแบตเตอรี่บนแถบสถานะ ดังนั้นเพื่อให้สิ่งนี้เกิดขึ้นผู้เล่นเสียงต้องบอกโทรศัพท์ของคุณว่ายินดีที่จะแบ่งปันระดับแบตเตอรี่และเปอร์เซ็นต์การชาร์จที่มีอยู่ในแบตเตอรี่ สิ่งนี้ทำได้โดยใช้ UUID มี UUID เฉพาะที่บอกว่าลูกเต๋า BLE จะให้รายละเอียดเกี่ยวกับระดับแบตเตอรี่ UUID นี้ซึ่งบอกประเภทของบริการที่เรียกว่าService UUIDอีกครั้งอาจมีพารามิเตอร์มากมายที่ต้อง แลกเปลี่ยนกับการเติมเต็มเซอร์วิสเช่นมูลค่าของแบตเตอรี่อยู่ในพารามิเตอร์ดังกล่าวแต่ละพารามิเตอร์จะมี UUID ของตัวเองและสิ่งเหล่านี้เรียกว่าUUID ลักษณะฟังก์ชันทั่วไปที่ดำเนินการโดยลักษณะเฉพาะคืออ่านเขียนแจ้งและระบุ
BLE Descriptor: Descriptor เป็นแอตทริบิวต์ทางเลือกที่มีอยู่ภายใน Characteristic โดยปกติ Descriptor จะระบุวิธีการเข้าถึงลักษณะเฉพาะ
BLE Beacon:บลูทู ธ บีคอนเป็นเหมือนสวิตช์ความใกล้ชิดซึ่งดำเนินการบางอย่างที่กำหนดไว้ล่วงหน้าเมื่อผู้ใช้เข้าสู่ช่วง (ระยะใกล้) โฆษณาตัวตนตลอดเวลาจึงพร้อมที่จะจับคู่เสมอ
BLE2902:ฉันยังสงสัยเกี่ยวกับสิ่งนี้ แต่คุณสามารถคิดว่ามันเป็นซอฟต์แวร์ที่ฝั่งไคลเอนต์ที่แจ้งให้เซิร์ฟเวอร์เปิดหรือปิดการแจ้งเตือนสิ่งนี้จะช่วยเราในการประหยัดพลังงาน
หวังว่าคุณจะได้ทราบคร่าวๆข้อดีก็คือเราไม่จำเป็นต้องรู้อะไรมากนักเนื่องจากงานฝีมือทั้งหมดได้ทำเพื่อเราแล้วแม้ว่าห้องสมุด
กำลังเตรียมฮาร์ดแวร์
โครงการไม่จำเป็นต้องติดตั้งฮาร์ดแวร์ แต่ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มรายละเอียดบอร์ด ESP32 ใน Arduino IDE ของคุณแล้วและได้ลองใช้โปรแกรมกะพริบตัวอย่างขั้นต่ำเพื่อตรวจสอบว่าทุกอย่างทำงานตามที่คาดไว้หรือไม่ คุณไม่แน่ใจเกี่ยวกับวิธีการทำคุณสามารถทำตามการเริ่มต้นใช้งาน ESP32 ด้วย Arduino บทช่วยสอนเพื่อทำเช่นเดียวกัน
นอกจากนี้เพื่อทดสอบบริการ BLE เราจะใช้แอปพลิเคชัน nRF android บนมือถือของเราซึ่งสามารถดาวน์โหลดได้โดยตรงจาก PlayStore นอกจากนี้ยังมีให้บริการใน Itunes Store สำหรับผู้ใช้ iPhone หากคุณวางแผนที่จะทำงานกับ BLE เป็นเวลานานแอปพลิเคชันนี้จะมีประโยชน์สำหรับการดีบัก
การเขียนโปรแกรม ESP32 สำหรับการระบุระดับแบตเตอรี่โดยใช้บริการ GATT
ในตอนนี้ฉันคิดว่าคุณมีความคิดที่ยุติธรรมเกี่ยวกับบริการ GATT และวิธีการใช้งานโดยใช้บริการและรูปแบบลักษณะเฉพาะ ตอนนี้ให้เราดำน้ำในโปรแกรมเพื่อเรียนรู้วิธีการใช้งานใน ESP32 โดยใช้ Arduino IDE ก่อนที่เราจะดำเนินการต่อฉันต้องการใช้พื้นที่นี้เพื่อขอบคุณ Andreas Spiess สำหรับวิดีโอ BLE ของเขาซึ่งทำให้หลาย ๆ อย่างชัดเจนในด้านของฉัน
เราเริ่มต้นโปรแกรมโดยการนำเข้าไลบรารีที่ต้องการลงในร่างของเรา มีหลายสิ่งหลายอย่างที่ต้องกำหนดค่าเพื่อใช้ฟังก์ชัน BLE ของ ESP32 หวังว่าจะต้องขอบคุณ Neil Kolban ที่ได้ทำงานหนักเพื่อเราและได้จัดหาไลบรารีให้แล้ว หากคุณต้องการเข้าใจการทำงานของไลบรารีคุณสามารถอ้างถึงเอกสารของเขาได้ที่หน้า github
# รวม
ต่อไปเราจะต้องกำหนดฟังก์ชัน Server Call-back สำหรับอุปกรณ์ Bluetooth ของเรา ก่อนหน้านั้นมาทำความเข้าใจกันก่อนว่าฟังก์ชันการโทรกลับใน BLE คืออะไร
ฟังก์ชันการโทรกลับใน BLE คืออะไร?
เมื่อBLE ทำงานในฐานะเซิร์ฟเวอร์สิ่งสำคัญคือต้องกำหนดฟังก์ชันเรียกกลับเซิร์ฟเวอร์ มีการเรียกกลับหลายประเภทที่เกี่ยวข้องกับ BLE แต่เพื่อให้เข้าใจง่ายคุณควรพิจารณาว่าสิ่งเหล่านี้เป็นการตอบรับที่กำลังดำเนินการเพื่อให้แน่ใจว่าการดำเนินการเสร็จสมบูรณ์ โทรกลับเซิร์ฟเวอร์ที่มีการใช้เพื่อให้แน่ใจว่าการเชื่อมต่อระหว่างไคลเอ็นต์และเซิร์ฟเวอร์จะจัดตั้งขึ้นประสบความสำเร็จ
เราใช้โค้ดบรรทัดต่อไปนี้เพื่อทำการเรียกกลับเซิร์ฟเวอร์
บูล _BLEClientConnected = false; คลาสMyServerCallbacks : สาธารณะ BLEServerCallbacks { โมฆะ onConnect (BLEServer * pServer) { _BLEClientConnected = true; }; เป็นโมฆะ onDisconnect (BLEServer * pServer) { _BLEClientConnected = false; } };
ภายในฟังก์ชัน การตั้งค่าเป็นโมฆะ เราจะเริ่มการสื่อสารแบบอนุกรมที่ 115200สำหรับการดีบักและจากนั้นเริ่มต้นอุปกรณ์บลูทู ธผ่านฟังก์ชัน InitBLE
การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); Serial.println ("ตัวบ่งชี้ระดับแบตเตอรี่ - BLE"); InitBLE (); }
initBLE เป็นสถานที่ที่ทุกมายากลที่เกิดขึ้น เราต้องสร้างเซิร์ฟเวอร์บลูทู ธ และใช้บริการระดับแบตเตอรี่ที่นี่ แต่ก่อนหน้านั้นเราต้องกำหนด UUID for Service, Characteristic and Descriptor สำหรับอ่านระดับแบตเตอรี่ UUID ทั้งหมดสามารถหาได้จากเว็บไซต์บริการ Bluetooth GATT ในกรณีของเราเราพยายามใช้บริการแบตเตอรี่และ UUID สำหรับมันถูกกำหนดเป็น 0X180F ดังที่แสดงด้านล่าง
ต่อไปเราต้องทราบลักษณะที่เกี่ยวข้องกับบริการนี้ หากต้องการทราบว่าเพียงคลิกที่บริการแบตเตอรี่และคุณจะเข้าสู่หน้าลักษณะการบริการซึ่งมีการกล่าวถึงระดับแบตเตอรี่เป็นชื่อของคุณลักษณะและใช้ค่าตั้งแต่ 0 ถึง 100 โปรดทราบว่าเราสามารถดำเนินการได้เพียงสอง การดำเนินการกับคุณลักษณะนี้อย่างหนึ่งคือการอ่านซึ่งจำเป็นต้องทำและอีกอย่างหนึ่งคือแจ้งให้ทราบซึ่งเป็นทางเลือก ดังนั้นเราจึงต้องส่งค่าแบตเตอรี่ไปยังไคลเอนต์ (โทรศัพท์) ซึ่งเป็นข้อบังคับและหากจำเป็นเราสามารถแจ้งให้โทรศัพท์ทราบว่าเป็นทางเลือกใด
แต่รอเรายังไม่พบค่า UUID สำหรับระดับแบตเตอรี่ลักษณะ ในการทำเช่นนั้นให้เข้าไปที่หน้าลักษณะแบตเตอรี่และค้นหาชื่อระดับแบตเตอรี่คุณจะพบ UUID เป็น 0X2A19 ภาพรวมของสิ่งเดียวกันจะแสดงด้านล่าง
ตอนนี้เรามีค่าทั้งหมดแล้วให้เราวางโปรแกรมดังที่แสดงด้านล่าง ชื่อ BatterySerivce , BatteryLevelCharacteristic และ BatteryLevelDescriptor เป็นตัวแปรที่ผู้ใช้กำหนดเพื่ออ้างถึง Service, Characteristic และ Descriptor ที่เราใช้ในโปรแกรม ค่าสำหรับ Descriptor 0X2901 ถูกใช้เมื่อขนาดของค่าเป็น 8 บิตข้อมูลเพิ่มเติมสามารถพบได้ในหน้า Descriptor Description
# กำหนดแบตเตอรี่บริการ BLEUUID ((uint16_t) 0x180F)
BLECharacteristic BatteryLevelCharacteristic (BLEUUID ((uint16_t) 0x2A19), BLECharacteristic :: PROPERTY_READ - BLECharacteristic :: PROPERTY_NOTIFY); BLEDescriptor BatteryLevelDescriptor (BLEUUID ((uint16_t) 0x2901));
กลับไปที่ฟังก์ชัน initBLE ก่อนอื่นเราต้องเริ่มต้นเซิร์ฟเวอร์ BLE และทำการโฆษณาด้วยชื่อ บรรทัดต่อไปนี้จะใช้ในการเริ่มต้น BLE เป็นเซิร์ฟเวอร์ ชื่อที่ฉันตั้งให้กับเซิร์ฟเวอร์ BLe ของฉันคือ“ BLE Battery” แต่คุณสามารถเลือกได้เอง
BLEDevice:: init ("แบตเตอรี่ BLE"); // สร้างเซิร์ฟเวอร์ BLE BLEServer * pServer = BLEDevice:: createServer (); pServer-> setCallbacks (MyServerCallbacks ใหม่ ());
ต่อไปเราต้องเริ่มบริการ GATTเนื่องจากเราได้กำหนด UUID แล้วเราสามารถเริ่มบริการได้โดยใช้บรรทัดด้านล่าง
// สร้างบริการ BLE BLEService * pBattery = pServer-> createService (BatteryService);
เมื่อบริการเริ่มต้นเราสามารถเชื่อมโยงตัวอธิบายกับลักษณะและตั้งค่าได้ นอกจากนี้ยังเพิ่มบริการ BLE2902 ที่นี่ดังที่แสดงด้านล่าง
pBattery-> addCharacteristic (& BatteryLevelCharacteristic); BatteryLevelDescriptor.setValue ("เปอร์เซ็นต์ 0 - 100"); BatteryLevelCharacteristic.addDescriptor (& BatteryLevelDescriptor); BatteryLevelCharacteristic.addDescriptor (ใหม่ BLE2902 ());
ในที่สุดทุกอย่างก็ถูกตั้งค่าตอนนี้สิ่งที่เหลือคือขอให้ ESP32 โฆษณาเพื่อให้อุปกรณ์อื่น ๆ เช่นโทรศัพท์ของเราสามารถค้นพบและเชื่อมต่อกับมันได้และเมื่อเชื่อมต่อกับไคลเอนต์ควรเริ่มบริการแบตเตอรี่ซึ่งสามารถทำได้แม้ว่า บรรทัดต่อไปนี้
pServer-> getAdvertising () -> addServiceUUID (BatteryService); pBattery-> เริ่มต้น (); // เริ่มโฆษณา pServer-> getAdvertising () -> start ();
นั่นเป็นสิ่งที่ดีมากขั้นตอนสุดท้ายคือการบอกผู้อธิบายว่ามูลค่าของแบตเตอรี่เป็นเปอร์เซ็นต์ที่ควรส่งไปยังไคลเอนต์ (โทรศัพท์) เป็นเท่าใด ค่านี้อาจอยู่ระหว่าง 0 -100 ตามที่เราอ่านก่อนหน้านี้เพื่อให้สิ่งต่างๆง่ายขึ้นฉันได้กำหนดค่าของแบตเตอรี่ให้เป็น 57 อย่างง่ายแล้วเพิ่มทุกๆ 5 วินาทีและเริ่มจาก 0 เมื่อถึง 100 รหัสที่ต้องทำ ที่แสดงด้านล่าง โปรดสังเกตว่าค่าที่กำลังส่งอยู่ในรูปแบบ unit8_t
uint8_t ระดับ = 57; โมฆะ loop () { BatteryLevelCharacteristic.setValue (& level, 1); BatteryLevelCharacteristic.notify (); ล่าช้า (5000); ระดับ ++; Serial.println (int (ระดับ)); ถ้า (int (ระดับ) == 100) ระดับ = 0; }
ทดสอบบริการ GATT ของคุณบน ESP32 BLE
รหัสสมบูรณ์อธิบายข้างต้นจะได้รับในตอนท้ายของหน้าอัปโหลดรหัสไปยังบอร์ด ESP32 ของคุณ เมื่ออัปโหลดโทรศัพท์ของคุณควรพบอุปกรณ์บลูทู ธ ที่เรียกว่า "BLE Battery" จับคู่กับอุปกรณ์ดังกล่าว
จากนั้นติดตั้งแอปพลิเคชัน nRF android แล้วเปิดและเชื่อมต่อกับอุปกรณ์ BLE Battery BLE ขยายส่วนบริการแบตเตอรี่และคุณจะพบหน้าจอต่อไปนี้
ดังที่คุณเห็นแอปพลิเคชันได้ระบุโดยอัตโนมัติว่า BLE ให้บริการแบตเตอรี่และมีลักษณะของระดับแบตเตอรี่เนื่องจาก UUID ที่เราใช้ในโปรแกรม คุณยังสามารถดูว่าค่าแบตเตอรี่ปัจจุบันที่ 67% รอ 5 วินาทีและคุณสามารถสังเกตได้ว่าค่าแบตเตอรี่เพิ่มขึ้น
สิ่งที่ยอดเยี่ยมเกี่ยวกับการใช้ BLE คือตอนนี้แอปพลิเคชันใด ๆ ที่ทำงานกับ BLE จะคิดว่า ESP32 ของคุณเป็นอุปกรณ์ BLE ที่แจ้งระดับแบตเตอรี่ ในการทดลองใช้ฉันใช้แอปพลิเคชันที่เรียกว่า BatONและแอปพลิเคชันระบุว่า ESP32 เป็นอุปกรณ์บลูทู ธ ที่ใช้แบตเตอรี่และแจ้งเตือนเปอร์เซ็นต์บนโทรศัพท์ของฉันเช่นนี้
เย็น!! ขวา? ผมได้แสดงยังมีการทำงานที่สมบูรณ์แบบในวิดีโอด้านล่างตอนนี้คุณได้เรียนรู้วิธีการใช้บริการ BLE Battery กับ ESP32 แล้วคุณสามารถลองใช้บริการ GATT อื่น ๆ ได้เช่นกันซึ่งน่าสนใจมากเช่น Pulse rate, HID, Heart Rate เป็นต้นขอให้สนุก….