用Raspberry Pi构建DIY iBeacon

针对特定用户的大都会反乌托邦期货广告,这是汤姆·克鲁斯(Tom Cruise)的电影《少数群体报道》(emority Report)所展示的。但这不是反乌托邦式的未来:这项技术已经存在。尽管它不依赖于使用视网膜进行快速识别,但它确实使用了蓝牙。 iBeacon由Apple开发,旨在为iOS用户提供基于位置的信息,使用设备附近的位置触发个性化广告或跟踪用户的运动。谷歌还创建了自己的通用信标规范,尽管目前对它的支持有限,因为开发人员难以掌握。

毫无疑问,您可以通过添加蓝牙低端将Raspberry Pi用作iBeacon。能源(BLE)USB模块。更有趣的是,我们可以选择这项技术,而放弃未来的广告方法,而转向在家庭中使用。

iBeacon的工作原理

构建一种智能设备的低能耗蓝牙发射器应用程序可以检测到很简单,但是iBeacon是如何工作的?

BLE是专门为短距离传输而设计的,但是功耗较低(单个币形电池应使用三年)。信标广播小数据包,称为“广告"(不是营销意义上的数据),并用于触发智能手机应用程序中的操作,可能显示商业消息,或提示读者执行操作。

除了营销之外,iBeacon通常用于将位置状态推送到应用程序,例如在博物馆周围漫步时显示有关展​​览的信息。

使用Raspberry Pi构建自己的iBeacon。和蓝牙加密狗

要将树莓派用作iBeacon,您需要一个蓝牙USB适配器。但是,您不能仅连接任何旧的Bluetooth USB设备。相反,您需要使用BLE(蓝牙低能耗)设备,该设备可以从Amazon或Adafruit相对便宜地购买。您可以在标准的Raspbian安装上运行该项目。

(如果您希望所有这些都作为快捷方式,PiBeacon映像是RadiusNetworks的最佳选择。只需下载,写入SD卡并启动。

但是,在连接BLE之前,是时候安装一些库了:

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

现在,完成此操作后,您需要安装Bluez,这是Linux的蓝牙堆栈。

sudo mkdir bluezcd bluezsudo wget www.kernel.org/pub/linux/bluetooth/bluez-5.11.tar.xz

一旦下载,必须构建Bluez。

sudo unxz bluez-5.11.tar.xzsudo tar xvf bluez-5.11.tarcd bluez-5.11sudo ./configure --disable-systemdsudo make

(此步骤可能需要一些时间。去喝杯茶。或烤一个树莓派。)

sudo make install

您快要准备好了。发出关闭命令,然后在Pi掉电时,连接BLE。

sudo shutdown -h now

广播PiBeacon

hciconfig

您会注意到,如果检测到模块,则其状态为目前处于关闭状态。

To resolve this, configure the device:

sudo tools/hciconfig hci0 upsudo tools/hciconfig hci0 leadv 3sudo tools/hciconfig hci0 noscanc

(请注意,最后一行会禁用蓝牙扫描,因为这可能会导致问题。)

重复执行先前的命令以运行hciconfig:

您现在将看到设备状态为“正在运行"。

如何使用PiBeacon进行广告?

因此,您有了一个由Raspberry驱动的iBeacon皮。但是您如何使用它来识别附近的蓝牙设备呢?正如Adafruit解释的那样,信标需要输入广告数据。他们建议使用hcitool命令输入以下字符串:

sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 E2 0A 39 F4 73 F5 4B C4 A1 2F 17 D1 AD 07 A9 61 00 00 00 00 C8 00

是,这是一个由数字和字母组成的长字符串。它以十六进制编写,尽管我们看不到它,但该字符串分为几部分。例如,标记FF表示将遵循制造商特定的数据,在这种情况下为4C 00(Apple的ID)。可以适当地更改该字符串。

让我们对其进行分解:

如您所见,在您看不到每个数据段的含义之前,该字符串意义不大。请注意,ID始终相同以标识数据包类型,并且数据长度需要转换为十进制才能欣赏数据包的实际长度。

带有FF标记的代码如上所述的128位ID,后跟主要数据和次要数据。这些以分层方式(主要是第一,次要是第二)识别位置或注释。最后,TX Power有助于估算距离。

PiBeacon像iBeacon一样,具有三个范围:即时范围(定位到几厘米),近距离(几米)和远距离(约10米) 。家具,门和墙壁会削弱BLE信号,因此任何测得的距离都只是近似值。

如果您计划使用iBeacon技术,为您的应用提供唯一的ID很重要。您可能会使用www.uuidgenerator.net之类的东西,或者如果使用Mac,则命令行 uuidgen 实用程序将生成一个唯一的ID。

PiBeacon处于活动状态!

输入此内容后,PiBeacon现在就在做广告。您现在要做的就是在iOS商店中找到一个合适的iBeacon应用程序,例如Beacon Toolkit [No Nower Available]来检测它,然后选择收听。上面的字符串在Beacon Toolkit应用程序中作为UUID提供。可以使用其他UUID,但不适用于该应用程序:使用价格稍高的Beacon工具箱(4.99美元),该工具箱应该能够识别范围内的大多数iBeacon。

对于使用Raspberry专用它不满意to到这单任务?不用担心-只要您具有BLE防护罩(可以在Arduino入门套件中使用),您就可以构建Arduino iBeacon。这是一个演示:

喜欢冒险吗?价值10美元的电子产品和一些焊接技能也可以使您自己动手做iBeacon。

有任何疑问或意见吗?将它们留在下面。

标签: 蓝牙 Raspberry Pi