Raspberry PI上用于Python的433MHz发送器和接收器

时间:2013-10-23 02:10:11

标签: python raspberry-pi radio

有没有办法在Python线程中使用433MHz-Sender或-Receiver?

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

433 MHz发送器/接收器与我的Raspberry PI(版本B,版本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,我认为。

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

1 个答案:

答案 0 :(得分:2)

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