你好哦,强大的StackOverflow.com社区。 p>
这是我一直在摆弄一段时间的问题。我有(将有)Arduino 2560使用一对388 RF发射器/接收器与RPi对话 - 因此它将有效地进行串行通信。更糟糕的是,会有许多发射器(Arduinos)和一个接收器(RPi)。两个问题,我无法找到答案:
协议非常原始 - 所以如果我想要任何纠错,我必须自己选择。我想用一些非常简单的东西,如奇偶校验位开始,看看它是怎么回事。想法?
说到协议本身 - 我们如何编码数据?实际上,我将要发送一个数字 - 发送器ID - 伴随布尔标志(传感器有效/无效)。对串行RF传输进行数据编码的最佳方法是什么?全部发短信?我也可以将其作为字节流传输,但不管怎么样,但这会使进一步的移植变得困难(Big / Little Endian,字大小等)。还尝试考虑一些exotics,如NanoPB,无论协议缓冲区如何很好,它们可能对此任务有点过分。我理解我的立场非常不稳定,所以我很感激你的想法。
最后,我知道这听起来很蹩脚,但我很确定有人之前已经这样做了,甚至可能会有某种跨平台的库,我可以用来进行交换。如果确实如此,那就太好了 - 我可以做我想做的事,而不是重新发明轮子。
无论如何,这就是我的立场。非常感谢任何答案。
这是我使用的transmitter,这是receiver。
非常感谢大家!
答案 0 :(得分: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上有关于它的论坛讨论。
答案 1 :(得分:0)
接收理论上可以移植到Raspberry,但您需要实时访问处理器才能使用bit-banging进行传输。不幸的是,Linux并不是一个实时操作系统,因为处理器花费了不同的时间来处理其他进程。当您尝试创建软件时钟参考时,这会造成严重破坏。它在Arduino上运行良好,只运行一个程序。
有一些硬件问题需要额外的成本和硬件复杂性。一种是在模式0中将数据发送到SPI,并将MOSI和SCLK引脚连接到XOR门IC的输入。另一种硬件方法是将Arduino或PIC编程为RF模块和Raspberry Pi之间的网关,使用SPI或I2C处理RF。
注意:此kludge需要FIFO缓冲SPI UART。一些较早的Raspberry Pi型号具有软件SPI,并且不使用硬件FIFO。检查特定版本的规格。
有兴趣和熟练的人也可以为Pi创建一个内核模块来处理这种类型的链接。有关该主题的更多信息,请访问: