Peripheral — vad är det, roll i BLE och hur det annonserar tjänster

Författare: IT Sectr Publicerad: 2026-07-15 Lästid: 9 min

Peripheral — är en enhet i Bluetooth Low Energy-arkitekturen som annonserar sina tjänster via advertising-paket och väntar på anslutning från Central. I IoT-ekosystemet är Peripheral vanligtvis en enhet med begränsad strömförbrukning: temperatursensor, smart lampa, fitnessarmband, beacon. Bluetooth Core Specification 5.4 (2023) definierar annonseringsprotokollet: Peripheral skickar periodiskt advertising-paket som innehåller enhetens namn, tjänstlista och användardata, medan Central skannar dessa paket och bestämmer om den ska ansluta. Efter att anslutningen etablerats fungerar Peripheral som en GATT-server och tillhandahåller tjänster och egenskaper för läsning och skrivning.

Huvudpunkter

  • Peripheral — en passiv BLE-enhet som annonserar tjänster och väntar på anslutning från Central.
  • Annonseringspaket (advertising) innehåller enhetens namn, tjänsters UUID, tillverkaruppgifter och RSSI för avståndsuppskattning.
  • Peripheral fungerar som GATT-server som lagrar tjänster och egenskaper för Central-åtkomst.
  • Strömförbrukningen för Peripheral kan vara från 5 µA i viloläge upp till 15 mA vid aktiv dataöverföring.
  • Efter anslutning kan Peripheral stänga av annonsering för att spara energi och slå på den igen vid behov.

Vad är Peripheral i BLE?

Peripheral — är en BLE-enhet som implementerar en GATT-server och annonserar sina möjligheter via advertising-kanaler. Till skillnad från Central, som aktivt söker efter enheter, väntar Peripheral passivt på anslutning. Detta är en asymmetrisk modell som är optimerad för energieffektivitet hos batteridrivna enheter.

Peripheral kan vara i flera lägen: advertising (annonsering), connected (ansluten till Central), sleeping (sömn med annonsering avstängd). I advertising-läget skickar Peripheral periodiskt korta datapaket med minimal strömförbrukning. Efter anslutning går Peripheral till connected-läget, där den utbyter data med Central enligt det överenskomna connection-intervallet.

Enligt Bluetooth Core Specification 5.4 (2023) kan en enhet dynamiskt växla mellan rollerna Peripheral och Central, men varje ögonblick är rollen för en anslutning fast. Ett typiskt scenario: en IoT-sensor arbetar ständigt i Peripheral-rollen och en smartphone hanterar anslutningen som Central.

Det är viktigt för utvecklaren att förstå: Peripheral bestämmer vilka tjänster och egenskaper som är tillgängliga och hanterar åtkomsten till dem. Strukturen på GATT-servern på Peripheral bestämmer vilka data Central kan läsa och vilka kommandon den kan skriva.

Annonseringsprocessen (Advertising)

Advertising (annonsering) — är mekanismen genom vilken Peripheral meddelar sin närvaro. Peripheral skickar advertising-paket på tre dedikerade kanaler (37, 38, 39) med ett intervall från 20 ms till 10.24 sekunder. Varje annonseringspaket innehåller fast information och kan inkludera valfria data.

Det finns två typer av annonseringspaket: advertising PDU (huvudpaket) och scan response PDU (svar på Central-förfrågan). Huvudpaketet innehåller obligatoriska fält: pakettyp, avsändarens adress, data. Om Central skickar en skanningsförfrågan (scan request) svarar Peripheral med ett extra paket som innehåller mer fullständig information — till exempel enhetens fullständiga namn.

Advertising-parametrar påverkar detekteringshastigheten och strömförbrukningen. Advertising-intervall — tiden mellan paketsändningar. Ju kortare intervall, desto snabbare upptäcker Central enheten, men desto mer energi förbrukar Peripheral. Rekommenderat intervall: 100–1000 ms för de flesta enheter.

