Afstand bepalen met Eddystone beacons

-

Wat zijn beacons en wat kan je er mee?

Beacons zijn kleine apparaatjes die Bluetooth signalen uitzendt. Mobiele telefoons kunnen deze signalen opvangen en verwerken. Elke beacon kan een (uniek) bericht uitzenden. Als voorbeeld kunnen we een ‘slim’ deurslot nemen. Het slot voorzien van een beacon,  zendt een unieke code uit. De gebruiker heeft een app op zijn smartphone om de deur te kunnen ontgrendelen. Doordat de app weet bij welke deur de gebruiker staat (door middel van de uitgezonden unieke id), kan de app de deur automatisch voor je ontgrendelen. Wanneer je een veiligere omgeving wilt creëren zou de app eerst om authenticatie vragen, zoals een fingerprint, voordat de deur ontgrendeld wordt. Het doel van dit onderzoek is om te kijken of de app nauwkeurig de afstand tot een beacon kan bepalen. Tijdens het onderzoek heb ik gebruik gemaakt van het Eddystone protocol voor de beacon. Het voordeel van Eddystone is dat het opensource is en gebruikt kan worden in combinatie met Android en iOS. De library van AltBeacon heb ik gebruikt om de beacons te kunnen detecteren. Voor de beacons zelf heb ik Estimotes gebruikt. Daarnaast heb ik een Motorola Nexus 6 gebruikt om de beacons te kunnen detecteren.

Is de beacon afstand nauwkeurig?

De absolute afstand tot een beacon meten gaat niet goed. Het is wel mogelijk om goed relatieve afstanden te meten. Zo kun je ze categoriseren van dichtbij tot ver weg. Een afstand van 0 tot 2 meter zou je kunnen beschouwen als directe omgeving, 2 tot 10 meter als dichtbij en meer dan 10 meter ver weg. In mijn onderzoek heb ik verschillende methodes onderzocht om de afstand tussen een telefoon en een beacon te bepalen. Met een beacon library (AltBeacon) en een eigen formule heb ik gekeken naar de nauwkeurigheid. De eerste methode die ik onderzocht heb is de standaard afstand berekening die de library van de beacons gebruikt. De berekening bestaat uit metingen over de afgelopen 20 seconden. Van die metingen worden de 10% boven en ondergrens weggegooid. Van de overige metingen wordt de afstand berekend. Het nadeel van deze methode is dat het ongeveer 20 seconde duurt,  voordat de app weet op welke afstand de beacon is. Voor korte afstanden, 0 tot 2 meter, werkt de afstandsbepaling redelijk goed. De afwijking zit tussen 0,5 en 2 meter. Als de afstand meer dan 2 meter is dan zijn afwijkingen veel hoger, de afwijking loopt op tot 10 a 40 meter. De tweede methode is door zelf met een formule de afstand te bepalen. De formule gaat uit van de tx power en de rssi waarde en een constante. (tx power is de zend kracht, rssi is de ontvangen zend kracht, n is een constante die de hoeveelheid omgevingsruis symboliseert)

RSSI = TxPower - 10 * n * log(d)

http://stackoverflow.com/a/24245724/2429753 Om ruis en afwijkende metingen te voorkomen, middel ik de afgelopen 5 metingen om een afstand te krijgen. Hierdoor zijn de meeting een stuk nauwkeuriger en regeert het snel op afstandsveranderingen. De afwijking van 0 tot 4 meter bedraagt 0,1 tot 0,5 meter. Bij Afstanden groter dan 4 meter wordt de nauwkeurigheid minder, de afwijking ligt dan tussen 10 en 40 meter. De nauwkeurigheid kan van tijd tot tijd heel erg verschillen. Ruis wordt veroorzaakt door objecten in de omgeving zoals muren. Maar ook andere apparaten die ook radiosignalen uitzenden, zoals wifi, babyfoons, magnetron, telefoons, enz. De telefoon zelf is ook een van de oorzaken,  waardoor de nauwkeurigheid verschilt. De telefoons zijn niet allemaal voorzien van hetzelfde merk en type hardware. Zo wordt er bij de ene telefoon een langere antenne gebruikt dan bij de andere. Ook de behuizing van een telefoon heeft invloed op de bluetooth chip. Dit soort kleine veranderingen zorgt ervoor dat niet voor elk apparaat de afstand tot een beacon goed berekend kan worden.

