完全自作ドローン〜ここまでの進捗〜

仕様概要
完全自作ドローンの仕様概要を説明します。
・制御基板およびモーターを有する
スマートフォンからの無線操縦により操作可能
この超大雑把な仕様から、当たって砕けろの精神で開発を進めていきます。
もちろん、制御基板は基板からソフトまで全て自作であり、機体構体も完全自作とします。ただし、モーターのみ自作する技術的メリットが少ないと判断したため既製品を購入します。


メカ設計
設計にあたっては、機体構体・制御基板・モーター(プロペラ含む)・バッテリーの各要素の統合が、なるべく少ない重量かつ取り回ししやすく干渉しない機構で実現されなければなりません。
そこで参考にできるのが、下記のような
既製品のミニドローンです。
f:id:mou-tsukareta:20180303173523j:plain


写真のように解体してみると、以下のことがわかります。
・構体は上部・下部の2つに分かれており、それぞれが基板を挟むような形を取っている
・モーターおよび制御基板は、下部の構体に固定されている
・基板は1枚のみで、モーター線は制御基板上に直接半田付けされている
・バッテリーは下部の構体と制御基板に挟まれて固定されている

上部・下部には分けた構造は、設計のレベルが高いため、敷居を低くして下部のみの構体で実現します。この点とミニドローンの設計を勘案すると、要求される機構的な仕様は
・モーターおよび制御基板は、構体に固定されている
・基板は1枚のみで、モーター線は制御基板上に直接半田付けされている
・バッテリーは構体と制御基板に挟まれて固定されている
となります。
これらを満たすように作成したドローンはこのようになります。
f:id:mou-tsukareta:20180303173622j:plainf:id:mou-tsukareta:20180303172903j:plain


モーター把持部の形状生成が現状の加工技術では困難だと判断し、構体はフリーの3DCADであるfusion360で設計しました。こんな感じになります。
f:id:mou-tsukareta:20180303172350p:plain


これをDMMの3Dプリントサービスで成形すると、こんな感じになります。
f:id:mou-tsukareta:20180303173204j:plain


エレキ設計
必要な部品はざっと以下です
マイコン
Bluetoothモジュール
トランジスタアレイ(モータ駆動用)
・電源レギュレータ
・重力、角速度、地磁気センサ

部品選定ですが、マイコンBluetoothモジュールに関しては表面実装部品を採用します。理由は明白で、ペイロードと実装面積の節約のためです。センサ部品に関しては、そもそも表面実装部品が個人では手に入らないこと、手はんだが困難であるという理由から、DIP化モジュールを採用します。
ここで超注意点!一時期トランジスタアレイも表面実装部品にしていましたが、モータ駆動に用いるPWMのデューティ比を大きくしていくと、保護回路があるにも関わらず突然モータが動かなくなるという現象が発生しました。トランジスタアレイを交換するとまた動き出し、デューティ比をあげると再度動かなくなるため、トランジスタアレイに問題があることまではわかっていました。また、DIP品ではデューティ比を大きくてしも問題なく動いていたため、表面実装部品とDIP品をデータシートで比較したところ、許容損失に大きく差があることがわかりました。おそらくこれが原因だと思われます。
このため、トランジスタアレイは許容損失の大きいDIP品を採用します。

今回は機体重量を最小限にするため、プリント基板を用いる必要があります。
EDAにはフリーソフトのEAGLEを使いました。
配線図はこんな感じです。ICSPがしたいので、プログラム用ポートはモータ制御等に使用しないようにします。
f:id:mou-tsukareta:20180303172402p:plain


ボード図はこんな感じ。モーターが基板の四隅になるようにします。また制御基板と結合するためのドリル穴を忘れないようにします。
f:id:mou-tsukareta:20180303172327p:plain


これをseeed studioという中国の基板プリントサービスでプリントしてもらうと、こんな感じになります。
f:id:mou-tsukareta:20180303172853j:plain


さらに部品を実装するとこんな感じ。
f:id:mou-tsukareta:20180303173606j:plain


ソフト設計
このシステムでは大きく分けて2つのソフトが必要です。
1つは制御基板上のマイコンに書き込むソフト、もう1つはスマートフォンからドローンを操作するためのアプリです。

マイコン用のソフトに関しては、
・センサーとのSPI通信
・センサ値からの姿勢角算出
・姿勢角からの指令値算出
・モーターへのPWM制御
・BluetonthモジュールとのUART通信
が必要になります。
受信割り込み(上昇、下降司令)を受けると、センサーから取得した姿勢角を安定させ、かつ上昇・下降司令に沿うような各モーターへの制御司令を算出し、PWM制御を行います。

スマートフォンのアプリに関しては、MacでしかiPhoneアプリを開発できないことから、Bluetonth機能を有するAndroidスマホの中で一番安そうなものを新規に購入しました。
本作品以外でも使えそうなので良い買い物です。
アプリの実装に関しては、私がアプリ開発およびJava未経験であることから、かなり骨が折れました。UIの作成や簡単なイベント制御はそんなに難しくないと思うのですが、Bluetonth通信は書籍の情報も少ないため、あらゆるサイトや書籍で勉強して、なんとか動くものを作れるようになりました。

最後に
開発を進めるにあたって参考になった書籍を挙げておきます。
fusion360の使い方
ドローンの作例があるため、
一部これを参考にしました。

Fusion 360操作ガイド スーパーアドバンス編―次世代クラウドベース3DCAD

Fusion 360操作ガイド スーパーアドバンス編―次世代クラウドベース3DCAD


・EAGLEの使い方
プリント基板作成に関して、最高の一冊だと思います。
実践的で読みながら作業するのにストレスが皆無。
いくつか関連書籍は読みましたが、
この一冊だけで回路作成→基盤発注まで行けます。


Androidアプリの作り方
まず手始めにこの書籍でアプリ開発の大まかな流れを学びます。

この本はBluetoothを活用したアプリについて
解説している唯一の書籍と思います。
Bluetoothバイス開発に必要不可欠です。