N個のマイクロコントローラー(N> = 2 MCU)で構成されるシステムの実装を開始したいのですが、相互に通信できるようにする可能性を知りたいと思います。
理想的には、(N-1)マイクロコントローラーはクライアントとして機能する家の中に配置され、最後の(「サーバー」)マイクロコントローラーはUSB経由でPCに接続されます。私が今抱えている問題は、これらの(N-1)マイクロコントローラーを「サーバー」に接続する方法です。クライアントMCUは非常に単純なタスクを実行するため、CAN / PHY-MACを提供するという理由だけで、ARMを使用してこのような単純なジョブを実行することは良い解決策ではない場合があります。
通信は、ほとんどのデバイスで数分に1回、他のデバイスではオンデマンドで行われます。速度はそれほど重要ではありません(メッセージは短いです):1 Mbit / s私は、私の目的にとっては行き過ぎだと思います。
使用する予定のMCUは次のとおりです。
- Atmel AVR Tiny /メガ
- TI MSP430
- ARM Cortex M3 / M4
- (おそらくAtmel AVR UC3-32ビット)
PICをプログラムする可能性が少ないため(可能性のあるPICを避けたい)(上記のすべてには多少のオープンソースツールといくつかの公式ツールがあります)。
一部のARMがCAN機能を提供していることは知っていますが、他のARM についてはあまりよくわかりません。
今、私はこれらの可能性を思いつきました:
- データを送信する単純なGPIO(たとえば、メッセージの開始を示すHIGHで16ビット以上、メッセージの終了を示すLOWで16ビットを超える)。ただし、すべてのビットを検出できるようにするには、標準周波数<<(frequency_client、frequency_server)である必要があります。クライアントMCUごとに1本のケーブルのみが必要です。
- RS-232:これは間違いなく最も一般的に使用されている通信プロトコルだと思いますが、どれだけうまく拡張できるかわかりません。現在、最大64個のクライアントMCUを検討しています(おそらくそれ以降)
- USB:AFAIKはほとんどRS-232に似ていますが、この場合はあまりうまく拡張できないと思います(USBは多くのデバイスをサポートしていますが-正しく覚えていれば255-このアプリケーションでは複雑すぎるかもしれません)
- RJ45 /イーサネット:これは、長距離で問題なく(少なくともシールド付き> Cat 6ケーブルで)伝送できるため、これが本当に使いたいものです。問題はコストです(PHY、MAC、トランスなど)。あなたが実際に自宅でうまくはんだ付けできるかどうかはわかりませんが。この方法では、クライアントMCUは必要ありません
- ワイヤレス/ ZigBee:モジュールは非常に高価ですが、机の後ろの「スパゲッティ」を避けるための方法かもしれません
- RFモジュール/トランシーバー:私は300 MHz-1 GHz帯域のものを話しているので、自宅ではんだ付けするのは難しいはずです。モジュールはすべて組み込まれていますが、ZigBeeと同じくらい高価です(少なくともMouserのRFのモジュール、SparkfunのRFモジュールはもっと安いようです)。
- できる?非常に堅牢なようです。車載アプリケーションで使用する予定はありませんが、それでも良い選択肢になる可能性があります。
- I²C / SPI / UART?繰り返しますが、可能であればケーブルで「スパゲッティ」を避けてください
- PLCは実際にはオプションではありません。長さが長くなり、電力ネットワークの容量負荷に依存するため、パフォーマンスはかなり低下します。価格面では、イーサネットとほぼ同じだと思います。
さらに、同時送信の場合、どのプロトコルが「より良い」でしょう(2つのデバイスが同時に送信を開始するというまれなケースを想定しましょう。どのプロトコルが最高の「競合管理システム」/「衝突管理システム」を提供しますか?
まとめると:柔軟性(デバイスの最大数、競合/衝突管理システム、...)、価格の両方を考慮して、非常に軽いデータ通信を行う分散クライアントシステムに最適なソリューションをお聞きしたいのですが。 、自宅で簡単に作れる(はんだ付け)、...通信モジュールだけに20ドルを費やすのは避けたいのですが、同時に机の後ろに30本のワイヤーがあると無駄になります。
現在私がイメージしているソリューションは、GPIOまたはRS-232(安い!)で近くのMCU間で基本的な通信を行い、「ゾーン」ごとに1つのMCUでイーサネット/ ZigBee / Wi-Fiを使用してサーバーと通信することです(高価です)、ただし、各クライアントMCUごとに1つのイーサネットモジュールよりもはるかに安価です)。
ケーブルの代わりに、光ファイバー/光ファイバーを使用することも可能です。追加の変換が必要ですが、この場合にそれが最善の解決策になるかどうかはわかりません。私はそれらについての追加の詳細を聞きたいです。