Peripheral — คืออะไร บทบาทใน BLE และวิธีการโฆษณาบริการ

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-07-15 เวลาอ่าน: 9 นาที

Peripheral — คืออุปกรณ์ในสถาปัตยกรรม Bluetooth Low Energy ที่โฆษณาบริการของตนผ่านแพ็กเก็ต advertising และรอการเชื่อมต่อจาก Central ในระบบนิเวศ IoT Peripheral — มักจะเป็นอุปกรณ์ที่ใช้พลังงานจำกัด: เซ็นเซอร์วัดอุณหภูมิ หลอดไฟอัจฉริยะ สายรัดข้อมือฟิตเนส บีคอน (Beacon) Bluetooth Core Specification 5.4 (2023) กำหนดโปรโตคอลการโฆษณา: Peripheral จะส่งแพ็กเก็ต advertising เป็นระยะ ซึ่งประกอบด้วยชื่ออุปกรณ์ รายการบริการ และข้อมูลผู้ใช้ ส่วน Central จะสแกนแพ็กเก็ตเหล่านี้และตัดสินใจว่าจะเชื่อมต่อหรือไม่ หลังจากสร้างการเชื่อมต่อแล้ว Peripheral จะทำหน้าที่เป็น GATT-เซิร์ฟเวอร์ โดยให้บริการและคุณลักษณะสำหรับการอ่านและเขียน

ประเด็นสำคัญ

  • Peripheral — คืออุปกรณ์ BLE แบบพาสซีฟที่โฆษณาบริการและรอการเชื่อมต่อจาก Central
  • แพ็กเก็ตโฆษณา (advertising) ประกอบด้วย ชื่ออุปกรณ์, UUID ของบริการ, ข้อมูลผู้ผลิต และ RSSI สำหรับประเมินระยะทาง
  • Peripheral ทำหน้าที่เป็น GATT-เซิร์ฟเวอร์ ซึ่งเก็บบริการและคุณลักษณะสำหรับการเข้าถึงของ Central
  • การใช้พลังงานของ Peripheral สามารถอยู่ระหว่าง 5 µA ในโหมดสลีปถึง 15 mA เมื่อมีการส่งข้อมูลอย่าง-active
  • หลังจากเชื่อมต่อ Peripheral สามารถ ปิดการโฆษณา เพื่อประหยัดพลังงานและเปิดอีกครั้งเมื่อจำเป็น

Peripheral ใน BLE คืออะไร?

Peripheral — คืออุปกรณ์ BLE ที่ implement GATT-เซิร์ฟเวอร์และโฆษณาความสามารถของตนผ่านช่องสัญญาณ advertising แตกต่างจาก Central ที่ค้นหาอุปกรณ์อย่าง-active Peripheral จะรอการเชื่อมต่อแบบพาสซีฟ นี่คือโมเดลแบบอสมมาตรที่ถูกปรับให้เหมาะสมสำหรับประสิทธิภาพการใช้พลังงานของอุปกรณ์ที่ใช้แบตเตอรี่

Peripheral สามารถอยู่ในหลายโหมด: advertising (การโฆษณา), connected (เชื่อมต่อกับ Central), sleeping (สลีปโดยปิดการโฆษณา) ในโหมด advertising Peripheral จะส่งแพ็กเก็ตข้อมูลสั้น ๆ เป็นระยะ โดยใช้พลังงานน้อยที่สุด หลังจากเชื่อมต่อ Peripheral จะเปลี่ยนเป็นโหมด connected ซึ่งจะแลกเปลี่ยนข้อมูลกับ Central ตาม connection interval ที่ตกลงร่วมกัน

ตาม Bluetooth Core Specification 5.4 (2023) อุปกรณ์สามารถสลับระหว่างบทบาท Peripheral และ Central ได้อย่างไดนามิก แต่ในแต่ละช่วงเวลาสำหรับการเชื่อมต่อหนึ่งบทบาทจะถูกกำหนดคงที่ สถานการณ์ทั่วไป: เซ็นเซอร์ IoT ทำงานในบทบาท Peripheral อย่างต่อเนื่อง ในขณะที่สมาร์ทโฟนจัดการการเชื่อมต่อในฐานะ Central

