sexta-feira, 29 de novembro de 2013

Construir o seu próprio a Apple iBeacon com um Pi Raspberry


Entrega Email: 4 passos para receber mais e-mail para a caixa de entrada


Característica EUA de lojas de departamento Macy disse recentemente que está a implementar tecnologia de rastreamento baseado em iPhone o melhor para incentivar os apostadores navegar para comprar. Claro, Macy escolheu para lançar isso como uma tecnologia Apple - figurando, presumivelmente, os proprietários do iPhone são mais receptivos a estímulos fornecidos por meio da tecnologia e ter mais dinheiro para se divertir do que os fãs do Android.


Mas o fato é que o sistema da Apple chama iBeacon simplesmente faz uso de recursos que já fazem parte da especificação Bluetooth Low Energy (LE).







Isso me fez pensar: o quão difícil seria para construir um sistema similar, de minha própria? Não é muito difícil em tudo, ao que parece. Escolha o kit de direito e pode ser muito barato também. Eu criei o meu farol usando um Raspberry Pi £ 30 e £ 12 um dongle Bluetooth 4.0 USB.


Pimoroni Piglow

Certamente esta não pode ser uma iBeacon Apple? Sim, pode



Bluetooth LE incorpora um protocolo para dispositivos baliza para se identificar. Cada envia um curto pacote de dados "publicidade", que pode conter até 31 bytes de dados definidos pelo usuário. Especificação iBeacon da Apple, tal como ela é, armazena quatro valores neste espaço: a "proximidade" UUID de 128 bits e dois números de 16 bits, "principais" e "menores".


A Apple tem um bom exemplo de como essas variáveis ​​são utilizadas: a cadeia de lojas de departamento - Macy, dizer - adota um único UUID para todas as suas balizas. Ele utiliza o valor da variável principal para distinguir uma loja a partir de uma outra, e o valor da variável de Minor para diferenciar entre balizas em departamentos de uma loja.


Nem todos os dongles Bluetooth são Linux-friendly. Um recurso útil listar os bem-comportando pode ser encontrada em Embedded Linux Wiki . A uma marca será fixado de volta em torno de uma nota de dez libras, os genéricos menos.


Depois, prepare o Pi. Você precisa instalar a pilha oficial Linux Bluetooth software, BlueZ, e vários pacotes de desenvolvimento USB, alguns usando o apt-get ferramenta na linha de comando, outros por compilar o código.


Primeiro execute o seguinte:


sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev


Em seguida, instale os arquivos de origem do BlueZ e compilá-lo. A versão, no momento da escrita era 5,11.



sudo wget www.kernel.org/pub/linux/bluetooth/bluez-5.11.tar.xz
sudo unxz bluez-5.11.tar.xz
sudo tar xvf bluez-5.11.tar
cd bluez-5.11
. sudo / configure - disable-systemd
sudo make
sudo make install

Isso vai levar um tempo, mas quando ele é feito, você pode reiniciar e ligue o dongle.


Decodificando o protocolo iBeacon


Não há nenhuma versão do uuidgen utilitário prontamente disponível para o Pi, então eu usei este site . Os 16 pares de valores de dois dígitos hexadecimais - cada par é apelidado de "octeto" no jargão - juntamente com o Major e Minor par de octetos, devem ser perfurados no sub-sistema Bluetooth do Pi usando de BlueZ hcitool utilitário:


sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 [ 92 77 83 0A B2 EB 49 0F A1 DD 7F E3 8C 49 2E DE ] [ 00 00 ] [ 00 00 ] C5 00


Note que os colchetes não fazem parte do comando - eu adicionei-los apenas para mostrar onde o UUID, Major, em seguida, os códigos de Menores ir. O 'C5' depois deles é um valor que representa o nível de potência transmitida. Basta cortar e colar a linha acima e substituir o UUID com o seu próprio.


Bluetooth 4.0 dongle

Nem todos os dongles Bluetooth são amigos Pi



Isto é como você decodificar o comando: o "hci0" identifica o seu dongle Bluetooth, "cmd" conta hcitool para enviar os seguintes dados de comando para o dispositivo. A "0x08" é o grupo de comando Bluetooth - o "OGF" no jargão oficial - e "0x0008" é o comando específico ("OCF"), HCI_LE_Set_Advertising_Data.


O primeiro "1E" é o número de octetos "significativas" nos dados de publicidade que se seguem, até um máximo de 31. A parte não significativa apenas deve incluir pares de zeros para levar o número de octetos até 31 e que, para economizar energia, não são transmitidas.


Os dados anúncio é dividida em grupos, cada um formatado com um único octeto fornecendo o número de octetos restantes no grupo - essencialmente, diz o sub-sistema de Bluetooth como mais ao longo da lista de octetos é o próximo grupo. Ele é seguido por um único octeto que define o tipo de dados, e então qualquer número de octetos segurando os dados em si. Você pode colocar como muitos desses grupos para o pacote de dados de publicidade, como você pode caber nas 31 octetos permitidos.


No meu exemplo, o primeiro "02" na seqüência diz que o primeiro bloco de dados anúncio é de dois octetos longo. O próximo octeto, "01", diz o octeto (s) seguinte publicidade são bandeiras Bluetooth, eo "1A" é o valor binário derivada quando algumas dessas bandeiras estão definidos.


'1 A 'diz que o próximo grupo é de 26 octetos longo, e "FF" identifica o grupo como dados específicos do fabricante. A especificação Bluetooth 4.0 diz que os próximos dois octetos tem que expor o fabricante: o "4C 00" é da Apple Bluetooth fabricante ID.


IBeacon notifications on Metawatch

Na Zona: notificação local em um smartwatch MetaWatch



Eu ainda não tenho certeza do que o "02" e "15" significam, mas como eu digo, a proximidade UUID, Major e os valores menores, eo nível de poder completar os 26 octetos de dados do fabricante - e os 30 octetos do todo dados de publicidade.


O hcitool comando formata o sinal publicidade iBeacon. Dizer a Pi para começar a enviar o sinal requer o seguinte comando:


sudo hciconfig hci0 leadv


Você pode desativar a atividade farol LE com o comando:


sudo hciconfig hci0 noleadv


E é um próximo passo óbvio para criar scripts para definir tudo isso e ativar LE publicidade sempre que as botas de Pi-se, mas não vou fazer a cobertura que aqui. Se você gostaria de fazer isso, há um tutorial muito bom escrito por baseados em Washington DC Radius Networks aqui .



Nenhum comentário:

Postar um comentário