将树莓派 4 GPIO 与节点 js 一起使用

问题描述 投票:0回答:1

我最近尝试将 Raspberry pi 4 的 GPIO 与 Node js 一起使用。 我设法让该程序在我的树莓派上运行,但是当我想将它放在另一个树莓派上时,我就无法再让它运行了。

为此,我使用 onoff 库。 程序如下:

var GPIO = require('onoff').Gpio;

var lightPin = new GPIO(23, 'out');

lightPin.writeSync(1)

但是当我运行它时,我收到以下错误:

node:internal/fs/utils:353
    throw err;
    ^

Error: EINVAL: invalid argument, write
    at Object.writeSync (node:fs:939:3)
    at Object.writeFileSync (node:fs:2355:26)
    at exportGpio (/home/pi4b/API/node_modules/onoff/onoff.js:18:8)
    at new Gpio (/home/pi4b/API/node_modules/onoff/onoff.js:172:36)
    at Object.<anonymous> (/home/pi4b/API/helper.js:3:16)
    at Module._compile (node:internal/modules/cjs/loader:1369:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1427:10)
    at Module.load (node:internal/modules/cjs/loader:1201:32)
    at Module._load (node:internal/modules/cjs/loader:1017:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:122:12) {
  errno: -22,
  syscall: 'write',
  code: 'EINVAL'
}

Node.js v21.0.0

node.js 的版本 ->

21.0.0
(两个 pi 相同)

npm 的版本 ->

10.5.0
(两个 pi 相同)

onoff 的版本 ->

[email protected]
(两个 pi 相同)

Debian 版本 ->

12.5
(针对旧 pi 的 11.9)

有关信息,

node_modules
文件夹已完全删除并使用
npm i
重新安装。 我还尝试了 python 中的库
RPi.GPIO
,它似乎工作正常。

谢谢您的帮助。

node.js raspberry-pi gpio
1个回答
0
投票

Raspberry OS 内核似乎通过另一种编号方案来寻址 GPIO 引脚。

~ $ cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 512-569, parent: platform/fe200000.gpio, pinctrl-bcm2711:
...
 gpio-532 (GPIO20              |sysfs               ) in  lo
 gpio-533 (GPIO21              |sysfs               ) in  lo
 gpio-534 (GPIO22              |sysfs               ) in  lo
 gpio-535 (GPIO23              )
 gpio-536 (GPIO24              )
 gpio-537 (GPIO25              )
 gpio-538 (GPIO26              |sysfs               ) in  lo
...

如果要对GPIO23引脚进行寻址,则必须使用gpio-[编号]之后的数字

您的情况:

var GPIO = require('onoff').Gpio;

var lightPin = new GPIO(535, 'out');

lightPin.writeSync(1)
© www.soinside.com 2019 - 2024. All rights reserved.