นักพัฒนาควรเข้าใจ: Peripheral เป็นตัวกำหนดว่า บริการและคุณลักษณะใดบ้างที่พร้อมใช้งาน และจัดการการเข้าถึงบริการเหล่านั้น โครงสร้าง GATT-เซิร์ฟเวอร์บน Peripheral กำหนดว่า Central สามารถอ่านข้อมูลใดและเขียนคำสั่งใดได้บ้าง

กระบวนการโฆษณา (Advertising)

Advertising (การโฆษณา) — เป็นกลไกที่ Peripheral ใช้ประกาศการมีอยู่ของตน Peripheral จะส่งแพ็กเก็ต advertising บนช่องสัญญาณที่กำหนดสามช่อง (37, 38, 39) ด้วยช่วงเวลาตั้งแต่ 20 ms ถึง 10.24 วินาที แต่ละแพ็กเก็ตโฆษณาประกอบด้วยข้อมูลคงที่และสามารถรวมข้อมูลเพิ่มเติมได้

แพ็กเก็ตโฆษณามีสองประเภท: advertising PDU (แพ็กเก็ตหลัก) และ scan response PDU (การตอบสนองต่อคำขอของ Central) แพ็กเก็ตหลักประกอบด้วยฟิลด์บังคับ: ประเภทแพ็กเก็ต ที่อยู่ผู้ส่ง ข้อมูล หาก Central ส่ง scan request Peripheral จะตอบกลับด้วยแพ็กเก็ตเพิ่มเติมที่มีข้อมูลครบถ้วนมากขึ้น — เช่น ชื่อเต็มของอุปกรณ์

พารามิเตอร์ advertising ส่งผลต่อความเร็วในการตรวจจับและการใช้พลังงาน Advertising interval — คือเวลาระหว่างการส่งแพ็กเก็ต ยิ่งช่วงเวลาสั้นเท่าใด Central ก็จะตรวจจับอุปกรณ์ได้เร็วขึ้นเท่านั้น แต่ Peripheral จะใช้พลังงานมากขึ้น ช่วงเวลาที่แนะนำ: 100–1000 ms สำหรับอุปกรณ์ส่วนใหญ่

พารามิเตอร์ช่วงผลกระทบคำแนะนำ
Advertising Interval20 ms – 10.24 sความเร็วในการตรวจจับ, พลังงาน100–1000 ms เพื่อความสมดุล
Advertising Channels37, 38, 39ความน่าเชื่อถือในการตรวจจับทั้ง 3 ช่องสัญญาณจำเป็น
Tx Power-20 – +10 dBmระยะทาง, การรบกวน0 dBm สำหรับภายใน, +4 dBm สำหรับภายนอก
Advertising Timeout0 – 180 วินาทีระยะเวลาการโฆษณา0 (ไม่จำกัด) สำหรับบีคอน

โครงสร้างของแพ็กเก็ตโฆษณา

แพ็กเก็ตโฆษณา BLE มีข้อจำกัดที่ 31 ไบต์สำหรับ advertising PDU และอีก 31 ไบต์สำหรับ scan response ภายในแพ็กเก็ตข้อมูลถูกจัดระเบียบในรูปแบบ AD Structure (Advertising Data Structure): แต่ละฟิลด์มีประเภท (1 ไบต์), ความยาว (1 ไบต์) และค่า

AD Type ที่ใช้บ่อยที่สุด: Flags (0x01) — โหมดการเชื่อมต่อและการตรวจจับ, Local Name (0x08 หรือ 0x09) — ชื่ออุปกรณ์, Service UUID List (0x02–0x07) — รายการ UUID ของบริการ, Manufacturer Specific Data (0xFF) — ข้อมูลผู้ผลิต การบรรจุข้อมูลในแพ็กเก็ต 31 ไบต์อย่างถูกต้องเป็นงานสำคัญของนักพัฒนาอุปกรณ์ฝังตัว

