Sunteți pe pagina 1din 9

Internet of Things

Laborator 9
Tehnologia iBeacon
(anul universitar 2021-2022)

Universitatea Tehnică ”Gheorghe Asachi” din Iaşi


Facultatea de Automatică şi Calculatoare
Departamentul de Calculatoare
Cuprins
1 Scopul laboratorului 1
2 Intro BLE 1
3 Descoperirea dispozitivelor BLE 1
4 Formatul cadrelor Advertise 2
5 Tehnologii de tip baliză 3
6 iBeacon 4
7 Sarcini de lucru 5
Materiale de studiu 7

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

Familiarizarea cu rolurile Advertiser şi Scanner Bluetooth Low-Energy. Exploatoarea aces-


tora pentru implementarea tehnologiilor de tip baliză (eng. beacon). Studiu de caz pentru
tehnologia iBeacon.

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.

Fig. 1. Canalele Bluetooth Low Energy

3. Descoperirea dispozitivelor BLE

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:

• descoperire a dispozitivului care emite cadre;

• descoperire şi conectare la dispozitivul care emite;

• recepţie a datelor transmise prin difuzie de către dispozitivul care emite.

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.

Fig. 2. Procesele de scanare pasivă şi activă

4. Formatul cadrelor Advertise

Cadrele Advertising au două roluri:

• Transmiterea de date prin difuzie către dispozitive care nu urmăresc stabilirea de


conexiuni;

• Descoperirea dispozitivelor Slave (Peripheral) şi stabilirea de conexiuni cu ele.

Cadrele Advertising (nume complet: Advertising Channel PDU) au formatul prezentat


ı̂n figura 3. Există mai multe tipuri de cadre definte prin intermediul câmpului Header

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:

Element Lungime Descriere


AD Length 1 octet Dimenisunea structurii
AD Type 1 octet Tipul structurii - foloseşte la interpretarea câmpului
AD Data.
De exemplu, valoarea 0x09 indică Complet Local
Name (Numele complet al dispozitivului), iar valoarea
0x02 indică Incomplete List of 16-bit Service Class
UUID (Lista incompletă a serviciilor pe 16 biţi)
AD Data max. 29 octeti Câmp de date a cărui interpretare este consistenă cu
valoarea câmpului AD Type.

Fig. 3. Formatul cadrelor Advertising

5. Tehnologii de tip baliză

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ă:

• iBeacon - tehnologie Apple folosită pentru transmiterea unui UUID

• AltBeacon - alternativă open-source pentru iBeacon

• URIBeacon - transmitere URI

• 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ă:

• AD Length - 0x1A (26 de octeţi) dimensiunea totală a structurii

• AD Type - 0xFF (Manufacturer Specific Data)

• AD Data - conţine 25 de octeţi codificaţi astfel:

– Company Identifier (2 octeţi) - implicit 0x4C00, această valoare identificând


compania Apple
– iBeacon Type (1 octet) - implicit 0x02 (proximity beacon)
– iBeacon Length (1 octet) - implicit 0x15, restul de 21 de octeţi
– UUID (16 octeţi)

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ă

Fig. 4. Formatul cadrelor iBeacon

7. Sarcini de lucru

1. Pentru interacţiunea cu platformele vor fi folosite telefoanele personale. Astfel, pe


telefoanele cu OS Android se va instala utilitarul Beacon Simulator
https://play.google.com /store/apps/details?id=net.alea.beaconsimulator, iar pe cele
cu iOS se va instala https://apps.apple.com/us/app/beacon-simulator/id1380778696.

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

• Foaie de catalog şi manual ESP32

• Documentaţie API esp-idf

S-ar putea să vă placă și