【问题标题】:433MHz Sender and Receiver in Python on Raspberry PIRaspberry PI 上 Python 中的 433MHz 发送器和接收器
【发布时间】:2013-11-01 03:08:33
【问题描述】:

有什么方法可以在 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。

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

【问题讨论】:

  • 您知道您的传感器发送数据的波特率吗?如果你用它的小处理器可以管理的那样努力推动这个小东西,那么 pi 的 UART 最高可达 4Mbaud。另一个问题是读取 GPIO 引脚状态的最大速度为 100Kbaud。最后,pi本身有一个250MHz的内核,你知道S/R的波特率是多少吗?
  • 我无法确定波特率。我使用了完成发送和接收的 C++ 程序。我添加了一个从我的 python 程序发送和接收数据的套接字。现在我正在用 C++ 重写整个应用程序

标签: python raspberry-pi radio


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 2016-09-14
    • 1970-01-01
    相关资源
    最近更新 更多