VSCode + PlatformIO で Timer Camera X を動かす
M5Stack で遊んでいるが、以前使っていた Arduino IDE は使いづらいので、開発環境を PlatformIO へ移行しました。
PlatformIO のインストールは、公式ドキュメント を参照してください。
VSCode なら直接 Extension で PlatformIO をインストールできます。
プロジェクトの作成とライブラリのインストール
インストールが完了したら、ホーム画面で新規プロジェクトを作成します。
- Board: M5Stack Timer CAM
- Framework: Arduino
作成されるプロジェクトのルートディレクトリには、platformio.ini
という設定ファイルがあります。
そして、Timer Camera X を動かすために、必要な ライブラリ をインストールします。
PIO Home の Libraries で 「Timer-CAM」を検索して、プロジェクトに追加します。
すると、.pio/libdeps
でライブラリがインストールされます。
platformio.ini
にも lib_deps = m5stack/Timer-CAM@^0.0.2
が追加されます。
ビルドとアップロード
コードはサンプルの web_cam を使用します。 ssid と password を置き換えてビルドしてみようと、
Error: The program size (2601138 bytes) is greater than maximum allowed (1310720 bytes)
RAM: [== ] 17.1% (used 56144 bytes from 327680 bytes)
Flash: [==========] 198.5% (used 2601138 bytes from 1310720 bytes)
というエラーメッセージが出ました。
PlatformIO は 1MB くらいのフラッシュメモリしか使っていないので、platformio.ini で パーティションテーブル の設定を変更する必要があります。
パーティションテーブルは ここ で取得できます。
Arduino フレームワークではディフォルトで default.csv
を使用しているため、サイズは 0x140000=1310720 bytes で制限されています。
default_8MB.csv も使ってみましたが、シリアルモニターで以下のメッセージが繰り返し表示されました。
st:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
ets Jul 29 2019 12:21:46
ここ を参考として、esptool を利用して、フラッシュを削除した後、正常に戻りました。
huge_app.csv
を使用しましょう。この CSV ファイルをルートディレクトリに置きます。
そして、platformio.ini で board_build.partitions = huge_app.csv
を追加します。
あとは、シリアルモニタやアップロードを正しいボーレートに指定します。
upload_speed = 1500000
monitor_speed = 115200
upload_speed を正しく指定しないと、A fatal error occurred: Timed out waiting for packet header
というエラーメッセージが出ます。前のメッセージ Changing baud rate to 460800
を見ると、ボーレートは 460800 になってしまいました。
platformio.ini の設定は以下となります。
こうやって、正常にアップロードすることができました。
で、アップロードが終わってシリアルモニターを開くと、ドットが繰り返し表示されています。 コードを見て、WIFI に接続できないみたいです。
原因は ESP32 チップが 5GHz 帯をサポートしていないため、2.4GHz に切り替えれば、シリアルモニターに IP アドレスが表示されます。ブラウザでこのアドレスにアクセスすると、動画ストリーミングを確認できます。