ESP32を活用した低コストドローンの製作方法
(digikey.com)- ESP32ベースのDIYドローンは、スマートフォンで操縦する小型WiFiドローンを安価な部品で実現し、ドローン制御・PCB・ファームウェアをまとめて実習できる
- 設計の中心は、Type-C USB、バッテリー充電回路、ESP32、CP2102 USB-UART、MPU6050、SI2302モータードライバーを統合した一体型PCB
- ファームウェアはEspressifのESP-drone firmwareをベースとしており、ESP-IDF 4.4.5で直接ビルドするか、提供された
ESPDrone.binをフラッシュできる - 電源投入後、ドローンが作成するWiFiホットスポットにパスワード
12345678で接続し、iOSまたはAndroidアプリから接続して操縦する - バッテリーの放電性能が不足すると、アプリ接続が切れたり離陸時に再起動したりすることがあり、例のように1300mAh 30Cクラスの高放電率バッテリーが必要
プロジェクト概要と機能
- このプロジェクトは、スマートフォンで制御するWiFiドローンをESP32と周辺部品で自作する方式
- 小型・軽量の機体にESP32モジュール、MPU6050 IMU、コアレスモーター、プラスチック製プロペラを使用
- 主な機能は次のとおり
- スマートフォンベースのWiFi制御
- 安定化制御用のMPU6050 IMU
- 3Dプリント部品なしで構成する一体型PCB
- 外部モジュールによるposition holdまたはheight holdの追加が可能
- 内蔵バッテリー充電器
- プログラミングとデバッグのための内蔵USBインターフェース
- AndroidおよびiOSアプリ対応
- オープンソース
回路構成
- Type-C USBポートは充電とプログラミングの両方を担当
- 電源経路制御はP-Channel MOSFET U2とダイオードD1を使ってUSB電源とバッテリー電源を切り替える
- 電圧調整はMicrochipのMIC5219 3.3V LDOが担う
- TP4056充電コントローラーがバッテリー充電を管理し、電圧検出は分圧回路で処理する
- 中核制御部はESP32 SoC、CP2102 USB-UARTコントローラー、MPU6050 IMUチップで構成される
- CP2102とデュアルMOSFETはESP32のリセット機能を簡素化する
- MPU6050はESP32 GPIOピンと接続され、飛行安定化と動作制御に使われる
- モータードライバー回路はSI2302 N-Channel MOSFETでモーターを制御し、保護ダイオードと抵抗を併用する
- デバッグLEDは状態確認に使う
- 青色LED: キャリブレーション
- 緑色LED: 接続検出
- 赤色LED: バッテリー不足
- 電源および充電インジケーターも含む
PCBと組み立て
- 最終製品を小型で組み立てやすくするため、カスタムPCBを使用
- ドローンの脚もPCBに含まれており、メインPCBから簡単に切り離せる
- AとBのプロペラは指定された方向に合わせて取り付ける必要がある
- 電源オン自己テスト中に、プロペラが正常に回転し、正しい方向に回っているか確認する必要がある
ファームウェアとフラッシング
- ファームウェアはEspressifのESP-drone firmwareをベースとしており、PCB設計に合わせて修正されたCircuit DigestのGitHubソースを使用する必要がある
- コードはESP-IDFで書かれており、コンパイルに使われたバージョンはESP-IDF 4.4.5
- ファームウェア適用方法は3つある
- ESP-IDFでソースをビルド
- ESP-IDF 4.4.xをインストールして設定する
git clone https://github.com/Circuit-Digest/ESP-Drone.gitでリポジトリを複製するESP-Drone/Firmware/esp-droneフォルダーに移動するidf.py menuconfigで設定を変更できるが、デフォルト設定でも十分idf.py -p PORT flashコマンドでビルドとフラッシュを実行する
- ESPTOOLを使用
- ESP-IDFインストール後、ファームウェアイメージフォルダーで実行する
esptool.py write_flash --flash_size detect 0x0 ESPDrone.binコマンドでフラッシュする
- ESP32 Flash Download Toolを使用
- ツールをダウンロードして実行し、チップタイプをESP32に選択する
ESPDrone.binファイルを選択し、アドレスを0x00に設定する- 正しいCOMポートを選択した後、eraseしてからSTARTでフラッシュする
- ESP-IDFでソースをビルド
アプリ接続と操縦
- ドローンを平らな面に置いて電源を入れると、フライトコントローラーがWiFiホットスポットを生成する
- スマートフォンでパスワード
12345678を使って接続した後、アプリを開いて使用する - iOSアプリはApp Storeで
ESP-Drone APPを検索して入手できる - Androidアプリは提供されたリンクから入手でき、アプリは第三者が作成・ホストしているため、使用者の判断でインストールする必要がある
- アプリでconnectボタンを押すとドローンとの通信を開始する
- 接続に成功すると、ドローンのLEDが緑色に点滅する
- turn lockボタンは、左コントローラーを上下のみ使うか、上下・左旋回・右旋回まで使うかをロックするために使用する
- 左スティックは離陸と着陸、右スティックは移動制御を担当する
- アプリ接続が切れたり、離陸時にドローンが再起動したりする場合、バッテリーが十分な電力を供給できていない状態の可能性がある
- 例のバッテリーは1300mAh 30C
- より高い放電率のバッテリーが必要
飛行前チェック
- ドローンの頭部を前方、尾部であるアンテナ側を後方に向けて置く
- ドローンを水平面に置き、動かさない状態で電源を入れる
- 通信が設定された後、ドローン尾部のLEDが緑色で速く点滅するか確認する
- 赤色LEDが点滅したらバッテリー不足の状態なので充電が必要
- スロットルコントローラーを少し前に押して、ドローンが指示に反応するか確認する
- 右コントローラーで方向制御が正しく動作するか点検する
主な部品
- ESP32-WROOM-32E-H4: Espressif SystemsのBT/WiFi RF TXRXモジュール
- MPU-6050: TDK InvenSenseの3軸加速度計・ジャイロIMU
- CP2102N-A02-GQFN28R: Silicon LabsのUSB-UARTブリッジ
- 2N7002DW-G: onsemiのデュアルN-Channel MOSFET
- MIC5219-3.3YM5-TR: Microchip Technologyの3.3V 500mAリニアレギュレーター
- AO3401: Alpha & Omega SemiconductorのP-Channel MOSFET
- SI2302DDS-T1-BE3: Vishay SiliconixのN-Channel MOSFET
- JS102011SAQN: C&KのSPDTスライドスイッチ
- 1N4148W: Diotec Semiconductorの標準ダイオード
- SS34: MDDの40V 3Aショットキーダイオード
1件のコメント
Hacker Newsのコメント
なじみのない人のために補足すると、自作できるFPVドローンのエコシステムはすでにかなり活発です
一般的な構成は、STM32ベースのフライトコントロールMCUとセンサーを載せた小さな正方形のPCB、モータードライバPCB、カーボンファイバーフレーム、LoRa無線モジュールPCB、カメラと映像送信システム(90年代の防犯カメラ風のアナログ、またはデジタル)、ブラシレスDCモーターとプロペラなどを組み合わせる形です
ファームウェアはBetaflight、ArduPilot、iNav、PX4を使うことも、自分で書くこともできます。記事のPCBフレームはすっきりしていて利便性も明らかですが、高加速度の状況で望む制御特性を出せるほど剛性が十分かどうかは疑問です
ESCソフトウェアにはhttps://github.com/am32-firmware、https://github.com/mathiasvr/bluejayがあり、フライトコントローラーにはhttps://github.com/betaflight、https://github.com/ArduPilot、https://github.com/iNavFlightがあります
操縦リンクにはhttps://github.com/ExpressLRSがあり、ESP32/ESP82チップも使います。無線送信機にはhttps://github.com/EdgeTXがあります
5年前は大半が独自技術で、趣味として始めるのに数千ドルかかりましたが、今では約500ドルから始められます。FPVで大きな費用になるのはゴーグルですが、安価なアナログゴーグルなら約100ドルでも入手できます
フライトコントロールソフトウェアは漸進的に改善され、映像サブシステムもおおむねアナログから2.4/5.8GHzデジタルへ移行しましたが、全体の構造は5年前と大きく変わっていません。趣味用のR/C送信機と受信機がフライトコントローラー(たいていSTM32)を経由し、PWM出力で趣味用ESCを駆動し、ESCがモーターを制御する構造です。ESCはマイクロコントローラーベースなので再フラッシュできますが、面倒でいら立ちます。テレメトリは通常、操縦とは分離されており、操縦は映像とも分離され、すべて短距離でIPベースではありません
一方、DJIのような商用既製品のクアッドコプターは、機体と送信機の間の単一のバックホールで操縦、映像、テレメトリをすべて処理し、映像遅延も印象的なほど低いです。おそらくWiFi系チップセットで生のベンダーフレームを流し、受信機が可能な限り受け取るベストエフォート方式なのだと思います。ESP32のESP-NOWモードでも似たことはできそうです。DJIプロトコルをリバースエンジニアリングしようとする試みは見たことがありますが、完全互換の実装や、オープンソース界における同等の代替は知りません
商用・独自領域の上位には、すぐ使える自律性、IPベースの複数バックホール(見通し内/見通し外の無線、LTE、衛星通信など)、GPS依存度を下げる航法ビーコン連携、ハイブリッドモーター/発電機、冗長化された電源システムまで備えたものがあります
こうした隔たりが、開発者の関心以外の理由で存在する必要はなさそうです。部品はほぼすべて入手でき、まともなリアルタイムOSを載せたRaspberry PiはSTM32よりはるかに大きな処理能力で、商用システム式のマルチセンサー融合も容易にできます。LTEモデムも安価ですし、より大きなヘキサコプターや固定翼機なら小型のStarlinkアンテナも持ち上げられます。太陽光パネルに着陸して充電する「perching」のようなことも十分可能です
ただし、オープンソースドローンの最先端は、ウクライナとイランの閉ざされた扉の向こうで起きているように見えます。見落としている新技術があれば喜んで訂正を受けますが、「可能なこと」と現在の実務の間には大きな隔たりがあるように見えます。同時に、それだけ機会も多いと見ることもできます
DJIのように飛ぶオープンドローンの情報を探すのはいつも難しく、そもそも何を探せばいいのか自体をよく分かっていないのかもしれません
「模型航空機/遠隔操縦飛行」の趣味も何十年も繁栄してきましたし、ここのカテゴリを見るだけでも充実しています: https://www.rcgroups.com/forums/index.php
さまざまなサブフォーラムを真剣に見ていくと、普通の感覚で飛行体はこうあるべきだという「標準」を打ち破る驚くような設計が見られます。Magnus、aerostat、Fettlerといった検索語がかなり有用です
これは誰かが Espressif の esp-drone(https://github.com/espressif/esp-drone)を再アップして、自分のもののように見せているのではないかと思う。DigiKey はそれを自社サイトに載せた形だし
カスタム PCB を作ったと言っているが、ほとんど同じに見える。記事でリンクされているリポジトリ(https://github.com/Circuit-Digest/ESP-Drone)にはマルウェアがあるという Issue もあり、コミット履歴も少し怪しく見える。間違っているかもしれないが
リポジトリの大半は普通のテキストファイルで、zip と bin はビルドに必要なさそうなので、気になるならビルド前に消せばよい
https://www.bitcraze.io/products/old-products/crazyflie-2-0/
https://github.com/Circuit-Digest/ESP-Drone/blob/main/Firmwa...
ライセンス違反だと思う。DigiKey がこういう人たちを起用したのは非常に印象が悪い
この記事が出るには絶妙なタイミングだ。アメリカでは集団ヒステリーのようなことが起きているが、実は DIY ドローンを1台あたり12〜13ドルで量産できると分かるなんて、すごい時代だ
最近は別の UFO だと見る人もいるので、実際には安いドローンですら過剰で、中国製のスカイランタン20個セットがあれば、平均的なアメリカの住宅街を継続的な恐怖状態にしたり、/r/UFOs のトップページに載るまでどれくらいかを見るには十分かもしれない
面白い。以前 Crazyflie[1] を作ったことがあるが、その頃は ESP32 もなかったので独自の 2.4GHz プロトコルを使っていて、これはそれに対する素晴らしいアップグレードだ
モーターコントローラーに単一のローサイド MOSFET を使うのも、BLDC モーターがもたらす一部の動作を諦める代わりに、よりシンプルで安価にしている。全体として10〜15ドルなら非常に良い価格で、Hackerbox[2] に入るのか気になる。まさに彼らがやりそうなものだ
CF マイクロドローンではかなり楽しく遊んだので、これもぜひ1台作ってみるつもりだ
[1] https://github.com/bitcraze/crazyflie-firmware
[2] https://hackerboxes.com/
古い iPhone をドローンに変えることを検討している。高レベルの処理をこなせる優れたハードウェアがすでにあり、センサー入力に応じて実際にモーターを駆動するような、よりリアルタイム性の高い作業は ESP32 に任せればよい
古い iPhone 6 だけでも、GPS、ジャイロ、加速度計、複数のカメラ、かなり強力なプロセッサ、Bluetooth/WiFi/LTE、音とライト、環境光・近接センサーがある。ケースを外せば、周囲を認識して通信できる優れたミニコンピューターになる
さらに新しい iPhone では、ARKit のような高度な技術でドローンと環境に対する空間理解を得て、自律ドローンを作ることもできる。iPhone 15 なら空間ビデオも可能だ。どれほど格好いいだろうと思う
Apple が、古い携帯電話を DIY プロジェクトに使えるよう、OS レベルの制限を解除できる簡単な方法を提供してくれるといいのだが
古い携帯電話はコントローラーとして使うほうがよいかもしれない
一から作りたくないなら、少し多めに払ってプログラミング可能な完成品を買うこともできる: https://shop.m5stack.com/products/m5stamp-fly-with-m5stamps3...
付属のソフトウェアスタックは非常に基本的で、オープンソースのアビオニクス方面は日本のナード Twitter を探ってみるとよい
すごい。着陸装置(支柱?)までPCBの一部になっている。作者がキット販売するか、Seeed Studioのようなところに外注してくれるといいのに。DigiKeyの注文送料がかなり高い国に住んでいるので。
作者は部品表のコストを13ドル弱と見積もっている。その価格なら、DIYドローンのライトショー用に群れを作ってみるのも楽しそう。
[1] https://circuitdigest.com/microcontroller-projects/DIY-wifi-...
ただし、自分が使えそうなサプライヤー基準では1個だと50ドルに近く見え、10個で150ドル程度。
それでもコストは少し削れそう。USB-シリアルチップがほぼ6ドルだが、別パッケージなら1個4.40ドル、10個なら1個あたり3.99ドルで、十分そうな代替チップならもっと安いかもしれない。選ばれている電圧レギュレータは500mAで1個1ドルだが、普段自分が選ぶものは1000mAで1個0.22ドル、10個なら1個あたり0.13ドルまで下がる。
使えるコア数が限られている点で、あまり合っていない感じがする。
rp2350のようなものならよさそう。メインコアがオンかどうかにかかわらず動作できる超低電力I/Oコアがあるから。組み込みはマルチコアが最もよく合う領域の一つなのに、優れたオフロード構造と貧弱ではないProgrammable IOシステムを備えたものはあまりにも少ない。
Silego/Dialog/RenesasのGreenPAKのような製品にも触れる価値がある。非常に小さいが興味深いミックスドシグナルのプログラマブルロジックに、周辺機能がかなり付いている。
むしろこういう用途にはESP32の超低電力補助プロセッサがぴったりかもしれないが、現実的にはかける労力に見合わない。計算に必要な電力はWiFiとローターが要求する電力に比べれば無視できるレベルだし、単一コアで複数のリアルタイムタスクを回すのもロケット科学ではない。
それより弱いハードウェアで人類を月に送った。コアが増えると複雑さが増すだけ。
EUがカメラ付きドローンに年30ユーロの手数料を求めるようになるまでは、Lidlの25ユーロの折りたたみ式WiFiドローンで遊んでいた。
カメラのないドローンの実用的な用途はあまり思いつかない。フライフィッシングは一つかもしれないが、魚が引いた感触があった瞬間に釣り糸を落として帰還するようプログラムする必要がある。
https://www.iaa.ie/general-aviation/drones/drone-register
十分速く飛ばせば、糸が張った瞬間にクリップから抜けて落ちる。
DigiKeyの記事なのにBuy nowボタンがないのは変だ。
すべての部品を配送してもらえて、何かを取りこぼしていないと確信できるなら、すぐ試してみたい。
ただし部品の一つはすでに廃番で入手できず、二つはここで必要な数量より最小注文数量が多いので、あまり良くはない。