首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Pi(B)访问Pi(A)的GPIO引脚

从Pi(B)访问Pi(A)的GPIO引脚
EN

Stack Overflow用户
提问于 2014-08-28 05:00:16
回答 2查看 1K关注 0票数 2

我的设置:

基于Pi(A)的DHT 11传感器,我想直接从Pi(B)访问传感器

DHT11传感器<-> AAAAAA <-> BBBBB

我所做的:

利用Adafruit库,我可以成功地从Pi(A)中获取传感器的数据。(或者通过在node -Red上运行带有"exe“节点的python脚本)

问题是:

因此,如何从Pi(B)直接访问Pi(A) 的GPIO上的传感器。我已经搜索了一整天,我发现的都是关于并行计算、分布式计算等。在这两个Pis之间是否可以创建一个TCP/IP隧道。

先谢谢你们大家。干杯。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-28 15:18:54

在我看来,你有两个选择:

  1. 在两个Pis上安装节点红色。在Pi(A) -传感器-Pi-你可以做你需要的东西,Pi。读取传感器值。在DHT11的特殊情况下,您可以从在节点-红色根文件夹中安装npm node-dht-sensor开始(如我在第2点中提到的那样)。如果不想为此创建一个节点,可以快速而肮脏地使用自述文件中的示例,并将其添加到函数节点中: var sensorLib =require(节点-dht-传感器);//传感器连接到GPIO 4: if (sensorLib.initialize(22,4)) { var readout = sensorLib.read();结果={温度: readout.temperature.toFixed(2)湿度: readout.humidity.toFixed(2) } msg.payload =msg.payload=结果;}readout.temperature.toFixed=‘未能初始化传感器’;}返回消息; 然后,节点-red本身将被配置为提供一个http端点,其中它接受诸如GET /sensor1之类的调用,并从RawSerial/GPIO节点返回测量值。Pi(B)可用于查询此资源。
  2. 只需在传感器-PI (A)上安装https://www.npmjs.org/package/node-dht-sensor,并修改自述文件中给出的示例,或者使用我上面的版本。您必须围绕此创建一个see服务器,请参阅节点自己的http-模块。小例子: var sensorLib =sensorLib= DHT11 (节点-dht-传感器);var服务器=readout.humidity.toFixed响应){ //处理每个请求,从DHT11 var结果获得值,读取;readout = sensorLib.read();结果={温度: readout.temperature.toFixed(2)湿度: readout.humidity.toFixed(2) } response.writeHead(200,{‘Content:'application/json’});Response.end(JSON.stringify(结果));};if (sensorLib.initialize(22,4)) { server.listen(8080);}server.listen{console.log(“错误初始化传感器!”);}

免责声明:此代码既不容错,也不处理特殊情况。也没有经过测试。

票数 1
EN

Stack Overflow用户

发布于 2014-09-01 23:28:31

多谢各位。我的问题已经解决了。

我在Pi(B)上运行了一个TCP节点(如果安装了Node ),否则运行一个"netcat“命令来侦听特定的端口。

在Pi(A)上,我用python编写了这个“非常基本容易出错”的脚本(从我的DHT11传感器读取数据并将数据发送给Pi(B) -

代码语言:javascript
复制
#!/usr/bin/python
import sys
import socket
import Adafruit_DHT

host = '192.168.0.28'
port = 8888

try:

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

except socket.error:
    print ' Failed to create a socket.'
    sys.exit(1);

print 'Socket Created'


sensor_args = { '11': Adafruit_DHT.DHT11,
                            '22': Adafruit_DHT.DHT22,
                            '2302': Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
    sensor = sensor_args[sys.argv[1]]
    pin = sys.argv[2]
else:
    print 'usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#'
    print 'example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 con$
    sys.exit(1)


humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

if humidity is not None and temperature is not None:
        print 'Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(temperature, humidit$
        s.connect((host, port))
        print 'Connected to Node-Red.'
        value1 = str(temperature)
        value2 = str(humidity)
        value3 = value1+" "+value2
        s.send(value3);
        s.close();
else:
        s.close();
        print 'Failed to Access the Sensor.Run the script again.'

对于正在使用DHT22 11/DHT22 22的用户。这是Github:DHT上Adafruit的DHT代码的链接。

(如果有别的方法,请告诉我。我愿意学习所有的选择。)干杯。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25541026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档