Wat kan je nog meer met Eddystone beacons doen?

De beacon kan gekoppeld worden aan de Beacon Dashboard van Google. Als de beacon geregistreerd is dan zendt de beacon informatie door naar het dashboard. Via het Dashboard kun je technische informatie zien over de beacons. Met de Proximity Beacon API kun je een locatie koppelen aan een beacon. Zo kun je de latitude en longitude coördinaten instellen. Ook kun je de verdieping van een gebouw en een Google Places ID instellen. Via de Nearby Messages API is het mogelijk om kleine berichten te verzenden naar de telefoon. Het voordeel van de Nearby Messages API is dat de berichten op afstand ingesteld kunnen worden. Je hoeft hierdoor niet naar elke beacon apart om een nieuw bericht in te stellen. Welke informatie verstuurt een beacon? Er zijn momenteel 4 mogelijke “frames” die een beacon kan versturen:

  • Eddystone-UID
  • Eddystone-URL
  • Eddystone-TLM
  • Eddystone-EID

Eddystone-UID

De eerste frame is een statische reeks aan byte-waardes. De eerste 10 bytes bevatten de Namespace en de laatste 6 bytes de Instance. Deze methode is handig voor bijvoorbeeld scannen naar een specifieke groep (Namespace) beacons, de rest van de gevonden beacons worden dan weg gefilterd.

Eddystone-URL

De Eddystone-URL frame wordt gebruikt voor het physical web. Hiermee kun je fysieke objecten “verbinden” met het internet. Enkele leuke voorbeelden kun je hier vinden. https://google.github.io/physical-web/examples Dit frame verstuurt, zoals de naam eigenlijk al zegt, een url. De lengte van de url mag maximaal 17 karakters zijn. Je kunt een van de 4 url scheme prefixen instellen die niet mee gerekend worden;

  • http://www.
  • https://www.
  • http://
  • https://
https://www. L u m i n i s . e u  /
|  prefix  | 1 2 3 4 5 6 7 8 9 10 11

In dit voorbeeld zie je dat er maar een beperkte ruimte is om naar een website te linken. Daarom moet je creatief om gaan met de beschikbare ruimte.

Eddystone-TLM

De Telemetry frame is data over de beacon zelf. Hiermee kun je controleren hoeveel frames de beacon verzonden heeft. Ook kun je zien wat de batterij level van de beacon is. Dit frame is dus zeer geschikt voor het monitoren van de beacons. Het frame bestaat uit;

  • Batterij voltage
  • Beacon temperatuur
  • De hoeveelheid frames die verzonden zijn sinds dat de beacon aan staat.
  • Hoelang de beacon aan staat.

Eddystone-EID

Het meest recente toegevoegde frame is de ecrypted ephermal identifier. De id verandert periodiek, via een webserver kan dan het bericht gedecrypt worden. Het gebruik van de Eddystone-EID frame is uitermate geschikt voor security en privacy bewuste toepassingen.

Conclusie

De absolute afstand berekenen is niet ideaal. Door omgevingsruis (muren en andere apparaten) is het niet mogelijk om de afstand goed te kunnen berekenen. Je kunt wel de relatieve afstand mee bepalen, directe omgeving, dichtbij en ver weg. Naast afstand bepalen kun je ook nog de nodige informatie met een beacon versturen. Zo kan een beacon bijvoorbeeld een uniek id of een url van een website verzenden. In beacons zie ik heel veel potentie, ze kunnen een hele mooie toevoeging zijn aan bestaande apps. Ook zonder een app zie ik genoeg mogelijkheden om beacons te kunnen toepassen. Je kunt bijvoorbeeld in een showroom bij een product een beacon plaatsen. Deze beacon zendt bijvoorbeeld een url uit, die meer informatie, videos en ander promotie materiaal over het product verschaft. Beacons zijn de oplossing om de wereld van fysieke objecten te verbinden met de digitale wereld.