アーカイブ : 2013年 3月

Micro Quad Copter X-Typeの基板設計(その4)

いやいや、設計してPCBCARTに注文しようとしたのですが4層でピッチとかが細かくなると追加料金だそうで、10枚作って驚きの$500越えでした。一発オッケーであることの自信は全くないので、まずはテスト用の基板を作ってテストすることに軌道修正。とりあえずですが全部入りのテスト基板を作ることにしました。

テストボード

テスト用なので結構ゆるいルールで作ったのでFusion PCBにでも注文してみるつもりです。

Micro Quad Copter X-Typeの基板設計(その3)

詰め込める物は詰め込んで、Eagleで基板の回路設計とかをしてみました。どう考えても乗らないでしょ…。Orz

そう考えると、「Crazyflie Nano Quadcopter」はよくあのサイズに回路を詰め込んできましたね。向こうとこっちの差はCPUの数と無線系の回路ですが、そのあたりが増えている分こちらの方が不利ですね。

クリップボード

クリップボード2

Micro Quad Copter X-Typeの基板設計(その2)

ちゃんと機能が動くかをブレッドボードでテストしていますよ。

大枠は固まった感じですが、手半田で付けるとか考えると吐き気がするのでリフロー炉を何とかしてカッティングシートでマスクを作ってとか考えていたりします。ある程度数がはけるのなら少量生産請け負ってくれるところとか探したいのですが小型のクアドロコプターとかの需要はあるんでしょうか??

IMG_5754

Micro Quad Copter X-Typeの基板設計(その1)

Crazyflie Nano Quadcopterが日本で飛ばせないなら作ってしまえと言うことで実験していましたので基本設計とかを考えてみます。手のひらにはのって欲しいのでそのあたりを基準に設計してみますと以下の様なモデルができあがりました。

MQCX_v3

基板の部分だけを、せっかくあるので3Dプリンタを使って印刷してみるとこんな感じになりました。

続きを読む

Micro Quad Copter X-Typeの基本設計

いろいろと検証していましたけれども、どうやら本格的に作れそうな気配となってきたので基本構成とかを考えてみることにします。今の処のあくまで想定で作ってみたのですが、LEDアレイ載せるのは厳しそうな予感がします。

MQCX_M

MQCX_S

続きを読む

MultiWiiにArduinoからRC信号をシリアル送信してのコントロール

本来は簡単にPPM信号でRCデータを入力しようと企んでいたのですが、LED-Arreyを搭載しようとした所どうしてもTLC5940を積みたくなり…。そうすると、タイマーが使えなくなり、同時に割り込みも使えなくなり、PPM入力が不安定なdelay関数やmicros()を使わないといけなくなってしまうためしょうがなく置き換のため検討。たかだか、LEDの点灯のために安定した送信が可能なタイマーを使ったPPM信号を捨ててmicros()関数とか使って飛行を不安定にしたくない。だとすると、BTのデータ受信時に使っているプログラム内でそのままデータをシリアル送信してあげたほうがはるかに効率が良かろうということでの検証です。

MultiWiiの2.1以降には「Multiwii serial protocol」などというものが実装されているようでこれを使ってのPC信号の入力が可能ですのでこれを使ってテストします。

信号の形式:$M>[data length]

[code][/code]

[data][checksum]

ヘッダコード:’$”M’
データの向き:'<‘ or ‘>’
データ長(data length):コマンドで送信するデータ長(8ビット1文字換算)
コード(code):指示コード(詳細は以下「Multiwii Serial Protocol Code」参照
データ(data):「データ長」で指定した数のパラメータ
チェックサム(checksum):データ長からデータ迄を順次XORした値の下位8ビット
※:コード(code)に関しては、MultiWiiプログラム内の「Serial.ino」に情報があるので参照

今回のテスト構成はシリアル通信でのコントロールが可能かを試すだけなのでBluetoothでのコントロールは考えずに簡単にします。

(ATMegaはシリアルデータを中継する途中でRCコントロールデータを追加送信します)

続きを読む

USB Host Shield 2.0 for ArduinoでのSPP通信実験

せっかくなのでワイヤレスでの機体状態の確認とか遠隔制御とかに使えるのでSPPプロトコルでの通信ができるかを確認しました。 「MultiWiiConf_2_0」から接続して機体状態を表示出来ればいいかなと思っていたのですが、なんだかんだで問題出まくりだったのです。

前回同様の構成で、検証に使ったのは「USB Host Shield 2.0 for Arduino」+「USB Host Library for Arduino」を使用。そして、接続先のMultiWii相当としたArdunioNanoをあててテストをしました。

  • PC⇔Arduino間のSPP接続に関しては接続は接続可能
  • ただし、Windows標準のBluetoothスタックを使った場合にのみ。 ※:iba、Motorolaスタックを使用した場合にはサービス検索に失敗して接続できません。Broadcomスタックは未確認)

■PCとのSPP接続の流れ

注意:プロトコルスタックはMicrosoft製の純正スタック

  1. Arduino側でスケッチ「SPP.ino」をアップロードしてドンブルをセット
  2. PC側よりBluetoothデバイスを検索⇒PINコードを入力して接続  ※:XP/7で接続確認を行いました。

