1 ポイント 投稿者 GN⁺ 2024-12-25 | 1件のコメント | WhatsAppで共有
  • 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でフラッシュする

アプリ接続と操縦

  • ドローンを平らな面に置いて電源を入れると、フライトコントローラーが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件のコメント

 
GN⁺ 2024-12-25
Hacker Newsのコメント
  • なじみのない人のために補足すると、自作できるFPVドローンのエコシステムはすでにかなり活発です
    一般的な構成は、STM32ベースのフライトコントロールMCUとセンサーを載せた小さな正方形のPCB、モータードライバPCB、カーボンファイバーフレーム、LoRa無線モジュールPCB、カメラと映像送信システム(90年代の防犯カメラ風のアナログ、またはデジタル)、ブラシレスDCモーターとプロペラなどを組み合わせる形です
    ファームウェアはBetaflight、ArduPilot、iNav、PX4を使うことも、自分で書くこともできます。記事のPCBフレームはすっきりしていて利便性も明らかですが、高加速度の状況で望む制御特性を出せるほど剛性が十分かどうかは疑問です

    • このエコシステムのかなりの部分はオープンソースです
      ESCソフトウェアにはhttps://github.com/am32-firmwarehttps://github.com/mathiasvr/bluejayがあり、フライトコントローラーにはhttps://github.com/betaflighthttps://github.com/ArduPilothttps://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」のようなことも十分可能です
      ただし、オープンソースドローンの最先端は、ウクライナとイランの閉ざされた扉の向こうで起きているように見えます。見落としている新技術があれば喜んで訂正を受けますが、「可能なこと」と現在の実務の間には大きな隔たりがあるように見えます。同時に、それだけ機会も多いと見ることもできます
    • ドローン操縦が本当に下手な人はどうすればいいのでしょうか。FPVを自分でやってみましたが、なかなか上達せず、代わりにDJI Miniは本当に楽しんでいます
      DJIのように飛ぶオープンドローンの情報を探すのはいつも難しく、そもそも何を探せばいいのか自体をよく分かっていないのかもしれません
    • 「オールインワンPCBなので3Dプリント部品のようなものが不要」という利点が書かれていますが、家で3Dプリントとレーザーカットはそれなりにできます。でもPCBを作る設備はなく、はんだ付けもスルーホール以上は手先の器用さが足りません
    • 自作できるFPVドローンのエコシステムが活発だという話に付け加えると、何十年もいつでもドローン化できる飛行体を作ってきた立場からすると、ドローンがここまで広く普及する前からrcgroups.comが事実上、行くべきエコシステムでした
      「模型航空機/遠隔操縦飛行」の趣味も何十年も繁栄してきましたし、ここのカテゴリを見るだけでも充実しています: https://www.rcgroups.com/forums/index.php
      さまざまなサブフォーラムを真剣に見ていくと、普通の感覚で飛行体はこうあるべきだという「標準」を打ち破る驚くような設計が見られます。Magnus、aerostat、Fettlerといった検索語がかなり有用です
  • これは誰かが Espressif の esp-dronehttps://github.com/espressif/esp-drone)を再アップして、自分のもののように見せているのではないかと思う。DigiKey はそれを自社サイトに載せた形だし
    カスタム PCB を作ったと言っているが、ほとんど同じに見える。記事でリンクされているリポジトリ(https://github.com/Circuit-Digest/ESP-Drone)にはマルウェアがあるという Issue もあり、コミット履歴も少し怪しく見える。間違っているかもしれないが

    • Issue を立てた側がどのファイルが影響を受けるのかも言っていないので完全な推測だが、ウイルスの問題は誤検知のように見える。リポジトリに入っているプリビルド済みファームウェアは、アンチウイルスに簡単に引っかかり得る
      リポジトリの大半は普通のテキストファイルで、zip と bin はビルドに必要なさそうなので、気になるならビルド前に消せばよい
    • どちらのプロジェクトも Crazyflie に着想を得たとしているので、類似性が出たのかもしれない
      https://www.bitcraze.io/products/old-products/crazyflie-2-0/
    • その通りで、esp-drone から著作権のあるコードをそのまま持ってきているように見える
      https://github.com/Circuit-Digest/ESP-Drone/blob/main/Firmwa...
      ライセンス違反だと思う。DigiKey がこういう人たちを起用したのは非常に印象が悪い
    • Espressif はファームウェアだけを書いたのだと思っていたが、PCB の支柱まで含めて、このドローンが掲載しているものと本当に似ている
  • この記事が出るには絶妙なタイミングだ。アメリカでは集団ヒステリーのようなことが起きているが、実は DIY ドローンを1台あたり12〜13ドルで量産できると分かるなんて、すごい時代だ
    最近は別の UFO だと見る人もいるので、実際には安いドローンですら過剰で、中国製のスカイランタン20個セットがあれば、平均的なアメリカの住宅街を継続的な恐怖状態にしたり、/r/UFOs のトップページに載るまでどれくらいかを見るには十分かもしれない

    • 見てきた投稿からすると、すでに始めている人もいる。数日前には、ドローンに火のついたローマンキャンドルを取り付けた人がいた。あるいは FAA 規則を守った宇宙人だったか、そのどちらかだ
    • 本物の目撃情報を覆い隠す唯一の方法は、偽物の目撃情報をばらまくことだ
    • 興味深く、かつ恐ろしいのは、こうしたドローンを武器化するのが難しくない点だ。自作爆発物を落とし、完全自律で動かした後、水中に突っ込ませることもできる。銃よりはるかに安く実現できる
    • アメリカの集団ヒステリーとは何を指しているのか? 中国の気球騒動は数年前の話ではなかったか?
  • 面白い。以前 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 レベルの制限を解除できる簡単な方法を提供してくれるといいのだが

    • 必ず携帯電話が必要だろうか? デュアルコア 240MHz の ESP32 でも、より低い重量と消費電力で仕事をこなせそうに見える
      古い携帯電話はコントローラーとして使うほうがよいかもしれない
    • この用途なら、Apple 製のハードウェアだけは本当に避けたい。そういうところで人生の時間を無駄にしないほうがいい
    • それでもリアルタイム OSではない
  • 一から作りたくないなら、少し多めに払ってプログラミング可能な完成品を買うこともできる: https://shop.m5stack.com/products/m5stamp-fly-with-m5stamps3...
    付属のソフトウェアスタックは非常に基本的で、オープンソースのアビオニクス方面は日本のナード Twitter を探ってみるとよい

    • その通りだが、価格が3倍で、しかも在庫切れだ :(
  • すごい。着陸装置(支柱?)までPCBの一部になっている。作者がキット販売するか、Seeed Studioのようなところに外注してくれるといいのに。DigiKeyの注文送料がかなり高い国に住んでいるので。
    作者は部品表のコストを13ドル弱と見積もっている。その価格なら、DIYドローンのライトショー用に群れを作ってみるのも楽しそう。
    [1] https://circuitdigest.com/microcontroller-projects/DIY-wifi-...

    • ちなみに、10個作るだけでも13ドルという価格はかなり下げられる可能性がある。
      ただし、自分が使えそうなサプライヤー基準では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のような製品にも触れる価値がある。非常に小さいが興味深いミックスドシグナルのプログラマブルロジックに、周辺機能がかなり付いている。

    • RP2350のPIOユニットを「低電力I/Oコア」と呼ぶのはかなり誇張だ。かなりハックすれば理論上はチューリング完全ではあるが、どんな種類の計算にも本当に向いていない。UARTのパリティ計算すら任せたくないほど。
      むしろこういう用途にはESP32の超低電力補助プロセッサがぴったりかもしれないが、現実的にはかける労力に見合わない。計算に必要な電力はWiFiとローターが要求する電力に比べれば無視できるレベルだし、単一コアで複数のリアルタイムタスクを回すのもロケット科学ではない。
    • コアはこれ以上必要ない。ArduPilotはもっと非力なハードウェアでも動く: https://ardupilot.org/copter/docs/common-autopilots.html#com...
      それより弱いハードウェアで人類を月に送った。コアが増えると複雑さが増すだけ。
    • 基本的なドローンを動かすにはRP2040だけでも十分。このプロジェクトから多くを学んだ: https://github.com/holsatus/holsatus-flight
  • EUがカメラ付きドローンに年30ユーロの手数料を求めるようになるまでは、Lidlの25ユーロの折りたたみ式WiFiドローンで遊んでいた。
    カメラのないドローンの実用的な用途はあまり思いつかない。フライフィッシングは一つかもしれないが、魚が引いた感触があった瞬間に釣り糸を落として帰還するようプログラムする必要がある。

    • EUがカメラ付きドローンに年30ユーロの手数料を求めているわけではない。あなたの国ではそうかもしれないが、少なくとも私の国では違う。
    • アイルランドでは、ドローン登録は250g超またはカメラ付きなら必要で、2年で38ユーロ
      https://www.iaa.ie/general-aviation/drones/drone-register
    • 30ユーロのドローンはどれくらい持ち上げられるのだろう? 600gのマスだけでも、ドローンが馬鹿げたほど過剰出力でない限り、簡単に水中へ引きずり込める。
    • 自分のドローンでやったことがある。小さな横開きのチップクリップをドローンの底に付けた。
      十分速く飛ばせば、糸が張った瞬間にクリップから抜けて落ちる。
  • DigiKeyの記事なのにBuy nowボタンがないのは変だ。
    すべての部品を配送してもらえて、何かを取りこぼしていないと確信できるなら、すぐ試してみたい。

    • 一番下に「Add all DigiKey Parts to Cart」という小さなリンクがある。
      ただし部品の一つはすでに廃番で入手できず、二つはここで必要な数量より最小注文数量が多いので、あまり良くはない。