Advertising (reklam), Bluetooth Low Energy'de bir Peripheral cihazının üç özel kanalda (37, 38, 39) kısa veri paketleri ileterek varlığını duyurduğu bir mekanizmadır. Bluetooth Core Specification 5.4 (2023) iki tür reklam tanımlar: connectable — cihaz bağlantıya hazırdır ve non-connectable — çift yönlü iletişim kurmadan yalnızca veri ileten işaretçiler (Beacon) tarafından kullanılır. Reklam parametreleri — 20 ms ila 10,24 s arası aralık, -20 ila +10 dBm arası verici gücü ve paket türü — cihazın keşfedilme hızını ve güç tüketimini doğrudan etkiler; bu, pille çalışan IoT cihazlarının geliştirilmesinde kritik öneme sahiptir.
Önemli Noktalar
Advertising (reklam), bir BLE cihazının kısa veri paketlerini periyodik olarak ileterek varlığını ve kullanılabilirliğini duyurduğu süreçtir. Cihaz keşfinin saniyeler sürdüğü klasik Bluetooth'un aksine, BLE reklamı, minimum güç tüketirken bir cihazın milisaniyeler içinde keşfedilmesini sağlar.
BLE mimarisi cihazları iki role ayırır: Peripheral (reklam yapar) ve Central (tarar). Peripheral reklam paketleri gönderirken, Central havayı tarar ve bağlanıp bağlanmayacağına karar verir. Bu asimetrik model BLE'nin önemli bir avantajıdır: reklam veren cihaz, sürekli havayı dinlemek yerine yalnızca kısa paketler göndermek için enerji harcar.
Reklam süreci üç aşamadan oluşur: advertising event (paketin üç kanalda da gönderilmesi), scan request/response (Central ile isteğe bağlı değişim) ve connection request (Central tarafından bağlantı başlatma). Her aşama Link Layer seviyesinde Bluetooth Controller tarafından yönetilir.
BLE, 2,4 GHz bandında 40 kanal kullanır; bunlardan 37 (2402 MHz), 38 (2426 MHz) ve 39 (2480 MHz) yalnızca reklam için ayrılmıştır. Üç kanal, keşif güvenilirliği ve verim arasında bir uzlaşmadır: bir kanal Wi-Fi veya diğer parazitler tarafından meşgul olabilir, ancak cihaz diğer ikisinde keşfedilecektir.
Kanal 37, Wi-Fi kanal 1'in yanında, kanal 39, Wi-Fi kanal 6'nın yanında ve kanal 38, minimum parazit bölgesinde ikisinin arasında yer alır. Üç kanalın seçimi, cihazın yoğun radyo ortamlarında bile keşfedilmesini sağlar — örneğin, düzinelerce Wi-Fi erişim noktası olan bir alışveriş merkezinde.
Peripheral, reklam paketini sırayla üç kanalda da gönderir — buna advertising event denir. Merkezi cihaz, Bluetooth Controller'da uygulanan bir algoritmaya göre aralarında geçiş yaparak her seferinde bir kanalı tarar. Çarpışma olmadığında tek bir advertising event içinde keşif olasılığı %100'e yakındır.
Bluetooth Core Specification, her biri kendi amacına sahip birkaç tür reklam PDU'su (Protocol Data Unit) tanımlar. Ana türler şunlardır: ADV_IND (connectable undirected advertising) — bağlantı yeteneği olan standart reklam, ADV_NONCONN_IND (non-connectable undirected advertising) — bağlantısız yalnızca reklam, ADV_SCAN_IND (scannable undirected advertising) — tarama isteğini destekler, ADV_DIRECT_IND (directed advertising) — belirli bir Central için reklam.
ADV_IND, çoğu BLE cihazında kullanılan en yaygın türdür. ADV_IND alındığında, Central bir bağlantı isteği gönderebilir ve bağlantı kurabilir. ADV_NONCONN_IND işaretçilerde (Beacon) kullanılır: cihaz reklam yapar ancak bağlantı isteklerini kabul etmez — yalnızca tek yönlü veri iletimi.
| PDU Türü | Açıklama | Bağlantı | Scan response |
|---|---|---|---|
| ADV_IND | Standart reklam | Evet | Evet |
| ADV_DIRECT_IND | Belirli bir Central'a reklam | Evet | Hayır |
| ADV_NONCONN_IND | Bağlantısız (işaretçiler) | Hayır | Hayır |
| ADV_SCAN_IND | Tarama desteğiyle | Evet | Evet |
| ADV_EXT_IND | Genişletilmiş reklam (BLE 5.0) | Evet | Evet |
ADV_DIRECT_IND, hedef Central'in adresini içerir ve tarama beklenmeden hızlı bağlantı kurulmasını sağlar. Cihazların birbirini “tanıdığı” durumlarda kullanılır — örneğin, önceden eşleştirilmiş bir akıllı telefona yeniden bağlanırken. Bu tür, tüm kanallarda reklam gerektirmediği için güç tüketimini azaltır.
Reklam aralığı (Advertising interval), ardışık advertising event'ler arasındaki süredir. Spesifikasyon, 0,625 ms adımlarla 20 ms ila 10,24 s arasında bir aralığa izin verir. Gerçek aralık, sabit bir değer ve rastgele bir gecikmenin (0–10 ms) toplamı olarak hesaplanır ve bu, birden çok reklam veren cihaz arasında çarpışma olasılığını azaltır.
Aralık seçimi, keşif hızı ve güç tüketimi arasında bir dengedir. 20 ms aralıkta cihaz 20–30 ms içinde keşfedilir, ancak ortalama akım yaklaşık 1–2 mA olur. 1000 ms aralıkta keşif 1 saniyeye kadar sürebilir, ancak ortalama akım 50–100 µA'ya düşer. Çoğu IoT cihazı için önerilen aralık 200–1000 ms'dir.
Texas Instruments Application Report SWRA478 (2024)'e göre, reklam aralığını 100 ms'den 1000 ms'ye çıkarmak güç tüketimini %90 azaltır. Cihaz anında keşif gerektirmiyorsa (örneğin, dakikada bir veri ileten sıcaklık sensörü), optimum aralık 1000–2000 ms'dir.
Ek bir parametre advertising timeout — cihazın reklam yaptığı maksimum süredir. iOS'ta Peripheral, arka planda 180 saniye sonra reklamı otomatik olarak durdurur. Android'de böyle bir sınırlama yoktur, ancak üreticiler kendi sınırlarını ekleyebilir.
Scan Response, Peripheral'in Central'den gelen tarama isteğine yanıt olarak gönderdiği ek bir veri paketidir (31 bayta kadar). Tarama isteği, Central tarafından reklam paketi alındıktan sonra bağlantı öncesinde daha fazla bilgi gerekiyorsa gönderilir. Scan Response ek reklam gerektirmez — yalnızca talep üzerine gönderilir ve yayın süresinden tasarruf sağlar.
Tipik veri dağılımı: reklam PDU'su (31 bayt) bayraklar (3 bayt), hizmet UUID'leri (2–16 bayt) ve üretici verilerini (kalan baytlar) içerir. Scan response, tam cihaz adını (28 bayta kadar) ve ek UUID'leri veya TX Power Level'ı taşır. Bu ayrım, Central'in scan response'u okumadan UUID'ye göre cihazları hızla filtrelemesini sağlar.
Reklam paketini tasarlarken dikkat edin: reklam PDU'sunda 31 baytın tamamı doluysa, Central cihazın scan response'u destekleyip desteklemediğini belirleyemez. Scan response yeteneğini belirtmek için reklam PDU'sunda en az 3–5 bayt boş bırakılması önerilir.
Genişletilmiş Reklam (Extended Advertising BLE 5.0), reklam paketi boyutunu 31 bayttan 251 bayta çıkaran ve yeni paket türleri ekleyen reklam mekanizmasının bir uzantısıdır. Extended Advertising ayrıca açık alanlarda iletişim menzilini 1 km'ye kadar genişletmek için coded PHY'yi ve birden çok Central'i senkronize etmek için periyodik reklamı (Periodic Advertising) destekler.
Başlıca yenilikler: ADV_EXT_IND — tek bir pakette 251 bayta kadar veri iletebilen genişletilmiş reklam PDU'su. Extended Advertising, birincil kanalları (37, 38, 39) yalnızca tam verilerin hangi ikincil kanalda (0–36) iletildiğini belirtmek için kullanır. Bu, reklam kanallarındaki yükü azaltır ve sistemin genel verimini artırır.
Periyodik Reklam (Periodic Advertising), Peripheral'in sabit aralıklarla ikincil kanallarda veri gönderdiği ve Central'in bu diziyle senkronize olabildiği ek bir mekanizmadır. Düzenli veri güncellemesi gerektiren hizmetler için kullanılır — örneğin, ses akışı veya gerçek zamanlı sensör okumaları.
| Parametre | Standart BLE | Genişletilmiş BLE 5.0 |
|---|---|---|
| Maks. paket boyutu | 31 bayt | 251 bayt |
| Kanallar | Yalnızca 37, 38, 39 | + ikincil 0–36 |
| Menzil | 100 m'ye kadar | 1000 m'ye kadar (coded PHY) |
| Hız | 1 Mbps | 125 kbps – 2 Mbps |
| Periyodik | Hayır | Evet |
iOS (Core Bluetooth), reklam yönetimi için CBPeripheralManager sağlar. Reklam parametreleri, advertisementData sözlüğünde CBAdvertisementDataLocalNameKey (cihaz adı), CBAdvertisementDataServiceUUIDsKey (hizmet UUID'leri), CBAdvertisementDataTxPowerLevelKey (güç seviyesi) anahtarlarıyla ayarlanır. iOS, reklam aralığını otomatik olarak yönetir ve manuel olarak ayarlanmasına izin vermez.
import CoreBluetooth
class AdvertiserManager: NSObject, CBPeripheralManagerDelegate {
private var peripheralManager: CBPeripheralManager!
func startBLEAdvertising() {
let data: [String: Any] = [
CBAdvertisementDataLocalNameKey: "BLE Beacon",
CBAdvertisementDataServiceUUIDsKey: [
CBUUID("180F")
],
CBAdvertisementDataIsConnectable: true
]
peripheralManager.startAdvertising(data)
}
}
Android (BluetoothLeAdvertiser) daha ayrıntılı kontrol sağlar. Mevcut: AdvertiseSettings — mod yapılandırması (LOW_POWER, BALANCED, LOW_LATENCY), verici gücü ve aralık; AdvertiseData — paket verileri. Android, uyumlu cihazlarda genişletilmiş reklamı (BLE 5.0) destekler, ancak bu tür cihazların pazardaki payı yaklaşık %30–40'tır.
BluetoothLeAdvertiser advertiser =
BluetoothAdapter.getDefaultAdapter()
.getBluetoothLeAdvertiser();
AdvertiseSettings settings = new AdvertiseSettings.Builder()
.setAdvertiseMode(
AdvertiseSettings.ADVERTISE_MODE_LOW_POWER
)
.setTxPowerLevel(
AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM
)
.build();
AdvertiseData data = new AdvertiseData.Builder()
.setIncludeDeviceName(true)
.addServiceUuid(new ParcelUuid(
UUID.fromString(
"0000180F-0000-1000-8000-00805F9B34FB"
)
))
.build();
advertiser.startAdvertising(
settings, data, advertiseCallback
);
Platformlar arası bir BLE uygulaması geliştirirken farklılıkları göz önünde bulundurun: iOS, reklam aralığını doğrudan kontrol etmeye izin vermez ancak tüm cihazlarda kararlı çalışma sağlar; Android tam kontrol sağlar, ancak sürüm ve üretici parçalanması uyumsuzluğa yol açabilir. Her iki platformun gerçek cihazlarında reklamı test etmeniz önerilir.
Sıkça Sorulan Sorular
Connectable reklam (ADV_IND), Central'in cihazla çift yönlü bağlantı kurmasını sağlar. Non-connectable (ADV_NONCONN_IND) yalnızca tek yönlü veri iletimidir ve bağlantı imkanı olmadan bir tanımlayıcı yayınlamak için işaretçiler (Beacon) tarafından kullanılır.
Standart reklam paketi 31 bayt, scan response ek 31 bayttır. Genişletilmiş Reklam (BLE 5.0+), veri iletimi için ikincil kanalları kullanarak sınırı 251 bayta çıkarır.
Çoğu IoT cihazı için 500–1000 ms önerilir. Hızlı keşif gerekiyorsa (örneğin, kulaklık bağlamak için) 20–50 ms kullanın. Seyrek veri ileten sensörler için güç tasarrufu amacıyla 1000–2000 ms kullanın.
Üç kanal (37, 38, 39), keşif güvenilirliği ve verim arasında bir uzlaşmadır. Bir kanal Wi-Fi tarafından meşgul olabilir, ancak cihaz diğer ikisinde keşfedilecektir. Kanal 38, Wi-Fi kanalları arasında minimum parazit bölgesinde bulunur.
Reklam, BLE'deki ana güç tüketicisidir. 1000 ms aralıkta ortalama akım 50–100 µA'dır ve bu, cihazın bir CR2032 pille bir yıl çalışmasını sağlar. 20 ms aralıkta akım 1–2 mA'ya yükselir ve çalışma süresini birkaç haftaya düşürür.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun