http://cnodejs.org/topic/54032efa9769c2e93797cd06
https://github.com/WiringPi/WiringPi-Node
检查是否安装node.js
node --version
或
nodejs --version
如果没有打印版本或打印出错信息,安装node.js
否则删除旧版本
sudo apt-get purge node nodejs node.js -y
sudo apt-get autoremove -y
添加存储库:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
更新软件列表:
sudo apt-get update && sudo apt-get upgrade
用 sudo apt-get install build-essential
命令用来获得各种开发工具,(2.png
)
安装node.js
树莓派属于Linux系统,arm架构,通过命令:
# uname -a
linux raspberrypi 4.4.……
可知道树莓派的cpu架构,在我的树莓派上现实的信息可知是armv7
nodejs下载网址:http://nodejs.org/dist/latest-v9.xz,下载armV71.tar.gz到/home/pi目录
解压缩
tar xvzf node-v6.14.1-linux-armV71.tar.gz
解压完毕,进入目录,验证node是否可用:
# cd node-v6.14.1-linux-armV71/bin
# ./node -v
v6.14.1
在将该文件夹改名node(改不改根据个人喜好):
# cd
# sudo mv node-v6.14.1-linux-armV71/bin node
# pwd
/home/pi/node
再验证包管理工具npm是否正常:
# ./npm -v
3.10.10
配置node,让全局都能使用:
sudo ln /home/pi/node/bin/node /usr/local/bin/node
配置mpn,让全局能用:
# sudo ln -s /home/pi/node/lib/node_modules/npm/bin/npm /usr/local/bin/npm
此时执行npm -v
,出错 (1.png
)
这是由于路径错误,打开/usr/local/bin中的npm文件
# cd /usr/local/bin
# sudo nano npm
将NODE_EXE = “$basedir/node.exe”修改成
NODE_EXE="/home/pi/node/node.exe"
将NPM_CLI_JS=”$basedir/node_modules/npm/bin/npm-cli.js”修改为
NPM_CLI_JS="/home/pi/node/lib/node_modules/npm/bin/npm-cli.js"
# sudo npm install -g npm
# sudo npm install -g nodejs
安装enoff(允许直接引脚操作)
# sudo npm install -g onoff --save
下载blynk-library-js库(图4.png
)
# cd
# sudo git clone https://github.com/vshymanskyy/blynk-library-js.git
安装blynk-library (5.png
)
# cd blynk-library-js
# sudo npm install -g blynk-library
/usr/bin/blynk-client -> /usr/lib/node_modules/blynk-library/bin/blynk-client.js
/usr/bin/blynk-ctrl -> /usr/lib/node_modules/blynk-library/bin/blynk-ctrl.js
+ blynk-library@0.5.1
added 1 package in 23.041s
运行Blynk
blynk-client <yourAuthToken>
打印下面信息,表示连接运行成功(3.png
)
Connecting to SSL: cloud.blynk.cc 8441
Connected, authorized
Blynk ready.
如果失败,检查你的auth-token是否正确,网络是否连接,node.js是否能工作
(按下Ctrl+C
,退出
)
为了使Blynk自动重启Pi,找到/etc/rc.local
文件
cd /etc
sudo nano rc.local
在文件里exit 0
的上一行添加
node full_path_to_your_script.js <yourAuthToken>
完成后,Ctrl+X
,然后Shift+Y
,最后回车保存并退出
下载Blynk app
创建project
添加 Value Display
部件,并绑定到V9
添加Slider
部件,并绑定到V1
添加Terminal
部件,并绑定到V3
按Run
(运行),(右上角的三角形)
创建blynk-test.js
文件
sudo nano blynk-test.js
输入代码
var Blynk=require('blynk-library');
var AUTH='bc87b1b197ec4a16ae56db3608278928';
var blynk=new Blynk.Blynk(AUTH, options={
connector:new Blynk.TcpClient()
});
var v1=new blynk.VirtualPin(1);
var v9=new blynk.VirtualPin(9);
var term=new blynk.WidgetTerminal(3);
v1.on('write', function(param){
console.log('V1:', param[0]);
});
v9.on('read', function(){
v9.write(new Date().getSeconds());
});
term.on('write', function(data){
term.write('You wrote:' + data + '\n');
blynk.notify("HAHA!" + data);
});
blynk.on('connect', function() { console.log("Blynk ready."); });
保存退出,运行代码
# node blynk-test.js
如果得到类似错误:”Error:Cannot find module blynk-library
“,在终端输入
# export NODE_PATH=/usr/local/lib/node_modules
出现下图表示运行成功
图6.png
(手机)
图7.png
安装Wiringpi
下载WiringPi-Node (图8.png
)
# sudo git clone https://github.com/WiringPi/WiringPi-Node.git
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build
npm install -g cnpm --registry=https://registry.npm.taobao.org
cd
sudo cnpm install wiring-pi --save-devcnpm
引脚说明
下图是wiringPi的引脚说明,这里需要说明两点。第一树莓派存在版本A和版本B,版本A和版本B的GPIO管脚存在差异;第二,wiringPi对树莓派的管脚重新进行了封装,例如wiringPi的GPIO0意味着BCM2835的GPIO17,这仅仅是一种封装映射关系,不会对开发和使用产生较大的影响。
树莓派管脚有三种编号方式,第一种为板上编号(37),即中间两列,表示第几号插针。第二中为wiringPi编码(25),使用wiringPi库编程时是用wiringPi编号,第三种为BCM编号,这个是更加BCM管脚来编号的,使用bcm2837库或python的RPi.GPIO编程时使用BCM编号。
wiringPi引脚和BCM引脚的映射关系
sketch_apr26a.ino
void setup()
{
Serial.begin(9600);
}
void loop()
{
int sensorValue=0;
sensorValue=analogRead(0);
Serial.write((byte)sensorValue>>8);
Serial.Wrie((byte)sensorValue);
delay(1000);
}
blynk-test.js
var Blynk=require('blynk-library');
var wpi=require('wiring-pi');
var AUTH='bclallllglgjagj';
var blynk=new Blynk.Blynk(AUTH, options={
connector:new Blynk.TcpClient()
});
wpi.setup('wpi');
if((fd=wpi.serialOpen("/dev/ttyUSB0", 9600))<0)
{
console.log("serial does not open");
return -1;
}
wpi.pinMode(10, wpi.INPUT);
wpi.pinMode(1, wpi.OUTPUT);
var v1=new blynk.VirtualPin(1);
var v9=new blynk.VirtualPin(9);
var term=new blynk.WidgetTerminal(3);
v1.on('write', function(param){
console.log('v1:', param[0]);
});
v9.on('read', function(data){
v9.write(new Date().getSeconds());
});
term.on('write', function(data){
term.write('You wrote:'+data+'\n');
blynk.notify("HAHA!"+data);
});
blynk.on('connect', function(){
console.log("Blynk ready.");
});
test.js
var Blynk=require('blynk-library');
var wpi=require('wiring-pi');
wpi.setup('wpi');
if((fd=wpi.serialOpen("/dev/ttyUSB0", 9600))<0)
{
console.log("serial does not open");
return -1;
}
while(wpi.serialDataAvail(fd)>=0)
{
console.log('v124:',f=(wpi.serialGetchar(fd)<<8)|(wpi.serialGetchar(fd)));
if(f>600){
console.log('v124');
}
wpi.delay(10);
}
test2.js
var wpi=require('wiring-pi');
wpi.setup('wpi');
if((fd=wpi.serialOpen("/dev/ttyUSB0", 9600))<0)
{
console.log("serial does not open");
return -1;
}
wpi.pinMode(1, wpi.PWM_OUTPUT);
console.log("soft pwm test");
if(wpi.softPwmCreate(1, 50, 100)!=0)
{
console.log("create pwm pin failed");
return -1;
}
while(1)
{
for(i=0;i<100;i++)
{
wpi.softPwmWrite(1, i);
wpi.delay(20);
}
for(i=100;i>0;i--)
{
wpi.softPwmWrite(1,i);
wpi.delay(20);
}
}