Trevaで取り込んだイメージデータをPCに送信していますが、5秒以上かかっていたので、高速化に取り組んでみました。
【やったこと】
・XBeeのボーレートを38400bpsから115200bpsに変更
・ハードウェアフロー制御でCTS信号をチェックするようにした。
・CTSが立っていないのにデータをロストすることがよくあったので、送信時に少しWAITを入れてあげると改善しました。(この辺は良く分かりません。)
フロー制御は以下のように行いました。
- XBeeのCTS端子をマイコンの適当な入力端子に接続
- XBeeのCTSは反転しているので、LOWの時に送信し、HIGHになったら送信を待つ。
- なお、XBeeはデフォルトでCTSフロー制御がONになっています。確認方法はX-CTUでDIO7が1-CTS FLOW CONTROLになっていればOKです。
- しかし、CTSの効果は微妙で、上記にも書いたWAITの方が効きました。
上記で、80Kbpsぐらい出るようになりました。
Trevaのイメージデータは96*72*2 (約14KB)ですので、1.5秒ぐらいでデータの送信が完了します。1.5秒は短いようですが、実際に見てみるとかなり遅いです。
また、間に壁等の遮蔽物があると、かなりのデータロストが発生します。
やはり、XBeeでリアルタイムにイメージデータを送ろうというのは少し無理があるようです。
定期観測ぐらいであれば問題ないでしょうが。。。
無線LANが本命でしょうか?
とりあえず、高速化はこれぐらいであきらめて、解像度を減らすなどデータを減らすことを試してみます。(既にかなりの低解像度なのですが。)
あと、上位階層でデータロスト対策を考えます。(今の仕組みだとデータロストすると待ちに入って止まってしまうので)
カメラといえばモッパーさん(http://moparlab.sblo.jp/article/40142757.html)も試されているTCM8230MD/TCM8240MDにも興味があります。このスペックのカメラが約\1,100で売られているのですから、もうTrevaを使っている場合ではないですね。
コントロールにFPGAやCPLDを使われている方が多いようですが、マイコンでもSH-2Aぐらいの性能とメモリー容量があればなんとかなるのではないかと考えています。