0

我正在使用johnn-fiveandraspi-ionode,我正在尝试读取在 PIR 运动传感器上创建的事件,但每次运行应用程序时都会引发错误。

安慰

pi@raspberrypi ~/poc $ sudo node app.js 
1439476578608 Device(s) RaspberryPi-IO  
1439476578749 Connected RaspberryPi-IO  
1439476578825 Repl Initialized  
>> /home/pi/poc/node_modules/raspi-io/lib/index.js:316
      throw new Error("Unknown pin \"" + pin + "\"");
            ^
Error: Unknown pin "null"
    at Raspi._defineProperty.value (/home/pi/poc/node_modules/raspi-io/lib/index.js:316:17)
    at Raspi.pinMode (/home/pi/poc/node_modules/raspi-io/lib/index.js:327:47)
    at Motion.Controllers.PIR.initialize.value (/home/pi/poc/node_modules/johnny-five/lib/motion.js:27:17)
    at new Motion (/home/pi/poc/node_modules/johnny-five/lib/motion.js:180:10)
    at Board.<anonymous> (/home/pi/poc/app.js:9:16)
    at Board.emit (events.js:104:17)
    at process._tickDomainCallback (node.js:381:11)

包.js

{
  "name": "poc",
  "version": "0.0.1",
  "main": "app.js",
  "private": true,
  "dependencies": {
    "johnny-five": "0.8.86",
    "raspi-io": "3.3.4"
  }
}

应用程序.js

var raspi = require('raspi-io');
var five  = require('johnny-five');

var board = new five.Board({
  io: new raspi()
});

board.on('ready', function() {
  var motion = new five.Motion({pin: 'PI-17'});

  motion.on('calibrated', function() {
    console.log('calibrated');
  });

  motion.on('motionstart', function() {
    console.log('motionstart');
  });

  motion.on('motionend', function() {
    console.log('motionend');
  });
});

但是,以下代码似乎确实有效:

从另一个 poc 上剪下来的

var raspi = require('raspi');
var gpio = require('raspi-gpio');

raspi.init(function() {

  var input = new gpio.DigitalInput({
    pin: 'P1-17'
  });

  var logInput = function() {
    console.log('Input 17: ' + input.read());
    setTimeout(logInput, 1000);
  };

  logInput();

});

Raspberry 是 Rev. 2 型号 B。
我使用的运动检测器就是这个
电缆连接如下(物理引脚,取自此架构

Motion Sensor -> Pi  
1 GND ->  6 GND    
2 VDD ->  1 +3/V3 OUT  
3 OUT -> 11 GPIO17  

任何帮助将不胜感激。

4

2 回答 2

0

经过更多搜索,我发现了这张图片

这个图片

它让我对 WiringPi 引脚编号、BCM GPIO 命名和 P1 命名有了更深入的了解。

引脚 0 (BCM 17) 上的引脚 GPIO0 似乎引发了错误。

我切换到在引脚 4 (BCM 23) 上使用引脚 GPIO4。

为什么 0 不起作用并没有真正的意义,但就目前而言,我正在研究的 poc 可以再次取得进展。

于 2015-08-14T08:41:59.253 回答
0

您的问题与您的任何代码或命名问题无关。不幸的是,您选择了错误的引脚来使用。P1-17无法接受输入,因为它是专用的 3.3v 输出。选择另一个别针,你应该没问题。

为 I2C 或串行保留的任何引脚都不能用于 Johnny Five 中的常规 GPIO 功能,以及永远不能用于 IO 的专用电源和接地引脚。只要你避开这些端口,你会没事的。一个关于 Raspberry Pi 引脚排列的好资源在这里

于 2018-11-01T17:29:23.733 回答