智能物联网婴儿车
本文将讨论在英特尔主办的 2014 年 PDX-Transportation Hackathon 上开发的智能物联网婴儿车,并指导您如何自己制作一辆智能物联网婴儿车。
概述
本文将讨论在英特尔主办的 2014 年 PDX-Transportation Hackathon 上开发的智能物联网婴儿车,并指导您如何自己制作一辆智能物联网婴儿车。该婴儿车配备了 Intel® Edison 板、自动制动系统、转向信号灯、数据同步到云以及用于从云端提取数据的 Android* 应用。
开发智能物联网婴儿车的动机源于一个 YouTube* 视频,视频中一个婴儿车从火车站台边缘坠落到下方的轨道上。这促使人们研究如何利用技术来防止此类事件再次发生。该项目的主要目的是防止婴儿车失控;然而,鉴于设计的简单性,在开发过程中添加了更多功能,以丰富父母的推车体验。
当父母松开婴儿车把手时,前轮锁定,防止其滑走。一旦父母触摸到把手,前轮的锁就会解除,婴儿车就可以自由移动了。智能物联网婴儿车上的转向信号灯是 LED 灯条,激活时会闪烁。但是,当两个转向信号灯同时激活时,两个 LED 灯条都会保持亮起状态,而不是闪烁,以表示正在制动。数据通过 Intel Edison 板上的内置 Wi-Fi* 上传到云端,让父母之后可以从智能手机访问存储在云端的推车行程信息。
您将需要
安装在 Intel® Arduino 扩展板上的 Intel® Edison 板,运行最新固件版本。
有关最新固件,请参阅: http://communities.intel.com/docs/DOC-23242
英特尔® XDK 物联网版
3 x Grove* - 智能继电器 (v 1.1)
http://www.seeedstudio.com/depot/Grove-Relay-p-769.html
4 x Grove* - 触摸传感器 (v1.0)
7 x Grove* - 连接线 (最少)
http://www.seeedstudio.com/depot/Grove-Universal-4-Pin-20cm-Unbuckled-Cable-5-PCs-Pack-p-749.html
1 x Base Shield v2
http://www.seeedstudio.com/depot/Base-Shield-V2-p-1378.html
2 x LED 灯条 (12V)
1 x 拉式电磁阀 (12V)
1 x RadioShack 276-159B 板
http://www.radioshack.com/dual-general-purpose-ic-pc-board/2760159.html#.VMabo_7F8UM
1 x 12V 电池
1 x 慢跑婴儿车
5 到 10 英尺的 22AWG 电线,用于延长连接
工作原理
智能制动
自动制动系统由两个电容式触摸传感器(Grove* - 触摸传感器)、一个继电器(Grove* - 智能继电器)和一个 12V 拉式电磁阀组成。电容式触摸传感器安装在婴儿车的把手上,传感器输出连接到 Intel® Arduino 扩展板的输入引脚。当左侧或右侧触摸传感器为高电平(父母触摸把手)时,一个输出引脚被断言(驱动为高电平),以激活控制拉式电磁阀的继电器,制动器解除。反之,当两个触摸传感器都为低电平(父母未触摸把手)时,输出引脚被去断言(驱动为低电平),以停用继电器,前轮制动器被接合。由电磁阀拉动或推出的金属杆通过阻碍婴儿车前轮辐条的路径来充当制动器。有关制动机制和控制电路的详细图形表示,请参阅图 2。
转向信号灯
转向信号系统由两个 12V LED 灯条、两个继电器和安装在婴儿车把手上的另外两个电容式触摸传感器组成。与制动系统一样,电容式触摸传感器的输出连接到 Intel Arduino 扩展板的输入引脚。每个转向信号灯由一个电容式触摸传感器、一个继电器和一个 LED 灯条组成。当父母只触摸左侧电容式触摸传感器转向信号灯时,控制左侧转向信号灯的输出引脚会切换,左侧转向信号灯开始闪烁。当父母只触摸右侧电容式触摸传感器转向信号灯时,控制另一继电器的不同输出引脚会切换,右侧转向信号灯开始闪烁。如果父母同时触摸左侧和右侧电容式触摸传感器转向信号灯,两个 LED 灯条都会亮起,并且不会闪烁,表示它们在制动。有关电路详情,请参阅图 3。
云存储和 Android* 应用
记录到云端的数据包括传感器数据、制动事件、左转和右转。Android 应用包含三个用于左转、右转、制动事件的矩形和一个用于显示每个记录事件的文本显示区域。HTTP POST 请求用于将 JSON 编码的数据结构写入云端。本文不涉及 Android 应用的开发或云存储的设置。图 4 是为智能物联网婴儿车开发的 Android 应用的图片。
硬件概述
智能物联网原理图
图 5 是智能物联网婴儿车的完整原理图。请注意,在此图中,Intel Arduino 扩展板与外围硬件组件(智能继电器、触摸传感器)之间的引脚连接未显示 Base Shield v2 的使用,而 Grove 连接器需要 Base Shield v2。Base Shield v2 是一个硬件模块,直接插入扩展板上的 Arduino 接头,并将部分数字/模拟引脚路由到 Grove 连接器。
电源分配
继电器、LED 灯条、电磁阀和 Intel Arduino 扩展板(通过 DC 电源插孔)都需要访问 12V 电池。因此,需要一个定制的电源分配板。图 6 显示了一个未修改的 RadioShack 276-159B 板,以及为智能物联网婴儿车设计中使用的所有硬件组件供电所需的连接。通过将电池正极连接到节点 A,然后按照图 6 所示在节点 A、B、C、D 和 E 之间焊接跳线,来创建 12V 电源轨。类似地,通过将电池负极连接到节点 F,然后按照图 6 所示在节点 F、G、H、I 和 J 之间焊接跳线,来创建接地(GND)电源轨。每个硬件外围设备通过 12V 电源轨获取电源,并通过 GND 电源轨共享一个公共接地。此示例使用 8 节串联的“AA”电池,通过 RadioShack 电池座和卡扣连接器来提供所需的 12V 电源。
Grove* - 智能继电器
图 7 是 Grove - 智能继电器的图片,其中包含智能物联网婴儿车完整原理图(图 5)中使用的参考设计ator。SIG、NC、Vcc 和 GND 引脚是图 7 中显示的 Grove 母插座的一部分。用于为继电器控制的外围设备供电的电压输入到 Grove - 智能继电器上的接线端子。图 7 显示 Vin 引脚位于接线端子块的左侧,Vout 引脚位于接线端子块的右侧。
分步指南
1 – 安装 Intel® Edison 板和 Base Shield v2
首先,将 Intel Edison 板和 Base Shield v2 都安装到 Intel Arduino 扩展板上。Intel Edison 板应插入 Intel Arduino 扩展板上的参考设计ator J7。然后,使用扩展板附带的小螺母和螺栓固定 Intel Edison 板。通过将 Base Shield v2 插入扩展板上的 Arduino 接头来安装 Base Shield v2,并确保 Base Shield v2 上的电压选择开关设置为 5V。有关安装位置以及安装组件后的硬件设置外观,请参阅图 8。
2 – 智能制动
将电磁阀的正极连接到用于控制电磁阀的继电器的 Vout。使用 Grove 连接器将智能继电器连接到安装好的 Base Shield v2 上的 Grove 连接器 D2。
3 – 左转信号灯
将左转 LED 灯条的 12V 输入线连接到用于切换左转信号的继电器的 Vout。使用 Grove 连接器将智能继电器连接到安装好的 Base Shield v2 上的 Grove 连接器 D3。
4 – 右转信号灯
将右转 LED 灯条的 12V 输入线连接到用于切换右转信号的继电器的 Vout。使用 Grove 连接器将智能继电器连接到安装好的 Base Shield v2 上的 Grove 连接器 D4。
5 – 触摸传感器
使用 Grove 连接器将电容式触摸传感器连接到安装好的 Base Shield v2,如表 1 所示。
表 1. 电容式触摸传感器到 Base Shield V2 的映射 | |
---|---|
信号 | Base Shield V2 Grove* 连接器 |
左触摸 | D7 |
左转 | D8 |
右触摸 | D6 |
右转 | D5 |
6 – 连接电源分配板
- 使用跳线将智能继电器的 Vin 连接到电源分配板上的 12V 电源轨(参见图 6)。
- 类似地,电磁阀、左转 LED 和右转 LED 上的负线(接地线)需要连接到电源分配板上的 GND 平面(参见图 6)。使用跳线连接这些外围设备。
- 将焊接在电源分配板上的 DC 电源插孔连接到扩展板上的插孔 J1。
- 有关连接,请参考上面的图 6。
7 – 完成连接
完成上述步骤 1-6 后,您的硬件配置应与图 9 所示的类似。
8 – 创建 Intel® IoT XDK 项目
打开 Intel XDK IoT Edition,创建一个名为“Smart_IoT_Stroller”的新项目。有关 Intel XDK IoT Edition 的帮助,请参阅
- https://software.intel.com/en-us/articles/getting-started-with-intel-xdk-iot-edition-on-intel-iot-platforms
9 – 智能物联网婴儿车代码
文件:main.js
从下方提供的 GitHub URL 下载 main.js 文件,并将其导入到 Smart_IoT_Stroller XDK 项目中的 main.js 文件。该代码通过 setupIO() 函数设置智能物联网婴儿车设计中使用的通用输入/输出 (GPIO) 引脚。在设置用于控制继电器的输出引脚的硬件方向和初始值后,JavaScript* 的 setInterval() 函数(参见第 90 行)用于每 500 毫秒调用一次作为第一个参数定义的函数。这实际上是 C/C++ Arduino 项目中预期的无限循环;然而,函数/循环代码将每 500ms 执行一次,而不是像 Arduino 那样连续执行。要更改调用函数的频率,只需更改 setInterval() 函数调用中的第二个参数。第二个参数是要在再次调用函数之前等待的毫秒数。
在 setInterval() 函数调用的第一个参数定义的函数内部,读取每个电容式触摸传感器,并用它来控制电磁阀、左转 LED 灯条和右转 LED 灯条的状态。电容式触摸传感器、电磁阀、左转 LED 和右转 LED 状态的任何变化都将通过 save_to_cloud() 函数记录到云端。
应用说明:请将第 41 行的“CLOUD_STORAGE_URL”变量替换为您自己的云存储 URL。
GitHub URL:https://github.com/joshsackos/smart_iot_stroller/blob/master/main.js
文件:package.json
为了在智能物联网婴儿车中执行 HTTP POST 请求,必须将 request 客户端包含在 Intel XDK 依赖项列表中。打开位于 Intel XDK IDE 左侧导航中的 package.json 文件。在 package.json 文件中,在依赖项花括号之间添加 request:latest 并保存文档。将 request 客户端添加到依赖项列表后,您的 package.json 文件应与下方 GitHub URL 中的 package.json 文件类似。
GitHub URL:https://github.com/joshsackos/smart_iot_stroller/blob/master/package.json
10 – 构建和编程您的 Intel® Edison 板
使用 Micro-USB 线缆将 Intel Arduino 扩展板连接到 PC,并在 Intel XDK IDE 中连接到您的开发板。构建 Smart_IoT_Stroller 项目并将其上传到 Intel Edison。断开扩展板上的所有 USB 线缆。有关详细信息,请参阅图 10。
11 – 云存储和 Android 应用
智能物联网婴儿车项目中使用的云存储是通过 Microsoft Azure* Mobile services 实现的。Android 手机应用程序使用 Xamarin 构建。本文档不包含云存储的设置和 Android 应用的开发;但是,以下链接将帮助您开始进行云存储和 Android 应用开发。
- 云存储
http://azure.microsoft.com/en-us/services/mobile-services/
- Android 应用开发
http://developer.xamarin.com/guides/android/getting_started/
12 – 连接电池
插入 8 节“AA”电池为您的智能物联网婴儿车供电。给系统供电后,等待约 20 秒让 Intel Edison 启动。
13 – 可工作的智能物联网婴儿车配置
Intel® Edison 板启动完成后,请按照下方视频中的说明完成不同的触摸组合。如果您的智能物联网婴儿车硬件配置工作正常,则可以将其安装到您的慢跑婴儿车上。如果您的硬件配置不工作,请重新阅读本文档,并确保所有硬件和软件配置都正确。
14 – 可工作的智能物联网婴儿车配置
将可工作的智能物联网婴儿车硬件/软件配置安装到您的慢跑婴儿车上。下方图 11 是智能物联网婴儿车项目所使用的安装配置。
结论
安全注意事项
该设计旨在展示物联网设备如何使日常物品更智能,不适合直接用于实际应用。如果婴儿车正在行驶且系统使用的电池电量达到临界水平,电磁阀将断电并伸出金属杆。这相当于施加制动,此类事件可能会意外导致婴儿车翻倒。另一种方法是使用也可以由 Intel® Edison 板控制的手动制动系统,这样在电池电量耗尽时就不会丢失功能。
物联网互联世界
将技术集成到日常物品中可以提高便利性,实现数据收集,提供云服务访问,并提高人们的生活质量。物联网能够收集健康和健身数据、通信信息、重要系统的状态以及科学测量结果。物联网是一个新兴市场,具有近乎无限的可能性。
您将创造什么?
关于作者
Joshua Sackos 是波特兰州立大学的电气与计算机工程研究生。他拥有 10 多年的计算机编程经验和 2.5 年的嵌入式系统经验。他曾在一个团队中为在太空环境中运行的可重构设备构建单事件翻转缓解系统。除嵌入式系统外,他还拥有 HDL 数字设计、传感器、HPC 和电子商务 Web 开发方面的经验。他于 2013 年获得华盛顿州立大学计算机工程学士学位。
您可以在 http://www.joshsackos.com 上了解未来的项目。
获取新的 Intel® IoT Developer Kit,这是一个完整的软硬件解决方案,使开发人员能够使用 Intel® Galileo 和 Intel® Edison 板创建令人兴奋的新解决方案。请访问 Intel® IoT 开发者中心。