สำหรับอุปกรณ์ที่ต้องการส่งข้อมูลมากขึ้น มี extended advertising (BLE 5.0+) ซึ่งเพิ่มขนาดแพ็กเก็ตโฆษณาเป็น 251 ไบต์และเพิ่มประเภทแพ็กเก็ตใหม่ Extended advertising ยังรองรับช่องสัญญาณแบบเข้ารหัส (coded PHY) เพื่อเพิ่มระยะทางสูงสุด 1 กม. ในพื้นที่เปิด

เมื่อออกแบบแพ็กเก็ตโฆษณาให้พิจารณา: ยิ่งมีข้อมูลใน advertising-แพ็กเก็ตมากเท่าใด โอกาสเกิดการชนกับอุปกรณ์อื่นก็ยิ่งสูงขึ้นเท่านั้น สำหรับการตรวจจับที่รวดเร็ว แนะนำให้ใส่เฉพาะ ข้อมูลสำคัญ (Service UUID) ใน advertising PDU และข้อมูลเพิ่มเติมใน scan response

Peripheral ในฐานะ GATT-เซิร์ฟเวอร์

GATT-เซิร์ฟเวอร์ บน Peripheral ประกอบด้วยบริการและคุณลักษณะทั้งหมดที่ Central สามารถค้นพบและโต้ตอบได้ หลังจากเชื่อมต่อ Central จะค้นพบบริการ (discover services) จากนั้นค้นพบคุณลักษณะ (discover characteristics) และโต้ตอบกับบริการเหล่านั้นผ่าน GATT-โปรโตคอล

Peripheral ในฐานะ GATT-เซิร์ฟเวอร์ต้องประมวลผลคำขอจาก Central อย่างถูกต้อง: การอ่าน (read request), การเขียน (write request), การแจ้งเตือน (notification) และการแจ้งเตือนแบบยืนยัน (indication) แต่ละคำขอผ่าน GATT-ตาราง ซึ่งแต่ละแอตทริบิวต์ (บริการ, คุณลักษณะ, descriptor) จะมี Handle — ที่อยู่ 16-บิต

นักพัฒนา Peripheral กำหนด สิทธิ์การเข้าถึง สำหรับแต่ละแอตทริบิวต์: อ่านอย่างเดียว, เขียนอย่างเดียว, อ่านและเขียน, พร้อมการเข้ารหัสหรือไม่ สำหรับข้อมูลที่ละเอียดอ่อน (ข้อมูลส่วนบุคคล, ตัวชี้วัดทางการแพทย์) แนะนำให้เปิดใช้งานการเข้ารหัสผ่าน MITM Protection

Peripheral ใน iOS: CBPeripheralManager

CBPeripheralManager — คลาสของ Core Bluetooth สำหรับการ implement บทบาท Peripheral บน iOS โดยจัดการ GATT-เซิร์ฟเวอร์ เผยแพร่บริการและคุณลักษณะ ประมวลผลคำขอจาก Central แตกต่างจาก CBCentralManager ตรงที่ CBPeripheralManager ไม่สแกน — มันเพียงโฆษณาและให้บริการการเชื่อมต่อเท่านั้น

ขั้นตอนหลักในการ implement Peripheral บน iOS: เริ่มต้น CBPeripheralManager, เพิ่มบริการผ่าน add, เริ่มการโฆษณาผ่าน startAdvertising, ประมวลผลคำขอจาก Central ผ่าน delegate CBPeripheralManagerDelegate

swift
import CoreBluetooth

class BLEPeripheralManager: NSObject, CBPeripheralManagerDelegate {

    private var peripheralManager: CBPeripheralManager!

    func startAdvertising() {
        let advertisementData: [String: Any] = [
            CBAdvertisementDataLocalNameKey: "BLE Sensor",
            CBAdvertisementDataServiceUUIDsKey: [
                CBUUID("180F")
            ]
        ]
        peripheralManager.startAdvertising(advertisementData)
    }

    func peripheralManagerDidUpdateState(
        _ peripheral: CBPeripheralManager
    ) {
        if peripheral.state == .poweredOn {
            startAdvertising()
        }
    }
}

