Segnale beacon o segnale iBeacon?

A volte, nel tentativo di trovare in rete soluzioni a problemi di sviluppo, si può incappare in quello che ancora costituisce un equivoco abbastanza comune: identificare ogni dispositivo Bluetooth Low Energy (BLE) che trasmette periodicamente un pacchetto dati (l’advertising packet) comunemente chiamato beacon, con un iBeacon.

Sebbene questo possa essere considerato vero nella stragrande maggioranza dei casi pratici, occorre tenere presente che ciò non è corretto e che coloro che lavorano per Gimbal (per esempio) potrebbero anche avere qualcosa da ridire. 😉

Ma cosa rende effettivamente un beacon un iBeacon? La struttura che Apple ha definito per organizzare le informazioni contenute nell’advertisement.

Vale a dire che iBeacon costituisce una particolare implementazione dell’advertisement (più precisamente del cosiddetto payload, il carico utile trasmesso, come si vedrà oltre) e che altri potrebbero decidere di strutturare diversamente a seconda delle particolari funzionalità offerte dalla loro soluzione.

In generale, l’advertisement viene realizzato trasmettendo un pacchetto di lunghezza fino a 47 byte, così strutturato:

 

Advertising Packet

Preamble

1 byte

Access Address

4 byte

Packet Data Unit (PDU)

2-39 byte

CRC

3 byte

 

in cui troviamo:

  • 1 byte di preambolo

  • 4 byte per l’Access Address con valore fisso 0x8E89BED6

  • da 2 a 39 byte per il pacchetto dati PDU

  • 3 byte per il controllo di integrità dei dati

A sua volta, il segmento PDU è strutturato come segue:

 

PDU

Header

2 byte

MAC Address

6 byte

Data

fino a 31 byte

 

in cui, oltre ai 2 byte d’intestazione, si colloca l’effettivo payload costituito da:

  • 6 byte per l’indirizzo MAC del dispositivo BLE

  • fino a 31 byte per i dati

Ora, è qui che la specifica iBeacon™ trova la sua applicazione, determinando l’organizzazione del segmento Data in questo modo:

 

Data

iBeacon™ Prefix

9 byte

UUID

16 byte

Major

2 byte

Minor

2 byte

TX Power

1 byte

 

vale dire:

  • 9 byte per il prefisso iBeacon™ con valore fisso 0x0201061AFF4C000215

  • 16 byte per l’identificativo univoco UUID

  • 2 byte per Major e Minor

  • 1 byte per il valore di calibrazione della forza del segnale a 1 m. di distanza, espressa in complemento a 2

Così strutturato, il segmento Data è in grado di fornirci quelle informazioni che abbiamo imparato a utilizzare per definire le regioni di interesse per le nostre applicazioni, oltre a consentirci di determinare, congiuntamente alla forza del segnale sentito dalla radio Bluetooth, la distanza a cui ci troviamo dal dispositivo BLE che ci ha inviato il suo advertisement.

Android Beacon Module Titanium
Piccola guida sulla calibrazione dei beacon

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Captcha * Time limit is exhausted. Please reload the CAPTCHA.