基于树莓派系统与Blynk远程控制水泵

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);
  }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值