Advertising (pag-aanunsyo) — ay isang mekanismo sa Bluetooth Low Energy kung saan ang isang Peripheral device ay nagpapaalam ng presensya nito sa pamamagitan ng pagpapadala ng maiikling data packet sa tatlong nakalaang channel (37, 38, 39). Tinutukoy ng Bluetooth Core Specification 5.4 (2023) ang dalawang uri ng pag-aanunsyo: connectable — handa ang device para sa koneksyon, at non-connectable — ginagamit ng mga beacon (Beacon) na nagpapadala lamang ng data nang hindi nagtataguyod ng two-way na koneksyon. Ang mga parameter ng pag-aanunsyo — interval mula 20 ms hanggang 10.24 s, lakas ng transmitter mula -20 hanggang +10 dBm at uri ng packet — ay direktang nakakaapekto sa bilis ng pagtuklas ng device at pagkonsumo ng enerhiya nito, na kritikal sa pagbuo ng mga IoT device na pinapagana ng baterya.
Mga Pangunahing Punto
Advertising (pag-aanunsyo) — ay ang proseso ng pana-panahong pagpapadala ng maiikling data packet kung saan ang isang BLE device ay nagpapaalam ng presensya at availability nito. Hindi tulad ng classic Bluetooth kung saan ang paghahanap ng mga device ay tumatagal ng mga segundo, ang BLE advertising ay nagpapahintulot sa pagtuklas ng device sa millisecond na may minimal na pagkonsumo ng enerhiya.
Hinahati ng BLE architecture ang mga device sa dalawang papel: Peripheral (nag-aanunsyo) at Central (nag-scan). Nagpapadala ang Peripheral ng mga advertising packet, at nag-scan ang Central ng channel at nagpapasya tungkol sa koneksyon. Ang asymmetric model na ito ay isang pangunahing bentahe ng BLE: ang nag-a-anunsyong device ay gumagamit lamang ng enerhiya para sa pagpapadala ng maiikling packet, hindi para sa patuloy na pakikinig sa channel.
Ang proseso ng advertising ay binubuo ng tatlong yugto: advertising event (pagpapadala ng packet sa lahat ng tatlong channel), scan request/response (opsyonal na palitan sa Central) at connection request (pagsisimula ng koneksyon ng Central). Ang bawat yugto ay pinamamahalaan ng Bluetooth Controller sa antas ng Link Layer.
Ang BLE ay gumagamit ng 40 channel sa 2.4 GHz band, kung saan ang 37 (2402 MHz), 38 (2426 MHz) at 39 (2480 MHz) ay eksklusibong nakalaan para sa advertising. Tatlong channel ay isang kompromiso sa pagitan ng reliability ng pagtuklas at bandwidth: ang isang channel ay maaaring okupado ng Wi-Fi o iba pang interference, ngunit ang device ay matutuklasan sa dalawang iba pa.
Ang Channel 37 ay matatagpuan malapit sa Wi-Fi channel 1, channel 39 — malapit sa Wi-Fi channel 6, at ang channel 38 ay nasa pagitan nila, sa zone ng minimal na interference. Ang pagpili ng tatlong channel ay ginagarantiyahan na ang device ay matutuklasan kahit sa mga kondisyon ng siksik na radio traffic — halimbawa, sa isang shopping mall na may dose-dosenang Wi-Fi access point.
Ang Peripheral ay nagpapadala ng advertising packet nang sunud-sunod sa lahat ng tatlong channel — ito ay tinatawag na advertising event. Ang central device ay nag-scan ng isang channel sa isang pagkakataon, lumilipat sa pagitan ng mga ito ayon sa algorithm na ipinatupad sa Bluetooth Controller. Ang posibilidad ng pagtuklas sa isang advertising event na walang collision ay malapit sa 100%.
Ang Bluetooth Core Specification ay tumutukoy ng ilang uri ng advertising PDU (Protocol Data Unit), bawat isa ay may kanya-kanyang layunin. Mga pangunahing uri: ADV_IND (connectable undirected advertising) — standard na pag-aanunsyo na may kakayahang kumonekta, ADV_NONCONN_IND (non-connectable undirected advertising) — pag-aanunsyo lamang walang koneksyon, ADV_SCAN_IND (scannable undirected advertising) — sumusuporta sa scan request, ADV_DIRECT_IND (directed advertising) — pag-aanunsyo para sa isang partikular na Central.
ADV_IND — ang pinakakaraniwang uri, ginagamit sa karamihan ng BLE device. Pagkatapos makatanggap ng ADV_IND, ang Central ay maaaring magpadala ng connection request at magtatag ng koneksyon. ADV_NONCONN_IND ay ginagamit ng mga beacon (Beacon): nag-a-anunsyo ang device ngunit hindi tumatanggap ng mga kahilingan sa koneksyon — one-way data transmission lamang.
| Uri ng PDU | Paglalarawan | Koneksyon | Scan response |
|---|---|---|---|
| ADV_IND | Standard na pag-aanunsyo | Oo | Oo |
| ADV_DIRECT_IND | Pag-aanunsyo para sa partikular na Central | Oo | Hindi |
| ADV_NONCONN_IND | Walang koneksyon (beacon) | Hindi | Hindi |
| ADV_SCAN_IND | May suporta sa pag-scan | Oo | Oo |
| ADV_EXT_IND | Extended advertising (BLE 5.0) | Oo | Oo |
ADV_DIRECT_IND ay naglalaman ng address ng target na Central, na nagpapahintulot sa mabilis na pagtatag ng koneksyon nang hindi naghihintay ng pag-scan. Ginagamit kapag ang mga device ay "kilala" na ang isa't isa — halimbawa, pagkatapos muling kumonekta sa isang dating naka-pair na smartphone. Ang uri na ito ay nagbabawas ng pagkonsumo ng enerhiya dahil hindi nito kailangan ng pag-aanunsyo sa lahat ng channel.
Advertising interval — ay ang oras sa pagitan ng magkakasunod na advertising event. Ang specification ay nagpapahintulot ng interval mula 20 ms hanggang 10.24 s na may hakbang na 0.625 ms. Ang aktwal na interval ay kinakalkula bilang kabuuan ng isang fixed value at random na pagkaantala (0–10 ms), na nagbabawas ng posibilidad ng collision sa pagitan ng maraming nag-a-anunsyong device.
Ang pagpili ng interval ay isang balanse sa pagitan ng bilis ng pagtuklas at pagkonsumo ng enerhiya. Sa interval na 20 ms, ang device ay matutuklasan sa loob ng 20–30 ms, ngunit ang average na current ay mga 1–2 mA. Sa interval na 1000 ms — ang pagtuklas ay tatagal ng hanggang 1 segundo, ngunit ang average na current ay bababa sa 50–100 µA. Para sa karamihan ng IoT device, ang inirerekomendang interval ay 200–1000 ms.
Ayon sa Texas Instruments Application Report SWRA478 (2024), ang pagtaas ng advertising interval mula 100 ms hanggang 1000 ms ay nagbabawas ng pagkonsumo ng enerhiya ng 90%. Kung ang device ay hindi nangangailangan ng agarang pagtuklas (halimbawa, isang temperature sensor na nagpapadala ng data isang beses bawat minuto), ang optimal na interval ay 1000–2000 ms.
Isang karagdagang parameter — advertising timeout — ang maximum na oras na nag-a-anunsyo ang device. Sa iOS, awtomatikong pinapatay ng Peripheral ang pag-aanunsyo pagkatapos ng 180 segundo sa background mode. Sa Android, walang ganoong limitasyon, ngunit ang mga manufacturer ay maaaring magdagdag ng kanilang sariling mga limitasyon.
Scan Response — ay isang karagdagang data packet (hanggang 31 byte) na ipinapadala ng Peripheral bilang tugon sa scan request mula sa Central. Ang scan request ay ipinapadala ng Central pagkatapos matanggap ang advertising packet, kung kailangan nito ng karagdagang impormasyon bago ang koneksyon. Ang Scan Response ay hindi nangangailangan ng karagdagang pag-aanunsyo — ito ay ipinapadala lamang kapag hiniling, na nakakatipid sa channel.
Karaniwang distribusyon ng data: sa advertising PDU (31 byte) inilalagay ang mga flag (3 byte), UUID ng mga serbisyo (2–16 byte) at data ng manufacturer (natitirang byte). Sa scan response ipinapadala ang buong pangalan ng device (hanggang 28 byte) at karagdagang UUID o TX Power Level. Ang paghahati na ito ay nagpapahintulot sa Central na mabilis na i-filter ang mga device ayon sa UUID nang hindi binabasa ang scan response.
Kapag nagdidisenyo ng advertising packet, tandaan: kung ang lahat ng 31 byte ay okupado sa advertising PDU, hindi matutukoy ng Central kung ang device ay sumusuporta sa scan response. Inirerekomenda na mag-iwan ng hindi bababa sa 3–5 byte na libre sa advertising PDU upang ipahiwatig ang kakayahang mag-scan response.
Extended Advertising (BLE 5.0) — ay isang extension ng mekanismo ng pag-aanunsyo na nagpapalaki ng laki ng advertising packet mula 31 hanggang 251 byte at nagdaragdag ng mga bagong uri ng packet. Sinusuportahan din ng Extended Advertising ang coded PHY para sa pagtaas ng range ng komunikasyon hanggang 1 km sa open area at periodic advertising (Periodic Advertising) para sa synchronization ng maraming Central.
Mga pangunahing inobasyon: ADV_EXT_IND — extended advertising PDU na maaaring magpadala ng hanggang 251 byte ng data sa isang packet. Ginagamit ng Extended Advertising ang mga primary channel (37, 38, 39) lamang upang ipahiwatig kung saang secondary channel (0–36) ang kumpletong data ay ipinapadala. Ito ay nagbabawas ng load sa mga advertising channel at nagtataas ng kabuuang bandwidth ng system.
Periodic Advertising — isang karagdagang mekanismo kung saan ang Peripheral ay nagpapadala ng data sa mga secondary channel na may fixed interval, at ang Central ay maaaring mag-synchronize sa sequence na ito. Ginagamit para sa mga serbisyo na nangangailangan ng regular na pag-update ng data — halimbawa, audio transmission o real-time na pagbabasa ng sensor.
| Parameter | BLE Standard | Extended BLE 5.0 |
|---|---|---|
| Max. laki ng packet | 31 byte | 251 byte |
| Mga channel | 37, 38, 39 lamang | + secondary 0–36 |
| Range | Hanggang 100 m | Hanggang 1000 m (coded PHY) |
| Bilis | 1 Mbps | 125 kbps – 2 Mbps |
| Periodic | Hindi | Oo |
iOS (Core Bluetooth) ay nagbibigay ng CBPeripheralManager para sa pamamahala ng pag-aanunsyo. Ang mga parameter ng advertising ay itinatakda sa pamamagitan ng dictionary na advertisementData na may mga key na CBAdvertisementDataLocalNameKey (pangalan ng device), CBAdvertisementDataServiceUUIDsKey (UUID ng mga serbisyo), CBAdvertisementDataTxPowerLevelKey (lakas). Awtomatikong pinamamahalaan ng iOS ang advertising interval at hindi pinapayagan ang manual na pagtatakda.
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) ay nagbibigay ng mas detalyadong kontrol. Available: AdvertiseSettings — pagtatakda ng mode (LOW_POWER, BALANCED, LOW_LATENCY), lakas ng transmitter at interval; AdvertiseData — data ng packet. Sinusuportahan ng Android ang extended advertising (BLE 5.0) sa mga compatible na device, ngunit ang bahagi ng mga device na ito sa merkado ay mga 30–40%.
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
);
Kapag bumubuo ng cross-platform BLE application, isaalang-alang ang mga pagkakaiba: hindi pinapayagan ng iOS ang direktang kontrol sa advertising interval, ngunit ginagarantiyahan ang stable na operasyon sa lahat ng device; ang Android ay nagbibigay ng buong kontrol, ngunit ang fragmentation ng mga bersyon at manufacturer ay maaaring magdulot ng incompatibility. Inirerekomenda na subukan ang advertising sa mga tunay na device ng parehong platform.
Mga Madalas Itanong
Pinapayagan ng Connectable advertising (ADV_IND) ang Central na magtatag ng isang two-way na koneksyon sa device. Ang Non-connectable (ADV_NONCONN_IND) — one-way data transmission lamang, ginagamit ng mga beacon (Beacon) para mag-broadcast ng identifier nang walang posibilidad ng koneksyon.
Ang standard na advertising packet — 31 byte, scan response — 31 byte pa. Ang Extended Advertising (BLE 5.0+) ay nagtataas ng limitasyon sa 251 byte sa pamamagitan ng paggamit ng mga secondary channel para sa data transmission.
Para sa karamihan ng IoT device, inirerekomenda ang 500–1000 ms. Kung kailangan ng mabilis na pagtuklas (halimbawa, para sa pagkonekta ng headphone) — 20–50 ms. Para sa mga sensor na may madalang na pagpapadala ng data — 1000–2000 ms upang makatipid ng enerhiya.
Tatlong channel (37, 38, 39) ay isang kompromiso sa pagitan ng reliability ng pagtuklas at bandwidth. Ang isang channel ay maaaring okupado ng Wi-Fi, ngunit ang device ay matutuklasan sa dalawang iba pa. Ang Channel 38 ay nasa zone ng minimal na interference sa pagitan ng Wi-Fi channel.
Ang advertising ay ang pangunahing consumer ng enerhiya sa BLE. Sa interval na 1000 ms, ang average na current ay 50–100 µA, na nagpapahintulot sa device na gumana ng isang taon sa isang CR2032 na baterya. Sa interval na 20 ms, ang current ay tumataas sa 1–2 mA, na nagbabawas ng oras ng operasyon sa ilang linggo.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din