我们已经看到了许多使用不同的微控制器和不同的编程语言使LED闪烁的示例。今天,我们将使用非常流行的JavaScript框架 Node.js来控制连接到Arduino Uno的LED。我们还将使用Node.js通过Arduino控制网页上的LED亮度。通过少量的调整和使用ESP8266,就可以将其转换为一个IoT项目,可以在任何地方控制LED。
什么是Node.js?
该Node.js的是建立在谷歌Chrome的JavaScript V8引擎和应用开发一种广泛使用的基于JavaScript的框架,I / O密集型的Web应用程序,如单页面应用程序,视频流网站等。
之前,我们已经完成了有关Node.js和Raspberry Pi入门以控制LED的内容丰富的教程。在本教程中,我们将遵循类似的方法,即将使用两种方法来控制LED,例如:
- 通过在Node.js框架中编写JavaScript代码来使简单的LED闪烁。
- 使用Node.js框架和来自任何浏览器的Web界面进行LED亮度控制: Arduino UNO将充当Web服务器,HTML网页将托管在PC或笔记本电脑上。
所需组件
硬件:
- Arduino UNO板
- LED
- 电阻器
软件:
- Arduino IDE:用于将草图上传到Arduino UNO板。
- Firmata:它是用于与计算机,智能手机等上的软件与不同微控制器进行通信的协议。Firmata固件可以加载在任何微控制器板上(例如Arduino,Teensy),并且可以与任何笔记本电脑,PC或智能手机通信。Firmata库随Arduino IDE一起提供,因此无需从任何地方下载。我们已经完成了有关使用pyFirmata用Raspberry Pi控制Arduino的教程。
- Johnny-Five: Johnny-Five是基于JavaScript的机器人技术和物联网平台,用于以JavaScript编写代码,并用于在Arduino开发板和计算机之间架起桥梁。Johnny-Five已通过各种Arduino兼容板(例如Arduino UNO,NANO,Promini等)进行了测试。在本教程中,必须下载Johnny-Five库才能使用其所有功能。安装指南将在本教程的后面部分进行解释。
电路原理图
电路图非常基础,我们只需要将LED与Arduino连接即可。设置Node.js框架
在开始编码和开发之前,必须下载并设置Node.js。要下载Node.js环境,只需遵循简单的步骤。
步骤1:从官方网站下载Node.js的.exe文件。
步骤2:-运行.exe并按照安装程序中的给定说明进行操作。
步骤3:-按照Node.js文档中的建议重新启动计算机,并使用Node.js的所有功能
步骤4:-要检查是否已安装节点,请打开命令提示符,然后键入Node –v
步骤5:-将显示Node.js版本,指示已安装Node.js。
安装约翰尼五图书馆
现在,在下载Node.js之后,在Documents中创建一个名为“ LED_Control”的新文件夹,以将所有项目文件保存在一个地方。每个项目文件都将保存在“ LED_Control ”文件夹中。现在,在“ LED_Control ”文件夹中下载Johnny-Five库。要下载,请按照以下步骤操作:
步骤1:-打开命令提示符
步骤2:-按照“ cd ”命令转到“ LED_Control ”文件夹。
步骤3:-运行命令' npm install johnny-five'
步骤4:-这将安装Johnny-Five的所有依赖项。
步骤5:-还安装本教程中用于控制LED亮度的必要库。这里使用三个库:
- 表达:
- socket.i o:WebSockets库
- serialpor t:串行端口包装器
步骤5:-逐一运行以下命令以安装这三个库。
npm install express npm install socket.io npm安装serialport
如前所述,该项目分为两个部分:
- 首先,使用Node.js的Arduino闪烁LED
- 其次,使用Arduino和Node.js从Web界面控制LED亮度。
用Arduino和Node.js闪烁LED
要使LED闪烁,必须将Arduino设置为与计算机通信。
设置Arduino UNO来闪烁LED:
为了使Arduino UNO接受来自笔记本电脑的命令以控制LED,必须将Firmata固件加载到Arduino UNO中。要加载Firmata固件,只需执行以下简单步骤:
- 使用USB电缆连接Arduino UNO
- 打开Arduino IDE,然后从工具中选择Arduino UNO板(如果使用其他板,则选择相应的一块)。
- 选择已连接的Arduino UNO的相应COM端口
- 现在,使用菜单->文件->示例->固件-> StandardFirmata找到固件草图。
- 通过转到文件->上传,上传“ StandardFirmata”草图。
这会将Firmata Sketch加载到Arduino UNO上,现在Arduino UNO可以接受来自计算机的任何命令了。
编写用于闪烁LED的Node.js程序:
要编写Node.js程序,请打开任何文本编辑器(记事本,记事本++等),然后粘贴本教程末尾附带的“ blink_led”代码,并将其保存为扩展名“.js”,即(blink_led.js)在之前创建的“ LED_Control”文件夹中。我们将在blink_led.js代码文件中讨论重要步骤。
最初定义连接led的微控制器的引脚。在此示例中,LED连接到Arduino UNO的引脚5。Node.js中的“ var”代表变量声明。
var led_pin = 5;
的 约翰尼五个 模块要被包括的需要和将被选择的板的需求。Node.js中的模块是库。函数“ require() ”将访问该模块。
var johnny_five = require(“ johnny-five”); var arduino_board = new johnny_five.Board();
该的console.log语句类似于print语句,它会打印消息。并将LED引脚设置为输出模式,并将定义的延迟提供给闪烁指示灯。
console.log(“ LED已开始闪烁!”); var led = new johnny_five.Led(led_pin); led.blink(100);
现在要运行程序,请按照以下步骤操作:
- 打开命令提示符
- 通过执行“ cd”命令找到“ LED_Control”文件夹
- 运行“ Node led_blink.js”命令。如果成功执行,它将显示“ LED已开始闪烁!”。如下图所示。
- LED将在Arduino UNO Pin 5中开始闪烁。
- 至此完成了本教程的第一部分,即使用Node.js闪烁LED。
使用Arduino和Node.js Web服务器控制LED亮度
与使用Node.js闪烁LED相似,本节还将包含一些部分,即设置Arduino UNO,设置Web界面和编写Node.js程序。
设置Arduino UNO以控制LED的亮度:
要设置Arduino UNO,只需将草图“ arduino_control.ino ”上传到Arduino UNO板即可。这将设置Arduino开发板。您可以从此处下载带有HTML文件的完整代码。“ arduino_control.ino” 代码包含以下重要步骤。
最初,波特率设置为9600。
Serial.begin(9600);
串行端口始终寻找输入字节,并且该字节被写入引脚5(PWM引脚)。
while(!Serial.available()); AnalogWrite(5,Serial.read());
而已。这将使Arduino锁定字节到PWM引脚,并改变LED的亮度。
设置Web界面:
为了使用Web界面控制led的亮度,编写了一小段HTML代码以在Browser中具有一个界面。要使界面遵循以下简单步骤:
- 在之前创建的“ LED_Control”文件夹内创建一个名为“ public”的新文件夹。
- 现在下载“ index.html”和“ style.css”文件,并将两个文件都移到上面第一步中创建的“ public”文件夹中。可以从这里下载文件。
这将在网页上创建一个滑块,以使用Node.js和Arduino控制LED的亮度。
从网页控制LED很有趣,它可以通过创建Web服务器并将网页托管在Web服务器上来与其他微控制器一起完成。在此处检查所有与Web服务器相关的项目。
编写Node.js程序以控制LED的亮度:
下一步将是使用Node.js编写“ brightness_control.js”草图并执行代码。代码的执行将有点类似于通过Node.js闪烁LED。
要编写Node.js程序,请打开任何文本编辑器(记事本,记事本++等),然后粘贴本教程末尾附带的“ brightness_control”代码,并将其保存为扩展名“.js”(即,亮度_control.js)。在之前创建的“ LED_Control”文件夹中。您也可以从此处下载代码。
与Blink Led Node.js程序类似,本节还将使用模块(库)。包括“ express”,“ http”和“ serial port”模块。
var express = require('express'); app = express(); 服务器= require('http')。createServer(app); io = require('socket.io')。listen(server); var SerialPort = require(“ serialport”)//.. SerialPort
现在设置COM端口和波特率。请注意,在Windows中,它将始终是带有数字扩展名的COM(COM6,COM4,COM24等),因此请在“ /”后根据需要进行以下设置。同时设置buadrate。
var serialPort = new SerialPort(“ / COM4”,{baudRate:9600});
开始侦听端口8080上的服务器。
server.listen(8080);
最初将亮度设置为0。然后使用套接字模块(Websocket模块)将亮度数据锁定到IO。数据将通过Web Interface使用套接字协议接收。
io.sockets.on('connection',function(socket){ socket.on('led',function(data){ 亮度= data.value; var buf = new Buffer(1); buf.writeUInt8(brightness,0 ); serialPort.write(buf);
现在将从插座获得的LED亮度值发射到LED引脚。
io.sockets.emit('led',{value:Brightness}); }); socket.emit('led',{value:Brightness}); });
现在仅用于调试,请在最后添加一条打印语句。Console.log是Node.js中的打印语句。
console.log(“ Web Server Started转到浏览器中的'http:// localhost:8080'。”);
现在,请按照以下步骤运行程序:
- 打开命令提示符
- 通过执行“ cd”命令找到“ LED_Control”文件夹
- 运行“节点亮度_控制.js”命令。如果成功执行,它将显示“ Web服务器已启动,请在浏览器中转到” http:// localhost:8080”。在命令下方。
- 现在转到浏览器并在URL中键入“ localhost:8080”。
- 要更改亮度,只需将滑块从0-255的值移动即可。
这两个部分的完整代码和工作视频如下所示。另外,如果您有任何疑问或建议,也可以通过下面的论坛或评论与我们联系。所有代码文件也可以从此处下载。