在以前的Raspberry Pi教程中,我们使用了许多不同的编程语言和软件来控制Raspberry Pi,包括Python,嵌入式C,Flask等。为扩展功能强大的Raspberry Pi板的前景,今天,我们将使用非常流行的基于JavaScript的环境(节点(.js),以将Raspberry Pi GPIO设置为网络服务器来在本地和全局范围内进行控制。最初,Node.js是为Google Chrome开发的,但后来由Google开源。
在本教程中,我们将使用两种方法控制连接到Raspberry Pi的LED
- 首先,我们将简单地使用Node.js编写JavaScript代码来闪烁LED
- 在第二种方法中,我们将创建一个带有两个按钮的HTML页面,以打开和关闭LED。该HTML网页将托管在树莓派上,并且可以在任何网络浏览器上打开。所以在这里Raspberry Pi将充当网络服务器
所需材料
- 装有Raspbian的Raspberry pi板
- LED
在本教程中,我将通过HDMI电缆使用外部监视器与Raspberry Pi连接。如果没有监视器,则可以使用SSH客户端(Putty)或VNC服务器使用笔记本电脑或计算机连接到Raspberry pi。如果您发现任何困难,请遵循我们的《 Raspberry Pi入门指南》。
在Raspberry Pi上安装Node.js
我们将使用以下命令在主板上安装Node.js。
第1步:-首先使用此命令检查树莓派板的手臂版本。
ame -m
就我而言,版本是7。
步骤2:-通过在终端中复制此链接来下载安装程序。不要忘记在下面的链接中更改版本。
wget https://nodejs.org/dist/v4.6.1/node-v4.6.1-linux-armvl.tar.gz
步骤3:-使用以下命令提取文件
tar -xvf节点-v4.6.1-linux-armvl.tar.gz
步骤4:-最后,执行以下命令以将重要文件也添加到本地目录。
cd node-v4.3.1-linux-armvl sudo cp -R * / usr / local /
Node.js现在已安装在您的Raspberry Pi中。使用此命令检查节点的版本以进行确认。
节点–版本
在制作Node.js服务器之前,首先我们将了解如何使用node.js(npm onoff软件包)编写脚本来使LED闪烁。
使用Node.js闪烁LED
为了使用Node.js控制Raspberry Pi上的GPIO,我们将使用onoff模块。
我们将使用 npm 软件包管理器通过以下命令安装onoff模块
npm安装开关
现在,我们将编写一个脚本来使led闪烁。打开 nano 编辑器,并使用以下命令为文件命名
纳米blink_led.js
如果您是Node.js及其软件包的初学者,可以阅读npm文档以更好地了解脚本。
Node.js LED闪烁脚本和说明
首先,声明led,delay和GPIO的变量。我正在使用Raspberry Pi GPIO 4连接LED。
var Gpio = require('onoff')。Gpio; var LED = new Gpio(4,'out'); var blinkInterval = setInterval(blinkLED,500);
现在,我们将创建一个函数来开始闪烁。
函数blinkLED(){如果(LED.readSync()=== 0){LED.writeSync(1); //将输出设置为1,即导通} else {LED.writeSync(0); //将输出设置为0,即关闭LED }}
同样,设置一个功能来停止闪烁
函数endBlink(){clearInterval(blinkInterval); LED.writeSync(0); LED.unexport(); //取消GPIO释放以释放资源} setTimeout(endBlink,10000);
本教程末尾提供了有关LED闪烁的完整Node.js代码。因此,将代码复制并粘贴到我们之前使用 nano 命令创建的 led_blink.js 文件中,使用Ctrl + x保存文件,然后按Y并按Enter。
要运行脚本,请打开终端并输入以下命令:
节点blink_led.js
您将看到LED闪烁10秒钟,然后停止闪烁。在本教程末尾的视频中检查完整的工作原理。
使用Node.js闪烁LED的电路图
树莓派
现在,进入有趣的部分,在这里,我们将制作自己的Web服务器,从中可以使用网页控制Raspberry pi的GPIO。
为此,首先我们需要制作一个HTML页面并编写一个脚本来执行后端任务,即控制RPi GPIO。
步骤1:-建立目录以将所有文件存储在一个位置。
mkdir nodejs_server
步骤2:-在 nodejs_server 文件夹内, 再 创建一个文件夹来保存HTML文件。
cd nodejs_server mkdir视图
步骤3:-如果要将图像添加到html页面,则应在主目录(即 nodejs_server 文件夹)内创建另一个名为public的文件夹。在公用文件夹中,创建图像文件夹并将所有图像存储在此文件夹中。
步骤4:-现在,我们将制作HTML页面。为此,请转到views目录并使用文件名 index.ejs 打开 nano 文本编辑器。
脚本中没有花哨的东西。这只是一个HTML文件,可以使用“打开”和“关闭”按钮。
复制以下代码,将其粘贴到 nano 文本编辑器中并保存。
欢迎使用Nodejs服务器
Led状态:<%=状态%>步骤5:-现在,我们必须编写JavaScript代码。我们正在使用节点表达框架来响应用户执行的http请求。
您可以单击该链接以了解有关Node Express的更多信息。
打开终端并在 nodejs_server 文件夹中打开带有index.js文件名的 nano 文本编辑器,然后复制并粘贴以下Java脚本代码和此文件。
var express = require('express'); var app = express(); var path = require('path'); var gpio = require('rpi-gpio'); gpio.setup(7,gpio.DIR_OUT); app.set('view engine','ejs'); app.use(express.static(path.join(__ dirname,'public'))); console.log(path.join(__ dirname,'public')); app.get('/',function(req,res){ res.render('index',{status:“ Press Button”}); }); app.post('/ led / on',function(req,res){ gpio.write(7,true,function(err){ if(err)throw err; console.log('Writeed True to pin'); console.log(path.join(__ dirname,'public')); 返回res.render('index',{状态:“ LED指示灯亮”}); }); }); app.post('/ led / off',function(req,res){ gpio.write(7,false,function(err){ if(err)throw err; console.log('Written False to pin'); console.log(path.join(__ dirname,'public')); 返回res.render('index',{status:“ Led is Off”}}; }); }); app.listen(3000,function(){ console.log('服务器已在端口3000上启动!') })
步骤6:-在 nodejs_server 目录中,我们必须执行以下命令来安装node.js库
npm安装
步骤7:-现在,您的服务器已经可以使用了。要启动本地服务器,请在 nodejs_server 目录中运行以下命令
节点index.js
您将在终端中看到一条消息,提示您服务器已在定义的端口启动。
步骤8:-现在打开浏览器并打开带有端口号的Raspberry Pi URL,即raspberrypi:3000
确保要在其中打开浏览器的树莓派和便携式计算机连接到同一网络。
您将在浏览器中看到以下页面。
现在,按“ LED开启” 按钮打开LED并按“ LED禁用” 按钮关闭LED。