2

你好哦,强大的 StackOverflow.com 社区。

这是我一直在摆弄的问题。我有(将有)一个 Arduino 2560 使用一对 388 RF 发射器/接收器与 RPi 交谈 - 所以它实际上将是一个串行通信。更糟糕的是,会有许多发射器(Arduinos)和一个接收器(RPi)。两个我无法完全回答的问题:

  1. 协议非常原始——所以如果我想要任何错误纠正,我必须自己选择它。我想用一些非常简单的东西,比如奇偶校验位开始,看看它是怎么回事。想法?

  2. 说到协议本身——我们将如何对数据进行编码?实际上,我将发送一个数字 - 发射机 ID - 伴随着一个布尔标志(传感器活动/非活动)。对串行射频传输数据进行编码的最佳方式是什么?全部发短信?我也可以将它作为字节流传输,不管它有多少,但这会使进一步的移植变得困难(Big/Little Endian、字长等)。还尝试考虑一些奇异的东西,例如 NanoPB,无论协议缓冲区多么出色,它们对于这项任务来说都可能是矫枉过正的。我知道我的立场在这里很不稳定,所以我很感激你的想法。

  3. 最后,我知道这听起来很蹩脚,但我很确定以前有人这样做过,甚至可能有某种跨平台库可以用来进行交换。如果确实如此,那就太好了——我可以做我想做的事,而不是重新发明轮子。

无论如何,这就是我的立场。将不胜感激任何答案。

这是我正在使用的发射器,这是一个接收器

非常感谢大家!

4

2 回答 2

0

你看过 Arduino Virtual Wire 库吗?http://www.pjrc.com/teensy/td_libs_VirtualWire.html。这适用于 Arduino 上的那些发射器和接收器,并且移植到 Raspberry Pi 应该不会太难。在http://www.raspberrypi.org/phpBB3/viewtopic.php?t=24215&p=239410上有一个关于它的论坛讨论。

于 2013-02-16T18:45:52.270 回答
0

Receive 理论上可以移植到 Raspberry,但您需要实时访问处理器才能使用 bit-banging 进行传输。不幸的是,Linux 不是实时操作系统,因为处理器花费大量时间来处理其他进程。当您尝试创建软件时钟参考时,这会造成严重破坏。它在只运行一个程序的 Arduino 上运行良好。

有一些硬件组合会涉及一些额外的成本和硬件复杂性。一种是在模式 0 下将数据发送到 SPI,并将 MOSI 和 SCLK 引脚连接到 XOR 门 IC 的输入。另一种硬件方法是使用 SPI 或 I2C 对 Arduino 或 PIC 进行编程,以充当 RF 模块和 Raspberry Pi 之间的网关来处理 RF。

注意:这个 kludge 需要一个 FIFO 缓冲的 SPI UART。一些早期的 Raspberry Pi 模型具有软件 SPI,并且不使用硬件 FIFO。检查您的特定版本的规格。

有兴趣和技术熟练的人也可以为 Pi 创建一个内核模块来处理这种类型的链接。可以在此处找到有关该主题的更多信息:

http://www.raspberrypi.org/forums/viewtopic.php?t=39951

于 2014-04-14T19:44:02.307 回答