樹莓派3B+ node-rpio庫的使用--點亮LED

樹莓派3B+ node-rpio庫的使用--點亮LED

node-rpio又可以叫rpio。是一個node.js版本的樹莓派GPIO庫。關於介紹可以直接看文檔:https://www.npmjs.com/package/rpio。

安裝

<code>1.sudo npm install rpio /<code>

這個時候是會報錯的:

<code>root@raspberrypi:/# sudo npm install rpio
> [email protected] install /node_modules/rpio
> node-gyp rebuild
gyp: /root/.node-gyp/10.9.0/common.gypi not found (cwd: /node_modules/rpio) while reading includes of binding.gyp while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/home/pi/node-v10.9.0-linux-armv7l/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:345:16)
gyp ERR! stack at ChildProcess.emit (events.js:182:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:239:12)
gyp ERR! System Linux 4.14.62-v7+
gyp ERR! command "/usr/local/bin/node" "/home/pi/node-v10.9.0-linux-armv7l/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /node_modules/rpio
gyp ERR! node -v v10.9.0
gyp ERR! node-gyp -v v3.7.0
gyp ERR! not ok
npm WARN enoent ENOENT: no such file or directory, open '/package.json'
npm WARN !invalid#1 No description
npm WARN !invalid#1 No repository field.
npm WARN !invalid#1 No README data
npm WARN !invalid#1 No license field.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install/>npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-08-27T06_29_10_218Z-debug.log/<code>

是node-gyp的錯誤。

2.解決node-gyp的錯誤

(1)更新npm

<code>sudo npm cache clean -f
sudo npm install npm -g/<code>

(2).重新安裝node-gyp 來替換node自帶node-gyp

<code>sudo npm uninstall node-gyp -g
sudo npm uninstall node-gyp
sudo npm install node-gyp -g /<code>

這個解決辦法也是我找了很久才找到的一個實際可行,參考《解決 binding.gyp not found (xxx/xxx/xxx) while trying to load binding.gyp 問題》。

3.安裝rpio:sudo npm install rpio

<code>root@raspberrypi:/# sudo npm install rpio
> [email protected] install /node_modules/rpio
> node-gyp rebuild
make: Entering directory '/node_modules/rpio/build'
CC(target) Release/obj.target/rpio/src/bcm2835.o
CXX(target) Release/obj.target/rpio/src/rpio.o
SOLINK_MODULE(target) Release/obj.target/rpio.node
COPY Release/rpio.node
make: Leaving directory '/node_modules/rpio/build'
npm WARN saveError ENOENT: no such file or directory, open '/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/package.json'
npm WARN !invalid#1 No description
npm WARN !invalid#1 No repository field.
npm WARN !invalid#1 No README data
npm WARN !invalid#1 No license field.
+ [email protected]
added 3 packages from 9 contributors and audited 3 packages in 37.601s
found 0 vulnerabilities/<code>

4.驗證gpio -v

<code>root@raspberrypi:/# gpio -v
gpio version: 2.46

Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Raspberry Pi Details:
Type: Pi 3+, Revision: 03, Memory: 1024MB, Maker: Sony
* Device tree is enabled.
*--> Raspberry Pi 3 Model B Plus Rev 1.3
* This Raspberry Pi supports user-level GPIO access./<code>

到這裡表示rpio安裝成功了。

點亮第一個LED

1.在/home/pi/目錄下編寫blink.js

(1)新建文件:touch blink.js

(2)打開文件:vim blink.js

(3)寫入代碼:

<code>var rpio = require('rpio');
rpio.open(29, rpio.OUTPUT,rpio.LOW); // 第29引腳 設置為輸出 默認輸出低電平
function blink() {
while(1){
rpio.write(29, rpio.HIGH); // 輸出高
rpio.msleep(500); // 延時500ms
rpio.write(29, rpio.LOW); // 輸出低
rpio.msleep(500); // 延時500ms
}
}
blink();/<code>

2.電路連接


樹莓派3B+ node-rpio庫的使用--點亮LED


這裡大家需要注意的,和我的上一篇:《

(五)樹莓派3B+ wiringPi庫的使用–點亮LED》這裡寫鏈接內容中的引腳對飲有關係。rpio使用的是無物理引腳BOARD編碼。

GPIO.21 –> led正極 –> led負極 –> GND


樹莓派3B+ node-rpio庫的使用--點亮LED


3.執行:node blink.js。

這裡我們就可以看見LED開始間隔500毫秒的閃爍了。

總結

網上關於這個庫的使用,基本都沒有安裝過程。庫中的這段估計也是很多人迷惑的。

<code>$ cat >/etc/udev/rules.d/20-gpiomem.rules <SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio", MODE="0660"
EOF
/<code>

其實我也不知道,但是就這麼執行一次就行。


分享到:


相關文章: