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

构建 T.E.E.T.H. – 使用 Intel® Edison 技术为您的浴室增添物联网功能

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2015年2月19日

CPOL

14分钟阅读

viewsIcon

16392

这个 DIY 项目展示了如何将商店购买的牙刷架改造成一个物联网家居电器。

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

引言

这个 DIY 项目展示了如何将商店购买的牙刷架改造成一个物联网家居电器。Intel® Edison 板卡提供了小巧的外形尺寸和计算能力,可以鼓励养成健康习惯——使用您已有的牙刷和牙膏。

编程 Intel Edison 板卡可能使用的技能是您已经掌握的。由于该板卡内置无线功能并运行 node.js 连接硬件,您可以使用 JavaScript* 进行编程。这意味着大多数 Web 开发人员都可以使用 Intel Edison 板卡快速开始为物联网进行编码。

以下步骤概述了添加开关、屏幕和传感器以将任何牙刷架改造成 T.E.E.T.H.(一个鼓励每个人健康的计时器)所需的要素。源代码演示了简单的 node.js 项目如何控制这些功能并连接到 Internet 进行云分析和电子邮件发送。图 1 显示了完成的项目。

图 1 - 完成的 T.E.E.T.H. 项目

使用 T.E.E.T.H. 智能牙刷计时器

首先将牙刷从架子上取下。这将启动计时器,等待您开始刷牙。然后,美国牙科协会*推荐的 2 分钟倒计时开始,LED 屏幕会显示鼓励的话语。屏幕会逐渐变色,直到您完成。如果您闭着眼睛刷牙也不要紧。会有声音提示您从开始到结束。接着,当您放回牙刷(或离开房间并关灯)时,计时器会停止。之后,牙刷架会将您的计时器数据存储到云端。如果您达到了目标,它还会发送一封祝贺邮件。最后,您可以登录云端查看架子上每支牙刷的进度。您可以监控这些物联网数据,以鼓励家人的健康习惯。

购物和规划

项目估计构建时间:2-3 小时
成本:$75 - $100
图 2 显示了项目使用的零件。

图 2 - T.E.E.T.H. 项目使用的零件

材质

工具

  • 带有 Intel® XDK IoT Edition 的计算机和 USB 线
  • 电烙铁和焊锡
  • 根据您的牙刷架所需的切割工具

步骤

1. 准备牙刷架

我选择了一个竹制牙刷架,以便可以轻松地切割出安装组件和布线的孔,使其大部分隐藏起来。您需要的工具取决于牙刷架的材质。或者您也可以选择制作一个底座。

将 LED 屏幕安装在正面

从牙刷架顶部切出一个足够大的孔,以便容纳整个 LCD 组件。然后从取出的部分切出一个较小的孔用于屏幕本身。用剩余的竹子填补并将其粘回牙刷架中(图 3)。

图 3 - 安装 LED 屏幕

或者,您可以将整个组件直接拧在外面。这取决于您的审美观。无论您选择哪种方式,重要的是要记住确保 LED 的线缆能够连接到将要安装在背面的 Intel Edison 底板。

在底部添加杠杆开关

任何可以检测到运动的传感器都可以用于此目的。我选择杠杆开关而不是红外传感器是为了最大限度地减少功耗。但是,牙刷的重量只有大约 15 克,所以您需要一个非常灵敏的开关。

由于开关很小,我还添加了一个平台,这样牙刷可以放在架子上的任何位置并触发开关。我的平台是从塑料工具箱隔板上切割下来的。(我总是会剩下一些,所以切割一个合适的非常快速且便宜。)您还需要将连接线焊接到开关上。将一根线连接到接地/公共引脚,另一根连接到 NC(常闭)引脚。

图 4 - 安装杠杆开关

由于触摸杠杆的背面不会触发开关,所以我将开关安装在牙刷架的内壁处(图 4)。与 LCD 屏幕一样,请确保您的线缆能够连接到底板。我在牙刷架背面钻了孔,以便线缆(大部分)看不见。

在正面添加光线探测器,在背面添加蜂鸣器

准备好光线探测器和蜂鸣器,焊接到足够长的连接线,以便连接到牙刷架背面将要安装底板的位置。我在前面钻了一个刚好能容纳光线探测器大小的孔(图 5)。放在前面可以让传感器获得最准确的环境光读数。我在后面切了一个较大的孔用于安装蜂鸣器。将其放在后面是为了尽量减少对牙刷架原始外观的影响,并避免早上发出过大的声音。

图 5 - 蜂鸣器和光线探测器的孔和安装

给暴露的电子元件防水

