Documente Academic
Documente Profesional
Documente Cultură
Laborator 9
Tehnologia iBeacon
(anul universitar 2021-2022)
Listă tabele
Listă figuri
Fig. 1 Canalele Bluetooth Low Energy 1
Fig. 2 Procesele de scanare pasivă şi activă 2
Fig. 3 Formatul cadrelor Advertising 3
Fig. 4 Formatul cadrelor iBeacon 5
1
1. Scopul laboratorului
2. Intro BLE
Tehnologia Bluetooth este o componentă cheie a domeniului IoT. Aceasta a fost dezvoltată
pentru a oferi o alternativă de comunicaţie pentru conexiunile prin cablu pe distanţe scurte.
Astfel perifericele pentru PC-uri şi căştile audio/hands-free au devenit cele mai populare
aplicaţii Bluetooth.
Versiunea 4.0 a standardului Bluetooth a introdus un set de specificaţii pentru consum
redus (Bluetooth Low Energy - BLE), astfel fiind creată oportunitatea pentru o gamă nouă
de aplicaţii din sfera senzorilor şi a dispozitivelor autonome ce pot funcţiona luni sau ani
alimentate de la baterie.
Dispozitivele Bluetooth operează ı̂n banda ISM 2.4 GHz (2402 MHz - 2480 MHz)
şi ı̂mparte spectrul de comunicaţie cu alte tehnologii uzuale, precum Wi-Fi. Specificaţia
BLE defineşte 40 de canale de comunicaţie cu o spaţiere de 2 MHz (fig. 1). Trei dintre
aceste canale (marcate cu verde ı̂n figură) sunt dedicate pentru transmiterea cadrelor de tip
Advertising, frecvenţele lor fiind alese pentru a minimiza interferenţele cu canalele Wi-Fi
1, 6 şi 11, acestea fiind cel mai des folosite ı̂n majoritatea ţărilor.
Procesul de Advertising este o operaţie fundamentală BLE şi prin intermediul ei dispozi-
tivele ı̂şi fac cunoscută prezenţa, permit stabilirea de conexiuni sau pot să disemineze lista
1
serviciilor suportate şi numele dispozitivului.
Procesul de scanare (eng. Scanning) este operaţia prin care un dispozitiv recepţioneaza̧
cadre Advertising cu scopul de:
Există implementate două moduri de scanare: scanare pasivă şi scanare activă (fig. 2).
Scanarea pasivă implică strict recepţia cadrelor Advertising, scanerul baleind ı̂ntre cele trei
canale dedicate ı̂ntr-o manieră round-robin. În modul de scanare activ, după recepţia unui
cadru Advertising, dispozitivul Scanner trimite un cadru Scan Request cu scopul de a afla
informaţii suplimentare de la dispozitivul Advertiser. Aplicaţia care rulează pe dispozitivul
Advertiser are control complet asupra informaţiilor suplimentare transmise, ı̂n limitele im-
puse de formatul prezentat ı̂n secţiunea următoare.
2
din figură, de interes pentru laboratorul curent fiind ADV IND (Connectable Undirected
Advertising) şi ADV NONCONN IND (Non-Connectable Undirected Advertising). Cele
două tipuri de cadre se aseamană prin faptul că sunt nedirecţionate (cadre de difuzie) şi
diferă prin faptul că semnalează disponibilitatea/indisponibilitatea de conectare către un
scanner.
Câmpul Payload conţine adresa publică a dispozitivului (6 octeţi) şi una sau mai multe
structuri de date compozite (Advertisment Data structs) ce pot ı̂nsuma maxim 31 de octeţi.
Structurile de date AD au următorul format:
Un dispozitiv de tip baliză poate folosi cadrele Advertising pentru transmiterea unor informaţii
specifice unei apicaţii, ı̂n mod uzual fiind transmis un identificator unic global (UUID -
Universally Unique Identifier). Acest UUID poate fi folosit pentru a genera evenimente
specifice la nivelul dispozitivului care a recepţionat cadrele de la baliză. Recunoaţerea
3
UUID-ului şi evenimentele generate sunt customizabile, deoarece interacţiunea se real-
izează la nivel de aplicaţie. UUID-urile cunoscute pot fi stocate local sau poate fi folosit un
server remote pentru interogarea unei baze de date partajate.
Alternativ, unele tipuri de balize pot transmite un URI ce poate fi folosit ulterior pentru
accesarea unei resurse web.
Există multiple aplicaţii pentru aceste dispozitive, de la folosirea lor pe post de breloc
pentu găsirea cheilor, până la identificarea exponatelor dintr-un muzeu şi asocierea lor cu
conţinut informativ ı̂ntr-o aplicaţie de tip audio ghid ce rulează pe telefon. Alt exemplu
este cel al unui proiect experimental lansat de Waze ı̂n SUA ı̂n care au fost instalate balize
ı̂n tuneluri auto, prin intermediul lor telefonul putând realiza o localizare aproximativă ı̂n
absenţa acoperirii GPS.
Există patru tipuri de balize folosite pe scară largă:
• Eddystone - tehnologie Google folosită pentru transmiterea fie a unui UUID, fie a
unui URI, fie a unui set de date de telemetrie
6. iBeacon
Specificaţia iBeacon exploatează structura AD de tip 0xFF (Manufacturer Specific Data), ı̂n
sensul că la nivelul câmpului AD Data datele sunt codificate ı̂ntr-o manieră proprietară. În
figura 4 se observă structura câmpului Payload al cadrelor Advertising, acestea conţinând
două structuri AD - prima este o structură de tip 0x01 (Flags) ce conţine un set de flag-uri
ce specifică capabilităţile dispozitivului care emite (prezenţa structurii nu este impusă de
standardul Bluetooth sau de specificaţia iBeacon, ı̂nsă este considerată o bună practică şi
majoritatea implementărilor o includ), iar a doua structură conţine datele iBeacon propriu-
zise, după cum urmează:
4
– Major (2 octeţi) - valoare definită de dezvoltator, folosită pentru a discrimina
ı̂ntre balize cu acelaşi UUID
– Minor (2 octeţi) - valoare definită de dezvoltator, folosită pentru a discrimina
ı̂ntre balize cu acelaşi UUID
– TX Power (1 octet) - valoarea puterii semnalului exprimată ı̂n dBm (comple-
ment faţă de 2) măsurată la distanţa de 1 metru faţă de baliză
7. Sarcini de lucru
2. Creaţi un proiect nou şi adăugaţi fişierele din primul subfolder ataşat laboratoru-
lui. Analizaţi codul: aplicaţia poate rula fie ı̂n mod Advertiser, fie ı̂n mod Scanner,
selecţia fiind realizată la compilare prin intermediul macrodefiniţiei IBEACON MODE
din esp ibeacon api.h.
(a) Rulaţi aplicaţia ı̂n modul IBEACON SENDER şi folosiţi aplicaţia de pe telefon
pentru a monitoriza cadrele iBeacon generate.
(b) Rulaţi aplicaţia ı̂n modul IBEACON RECEIVER. Creaţi pe telefon un nou iBeacon
şi monitorizaţi ı̂n terminalul platformei recepţia acestuia.
(c) Lucraţi ı̂n echipe de câte doi. O platformă va genera iBeacon-uri, cealaltă le va
recepţiona. Pentru a diferenţia ı̂ntre platformele configurate ı̂n mod IBEACON
SENDER se va edita cel puţin una dintre macrodefiniţiile ESP UUID, ESP MAJOR,
ESP MINOR din esp ibeacon api.h pentru a asigura unicitatea combinaţiei
transmise. Platforma configurată ı̂n mod IBEACON RECEIVER trebuie să imple-
menteze un mecanism de filtrare şi să afişeze doar cadrele iBeacon recepţionate
de la pereche.
5
3. Să se implementeze o aplicaţie care identifică ı̂n mod unic telefonul unui coleg şi
care afişează ı̂n consolă un mesaj de forma Salut, prenume coleg! când telefonul este
poziţionat la o distanţă rezonabil de mică faţa de platformă (< 1 metru).
Pentru realizarea acestei sarcini, fiecare telefon trebuie să genereze iBeacon-uri cu
UUID-uri unice, dar cunoscute de către platformele de dezvoltare. Astfel, fiecare
student are asociat un UUID disponibil la https://pastebin.com/zEMTx6Sh pentru
SSC sau la https://pastebin.com/q1WHsbt3 pentru CI. Adăugaţi la proiect fişierul
uuid common.h din cel de-al doilea subfolder ataşat laboratorului. Acesta conţine
UUID-urile de la link-ul anterior reprezentate ı̂ntr-o formă convenabilă pentru inte-
grarea facilă ı̂n aplicaţie.
Pentru aproximarea distanţei se va folosi parametrul scan result->scan rst.rssi
disponibil ı̂n funcţia de callback esp gap cb. Se va experimenta pentru stabilirea
valorii de prag care declanşează afişarea mesajului (ı̂n mod uzual, valoarea se găseşte
ı̂n intervalul [-70, -50] dBm).
6
Materiale de studiu