高速ディジタル伝送では、最下位層のパケットヘッダに単純なパターンの繰り返しからなるプリアンブルを付加します。こうすると、簡単なステートマシンでヘッダの到来を検地できます。もちろんプリアンブルのパターンはヘッダおよびボディ中に現れないようにするのが理想です。
プリアンブルの検出だけに頼ると、ロストするたびに検出に時間がかかりますが、パケット送信間隔を固定にすることでいったんロストした後も速やかに同期を回復できます。「この時間にヘッダーが到着するはず」とあらかじめ分かっているからです。
「走行中のラジコンカーの、エンジン温度等をモニタしたい」と思い立ち、某ストロベーリさんの500円AMモジュールを使った簡易テレメトリのようなものを開発しています。
が、猛スピードで走り回るラジコンからの送信では条件が厳しいのか、データは途切れるのが当たり前、といった感じです。送信側のマイコンは8ピンPICとあって、あまり複雑なプロトコルが載せられない中、エラー排除vs転送レートの落とし所を探っている段階です。
酔漢さんの仰るヘッダーの推定は全く考慮していませんでした。タイムリーにヒントを頂けた事に感謝です。ありがとうございました。
このシステム、机上では問題なく通信できてしまうので困っています。解決策は部屋でラジコンを走らせるか、サーキットでコーディングするか、でしょうか。
fenrirです。
>酔漢さん
仕様をきめるにあたって、データリンク層のプロトコル(PPPとかEtherとか)を参考にしようかとも思いましたが、教えていただいた方法はそれに近いものを感じます。今回は転送効率をあげる(9600bps程度の細い回線にも適用可能なことを考えています)、また回線ではバイト単位の転送が保証されている(に違いない、笑)という想定があったので、このような仕様にしてみました。
>kankiさん
はじめまして。無線は鬼門ですよね。特にアナログの無線だと、色々と周辺環境に依存する(モーターを回しただけでも回線品質が著しく落ちたこともありました)ので、飛行機は現在2.4GHzのデジタル無線を使うようにしています。Xbeeは手軽に使える(3000円くらい?)デジタル2.4GHz無線なので、導入を検討されてみてはいかがでしょうか。
Xbeeを使いたいのは山々なんですが、2.4GHz帯の操縦装置(いわゆるプロポ)への干渉が心配なんです。無線LANや、R/C用の装置同士でも他社間で共存できないトラブルを起こした例もあるので、あえて別の周波数を選択しました。作業中は「Xbeeなら・・・」なんて考えてるんですけどね。
500円モジュールでは3000bpsで通信できています。温度測定には十分でも、ジャイロやGセンサで走りを解析するには不足しそうなので、Xbeeは別バージョンとして検討してみます。
>kankiさん
現在、こちらの飛行機は2.4GHzのラジコンプロポ-受信機とXBeeを同時に使用していますが、ほぼ問題なく通信できているようです。同じ周波数を使っているという点で気持ち悪いことは確かなのですが、周波数ホッピングやキャリアセンス等の技術を信頼するしかないと割り切っています。電波が目で見えればもう少し安心できるのですがね(笑)