Pi als iBeacon (USB-baken)

iBeacon is een protocol dat door Apple is ontwikkeld en in 2013 is geïntroduceerd voor het uitzenden van gegevens via het Bluetooth-protocol. Het biedt ook een manier voor apparaten om hun afstand tot het baken te berekenen. Er zijn verschillende redenen waarom je een iBeacon-installatie wilt. Een voorbeeld is het adverteren van jouw winkel via het iBeacon-protocol. Een andere is om de afstand tot bepaalde items bij te houden, zoals auto- en huissleutels.

In deze tutorial laten ik zien hoe je de gegevens van jouw Raspberry Pi kunt uitzenden en leg ik het pakketformaat uit dat het iBeacon-protocol verwacht.

Advertentiemodus
Om deze tutorial te laten werken, heb je een Bluetooth-adapter nodig die ondersteuning biedt voor het in de advertentiemodus zetten. De Bluetooth op de Raspberry Pi leent zich hier prima voor. Bezit jouw Raspberry Pi geen Bluetooth of wil je een andere gebruiken? Zorg er dan voor dat de Bluetooth-adapter die je wilt gebruiken de advertentiemodus ondersteund.

Bouwen van een Eddystone baken
Eddystone is het populairste baken dat is ontwikkeld door Google. De meeste bedrijven gebruiken het Eddystone baken om een locatie gebaseerde melding te verzenden. Het is een open-source en multiplatform baken. Bovendien kan het gebruikt worden met zowel iOS als Android.

Aan de slag!

1 – Voordat we de Bluetooth van onze Raspberry Pi als iBeacon configureren, moeten eerst de geïnstalleerde pakketten op de Pi bijgewerkt worden.

We doen dit door de volgende opdrachten in de LXterminal in te voeren.

sudo apt-get update

sudo apt-get upgrade

2 – Vervolgens schakelen we het Bluetooth-apparaat van onze Raspberry Pi in. Het Bluetooth-apparaat zou de hci0-interface moeten zijn. Een bluetooth adapter in een van de USB poorten heet hci1.

Om het Bluetooth-apparaat op te starten, moet de volgende opdracht op de Pi uitgevoerd worden.

sudo hciconfig hci0 up

3 – Nu we de Bluetooth-module hebben ingeschakeld, moeten we de bedrijfsmodus wijzigen in “Low Energy Advertising“, ook wel BLE (Bluetooth Low Energie) genoemd. De modus wordt zo instelt dat deze zich in de modus “Niet-verbindbare ongerichte reclame” bevindt.

Dit proces is vrij eenvoudig en omvat het opnieuw gebruiken van de hciconfig-tool. Voer de volgende opdracht in om de modus van het Bluetooth-apparaat te wijzigen.

sudo hciconfig hci0 leadv 3

4 – Zodra we de Bluetooth-modus hebben veranderd in “Low Energy Advertising“, kunnen we doorgaan met het instellen van de Bluetooth van de Pi om de iBeacon-payload gegevens uit te zenden.

Met ‘payload’ wordt de informatie bedoeld die getransporteerd dient te worden en het doel van het transport vormt. Dit in tegenstelling tot het gehele pakket aan data dat uiteindelijk getransporteerd wordt. Dit pakket omvat zowel de payload als de informatie om het transport mogelijk te maken, zoals metadata en headers.

Om te testen of de iBeacon naar behoren werkt op de Raspberry Pi, geef je in de LXterminal de volgende opdracht (dit is één regel).

sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 06 1A FF 4C 00 02 15 C7 C1 A1 BF BB 00 4C AD 87 04 9F 2D 29 17 DE D2 00 00 00 00 C8 00

Ik zal de pakketgegevens die we uitzenden later in deze tutorial uitleggen, maar voorlopig zorgen we ervoor dat de uitzending werkt.

Bovenstaande opdrachten in de LXterminal

5 – Installeer nu op jouw iOS- of Androidapparaat een beacon scanner applicatie. Op mijn iOS device gebruik ik eBeacon:BLE Scanner van JAALEE Inc. Op Android werkt de  Beacon Scanner-app van Nicolas Bridoux erg goed .

Met behulp van deze applicaties kunnen we een scan uitvoeren om de iBeacon te vinden die we zojuist hebben ingesteld. Zodra je jouw Raspberry Pi iBeacon ziet, kun je doorgaan naar de volgende stap.

Hoewel commercieel en beperkt laat de iOS app Bluetooth BLE Gadget Finder de afstand tot het baken zien.

Mijn pi-beacon staat op 1-5 meter van mijn smartphone

Op Wikipedia vind je een uitgebreide uitleg over iBeacon.


Payload
Nu we hebben geverifieerd dat we onze iBeacon op de Raspberry Pi correct hebben geconfigureerd, gaan we dieper in op de payload-gegevens.

1 – Het overgrote deel van de payload-gegevens mag niet worden gewijzigd, aangezien het iBeacon-protocol van Apple dit vereist. De gegevensblokken die je kunt wijzigen, zijn de UUID, de grote/minor bytes en het signaalvermogen.

De onderstaande tabel laat de functie van elk bit zien dat we doorsturen naar ons Bluetooth-apparaat.

De gele blokken van de payload kun je wijzigen

2 – Ik kan je nu laten zien hoe je een nieuwe UUID (Universally Unique Identifier ) voor de Pi iBeacon kunt maken. Om te beginnen moeten we een nieuwe UUID maken.

Om snel een nieuwe UUID te genereren, gebruiken we een website genaamd Online UUID Generator. Er zijn veel betere manieren om een UUID te genereren, maar voor deze tutorial is deze het meest eenvoudig.

3 – Zodra je een UUID hebt, verwijder je de koppeltekens ervan en voeg je na elke twee letters een spatie toe. Hieronder heb ik een voorbeeld geplaatst van wat ik bedoel.

Het gewijzigde UUID heeft hetzelfde aantal bytes om de UUID te vervangen die we eerder in de tutorial hebben gebruikt.

Van:
98374d0a-fa8f-43ab-968b-88eaf83c6e4c

Naar:
98 37 4d 0a fa 8f 43 ab 96 8b 88 ea f8 3c 6e 4c

4 – Om nu de UUID in de opdracht te vervangen, zoek je naar bytewaarde “15” van de opdracht dat de lengte van de lading aangeeft.

Vanaf hier moet je de volgende 16 bytes (Nabijheid UUID, 1e t/m 16e byte, zie tabel) verwisselen. Ik heb hieronder een voorbeeld opgenomen. Hier laat ik zien hoe een aangepaste versie van de opdracht eruit zou moeten zien. De vetgedrukte tekst is de informatie die vervangen is.

sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 06 1A FF 4C 00 02 15 98 37 4D 0A FA 8F 43 AB 96 8B 88 EA F8 3C 6E 4C 00 00 00 00 C8 00

Hopelijk heb je nu je Raspberry Pi iBeacon in gebruik. Het is goed dat je begrijpt wat voor soort gegevens jouw Bluetooth-apparaat verzend. Evenals dat je weet hoe je de UUID kunt vervangen door je eigen gegenereerde UUID.

Have A Nice Day!

Geef als eerste een reactie

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd.


*