3

有没有办法在 Python 线程中获得工作的 433MHz-Sender 或 -Receiver?

我试过 Ninjablocks 和 Adafruit 的那些。但问题是这些都是 c 或 c++ 脚本,它们正在输出到标准输出并且没有输出结束。我还尝试通过 Unix-FIFO 对它们进行管道传输,但在我关闭程序(Ctrl + C)之前没有数据传输。第二个问题是,完成的程序无法识别我的 ninjablocks 433MHz 温度传感器,这是其中之一系统最重要的部分。

433 MHz 发送器/接收器与我的 Raspberry PI(版本 B,Rev 2.0)的 GPIO 连接

我的目标是让几个 433 MHz 传感器(并且一些通过 i2c 或 spi 连接的传感器已经在工作)与 python 脚本一起工作,该脚本确实计算了一些规则(例如,当在客厅中检测到运动时,以及在日落和日出之间,打开灯;当温度降至 20°C 以下时打开加热等)

我写了一个小程序:

import RPi.GPIO as io
data = [] * 10000
while not interrupted:
  data.append(io.input(rxPin))
  io.wait_for_edge(rxPin, io.BOTH

我希望该代码输出类似 1010101010101 的内容,因为每个 Edge 都被识别。我的下一步是测量边缘之间的时间,并根据该时间确定它是短 1/0 还是长 1/0(433MHz 似乎被编码为短 1 长 = = 1 长 1 短0 = 0 或反之亦然)但输出类似于:0110011001000000010110010 等,所以我认为 python 线程缺少一些 1 和 0。

有人想在我的程序中获得无线输入吗?

4

1 回答 1

3

如果您正在运行 python,我猜您在 Raspberry Pi 上使用某种 linux,对吗?Linux 不是实时操作系统,这意味着您的 python 循环不会一直运行并且可以跳过一些 GPIO 数据。您可以通过使用像Chibios这样的实时操作系统来解决它,或者使用内核模块来停止所有中断并连续采样 GPIO,如Panalyzer项目中所示。

于 2014-10-03T22:21:12.483 回答