Arduino和Raspberry Pi之间的无线交换:协议的选择

问题描述 投票:2回答:2

您好哦哦强大的StackOverflow.com社区。

这是我一直在摆弄一段时间的问题。我有(将有)Arduino 2560使用一对388 RF发射器/接收器与RPi对话 - 因此它将有效地进行串行通信。更糟糕的是,会有许多发射器(Arduinos)和一个接收器(RPi)。两个问题,我无法找到答案:

  1. 协议是非常原始的 - 所以如果我想要任何纠错,我必须自己选择它。我想用一些非常简单的东西,如奇偶校验位开始,看看它是怎么回事。思考?
  2. 说到协议本身 - 我们如何编码数据?实际上,我将要发送一个数字 - 发送器ID - 伴随布尔标志(传感器有效/无效)。对串行RF传输进行数据编码的最佳方法是什么?全部发短信?我也可以将其作为字节流传输,但不管怎么样,但这会使进一步的移植变得困难(Big / Little Endian,字大小等)。还尝试考虑一些exotics,如NanoPB,无论协议缓冲区如何很好,它们可能对此任务有点过分。我理解我的立场在这里非常不稳定,所以我很感激你的想法。
  3. 最后,我知道这听起来很蹩脚,但我很确定有人之前已经这样做了,甚至可能会有某种跨平台的库,我可以用来进行交换。如果确实如此,那就太好了 - 我可以做我想做的事,而不是重新发明一个轮子。

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

这是我正在使用的transmitter,这是一个receiver

非常感谢大家!

arduino protocols wireless raspberry-pi error-correction
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有一个关于它的论坛讨论。


0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.