本文将指导如何使用GATT配置文件,通过蓝牙低功耗(BLE)与Texas Instruments SensorTag进行通信。
本指南将教如何使用GATT配置文件,通过蓝牙低功耗与Texas Instruments SensorTag进行通信。
需要已经组装好Intel® Edison开发板,更新到最新固件,通过串行连接,并连接到Wi-Fi。如果需要帮助完成这些步骤,请参考入门指南。
TI SensorTag以及许多其他蓝牙设备使用通用属性配置文件(GATT)与计算机和其他设备进行通信。GATT工具是BlueZ软件包中的标准工具,但默认情况下并未安装在Intel Edison开发板上。要安装它,请通过串行登录到Intel Edison开发板并输入以下命令:
root@edison: cd ~
root@edison: wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.24.tar.xz --no-check-certificate
root@edison: tar -xf bluez-5.24.tar.xz
root@edison: cd bluez-5.24
root@edison: ./configure --disable-systemd --disable-udev
root@edison: make
root@edison: make install
要能够从任何地方启动gatttool,请将其添加到路径:
root@edison: export PATH=$PATH:~/bluez-5.24/attrib/
首先在Intel Edison开发板上启用蓝牙。
root@edison: rfkill unblock bluetooth
root@edison: bluetoothctl
注册代理并将其设置为默认。
[bluetooth]# agent KeyboardDisplay
[bluetooth]# default-agent
[bluetooth]# scan on
如果扫描中没有显示SensorTag,请点击SensorTag侧面的配对按钮。一旦发现了SensorTag的MAC地址,可以关闭扫描模式并退出。
[bluetooth]# scan off
[bluetooth]# quit
在上面的屏幕截图中,SensorTag的MAC地址被突出显示。
现在可以使用gatttool读取SensorTag的传感器数据。
使用上一步中收到的MAC地址以交互模式启动gatttool。
root@edison: gatttool -b 34:B1:F7:D5:15:38 -I
连接到设备,通过向配置句柄0x29写入01来打开温度传感器,并从温度句柄0x25读取值。
[34:B1:F7:D5:15:38][LE]> connect
[34:B1:F7:D5:15:38][LE]> char-write-cmd 0x29 01
[34:B1:F7:D5:15:38][LE]> char-read-hnd 0x25
温度传感器对应的句柄值是从Sensor Tag属性表中提取的:
输出是两个16位无符号值。要将这些值转换为温度读数,它们必须输入到使用SensorTag wiki中概述的转换算法的脚本中:
创建此类脚本的一种方法是使用Python编程语言和pexpect模块。例如,可以从以下链接下载Python脚本,并使用它从SensorTag读取温度值:
root@edison: wget https://github.com/msaunby/ble-sensor-pi/archive/master.zip --no-check-certificate
root@edison: unzip master.zip
root@edison: cd /ble-sensor-pi-master/sensortag
使用vi打开sensortag_test.py。
root@edison: vi ./sensortag_test.py
将第62行从
tool.expect('[CON].*>')
更改为
tool.expect('Connection successful')
编辑完成后,按Escape键并输入:
:wq
要使用pexpect运行Python脚本,必须安装pexpect,使用Pip安装最简单。Pip默认情况下并未安装在Intel Edison开发板上,也不在官方opkg仓库中。但是,Pip在Michael Hirsch编译的非官方Intel Edison开发板仓库中。以下是他关于使用非官方仓库的指南摘录:
使用vi编辑base-feeds.conf文件。
root@edison: vi /etc/opkg/base-feeds.conf
输入:
src/gz all http://repo.opkg.net/edison/repo/all
src/gz edison http://repo.opkg.net/edison/repo/edison
src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32
按Escape键并输入:
:wq
更新opkg并安装Python。
root@edison: opkg update
root@edison: opkg install python-pip
为Pip安装setup-tools。
root@edison: wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py --no-check-certificate -O - | python
现在已经准备好运行温度脚本了。从/ble-sensor-pi-master/sensortag目录,输入以下命令。
root@edison: ./sensortag_test.py 34:B1:F7:D5:15:38
输出应该类似于下面的屏幕截图。
立即开始使用Intel® IoT开发者计划,它提供了知识、工具、套件和专家社区,以快速轻松地将创新想法转化为IoT解决方案。
梦想它,用Intel® IoT开发者套件构建它,适用于Intel® Edison和Intel® Galileo平台。这些套件是多功能的、性能优化的、完全集成的端到端IoT解决方案,支持多种编程环境、工具、安全性、云连接和硬件。