使用安卓* 电话通过英特尔® Edison的蓝牙串行端口 (SPP) 与Arduino代码通信

1,背景
在 Arduino 环境中,可以非常便捷地访问 BT SPP(比如串行端口),并响应 BT 串行端口 传来的命令字符串。 许多 Arduino 项目均运用这种方法支持项目的远程控制。 以前,需要采用额外的 BT shield 或 BT 套件在英特尔®edison上实现。 现在,英特尔® Edison 的内置 BT 支持,可以使用带有 Arduino breakout 开发板的 Edison 模块来完成实现。 不再需要额外的 BT shield
使用安卓* 电话通过英特尔® Edison的蓝牙串行端口 (SPP) 与Arduino代码通信
2,硬件要求与连接
按照之前的连接,这里不在多说。
3Edison蓝牙服务的设置
1)下载蓝牙服务文件bluetooth- service.tar.gz;
2)在/home/root/下创建bluetooth文件夹;
cd /home/root/
mkdir bluetooth
3)将 bluetooth-service.tar.gz 复制到 /home/root/Bluetooth,并解压
tar zxvf bluetooth-service.tar.gz
4)将 bluetooth-spp-pin.service 复制到 /lib/systemd/system/
cp bluetooth-spp-pin.service /lib/systemd/system
5)启用 systemd 服务
systemctl enable bluetooth-spp-pin
6)重启设备
reboot
7)启动完成之后可以确定蓝牙服务是否打开。
systemctl status bluetooth-spp-pin
使用安卓* 电话通过英特尔® Edison的蓝牙串行端口 (SPP) 与Arduino代码通信

4,下载Arduino
1)下载库 Intel-Edison-BT-SPP- Library.zip。
2)解压后放到libraries目录下。
3)然后重启Arduino IDE
5,编写Ardino程序
先使用库里带的例子,在 File->Examples->Intel Edison BT SPP Driver Library 路径下打开示例 bt_test,编译上传sketch 上传至 Edison
6手机打开BT SPP,手机上安装任意 BT SPP 应用。 例如: BLE_SPP_PRO
打开BT,连接edison
输入 PIN 代码,默认 PIN 为 8888,稍后可在 bluetooth-pin-service.py 的第 70 行随意进行 更改。
这时向Edison 发送一些内容,串口终端会显示结果。
但是设备连接上马上就断开了。
使用安卓* 电话通过英特尔® Edison的蓝牙串行端口 (SPP) 与Arduino代码通信
配对连接。连接上马上就断开了。
使用安卓* 电话通过英特尔® Edison的蓝牙串行端口 (SPP) 与Arduino代码通信
这个问题折腾了我两天,一度怀疑App问题,本想放弃。好在坚持,后面终于找到原因,原因是缺少一个配置,需要添加相关命令即可连接。
该文件应用在/etc/dbus-1/system.d/bluetooth.conf

有需要的可留下邮箱获取配置文件

同时这个inter官方论坛提供的方法只有读取功能,不具备写功能(需要修改python程序)。有需要的也留言获取写功能代码。


7,结论
现在您拥有支持 SPP 的固定 PIN BT 设备。 您可以非常轻松地连接该设备,与连接至 BT 扬声器类似。 BT 自动启动后开始运行,您无需通过 terminal 配对该设备。 您可以访问 Arduino 代码中的BT SPP,将其当作串行设备对待,可通过带有 BT SPP 应用的安卓手机连接 至您的 Edison 项目。 这意味着您可以远程控制 Edison项目,对项目进行任意操作。 以此 为基础,您可以借助英特尔® Edison 的内置 BT 功能开发有趣的应用。
参考文档:https://software.intel.com/zh-cn/blogs/2015/05/19/communicate-to-arduino-code-with-your-android-phone-by-bluetooth-serial-port