iOS อนุญาตให้ Peripheral ทำงานใน โหมดพื้นหลัง หากมีคีย์ bluetooth-peripheral ใน Background Modes ในพื้นหลัง iOS สามารถโฆษณาด้วยข้อมูลที่จำกัดและให้บริการการเชื่อมต่อ สำหรับการโฆษณาที่ยาวนาน (มากกว่า 180 วินาที) ให้ใช้ตัวเลือก CBAdvertisementDataWaitForResponseFromCentral เพื่อประหยัดพลังงาน

Peripheral ใน Android: BluetoothLeAdvertiser

Android มี BluetoothLeAdvertiser สำหรับการทำงานในบทบาท Peripheral (ตั้งแต่ API 21) API อนุญาตให้เริ่มการโฆษณาด้วยพารามิเตอร์ที่ปรับแต่งได้: กำลังส่ง, ช่วงเวลาโฆษณา, ข้อมูลแพ็กเก็ต Android ยังรองรับ extended advertising (BLE 5.0) บนอุปกรณ์ที่เข้ากันได้

java
import android.bluetooth.le.*;

private BluetoothLeAdvertiser advertiser;

public void startPeripheral() {
    BluetoothAdapter adapter =
        BluetoothAdapter.getDefaultAdapter();
    advertiser = adapter.getBluetoothLeAdvertiser();

    AdvertiseData data = new AdvertiseData.Builder()
        .setIncludeDeviceName(true)
        .addServiceUuid(
            new ParcelUuid(
                UUID.fromString("0000180F-0000-1000-8000-00805F9B34FB")
            )
        )
        .build();

    AdvertiseSettings settings = new AdvertiseSettings.Builder()
        .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER)
        .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
        .build();

    advertiser.startAdvertising(
        settings, data, advertiseCallback
    );
}

บน Android การรองรับ Peripheral ขึ้นอยู่กับ ผู้ผลิตและเวอร์ชัน OS อุปกรณ์บางรุ่นไม่รองรับ BluetoothLeAdvertiser — ให้ตรวจสอบผ่าน adapter.isMultipleAdvertisementSupported() ตั้งแต่ Android 10 เป็นต้นไป จำเป็นต้องมีสิทธิ์ BLUETOOTH_ADVERTISE สำหรับการทำงานในบทบาท Peripheral รวมถึงคำขอ runtime สำหรับแอปที่มี target SDK 31+

ประสิทธิภาพการใช้พลังงานของ Peripheral

ประสิทธิภาพการใช้พลังงาน — คือข้อได้เปรียบหลักของ BLE และ Peripheral มีบทบาทสำคัญในเรื่องนี้ อุปกรณ์สามารถทำงานจากแบตเตอรี่ CR2032 (220 mAh) ได้นานกว่าหนึ่งปีด้วยการใช้พลังงานที่ปรับให้เหมาะสม โดยส่วนใหญ่ Peripheral จะอยู่ในโหมดสลีปโดยปิดการโฆษณา จะตื่นขึ้นมาเฉพาะเมื่อต้องส่งแพ็กเก็ตโฆษณาหรือประมวลผลคำขอจาก Central

การใช้พลังงานของ Peripheral ในโหมดต่าง ๆ: โหมดสลีปลึก (deep sleep) — 1–5 µA, idle พร้อมตัวจับเวลา — 10–50 µA, advertising — 5–15 mA (ในช่วงเวลาส่งแพ็กเก็ต), connected — 5–10 mA (ในช่วง connection event) ที่ advertising interval 1000 ms และระยะเวลาแพ็กเก็ต 4 ms กระแสเฉลี่ยอยู่ที่ประมาณ 50–100 µA

ตาม Texas Instruments Application Report (SWRA478, 2024) การปรับ advertising interval จาก 100 ms เป็น 1000 ms ช่วยลดการใช้พลังงานเฉลี่ยลง 90% การประหยัดเพิ่มเติมทำได้โดยใช้ slave latency (การข้าม connection events), การลด Tx Power ในระยะใกล้ และการปิดโฆษณาหลังการเชื่อมต่อ (connectable advertising)

คำถามที่พบบ่อย

Peripheral สามารถเริ่มส่งข้อมูลได้หรือไม่?