ParameterIntervallPåverkanRekommendation
Advertising Interval20 ms – 10.24 sDetekteringshastighet, energi100–1000 ms för balans
Advertising Channels37, 38, 39DetekteringstillförlitlighetAlla 3 kanaler obligatoriskt
Tx Power−20 – +10 dBmRäckvidd, störningar0 dBm för inomhus, +4 dBm för utomhus
Advertising Timeout0 – 180 sekunderAnnonseringens varaktighet0 (oändligt) för beacons

Struktur för annonseringspaket

BLE-annonseringspaketet har en begränsning på 31 byte för advertising PDU och ytterligare 31 byte för scan response. Inuti paketet är data organiserade i AD Structure-format (Advertising Data Structure): varje fält har en typ (1 byte), längd (1 byte) och värde.

De mest använda AD Type: Flags (0x01) — anslutnings- och detekteringslägen, Local Name (0x08 eller 0x09) — enhetens namn, Service UUID List (0x02–0x07) — lista över tjänsters UUID, Manufacturer Specific Data (0xFF) — tillverkningsdata. Korrekt packning av data i ett 31-byte-paket är en viktig uppgift för utvecklaren av inbäddade enheter.

För enheter som behöver skicka mer data finns extended advertising (BLE 5.0+), som ökar annonseringspaketets storlek till 251 byte och lägger till nya pakettyper. Extended advertising stöder även kodade kanaler (coded PHY) för att öka räckvidden upp till 1 km på öppen yta.

När du utformar annonseringspaketet, tänk på: ju mer data i advertising-paketet, desto högre är sannolikheten för kollision med andra enheter. För snabb detektering rekommenderas att endast placera kritiska data (Service UUID) i advertising PDU och ytterligare data i scan response.

Peripheral som GATT-server

GATT-servern på Peripheral innehåller alla tjänster och egenskaper som Central kan upptäcka och interagera med. Efter anslutning upptäcker Central tjänster (discover services), sedan egenskaper (discover characteristics) och interagerar med dem via GATT-protokollet.

Peripheral som GATT-server måste korrekt behandla förfrågningar från Central: läsning (read request), skrivning (write request), notifieringar (notification) och bekräftade notifieringar (indication). Varje begäran passerar genom GATT-tabellen, där varje attribut (tjänst, egenskap, beskrivning) motsvarar ett Handle — en 16-bitars adress.

Utvecklaren av Peripheral bestämmer åtkomsträttigheterna för varje attribut: endast läsning, endast skrivning, läsning och skrivning, med eller utan kryptering. För konfidentiella data (personlig information, medicinska parametrar) rekommenderas att kräva kryptering via MITM Protection.

Peripheral i iOS: CBPeripheralManager

CBPeripheralManager — Core Bluetooth-klassen för att implementera Peripheral-rollen på iOS. Den hanterar GATT-servern, publicerar tjänster och egenskaper, behandlar förfrågningar från Central. Till skillnad från CBCentralManager skannar CBPeripheralManager inte — den annonserar bara och betjänar anslutningar.

Huvudstegen för att implementera Peripheral på iOS: initiera CBPeripheralManager, lägga till tjänster via add, starta annonsering via startAdvertising, behandla förfrågningar från Central via delegaten 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 tillåter Peripheral att arbeta i bakgrundsläge när bluetooth-peripheral-nyckeln finns i Background Modes. I bakgrunden kan iOS annonsera med en begränsad datamängd och betjäna anslutningar. För långvarig annonsering (mer än 180 sekunder), använd alternativet CBAdvertisementDataWaitForResponseFromCentral för att spara energi.

Peripheral i Android: BluetoothLeAdvertiser

Android tillhandahåller BluetoothLeAdvertiser för arbete i Peripheral-rollen (från API 21). API:et gör det möjligt att starta annonsering med konfigurerbara parametrar: sändareffekt, annonseringsintervall, paketdata. Android stöder även extended advertising (BLE 5.0) på kompatibla enheter.

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
    );
}

På Android beror stödet för Peripheral på tillverkaren och OS-versionen. Alla enheter stöder inte BluetoothLeAdvertiser — kontrollera via adapter.isMultipleAdvertisementSupported(). Från och med Android 10 krävs behörigheten BLUETOOTH_ADVERTISE för att arbeta i Peripheral-rollen, samt en körningsförfrågan för appar med target SDK 31+.

