Node.js在树莓派上的应用
Node.js在树莓派上的应用
前言
最近入手了,最新版本的树莓派 B+, 发现在其上面运行Node.js,实在好玩!
<!–more–>
安装Node.js
更新最新树莓派系统
sudo apt-get upgrade
sudo apt-get update
安装Node.js
如果是以前的教程,可能是叫你去下载源码编译…以树莓派的性能来编译Node.js的源码,应该至少一个小时吧?
幸运的而是官方已经提供了,编译的树莓派二进制包,所以就不要再去下源码编译了…
wget http://nodejs.org/dist/v0.10.26/node-v0.10.26-linux-arm-pi.tar.gz
tar -xvzf node-v0.10.26-linux-arm-pi.tar.gz
node-v0.10.26-linux-arm-pi/bin/node --version
接下来写进我们的环境变量
vi .bash_profile
在里面写入
PATH=$PATH:/home/pi/node-v0.10.26-linux-arm-pi/bin
在运行source 更新
source .bash_profile
现在我们有Node命令了
node --version
忽然,感慨当年先驱者为了在树莓派上运行上Node.js 各种折腾…现在真心方便.
一些意外
如果运行
sudo npm install -g forever
发现,报找不到npm命令,那你需要吧node的运行目录写到sudo运行环境
sudo vi /etc/sudoers
找到
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
在原来的基础上加上你的node环境
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi/node-v0.10.26-linux-arm-pi/bin"
现在运行,就不会报错了.
sudo npm install -g forever
远程控制Led 灯
环境搞定了,接下来就是开始编写我们的控制程序了!
gpio 库
有兴趣了解树莓派的,可以去下面这个link,了解一下树莓派的gpio口,为什么树莓派能够这么火,其魅力就是这gpio口了.
这个gpio库,更新挺及时的,已经支持B+了.
默认情况下,要访问树莓派的gpio口是需要管理员权限的.所以,我建议在装多一个东西吧
git clone git://github.com/quick2wire/quick2wire-gpio-admin.git
cd quick2wire-gpio-admin
make
sudo make install
对于我们的远程控制一个led灯的软件环境准备已经完成,接下来就开始写Node代码吧.
最终效果可以移步下面这个link观看
代码编写
var http = require('http')
var gpio = require(‘pi-gpio’)
var fs = require(‘fs’)
var errHandler = function (err){
console.log(err);
}
gpio.open(8, “output”, function (err) {
if(err){
console.log(‘已经打开’);
}
})
http.createServer(function (req, res){
if(req.url == ‘/led/open’) {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
gpio.write(8, 1, errHandler);
res.end(‘open’)
return;
}
if(req.url == '/led/close'){
res.writeHead(200, {'Content-Type': 'text/plain'});
gpio.write(8, 0, errHandler);
res.end('close');
return;
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(fs.readFileSync('index.html'));
}).listen(1984);
console.log(‘server runn at 1984’);
你刚刚看到的视频效果,背后的代码不到50行…如果,写好一些.估计可以压缩不到20行…
因为这代码没什么技术可言…所以,今天就到此为止了吧…
Node.js在树莓派上的应用
前言
最近入手了最新版本的树莓派 B+,发现其上运行Node.js非常有趣!本文将介绍如何在树莓派上安装Node.js,并使用Node.js实现远程控制LED灯的功能。
安装Node.js
更新最新树莓派系统
首先,确保树莓派系统是最新的:
sudo apt-get upgrade
sudo apt-get update
安装Node.js
以前的教程可能指导你从源码编译Node.js。但如今,官方已为树莓派提供了预编译的二进制包,因此你可以直接安装。
wget http://nodejs.org/dist/v0.10.26/node-v0.10.26-linux-arm-pi.tar.gz
tar -xvzf node-v0.10.26-linux-arm-pi.tar.gz
node-v0.10.26-linux-arm-pi/bin/node --version
接下来,将Node.js添加到环境变量中:
vi .bash_profile
在文件中添加以下内容:
export PATH=$PATH:/home/pi/node-v0.10.26-linux-arm-pi/bin
然后运行 source .bash_profile
来更新环境变量:
source .bash_profile
现在,你可以验证Node.js是否安装成功:
node --version
如果你遇到 sudo npm install -g forever
报错找不到 npm
命令,需要在 sudoers
文件中添加Node.js路径:
sudo vi /etc/sudoers
找到并修改以下行:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi/node-v0.10.26-linux-arm-pi/bin"
远程控制LED灯
GPIO库
树莓派的GPIO接口是其核心特色之一。你可以使用 pi-gpio
库来操作GPIO。首先,安装 pi-gpio
库:
git clone git://github.com/quick2wire/quick2wire-gpio-admin.git
cd quick2wire-gpio-admin
make
sudo make install
代码编写
接下来,我们将编写一个简单的Node.js程序来控制LED灯。该程序通过HTTP请求控制LED的开关状态。
var http = require('http');
var gpio = require('pi-gpio');
var fs = require('fs');
var errHandler = function (err) {
console.log(err);
};
// 打开GPIO引脚
gpio.open(8, "output", function (err) {
if (err) {
console.log('已经打开');
}
});
// 创建HTTP服务器
http.createServer(function (req, res) {
if (req.url === '/led/open') {
res.writeHead(200, { 'Content-Type': 'text/plain' });
gpio.write(8, 1, errHandler);
res.end('open');
return;
}
if (req.url === '/led/close') {
res.writeHead(200, { 'Content-Type': 'text/plain' });
gpio.write(8, 0, errHandler);
res.end('close');
return;
}
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(fs.readFileSync('index.html'));
}).listen(1984);
console.log('Server running at http://localhost:1984');
上述代码创建了一个HTTP服务器,监听端口1984。当访问 /led/open
时,LED灯会被点亮;访问 /led/close
时,LED灯会关闭。index.html
是一个简单的HTML页面,用于显示当前LED的状态。
总结
通过以上步骤,你可以在树莓派上轻松地安装和配置Node.js,并使用它来控制GPIO引脚。本文中的代码简单易懂,希望对你有所帮助。
好玩,顶上。
感谢分享。。支持一个
pigpio
是不是python的库?
mark,好东西
mark一下
有空我也来折腾下,看起来不错
具体能干啥?
Node.js在树莓派上的应用
前言
最近入手了最新的树莓派 B+,发现其上运行Node.js非常有趣!
安装Node.js
更新树莓派系统
sudo apt-get upgrade
sudo apt-get update
安装Node.js
由于官方已经提供了树莓派的二进制包,所以我们不需要再从源码编译。
wget http://nodejs.org/dist/v0.10.26/node-v0.10.26-linux-arm-pi.tar.gz
tar -xvzf node-v0.10.26-linux-arm-pi.tar.gz
node-v0.10.26-linux-arm-pi/bin/node --version
将路径添加到环境变量:
vi ~/.bash_profile
添加以下内容:
PATH=$PATH:/home/pi/node-v0.10.26-linux-arm-pi/bin
然后运行:
source ~/.bash_profile
现在可以检查Node.js的版本:
node --version
如果遇到sudo npm install -g forever
找不到npm
命令的问题,编辑/etc/sudoers
文件:
sudo vi /etc/sudoers
修改secure_path
:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi/node-v0.10.26-linux-arm-pi/bin"
远程控制LED灯
代码编写
首先,我们需要一个GPIO库。这里使用pi-gpio
库:
git clone git://github.com/rakeshpai/pi-gpio
接下来是Node.js代码,用于控制LED灯的状态:
var http = require('http');
var gpio = require('pi-gpio');
var fs = require('fs');
var errHandler = function (err) {
console.log(err);
};
// 打开GPIO引脚
gpio.open(8, "output", function (err) {
if (err) {
console.log('已打开');
}
});
http.createServer(function (req, res) {
if (req.url === '/led/open') {
res.writeHead(200, {'Content-Type': 'text/plain'});
gpio.write(8, 1, errHandler);
res.end('open');
return;
}
if (req.url === '/led/close') {
res.writeHead(200, {'Content-Type': 'text/plain'});
gpio.write(8, 0, errHandler);
res.end('close');
return;
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(fs.readFileSync('index.html'));
}).listen(1984);
console.log('服务器运行在端口1984');
这段代码创建了一个HTTP服务器,可以通过/led/open
和/led/close
两个接口控制LED灯的状态。LED连接在GPIO引脚8上。