JavaScript 和 IoT 入门
过去几年,物联网生态系统蓬勃发展。我们正迎来Web和移动开发的新时代,因为我们可以利用微控制器、3D打印机、无人机和智能设备创造全新的体验、界面或产品。
廉价、广泛可用且开源的硬件和开发板(例如 Arduino Uno)正受到广泛关注,因为开始对其进行原型设计和修改非常容易。
JavaScript 和物联网
如果您对物联网世界感兴趣,并且从事网络开发,您可能会发现自己在嵌入式开发方面步履维艰。通常,您必须熟悉 C/C++ 才能控制 Arduino 系列的开发板。幸运的是,您可以使用 Johnny-Five 立即将 JavaScript 与 Arduino Uno 结合使用。
约翰尼五号
Johnny-Five 是一个 JavaScript 机器人和物联网平台,最初由 Bocoup 开发。它允许我们使用 JavaScript 来控制微控制器,方法是将 JavaScript 编译为原生字节码,或者使用主机通过 WiFi 或串行 USB 通信从外部控制目标设备。它支持 40 种不同的开发板,并拥有强大的 API,可用于外部模块和其他硬件组件。
使用 Johnny-Five 和 Arduino Uno
Johnny-Five 使用 Firmdata 协议从主机与 Arduino 通信。我们可以使用串行 USB 线将主机直接连接到 Arduino。值得注意的是,Johnny-Five 实际上可以与不同的 Arduino 开发板兼容。我选择了 Arduino Uno,因为它是最受欢迎的开发板之一,广泛可用,并拥有活跃的社区支持。
硬件组件
在本教程中,我们将尝试闪烁 LED 灯,这是物联网的“Hello World”示例。您需要一些组件:
-
Arduino Uno 或 Genuino Uno 开发板
-
面包板
-
几根跳线
-
一些LED
-
一些 220 欧姆电阻
设置Arduino IDE
需要 Arduino IDE 才能将设备连接到主机。您可以从此处下载并安装 Arduino IDE 。使用串行 USB 线将 Arduino 开发板连接到主机。打开 Arduino IDE,前往“工具”>“端口”,并确保正确的开发板 Arduino Uno 已连接到正确的端口(Mac 或 Linux 系统为 tty.usbmodem.*,Windows 系统为 cu.usbmodem*)。
现在我们需要安装 Firmadata 协议来控制开发板。
- 在 IDE 上,打开File > Examples > Firmata > StandardFirmata。
- 单击上传/箭头按钮。
- 等到 IDE 消息窗口显示“上传完成”。
接线
该开发板有一组通用输入和输出引脚,用于连接外部模块。每个引脚都标有编号,以便您轻松识别正在使用的模块。此外,还有两个 5V 输出引脚和两个标记为 GND 的引脚,我们可以使用这些引脚直接从开发板为原型供电。接线如下:
我们用跳线将第 13针连接到 LED 阳极(LED 较长的针脚),并将接地针脚连接到同样连接到 LED 的电阻。LED 节能且所需电流较小,因此我们可以直接从电路板为其中几个 LED 供电,无需任何外部电源。
使用 Johnny-Five 闪烁 LED
现在让我们进入编码部分。安装 Johnny-Five 模块并创建入口点npm i --save johnny-five && touch led.js
。
在 led.js 文件中,使用您喜欢的代码编辑器添加以下代码片段
const jfive = require('johnny-five');
// Init the board
const board = new jfive.Board();
board.on('ready', function () {
// Use the Led class for the 13th pin
const led = new jfive.Led(13);
// Blink the LED every half a second
led.blink(500);
});
使用 运行脚本node blink.js
。LED 灯应该会开始闪烁。恭喜,您已开启物联网之旅!
致谢
此示例旨在为嵌入式开发新手演示一个简单的示例。Johnny-Five 是一个非常棒的框架。当然还有其他解决方案,例如Cylon库。
另外,正如我之前提到的,将 Johnny-Five 与 Arduino Uno 一起使用有点模糊,我们实际上是在远程控制开发板。不过,您只需花费少量资金即可开始开发和原型设计。
在接下来的教程中,我将尝试介绍如何在 Raspberry Pi Zero 或 Espruino 等不同的开发板上进行开发,这些开发板使我们能够以更灵活、更有趣的方式实际控制硬件。