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

简介:

在 Arduino 环境中,可以非常便捷地访问 BT SPP(比如串行端口),并响应 BT 串行端口 传来的命令字符串。 许多 Arduino 项目均运用这种方法支持项目的远程控制。 以前,您需要 采用额外的 BT shield 或 BT 套件在英特尔® Galileo 上存档。 现在,借助英特尔® Edison 的内置 BT 支持,您可以使用带有 Arduino breakout 开发板的 Edison 模块完成存档。 不再 需要额外的 BT shield。

要求:

Android* 手机或运行 Android 系统的平板电脑,且带有蓝牙。

将英特尔® Edison 开发板连接至 Wi-Fi* 网络,请参阅: 英特尔® Edison 技术入门。 为您的 Edison 指定一个名称 ,比如:myedison。

SCP 使用连接至相同网络的主机计算机

通过串行端口或 SSH 在开发板上建立 Terminal。

背景:

使用串行端口配置文件 (SPP) 连接英特尔® Edison 开发板和您的安卓* 手机介绍了如何运用 SPP 将 Edison 板连接至 Android* 手机。但是,无法从 Arduino 代码中的 SPP 获取输入。 蓝牙* LE (BLE) 助力英特尔® Edison 与安卓* 的连接 介绍了一种通过 Arduino 代码访问 BT 的方法,但需要采用 BT shield/套件。

我们拥有内置 BT,为何不加以利用呢? 在此我提供一个关于使用 BT 的示例库。

使用 mmap() 可有效地在英特尔® Edison 中实现 Arduino 与 Linux 的通信。 请参阅 Arduino* 和 Linux 本地进程实现高效通 信。 但是,使用 python 和 Arduino 进程之间的内存共享锁非常困难。

因此,我选择了命名管道,以便轻松实施 Arduino sketch 进程和 BT SPP python 服务进 程之间的 IPC。

Edison 蓝牙服务的设置为:

1. 下载文件 bluetooth- service.tar.gz

2. 将 bluetooth-service.tar.gz 复制到 /home/root/Bluetooth,并提取该文件
1 mkdir /home/root/bluetooth cd /home/root/bluetooth mv
2
3 /home/root/bluetooth-service.tar.gz ./ tar -xvf bluetooth-service.tar.gz

3. 将 bluetooth-spp-pin.service 复制到 /lib/systemd/system/
1 cp bluetooth-spp-pin.service /lib/systemd/system

4. 启用 systemd 服务
1 systemctl enable bluetooth-spp-pin

5. 重启您的设备
1 reboot

6. 再次确认该服务
1 systemctl status bluetooth-spp-pin

Edison Arduino sketch 的设置为:

1. 下载库 Intel-Edison-BT-SPP- Library.zip。

2. 提 取至您的 Arduino 库路径,例如: C:\Users\username\Documents\Arduino\libraries, check it in your Arduino IDE, File->Preferences->Sketchbook Location

3. 重 启您的英特尔® Arduino IDE v1.6.0 或更高版本

4. 在 File->Examples->Intel Edison BT SPP Driver Library 路径下打开示例 bt_test

5. 验 证并将 sketch 上传至您的 Edison

6. 发 送内容后,打开 Serial Monitor 查看输出。

手机的设置:

1. 从 PlayStore 下载并安装任意 BT SPP 应用。 例如: BLE_SPP_PRO。

2. 在 手机上打开 BT,并连接至您的 Edison 模块

3. 输 入 PIN 代码,默认 PIN 为 8888,稍后可在 bluetooth-pin-service.py 的第 70 行随意进行 更改。

4. 在 应用中连接至 Edison,例如:myedison

5. 向 您的 Edison 发送一些内容,Arduino IDE 的 Serial Monitor 应该会显示结果。


结论:

现在您拥有支持 SPP 的固定 PIN BT 设备。 您可以非常轻松地连接该设备,与连接至 BT 扬声器类似。 BT 自动启动后开始运行,您无需通过 terminal 配对该设备。 您可以访问 Arduino 代码中的BT SPP,将其当作串行设备对待,可通过带有 BT SPP 应用的安卓手机连接 至您的 Edison 项目。 这意味着您可以远程控制 Edison 项目,对项目进行任意操作。 以此 为基础,您可以借助英特尔® Edison 的内置 BT 功能开发有趣的应用。 尽情享用,并与我们分享您的项目吧!

后续工作:

到目前为止,我们只能采用该方法将命令从您的 BT SPP 设备发送至 Edison。 你可以添加 其他 fifo 将命令从 Edison 返回至 BT SPP 设备。 由于是 fifo,Linux 环境下的应用还可 借此将命令发送至 Arduino 环境。 这样,创建更具多样化的方法实现与 Arduino 的互动既简 单,又轻松。 例如,您可以在 Linux 中处理音频,然后通过 fifo 将命令发送至 Arduino。 或者,您还可从 Node.js 获取 twits,然后将 JSON 发送至 Arduino 代码,以便与您的现有 Arduino shield 实现互动。 现在,一切已实现互连! 您还可以编写自己的安卓 BT SPP 应用,实现更多互动。

文章来源: 英特尔开发人员专区