Energieffektivitet för Peripheral

Energieffektivitet — den viktigaste fördelen med BLE, och Peripheral spelar huvudrollen i detta. Enheten kan fungera på ett CR2032-batteri (220 mAh) i mer än ett år tack vare optimerad strömförbrukning. Peripheral tillbringar större delen av tiden i sömnläge med avstängd annonsering och vaknar bara för att skicka ett annonseringspaket eller behandla en förfrågan från Central.

Strömförbrukningen för Peripheral i olika lägen: sömnläge (deep sleep) — 1–5 µA, idle med timer påslagen — 10–50 µA, advertising — 5–15 mA (under paketsändning), connected — 5–10 mA (under connection event). Vid advertising-intervall 1000 ms och paketvaraktighet 4 ms är medelströmmen cirka 50–100 µA.

Enligt Texas Instruments Application Report (SWRA478, 2024) minskar optimering av advertising-intervallet från 100 ms till 1000 ms den genomsnittliga strömförbrukningen med 90%. Ytterligare besparingar uppnås genom att använda slave latency (hoppa över connection events), minska Tx Power på korta avstånd och stänga av annonsering efter anslutning (connectable advertising).

Vanliga frågor

Kan Peripheral initiera dataöverföring?

Ja, genom mekanismen för notifieringar (Notify/Indicate). Även om initiativtagaren till anslutningen alltid är Central, kan Peripheral efter anslutning skicka data via GATT-notifieringar utan uttrycklig begäran från Central. För detta måste Central prenumerera i förväg via CCCD.

Hur länge kan Peripheral annonsera?

Annonseringens varaktighet är inte begränsad av specifikationen, men i praktiken begränsas den av batteriets energi. På iOS kan Peripheral annonsera i bakgrunden i högst 180 sekunder per session utan extra inställningar. På Android kan annonsering fungera obegränsat, men förkortar avsevärt batteritiden.

Hur minskar man strömförbrukningen för Peripheral utan att förlora funktionalitet?

Öka advertising-intervallet (rekommenderas 500–1000 ms), använd slave latency för att hoppa över connection events, stäng av annonsering efter anslutning och välj den minimala Tx Power som räcker för stabil kommunikation på önskat avstånd.

Vad är non-connectable advertising och vad används det till?

Non-connectable advertising — ett läge där Peripheral annonserar men inte accepterar anslutningsförfrågningar. Används för beacons som endast sänder data (till exempel butiksidentifierare) utan att upprätta tvåvägskommunikation. Sparar energi jämfört med connectable advertising.

Vilka data kan skickas i annonseringspaketet (31 byte)?

I 31 byte kan man inkludera: flaggor (3 byte), enhetsnamn (upp till 28 byte i förkortad form), lista över tjänsters UUID (2–16 byte per UUID), tillverkningsdata (upp till 26 byte). Optimal strategi — placera tjänsters UUID i advertising PDU för filtrering och fullständigt namn i scan response.

Sammanfattning

  • Peripheral — BLE GATT-server som annonserar sina tjänster och väntar på anslutning från Central för datautbyte.
  • Annonseringspaket skickas på kanalerna 37, 38, 39 med intervall från 20 ms till 10.24 s och är begränsade till 31 byte data.
  • Peripheral lagrar tjänster och egenskaper i GATT-tabellen och ger Central tillgång till data via läsning, skrivning och notifieringar.
  • På iOS implementeras Peripheral via CBPeripheralManager, på Android — via BluetoothLeAdvertiser med GATT-server.
  • Strömförbrukningen för Peripheral i sömnläge är 1–5 µA, vilket möjliggör drift upp till ett år på ett CR2032-batteri.
  • Optimering av advertising-intervall och slave latency kan minska strömförbrukningen med upp till 90% utan funktionsförlust.
  • Korrekt struktur på annonseringspaketet och GATT-servern bestämmer kompatibiliteten, detekteringshastigheten och effektiviteten hos BLE-enheten.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också