★接続完了画面

クリップボード

 

まあ、ここまででもなんだかんだで結構かかっていますけれども…。スタック周りのトラブルでなかなか接続できなかったりとか、ドライバが2重に入ってしまって正常に動かかなくなってしまったりとか大変でした。 ようやく接続できた後ですが、そこからはこれまで以上に茨の道だったりしました。

続きを読む

OpenSCADで出力したDXFデータをEagleに取り込む方法

最近はもっぱらOpenSCADを使ってベース設計をした物をSketchUpにインポートして設計していることが多いです。

基板の設計というか外形設計をOpenSCADで行ってからEagleに取り込めれば便利なので試してみたところ結構手順が必要だったのでメモしておきたいと思います。まずは、OpenSCAD側で3DのデータはそのままではDXF形式で出力することが出来ません。そのため2Dデータに変換してから出力する必要があります。

  1. 出力したいオブジェクトを「projection(cut=true)」でグループ化
  2. Design→Compile and Render (CGAL)→Export as DXF…でDXF形式で出力(かなり時間がかかります)
  3. micromagic systems – homeのサイトより”dxf2scr.zip”をダウンロード&解凍して「dxf2scr.exe」を実行
    クリップボード実行時画面
  4. 上段がインポートするDXFファイルで下段が出力するEagleスプリクト名称です。
  5. 名前を入れたら「CONVERT」をクリックして変換
  6. EagleのBoardよりFile→Scriptより「4」実行時に指定した出力ファイル名を指定して開くことでDimansionレイヤーに取り込まれます。

FoldaRapのY軸周りを変更しました

動かしてみたら、Y軸のモーターマウントとアイドラーの強度が若干足りない印象です。とりあえず、Infillを35%⇒75%に上げて更に各部の厚みを干渉しない程度に1mmぐらい増量してプリントしたものに交換しました。

あとは、Yキャリッジのヒートベッドマウント用の上部の穴周辺をフラットな形に修正してエンドストップスイッチにうまく当たるようにバルジを追加しました。 (ホーム位置迄戻すとヘッドがヒートベッドの外に出てしまう対策で可動範囲は小さくなりますが、ヒートベッドでノズルを削るよりはましなので…。)

 
Yキャリッジの比較(下側の部分に出っ張りがある方が新しい物)
SONY DSC

さらに、タイミングベルトですが予告通りに椿本チェインのものに交換しました。こちらのほうが厚みが薄いし柔軟性に富んでいます。(FoldaRapに使うならば680mmの物を2本注文するのが良いようです)

■タイミングベルトを比較
SONY DSC
白いほうが今まで使っていたほうで灰色というかが新しいものです

卓上でプリントするにはいい機体ですね。音もそれほどうるさくないですし、振動も許容範囲。プリント精度はやはり改良されたOrcaにはかないませんけれども事前のテスト出力とかには十分使える印象です。(普通に使う分には全く問題なし)

最後に最近使っているSlic3rのConfig.iniを置いておきますので参考までに…。

当分このまま使います、前回も似たようなこと書いてすぐに改良しましたけれども…。

Crazyflie Nano Quadcopterが日本で飛ばせないなら

Crazyflie Nano Quadcopterが日本で飛ばせないなら、飛ばせる物を作ればいいじゃないか…。チョット考えてみるから、真面目に考えて作ってみるに昇格させまして予備実験をして可能性を探っていきたいと思います。

SONY DSC

まずは、一番簡単なコントローラを使った無線操作が出来るかを検証してみます。何を使って実験するかですが、使い慣れたArdunioでBTのコントローラーを接続してみます。

■今回の構成はこちら
受信側:ArdunioMega(1280)+USB Host Shield 2.0 for Arduino
送信側:ワイヤレスコントローラ(DUALSHOCK 3)

USB Host Shield 2.0」は「USB Host Library for Arduinoのライブラリをがあるので簡単にできるはず。

▲PS3コントローラーの接続の流れ

1.)Bluetoothドングルのアドレス確認
スケッチ「PS3BT.ino」をアップロードしてドングルをセットした状態でシリアルモニタを表示表示されているBluetoothアドレスを控えておく
2.)コントローラーへのドングルアドレスの登録
スケッチ「PS3USB.ino」を以下のように修正してアップロード
//PS3USB PS3(&Usb); // This will just create the instance ← コメントアウト
PS3USB PS(&Usb,0x00,0x15,0x83,0x3D,0x0A,0x57); ← ここに表示されたBluetoothアドレスを設定
■正常に設定されるとこのような表示
PS3_Setup-Address
3.)ソフト側アドレス設定(ドングルアドレス登録)
Bluetoothアドレスをスケッチに設定
//PS3BT PS3(&Btd); // This will just create the instance ← コメントアウト
PS3BT PS3(&Btd,0x00,0x15,0x83,0x3D,0x0A,0x57); ← ここに表示されたBluetoothアドレスを設定
4.)PSボタンを押すことでコントローラーを接続
■接続終了画面
PS3_Connect

比較的簡単に接続できてしまいました。
続きを読む