1回答

0收藏

[教程] 树莓派B+上运行Node.js

Raspberry Pi Raspberry Pi 5176 人阅读 | 1 人回复 | 2014-09-05

树莓派B+上运行Node.js

前言

最近入手了,最新版本的树莓派 B+, 发现在其上面运行Node.js,实在好玩!

<!--more-->
安装Node.js

更新最新树莓派系统
  1. sudo apt-get upgrade
  2. sudo apt-get update
复制代码
安装Node.js

如果是以前的教程,可能是叫你去下载源码编译..以树莓派的性能来编译Node.js的源码,应该至少一个小时吧?

幸运的而是官方已经提供了,编译的树莓派二进制包,所以就不要再去下源码编译了..
  1. wget http://nodejs.org/dist/v0.10.26/node-v0.10.26-linux-arm-pi.tar.gz
  2. tar -xvzf node-v0.10.26-linux-arm-pi.tar.gz
  3. node-v0.10.26-linux-arm-pi/bin/node --version
复制代码
接下来写进我们的环境变量
  1. vi .bash_profile
复制代码
在里面写入
  1. PATH=$PATH:/home/pi/node-v0.10.26-linux-arm-pi/bin
复制代码
在运行source 更新
  1. source .bash_profile
复制代码
现在我们有Node命令了
  1. node --version
复制代码
忽然,感慨当年先驱者为了在树莓派上运行上Node.js 各种折腾…现在真心方便.

一些意外

如果运行
  1. sudo npm install -g forever
复制代码
发现,报找不到npm命令,那你需要吧node的运行目录写到sudo运行环境
  1. sudo vi /etc/sudoers
复制代码
找到
  1. Defaults       secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
复制代码
在原来的基础上加上你的node环境
  1. 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"
复制代码
现在运行,就不会报错了.
  1. sudo npm install -g forever
复制代码
远程控制Led 灯

环境搞定了,接下来就是开始编写我们的控制程序了!

gpio 库

有兴趣了解树莓派的,可以去下面这个link,了解一下树莓派的gpio口,为什么树莓派能够这么火,其魅力就是这gpio口了.
https://github.com/rakeshpai/pi-gpio

这个gpio库,更新挺及时的,已经支持B+了.

默认情况下,要访问树莓派的gpio口是需要管理员权限的.所以,我建议在装多一个东西吧
  1. git clone git://github.com/quick2wire/quick2wire-gpio-admin.git
  2. cd quick2wire-gpio-admin
  3. make
  4. sudo make install
复制代码
对于我们的远程控制一个led灯的软件环境准备已经完成,接下来就开始写Node代码吧.

最终效果可以移步下面这个link观看
http://www.miaopai.com/show/xwnY1Sgn6IOOlIQLk9cSLw__.htm

代码编写
  1. var http = require('http')
  2. var gpio = require('pi-gpio')
  3. var fs = require('fs')
  4. var errHandler = function (err){
  5.     console.log(err);
  6. }
  7. gpio.open(8, "output", function (err) {
  8.     if(err){
  9.         console.log('已经打开');
  10.     }
  11. })
  12. http.createServer(function (req, res){
  13.     if(req.url == '/led/open') {
  14.         res.writeHead(200, {'Content-Type': 'text/plain'});
  15.         gpio.write(8, 1, errHandler);
  16.         res.end('open')
  17.         return;
  18.     }
  19.     if(req.url == '/led/close'){
  20.         res.writeHead(200, {'Content-Type': 'text/plain'});
  21.         gpio.write(8, 0, errHandler);
  22.         res.end('close');
  23.         return;
  24.     }
  25.     res.writeHead(200, {'Content-Type': 'text/html'});
  26.     res.end(fs.readFileSync('index.html'));
  27. }).listen(1984);
  28. console.log('server runn at 1984');
复制代码
你刚刚看到的视频效果,背后的代码不到50行…如果,写好一些.估计可以压缩不到20行..

因为这代码没什么技术可言..所以,今天就到此为止了吧..

转自:http://www.html-js.com/article/Nodejs-abnormal-laboratory-raspberry-PI-Nodejs

分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

netlhx

发表于 2016-6-11 10:43:29 来自手机 | 只看该作者

学习学习学习
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条