2

こんにちは、強力な StackOverflow.com コミュニティです。

これは私がしばらくの間いじっていた質問です。私は、388 RF トランスミッター/レシーバーのペアを使用して RPi と通信する Arduino 2560 を持っています (持つ予定です)。したがって、実質的にはシリアル通信になります。さらに悪いことに、多くの送信機 (Arduinos) と単一の受信機 (RPi) が存在します。私が答えを見つけることができない2つの質問:

  1. プロトコルは非常に原始的です。そのため、エラー修正が必要な場合は、自分で選択する必要があります。パリティビットのような非常に単純なものを使用して、それがどのように機能するかを確認することを考えました。考え?

  2. プロトコル自体について言えば、データをどのようにエンコードするのでしょうか? 事実上、私が送信しようとしている単一の数値 - 送信機 ID - とブール値のフラグ (センサーのアクティブ/非アクティブ) が一緒に存在します。シリアル RF 送信用にデータをエンコードする最良の方法は何ですか? すべてテキストに?これをバイトのストリームとして送信することもできますが、それがどれだけ大きくても、それ以上の移植は困難になります (ビッグ/リトル エンディアン、ワード サイズなど)。また、Protocol Buffers がどんなに優れていても、NanoPB などのいくつかのエキゾチックを検討しようとしましたが、おそらくこのタスクにはやり過ぎです。ここで私の立場が非常に不安定であることを理解していますので、あなたのアイデアをいただければ幸いです。

  3. 最後に、私はそれが不自由に聞こえることを知っていますが、誰かが以前にこれを行ったことがあると確信しており、交換を行うために使用できるある種のクロスプラットフォームライブラリさえあるかもしれません. もしそうなら、それは素晴らしいことです - 私は車輪を再発明する代わりに、私がやりたいことをすることができます.

とにかく、ここに立っています。回答をいただければ幸いです。

これは私が使用している送信機で、これは受信機です。

皆さん、どうもありがとう!

4

2 に答える 2

0

受信は理論的には Raspberry に移植できますが、送信にビットバンギングを使用するには、プロセッサにリアルタイムでアクセスする必要があります。残念ながら、Linux はリアルタイム OS ではありません。プロセッサが他のプロセスの処理にさまざまな時間を費やしているからです。ソフトウェアクロックリファレンスを作成しようとすると、これは大混乱を引き起こします。1つのプログラムしか実行していないArduinoでうまく機能します。

少し余分なコストとハードウェアの複雑さを伴うハードウェアのクラッジがいくつかあります. 1 つは、モード 0 でデータを SPI に送信し、MOSI ピンと SCLK ピンを XOR ゲート IC の入力に配線することです。別のハードウェアの方法は、RF を処理するために SPI または I2C を使用して、RF モジュールと Raspberry Pi の間のゲートウェイとして機能するように Arduino または PIC をプログラムすることです。

注: このクラッジには、FIFO バッファリングされた SPI UART が必要です。以前の Raspberry Pi モデルの一部にはソフトウェア SPI があり、ハードウェア FIFO を使用していません。特定のバージョンの仕様を確認してください。

興味があり熟練した人なら、Pi がこのタイプのリンクを処理するためのカーネル モジュールを作成することもできます。このトピックの詳細については、次の場所を参照してください。

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

于 2014-04-14T19:44:02.307 に答える
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 に答える