ArduinoでのSPP通信実験せっかくなのでワイヤレスでの機体状態の確認とか遠隔制御とかに使えるのでSPPプロトコルでの通信ができるかを確認しました。「MultiWiiConf_2_0」から接続して機体状態を表示出来ればいいかなと思っていたのですが、なんだかんだで問題出まくりだったのです。Arduino」を使用。接続先のMultiWii相当としたArdunioNanoをあててテストをしました。PC⇔Arduino間のSPP接続に関しては接続は接続可能ただし、Windows標準のBluetoothスタックを使った場合にのみ。※:iba、Motorolaスタックを使用した場合にはサービス検索に失敗して接続できません。ここまででもなんだかんだで結構かかっていますけれども...。スタック周りのトラブルでなかなか接続できなかったりとか、ドライバが2重に入ってしまって正常に動かかなくなってしまったりとか大変でした。接続できた後ですが、そこからはこれまで以上に茨の道だったりしました。通常、シリアルデータの受け渡しをするだけであればコードは非常に簡単です。※:以下コードはMega系列の644P/1284P/1280/2560限定です。ハードウェアシリアルを2系統以上持っていないと使用できないためです。今回、Mega系列を使用したい理由はその辺りにあります。ソフトウエアシリアルを使えばほかホストとのUART通信は可能ですがど速度が出ない&リソースを食うので...。644/1284は実装面積が1280/2560の半分程度になります。そのため、その中で最大容量の1284Pが最有力候補となっているのです。RAMサイズも最大ですしね。}}普通だったら、上記コードの受け渡し先ポートをハードウエアからBluetoothに変更してあげればうまくいくはずなのですが、全くうまくいかない状態になりました。悩んだ結果わかったことはやはりソフトウェア制御のシリアルなのでデータの入出力の割り込みが多すぎて処理できないまま止まっている...。バッファエラー...。そこから色々とテストした結果ですが、受信データのバッファ内容を一括で配列に格納してから送信してあげる事で解決しました。}}やはり、無線ですし処理速度が足りないようなので速度はそれほど出ません。厳密なリアルタイムではないですが、リアルタイムデータに近いものは取得できそうです。processingとかをPC側のフロントエンドにすれば比較的簡単にPCからの遠隔操縦が可能になると思われます。その際にはClass1のBTドングルを双方で使用すれば距離100mまで操作可能となります。そこまでやるとカメラを搭載しないとダメですね。次回は、電源周り(バッテリー周り)の回路のテストをしてみたいと思います。あとは、Atmega1284Pを実機には積みたいので1284Pでの接続検証ですね。検証がうまく行ったら、専用基板を作って実機飛行できるようにしていきたいと思います。基板は4層かな?★参考情報せっかくなので、ハードウェアシリアルでも高速通信させるとバッファから溢れてデータが断片化することがあるようなので対策コードを、上記テスト版の変形です。)コメントはまだありません。URLトラックバックはまだありません。返信をキャンセルする。WordPress%d人のブロガーが「いいね」をつけました。