7252| 11
|
[intel程序猿笔记] 智能物联网婴儿车 |
扩展阅读:物联网开发人员之旅的第一阶段:学习和实验 概述 图1——智能物联网婴儿车团队——Mark Davis, Joshua Sackos, Brian Lancaster, Jacob Wolf, Monique Tucker 本文将讨论2014年在英特尔举办的波特兰交通创客马拉松上开发的智能物联网婴儿车, 并展示如何制作一个智能物联网婴儿车。这个婴儿车具有英特尔® Edison开发板,自动刹车系统,转弯信号,云数据同步,以及用来获取云端数据的安卓*应用。 这个智能物联网婴儿车的动机来自一部YouTube*视频,在视频中一部婴儿车从火车站台上跌落至下方的轨道。这一幕激发了技术如何避免此类事件在未来发生的研究。这个项目的主要目标是防止婴儿车失控,不过,基于简单的设计,研发过程加入了更多的功能来丰富父母的婴儿车使用体验。 无论何时父母松开了婴儿车的把手前轮将锁死以防止婴儿车滑走。当父母握住把手时前轮解锁使得婴儿车能够自由移动。智能婴儿车上的转向信号是两条LED灯带,会在切换时激活。然而,当两边同时被激活时,两条LED灯带会保持点亮并且不切换到显示刹车。数据通过英特尔Edison开发板的板载Wi-Fi*上传到云上,父母之后可以通过手机访问存储在云端的婴儿车行驶信息。 你需要哪些材料挂载在英特尔® Arduino扩展板上拥有最新版本固件的英特尔® Edison开发板。 获取最新版本固件查看:http://communities.intel.com/docs/DOC-23242 英特尔® XDK IoT Edition 3 x Grove* - 智能继电器(v 1.1) 4 x Grove* - 触觉传感器(v1.0) 7 x Grove* - 连接线缆(最小的) 1 x 基础扩展板v2 2 x LED灯带(12V) 1 x 拉式电磁阀(12V) 1 x RadioShack 276-159B板 1 x 12V 电池 1 x 慢跑婴儿推车 5到10英尺22AWG线缆用来扩展连接 如何工作智能刹车智能刹车系统包含两个电容式触觉传感器(Grove* - 触觉传感器),一个继电器(Grove* - 智能继电器),以及一个12V拉式电磁阀。电容式触觉传感器附着在婴儿车的把手上,传感器输出接入英特尔® Arduino扩展板的输入针脚上。当左右任一边的触觉传感器处于高位(父母正握着把手)时,一个输出针脚生效(被拉高)来激活控制拉式电磁阀的继电器,此时刹车失效。相反地,当两边的触觉传感器处于低位(父母没有握住把手)时,输出针脚失效(被拉低)来解除继电器,此时前轮的刹车介入。金属拉杆作为阻碍婴儿车前轮条幅行进的刹车被电磁阀收进或拉出。刹车机械和控制电路详细图示请见图2。 图2——智能刹车机械和控制电路 转向信号转向信号系统包括两个12伏LED灯带、两个继电器和附着在婴儿车把手上的两个额外的电容式触觉传感器。跟刹车系统相似,电容式触觉传感器输出连接到英特尔Arduino扩展板上的输入针脚。每一个转向信号包括一个电容式触觉传感器、一个继电器和一条LED灯带。当父母只触碰到左边的电容式触觉传感器转向信号时,一个控制左边LED转向信号的输出针脚被激发,左边的LED转向信号开始闪烁。当父母只触碰到邮编的电容式触觉传感器转向信号时,另一个控制单独继电器的输出针脚被激发,右边的LED转向信号开始闪烁。如果父母同时触碰到左右两边的电容式触觉传感器转向信号,两边的LED灯带将闪烁并且不会切换至表明他们正在刹车。电路图详情请查看图3。 图3——转向信号电路 云端存储和安卓*应用记录到云端的数据包括传感器数据、刹车事件、左转和右转。安卓应用包括三个表示左转、右转和刹车事件的矩形框以及一个显示每一个记录事件的文字显示区域。采用了HTTP的post写向云端的JSON编码数据结构。本文将不会涉及安卓应用的开发或云存储的设置。图4是为智能物联网婴儿车开发的安卓应用。 图4——智能物联网婴儿车安卓*应用 硬件概述智能物联网电路原理图图5是智能物联网婴儿车的完整电路原理图。请注意在图中英特尔Arduino扩展板和附属硬件组件(智能继电器,触觉传感器)之间的针脚连接没有显示基础扩展板v2的使用,需要Grove连接线。基础扩展板v2是一个直接插入Arduino扩展板头部的硬件模块,连接一些数字或模拟针脚到Grove连接线。 图5——智能物联网婴儿车完整硬件原理图 电力分配继电器、LED灯带、电磁阀和英特尔Arduino扩展板(通过直流电源)都需要连接到12伏电池。因此需要一个定制的配电板。图6显示了一个未修改的RadioShack 276-159B板及为所有的智能物联网婴儿车设计中用到的硬件组件供电需要的连接。通过从电池正极到A点焊接一根连线产生一个12伏线路,然后如图6中所示在A、B、C、D和E点之间焊接跳线。类似地,通过从电池负极到F点焊接一根连线产生一根电线(GND),然后在F、G、H、I和J点之间焊接跳线。每一个硬件外围设备通过这根12伏的连线获得电力并且通过GND线共享一根公共的地线。这个样例通过一个RadioShack电池支架和一个插头使用一套8节5号电池提供了所需的12伏电力。 图6——配电板 Grove* - 智能继电器图7是在智能物联网婴儿车完整电路原理图(图5)中使用的带有参考指示器的Grove-智能继电器。SIG、NC、Vcc和GND针脚是图7中所示的Grove母头的一部分。带动由继电器控制的外部设备的电压被输入至Grove-智能继电器上的线缆终端模块。图7显示了位于线缆终端模块左侧的Vin针脚和位于其右侧的Vout针脚。 图7——Grove* - 智能继电器 步骤 1 – 挂载英特尔® Edison开发板和基础扩展板v2首先,将英特尔Edison开发板和基础扩展板v2挂载到英特尔Arduino扩展板上。英特尔Edison开发板应该插入在英特尔Arduino扩展板上的参考指示器J7。随后,通过你的开发板所带的小螺母和螺钉将英特尔Edison开发板固定好。通过将基础扩展板v2插入扩展板上的Arduino插头挂载好并确保基础扩展板v2上的电压选择器设置为5伏。挂载位置及挂在配件后你的开发板的样子详情请查看图8。 图8——挂载英特尔® Edison和基础扩展板v2前后 2 – 智能刹车将螺线管的正极连接至用来控制螺线管的继电器上的Vout。使用一根Grove连接线将智能继电器连接至挂载好的基础扩展板v2上的Grove连接器D2。 3 – 左转信号将左转LED灯带上的12伏输入线连接至控制左转信号的继电器上的Vout。用一根Grove连接线将智能继电器连接至挂载好的基础扩展v2上的Grove连接器D3。 4 – 右转信号将右转LED灯带上的12伏输入线连接至用来控制右转信号的继电器上的Vout。用一根Grove连线将智能继电器连接至挂载好的基础扩展板v2上的Grove连接器D4。 5 – 触觉传感器使用Grove连接线按照表1中所示将电容触觉传感器连接至挂载好的基础扩展板v2。 [td]
在完成上面的1-6步之后你的硬件配置将和图9中所示的类似。 图9——硬件连接完成 8 – 创建英特尔® IoT XDK项目打开英特尔XDK IoT Edition创建一个名叫“Smart_IoT_Stroller”的新项目。查看英特尔XDK IoT Edition帮助: 9 – 智能物联网婴儿车代码文件:main.js 从下方给出的GitHub网址下载main.js文件并导入至你的Smart_IoT_Stroller XDK项目中的main.js文件。这段代码通过setupIO()函数设置了在智能物联网婴儿车设计中使用的通用输入输出(GPIO)针脚。在设置了硬件指令和用来控制继电器的输出针脚的初始化值后,JavaScript* setInterval()函数调用(见第90行)定义为每500毫秒的第一个变量的函数。这本质上是在一个C/C++ Arduino项目中所期望的无限循环;然而,这个函数/循环代码每500毫秒只会执行一次而不是像Arduino中那样持续执行。若要改变这个函数调用的频率,只需简单地改变setInterval()函数调用中的变量2即可。变量2是再次调用这个函数前所等待的毫秒数。 在定义为setInterval()函数调用的变量1的函数中,每个电容触觉传感器被读取并且用来控制螺线管的状态、左转LED灯带和右转LED灯带。任何电容触觉传感器、螺线管、左转灯和右转灯的状态变化都通过save_to_cloud()函数记录在云端。 应用注意事项:将第41行的“CLOUD_STORAGE_URL”变量替换为你的云存储地址。 文件:package.json 在智能物联网婴儿车项目中执行HTTP的post请求,必须在英特尔XDK附属列表中包含客户端。打开位于Intel XDK IDE左手边引导区的package.json文件,在附属大括号中添加request:latest并保存该文件。在将请求客户端添加至附属列表后,你的package.json文件应该与下方GitHub网址的package.json文件相似。 10 – 创建并编程你的英特尔® Edison开发板用Micro-USB线缆将英特尔Arduino扩展板连接至你的个人电脑,并在英特尔XDK IDE中连接你的开发板。创建Smart_IoT_Stroller项目并将其上传到英特尔Edison。断开你的扩展板上的两根USB线缆。详情见图10。 图10——英特尔® XDK IDE - 连接、创建、编程 11 – 云端存储和安卓应用在智能物联网婴儿车项目中使用的云存储是通过微软Azure* 移动服务完成的。安卓手机应用是用Xamarin创建的。本文中不涉及搭建云存储及开发安卓应用;不过,下面的链接能帮助你入门云存储和安卓应用开发部分。
插入8节5号电池为你的智能物联网婴儿车供电。在为你的设计供电后等待约20秒后,英特尔Edison启动。 13 – 设置智能物联网婴儿车当英特尔® Edison开发板完成启动后,完成下方视频中列出的不同的连接。如果你的智能物联网婴儿车硬件配置正常工作,就可以将你的硬件挂载到婴儿车上。如果你的硬件配置无法正常工作,再次浏览这篇文章并确保所有的硬件和软件配置正确。 14 – 设置智能物联网婴儿车将正常工作的智能物联网婴儿车软硬件配置挂载到你的婴儿车上。下方的图11是智能物联网婴儿车项目使用的挂载配置。 图11——挂载硬件的智能物联网婴儿车 总结安全考虑这个设计意在展示物联网设备如何使常见物体更智能而不是为了在现实世界中使用。如果婴儿车在运动中而系统使用的电池消耗至很低的电量,螺线管将失去电力并伸展金属杆。这和使用刹车是一样的,而这样的事件会无意地导致婴儿车翻转。一种可能的解决方案是一个同样可由英特尔® Edison开发板控制的手动刹车系统,这样当电池耗尽电量时功能也不会丧失。 物联网——互联的世界将技术整合进常见的物品来增加便利性,允许数据收集,提供云服务入口,提高人们的生活质量。物联网连接健康数据、交流、重要系统的状态和科学的测量。物联网是一个具有几乎无限可能性的新兴市场。 你将制作什么? 关于作者Joshua Sackos是一位波特兰州立大学电气和计算机工程研究生。他具有10年以上计算机编程经验和2.5年嵌入式系统经验。他之前作为小组的一员,为太空环境中的可重复配置设备搭建了单事件翻转缓解系统。除嵌入式系统外,他还在使用HDL、传感器、高性能计算和电子商务网络开发方面具备经验。他于2013年从华盛顿州立大学完成计算机工程学士学业。 你可以在http://www.joshsackos.com网站找到未来的项目。 扩展阅读:物联网开发人员之旅的第一阶段:学习和实验 原文链接 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed