サンプルプロジェクトの中身
サンプルプログラムを使用してHello, World!
前回で、ESP-IDFの環境はあらかた整いました。ここからは、あらかじめ用意してあるサンプルプログラムを用いて、マイコンの接続からビルド、書き込み、モニタリングまで進んでいきたいと思います。
プロジェクトのコピー
サンプルは、esp/esp-idf/examples/get-started
ディレクトリ内にあります。そこにあるhello_world
ディレクトリをそのままesp
ディレクトリにコピーします。
ここで、-r
は、コピー元ディレクトリ丸ごとをコピーするオプションです。これで、esp
ディレクトリ内にhello_world
ディレクトリが複製されました。では、中身を詳細に確認していくことにします。
├── CMakeLists.txt
├── pytest_hello_world.py
├── main
│ ├── CMakeLists.txt
│ └── hello_world_main.c
└── README.md
・CMakeLists.txt
は、CMakeが読み込むテキストファイルです。ESP-IDFは、このCMakeを用いてプログラムのビルド、コンパイルおよびソース管理を行います。
・pytest_hello_world.py
は、Pythonの実行テスト用に用意されたファイルのようです。筆者もこれはよく分かっていません(汗)
・hello_world_main.c
は、メインの実行ファイルになります。こちらに、Hello, World!を表示するソースが記述されています。当然ながら(?)、Arduino言語ではなくC言語で書かれています。
ビルドと実行
ESP32ボードの接続
いったん実行ファイルの中身は無視して、実際に書き込む段階まで突っ走ってしまいましょう。ここで用意しなければいけないのが、通信機能がついているUSBのtypeA-microBケーブルです。そのあたりに転がっているのはだいたい通信非対応のものですので、なければAmazonでポチりましょう。私は、有象無象のコードたちの山から、ペンタブに使用していたコードを発見したのでそれを用いました。ではPCに接続!
Ubuntu側で認識させてやる
Powershell側での実行
ここが個人的にいちばん難儀したところです。自分のリサーチ能力の低さにゲンナリしつつも、1日ほどを費やし解決策を発見できました。まあそんなことは置いといて、まずWindows側のPowershellを管理者で実行します。次いで、以下のコードを実行します。usb接続されているデバイスを表示するものです。
ここで、以下の画像のような情報が表示されると思います。
この一番下、Silicon Labs CP210x USB to UART Bridge
が、USB接続しているESPボードです。この欄の一番左、BUSID
の部分をメモしておきます。この場合は4-3
です。この後、このIDをつかってUbuntuに紐づけます。以下のコードを実行します。
#yourID
の部分は、ご自身の環境により異なるので、上のステップで確かめたBUSIDを入力してください。こののち再度> usbipd wsl list
を実行し、ESPデバイスが以下のようにattached
に変わっていることが確認できれば、アタッチ成功です。おめでとうございます!
Ubuntu側での実行
追って、Ubuntu側の設定も済ませてしまいましょう。Ubuntuターミナルを開き、udev
を起動します。udev
とは、Linuxに接続されているデバイスを管理するデバイスマネージャのようなものです。これをもちいて、デバイスへのアタッチや権限管理を行います。以下を実行します。
起動までに時間を要するのですが、これはキャンセル猶予時間です。
なお、このudevは起動してespをつかうたびに必要になるので、WSLが起動したとき実行されるように、configrationファイルの/etc/wsl.conf
に以下を記入しておくとよいです。
またUbuntuのコンソールに戻ります。アタッチしたボードが認識されているか確認します。以下を実行します。
実行結果はおそらく以下のようになるでしょう。
ttyUSB0
として認識されているので、メモしておきます。ついで、/dev
の中のファイル群を表示して、権限情報を確認します。
これを実行すると、ずらっとデータが並んでいるのが確認できると思います。ここから先ほどのttyUSB0
を発見しましょう。私の場合はこれです。
私の環境では、所有者がroot
、グループがdialout
ですので、そのグループにユーザーを登録します。
これでUbuntuで実行する環境が整いました!
あとは一直線です。最初のhello_world
ディレクトリに移動し、以下のコマンドを実行します。
これで通ると思います。実行すると、タイムスタンプやらなにやらとともに、Hello, World!がコンソールに流れると思います。ここまでが一通りの構築になります。お疲れ様でした…
まとめ
書いていてもなかなかまとめるのが難しくて大変でした。これはみんなArduino IDE使うよね、楽だもん、、、。おしまい。コードの解説もいつかやります。いつかね。
Discussion
コメントはまだありません。
ログインするとコメントできます!