我喜欢 Node.js 的轻量级编程模型。我对物联网也很感兴趣,我也写了几篇关于这个话题的帖子。在这篇文章中,我将同时将物联网设备与 Node 相结合,您将看到此绑定是多么自然。

物联网充满了在串行端口上说话的硬件。串行通信本身就是一个很大的话题。它在工业设备中的广泛使用是众所周知的,有许多非常有用、经过行业验证的协议在其内核上使用串行通信,如 RS-232、RS-485 和许多其他协议(参考部分中有关于 RS232 协议的链接,或者您可以 Google 它)。然而,为了保持这篇文章的重点,我不会讨论通信协议的任何超过它需要。

设置场景

这就是我们要做的。我有一个Arduino板,上面贴着一个防光器,它正在房间里读取特定间隔的光强度。以下是设置的外观:

因此,此设置代表我们的 IoT 设备。您可以有自己的设备设置或任何其他正在生成数据的东西。但是,对于此帖子,我将使用此设置。

此 Arduino 通过 USB 端口(通过 USB 串行)连接到我的笔记本电脑。在笔记本电脑上,我有一个节点应用程序,此应用程序将读取来自 Arduino 的照片电阻值。因此,这部分是关于连接阿鲁迪诺和Node.js。

一旦我们的 Node 应用程序中具有此值,我们将将其保留为一个非常轻量级的基于 JSON 文件的数据库 lowdb。本部分将演示一种非常简单的低db API,为节点应用程序提供非常简单的持久性机制。

出于测试目的,将此数据持久化为 lowdb 是可以的,但我们将更进一步,并且还会将其保存到弹性搜索。但是,弹性搜索的持久性将在下一篇文章中与可视化部分一起完成。

因此,我们将从硬件读取传感器数据并将其保存到基于本地 json 文件的数据库 (lowdb)。

先决条件

可以从 git 存储库下载源代码。然而,有一些概念,我假设你已经意识到。如果您需要一些背景信息,以下文章将帮助您。在这篇文章中,我将从这些主题中前进,只专注于新的部分。

1. 阿尔迪诺设置

我将使用现有的Arduino光传感器项目这个演示但是,如果你想阅读这个Arduino设置,你可以检查它这个链接。本文演示如何从光传感器读取模拟值,我正在重用这个项目。

2. Node.js 设置

在上一篇关于 DZone 的文章中,还介绍了节点安装和设置。你可以读它这个链接

3. 将节点与阿尔杜伊诺连接

这部分非常简单。我们将为此使用串行通信。串行端口包帮助我们实现这一点。请使用以下命令安装此包

Installing SerialPort

安装串行端口

下面是与 Arduino 连接并读取传感器值的代码。很简单,对吧?

Connecting Arduino

连接阿尔杜伊诺

以下是运行此代码的输出:

Output

输出

好了,我们正在成功地从 Arduino 读取该值,在下一步中,我们可以使用 lowdb 将其持久化到本地 JSON 文件。此时,您可以执行任何要对此数据执行操作。正如我前面提到的,我将坚持它到弹性搜索,稍后将可视化此数据

4. 数据持久性

Lowdb 被描述为”节点、电子和浏览器的小型 JSON 数据库。由洛达什供电,”在他们的回购页面

回购还提供有关如何安装和使用它的说明。我用npm来安装它。

Install Arduino with npm

使用 npm 安装 Arduino

以下dbservice代码包装lowdb API。

Wrapping the lowdb API

包装低 db API

现在,在 server.js 文件中,我导入 dbservice 了,而不是写入控制台,而是保存到数据库中。请参阅下面的代码:

Importing dbservice

导入 db 服务

输出 JSON 文件

执行后,您将 db.json 在项目的根目录中看到一个新文件。此文件将具有来自 Arduino 的传感器读数。

New db.json file

新 db.json 文件

总结

这篇文章总结。你可以从这个github存储库下载代码。如果您有任何意见,请让我知道。在下一篇文章中,我们将从这一点开始前进。在那之前,快乐编码。

引用

Comments are closed.