65.9K
CodeProject 正在变化。 阅读更多。
Home

通过蓝牙串行端口配置文件(SPP)在Intel® Edison上与Arduino代码通信,通过Android手机

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2015 年 6 月 15 日

CPOL

5分钟阅读

viewsIcon

22578

在 Arduino 环境中,访问 BT SPP 就像访问串行端口一样方便,并且可以响应从 BT 串行端口发送的命令字符串。

获取新的 Intel® IoT Developer Kit,这是一个完整的硬件和软件解决方案,让开发者能够使用 Intel® Galileo 和 Intel® Edison 板构建激动人心的新解决方案。请访问 Intel® 物联网开发者中心

在 Arduino 环境中,访问 BT SPP 就像访问串行端口一样方便,并且可以响应从 BT 串行端口发送的命令字符串。许多 Arduino 项目都利用这种方式来实现远程控制。过去,在 Intel® Galileo 上实现这一点需要额外的 BT 屏蔽板或 BT 套件。现在,由于 Intel® Edison 具有内置的 BT 支持,您可以使用带 Arduino 扩展板的 Edison 模块来实现。无需额外的 BT 屏蔽板!

要求

  • 运行 Android 且具有蓝牙功能的 Android 手机或平板电脑。

  • 将您的 Intel® Edison 板连接到 Wi-Fi* 网络,请参阅 开始使用 Intel® Edison 技术。为您的 Edison 指定一个名称,例如:myedison。

  • 使用连接到同一网络的宿主机进行 SCP 传输

  • 通过串行端口或 SSH 建立到您的开发板的终端连接。

背景

使用串行端口配置文件 (SPP) 将 Intel® Edison 板连接到您的 Android* 手机 描述了如何将 Edison 板与 Android* 手机通过 SPP 连接,但是,您无法在 Arduino 代码中获取 SPP 的输入。在 使用蓝牙* LE (BLE) 从 Android* 连接到 Intel® Edison 中描述了通过 Arduino 代码访问 BT 的方法,但这需要额外的 BT 屏蔽板/套件。

既然我们有内置的 BT,为什么不利用它呢?这里我提供了一个示例库来实现这一点。

在 Intel® Edison 中,Arduino 和 Linux 之间进行通信的一个有效方法是使用 mmap()。请参阅 Arduino* 和 Linux 本地进程之间的高效通信。但是,在 python 进程和 Arduino 进程之间使用内存共享锁并不容易。

因此,我选择命名管道作为实现 Arduino Sketch 进程和 BT SPP Python 服务进程之间 IPC 的简单方法。

Edison 蓝牙服务设置

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

2. 将 bluetooth-service.tar.gz 复制到 /home/root/Bluetooth 并解压

mkdir /home/root/bluetooth
cd /home/root/bluetooth
mv /home/root/bluetooth-service.tar.gz ./
tar -xvf bluetooth-service.tar.gz

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

cp bluetooth-spp-pin.service /lib/systemd/system

4. 启用 systemd 服务

systemctl enable bluetooth-spp-pin

5. 重启您的设备

reboot

6. 仔细检查服务

systemctl status bluetooth-spp-pin

Edison Arduino Sketch 设置

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

2. 解压到您的 Arduino 库路径,例如:C:\Users\username\Documents\Arduino\libraries,在您的 Arduino IDE 中检查,文件 -> 首选项 -> Sketchbook 位置

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

4. 在 文件 -> 示例 -> Intel Edison BT SPP 驱动库 下打开示例 bt_test

5. 验证并上传 Sketch 到您的 Edison

6. 打开串行监视器,这样我们就可以在发送内容后检查输出。

手机设置

1. 从 PlayStore 下载并安装任何 BT SPP APP。例如:BLE_SPP_PRO

2. 在手机上打开蓝牙,并连接到您的 Edison 模块

3. 输入 PIN 码,默认 PIN 为 8888,您可以在 bluetooth-pin-service.py 的第 70 行随意更改它

4. 在 APP 中连接到您的 Edison,例如:myedison

5. 向您的 Edison 发送内容,您应该能在 Arduino IDE 的串行监视器中看到结果

结论

现在您有了一个固定 PIN 的 BT 设备,支持 SPP。因此,您可以非常轻松地连接到它,就像连接到您的 BT 扬声器一样。BT 在启动后自动工作,您无需通过终端配对设备。您可以在 Arduino 代码中访问 BT SPP,将其视为串行设备,并通过带有 BT SPP App 的 Android 手机连接到您的 Edison 项目。这意味着您可以远程控制您的 Edison 项目,完成您想要的任何事情。基于这项工作,您可以开发许多有趣的应用程序,利用 Intel® Edison 的内置 BT 功能。祝您玩得开心,并与我们分享您的项目!

后续步骤

到目前为止,我们只实现了将命令从您的 BT SPP 设备发送到 Edison 的方法。您可以添加额外的 FIFO 来将命令从 Edison 发送回您的 BT SPP 设备。由于这是一个 FIFO,您在 Linux 下的应用程序也可以利用它将命令通过它发送到 Arduino 环境。这确实是一种简单易行的方法,可以增加更多可能性,实现与 Arduino 的通用交互方式。例如,您可以在 Linux 中处理音频,然后通过此 FIFO 将命令发送到 Arduino。或者,您可以从 Node.js 获取推文,然后将 JSON 发送给 Arduino 代码,以与您现有的 Arduino 屏蔽板进行交互。现在一切都已连接!您还可以编写自己的 Android BT SPP 应用程序来实现更多交互!

Intel® 物联网开发者中心

立即开始创新!Intel® 物联网开发者计划提供知识、工具、套件以及专家社区,助您快速轻松地将您的创新想法转化为物联网解决方案。

使用适用于 Intel® Edison 和 Intel® Galileo 平台的 Intel® IoT Developer Kit,实现您的梦想,并付诸实践。这些套件功能多样,性能优化,并且是完全集成的端到端物联网解决方案,支持各种编程环境、工具、安全、云连接和硬件。

如需更多资源并了解新的 Intel® 物联网开发者套件 v1.0 如何帮助您简化物联网项目

© . All rights reserved.