由于这个项目肯定会接触到水,请采取一些预防措施来保护您的连接。使用硅胶或其他防水密封剂覆盖暴露的电子元件和线缆(图 6)。例如,我在 LCD 组件背面使用了大量的密封剂。但请确保杠杆开关保持裸露,以便它们能够继续正常工作。

图 6 - 使用硅胶或其他密封剂进行防水

将组件连接到底板

我第一次构建这个项目时,使用了面包板来测试我的板卡和连接(图 7)。在进行最终步骤之前,您可能也想这样做。

图 7 - 面包板接线、电池和 LCD 屏幕

使用此图表将组件连接到底板的引脚(图 8)。大多数组件可以直连,但我添加了 10K 下拉电阻以减少开关的噪声并防止误读。

图 8 - 底板连接

将 Intel Edison 计算模块添加到底板,硬件部分的项目就差不多完成了。我们很快会添加电池。现在您的项目应该看起来像这样。

图 9 - 硬件设置已接近完成

2. 准备 Intel Edison 板卡和云服务

Intel IoT 网站上有关于 Intel Edison 板卡启动和运行的文档。要将您的计算机连接到板卡,请遵循以下说明:http://intel.com/Edison/getstarted

设置无线网络

由于此项目使用 Wi-Fi* 连接到云端并发送电子邮件,因此您还需要设置板卡以连接到您的无线路由器。这在 Intel Edison 板卡上使用一个现有实用程序即可轻松完成,但您可以在上面的“入门”链接中找到更多信息。

设置物联网分析账户

此项目使用 Intel® IoT Developer Kit 云分析功能来存储数据。您可以在以下地址设置账户:https://dashboard.us.enableiot.com/v1/ui/auth#/login

添加组件到云端

在将 Intel Edison 板卡注册到物联网分析仪表板后,您必须通过创建自定义组件来为您的数据准备云端。您将为每个牙刷创建一个自定义组件。您为组件指定的名称将是报告中显示的名称。请遵循以下说明创建您的组件:https://software.intel.com/en-us/intel-iot-developer-kit-cloud-based-analytics-user-guide

在 Intel Edison 板卡上注册组件

在物联网分析仪表板上创建组件后,您需要将其注册到板卡上。您在此步骤中使用的名称将是发送数据到云端的源代码中使用的名称。有关注册组件到板卡的步骤,请参考相同的说明:https://software.intel.com/en-us/intel-iot-developer-kit-cloud-based-analytics-user-guide

启动 Intel Edison 板卡上的 Intel 代理

Intel Edison 板卡使用内置服务与云端通信。必须运行此服务才能使代码连接并发送数据。在遵循上面提供的链接中的说明后,您可以发出此命令来测试板卡是否可以连接到云端并将数据发送到您的自定义组件。

3. 编程 Intel Edison 板卡

硬件已完成,服务已准备就绪,现在是时候使用 T.E.E.T.H. 源代码为板卡编程了。

使用 Intel® XDK IoT Edition 连接到板卡

Intel XDK IoT Edition 是一个开发环境,允许您在板卡上构建 node.js 项目。它附带许多示例项目和范例。有关它的文档可以在以下地址找到:https://software.intel.com/en-us/html5/documentation/getting-started-with-intel-xdk-iot-edition

加载程序

对于此项目,请从 GitHub 下载或克隆源代码。这些文件遵循小型 node.js 项目的结构,https://github.com/ncarver/TEETH

  • readme.md – 文档和许可信息
  • package.json – 项目描述符,标识依赖库
  • main.js – 运行 T.E.E.T.H. 的所有代码
  • node_modules – 当您首次构建项目代码时创建的包含依赖库的目录

配置 SMTP 服务

在 main.js 的顶部,定义了几个常量。您需要更新其中的许多常量以匹配您的家庭环境和偏好。至少,您需要更改 MAIL.user、MAIL.pass 和 MAIL.brushTo 的值。这些属性定义了 SMTP 邮件服务如何连接到 Internet 以及 T.E.E.T.H. 电子邮件应发送到何处。

图 10 - 配置 MAIL.user, MAIL.pass, MAIL.brushTo

使用注册的分析组件名称

在常量部分,使用您在物联网分析仪表板中注册的名称 METRICS.brushComponent。这是一个包含项目中所有组件的数组。对我来说,它有两个元素。

图 11 - 物联网分析仪表板

添加更多牙刷

如果您构建的牙刷架可以容纳多于两支牙刷,您将需要更改代码中的常量部分以反映这一点。当存在牙刷特定的值时,代码会使用数组结构。为这些常量添加额外的数组元素,每个牙刷一个:METRICS.brushComponent, MAIL. brushTo.PINS.brushSwitch, SCREEN_MSG.brushName, TIME.brushPreptime, 和 TIME.brushGoaltime。

4. 理解代码

虽然可以将此项目组织成多个文件,每个文件一个模块,但我认为只有一个 main.js 文件更简单。这个项目不需要太多代码,所以额外的文件可能会使一个原本简单的项目变得复杂。

所需的库

作为一个 node.js 项目,代码依赖于其他模块来与硬件、分析守护程序和电子邮件通信。

constants

这一部分是唯一需要编辑的部分。根据需要修改这些常量值,以更改颜色、屏幕消息、电子邮件文本,甚至时间间隔。

计时器

为了简单起见,所有计时器都保存在一个全局对象中。这使得 setTimeout 和 setInterval 的方法调用始终可以访问计时器。

Logger

Logger 类按照传统的方法输出控制台消息,基于错误、警告和信息限制输出。

传感器

通过 Sensors 类,您可以看到代码如何简单地与通用输入/输出引脚交互。在此读取牙刷开关和光敏电阻的值数据。

蜂鸣器

Buzzer 类中的大部分代码用于播放计时器开始和结束时使用的快速哔哔声。

屏幕

虽然 Screen 类负责所有到 LCD 屏幕的命令,但它主要有两个职责:显示文本消息和更改背景颜色。

邮件发送器

Mailer 类使用所需的 node_module 通过 SMTP 发送电子邮件。它包含一些错误检查,以防发送尝试失败。

指标

Metrics 类是最后一个辅助类。它使用板卡上的本地套接字将分析数据发送到 iotkit-agent 守护程序。如果连接时发生错误,错误消息将发送到控制台进行调试。

Teeth

这是主类,包含项目的所有逻辑。Teeth 调用 Sensors 类来监控开关和灯光,Buzzer 类发出警告声音,Screen 类显示消息,Mailer 类发送电子邮件,Metrics 类更新物联网仪表板。如果您想修改项目的特性,这就是需要更新的代码。

5. 测试

在板卡和牙刷架仍然连接到计算机时,花一些时间进行测试。这是查看控制台输出并为您的环境调试代码的最简单方法。

确认传感器和显示

使用 Intel XDK IoT Edition 中的“安装/构建”按钮将代码发送到板卡,并运行 NPM 构建 node 项目。按“运行”按钮开始 T.E.E.T.H.。

通过使用牙刷触发架子上的每个杠杆开关来测试架子。您应该会看到 LCD 屏幕亮起,并且能够跟随控制台输出。此外,蜂鸣器应该会发出哔哔声,如果您遮挡光线传感器,计时器应该会关闭。

检查电子邮件

让计时器运行到结束,以执行发送电子邮件的方法。根据您的服务,您应该在几分钟内收到一封电子邮件。

观察分析数据

最后要确认的是分析数据。使用您架子上的所有牙刷来测试每个开关。登录仪表板以确认您看到了每个自定义组件的数据。

6. 连接电源

您终于准备好断开 Intel Edison 板卡与计算机的连接,并将牙刷架作为独立的物联网设备放回浴室洗漱台。

连接电池

使用带 USB 连接的充电电池为底板供电(图 12)。我在一次会议的展位上获得了这款电池。它的设计初衷是为手机充电,但对这个项目效果很好。我将 USB 端口放在易于够到的地方以便充电。

图 12 - 连接电池

完成 Intel Edison 板卡外壳

请记住,这个项目会接触到水。请采取预防措施保护您的电池和板卡以及任何其他暴露的电子元件。这是我的最终成品图。

图 13 - 最终成品

深入研究

在这个项目中,我们仅仅开始利用 Intel Edison 平台的无线互联网和云数据可能性。源代码可以轻松修改以使用其他技术。例如,您可能想发送短信或推文而不是电子邮件。或者您可能使用 Xively* 等其他云服务而不是 IoT Analytics。甚至开始和停止的声音也可以替换为您喜欢的 mp3 文件发送到扬声器。您可以通过切换 node.js 模块为其他您想使用的模块来快速进行这些调整。

此外,这款智能牙刷架可以变得更智能。有点像 Nest* 遇到了 T.E.E.T.H.。目前,数据仅作为输出流向云端,但通过将这些数据作为输入到计时器中,它可以作为一种学习工具。例如,如果您似乎从未完成全部两分钟,那么计时器可以为您设定更短的目标,每次成功都会稍微增加一点。并且,不用使用固定的准备时间,一个对刷牙声音做出反应的传感器可以适应您的习惯。即使不做任何调整,这也是一个将物联网引入家中重要房间的绝佳项目。将其视为“浴室 2.0”运动的第一部分。

© . All rights reserved.