ได้ ผ่านกลไก การแจ้งเตือน (Notify/Indicate) แม้ว่าผู้เริ่มต้นการเชื่อมต่อจะเป็น Central เสมอ แต่หลังจากเชื่อมต่อแล้ว Peripheral สามารถส่งข้อมูลผ่าน GATT-การแจ้งเตือนโดยไม่ต้องมีคำขอชัดเจนจาก Central โดย Central ต้องสมัครสมาชิกล่วงหน้าผ่าน CCCD

Peripheral สามารถโฆษณาได้นานเท่าใด?

ระยะเวลาการโฆษณาไม่ได้ถูกจำกัดโดยข้อกำหนด แต่ในทางปฏิบัติถูกจำกัดโดย พลังงานแบตเตอรี่ ใน iOS Peripheral สามารถโฆษณาในพื้นหลังได้ไม่เกิน 180 วินาทีต่อเซสชันโดยไม่ต้องตั้งค่าเพิ่มเติม บน Android การโฆษณาสามารถทำงานได้ไม่จำกัด แต่จะลดอายุการใช้งานแบตเตอรี่อย่างมาก

จะลดการใช้พลังงานของ Peripheral โดยไม่สูญเสียฟังก์ชันการทำงานได้อย่างไร?

เพิ่ม advertising interval (แนะนำ 500–1000 ms), ใช้ slave latency เพื่อข้าม connection events, ปิดโฆษณาหลังการเชื่อมต่อ และเลือก Tx Power ขั้นต่ำที่เพียงพอสำหรับการสื่อสารที่เสถียรในระยะที่ต้องการ

non-connectable advertising คืออะไรและใช้ทำอะไร?

Non-connectable advertising — คือโหมดที่ Peripheral โฆษณาแต่ไม่รับคำขอเชื่อมต่อ ใช้สำหรับบีคอน (Beacon) ที่ส่งข้อมูลเท่านั้น (เช่น ตัวระบุร้านค้า) โดยไม่ต้องสร้างการเชื่อมต่อสองทาง ประหยัดพลังงานเมื่อเทียบกับ connectable advertising

ข้อมูลใดบ้างที่สามารถส่งในแพ็กเก็ตโฆษณา (31 ไบต์)?

ใน 31 ไบต์สามารถรวม: แฟล็ก (3 ไบต์), ชื่ออุปกรณ์ (สูงสุด 28 ไบต์ในรูปแบบย่อ), รายการ UUID ของบริการ (2–16 ไบต์ต่อ UUID), ข้อมูลผู้ผลิต (สูงสุด 26 ไบต์) กลยุทธ์ที่เหมาะสมที่สุด — ใส่ UUID ของบริการใน advertising PDU สำหรับการกรอง และชื่อเต็มใน scan response

สรุป

  • Peripheral — คือ GATT-เซิร์ฟเวอร์ BLE ที่โฆษณาบริการของตนและรอการเชื่อมต่อจาก Central เพื่อแลกเปลี่ยนข้อมูล
  • แพ็กเก็ตโฆษณาถูกส่งบนช่องสัญญาณ 37, 38, 39 ด้วย ช่วงเวลา 20 ms ถึง 10.24 s และจำกัดที่ 31 ไบต์ข้อมูล
  • Peripheral เก็บ บริการและคุณลักษณะ ใน GATT-ตาราง โดยให้ Central เข้าถึงข้อมูลผ่านการอ่าน การเขียน และการแจ้งเตือน
  • ใน iOS Peripheral ถูก implement ผ่าน CBPeripheralManager, ใน Android — ผ่าน BluetoothLeAdvertiser พร้อม GATT-เซิร์ฟเวอร์
  • การใช้พลังงานของ Peripheral ในโหมดสลีปอยู่ที่ 1–5 µA ซึ่งช่วยให้ทำงานได้นานถึงหนึ่งปีจากแบตเตอรี่ CR2032
  • การปรับ advertising interval และ slave latency สามารถลด การใช้พลังงานลงได้ถึง 90% โดยไม่สูญเสียฟังก์ชันการทำงาน
  • โครงสร้างที่ถูกต้องของแพ็กเก็ตโฆษณาและ GATT-เซิร์ฟเวอร์กำหนด ความเข้ากันได้ ความเร็วในการตรวจจับ และประสิทธิภาพของอุปกรณ์ BLE

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม