M5CAMERAでラジコン戦車作ってみた〜【Part2:microPythonファームウエアのインストール 】
M5CAMERAでラジコン作りの記事です^^)
前回、Part1 ではハードの製作について解説しました。
今回、Part2 では開発の準備として、microPythonファームウエアのインストールを説明します。
開発環境の準備
Pythonの命令をM5CAMERAが理解できるように、M5CAMERAに搭載されているesp32マイコンに、専用のファームウエアを書き込みます。
ファームウエアは、これを使いました。
注意点ですが、M5CAMERAのカメラモジュールを使うには、カメラ機能がサポートされたファームウエアが必要です。M5STACK用のファームウエアでは、カメラが使えません。
また、M5CAMERAに搭載されているesp32マイコンのフラッシュメモリにファームウエアを書き込むには、esptoolを使います。esptoolをあらかじめインストールしておく必要があるので、こちらを参考に実施してください。
パソコンとM5CAMERAをUSBケーブルでつなぐ
Part1で作成した戦車のM5CAMERAとPCをUSBケーブルでつなぎます。
USBからの給電でM5CAMERAが動くので、電池ボックスの電源はOFFのままで大丈夫!
ファームウエア書き込み
ファームウエア書き込みの流れは、
- 拡張子.binのファームウェアをローカルにコピー
- esptoolを使ってM5CAMERAのフラッシュメモリデータを消去
- esptoolを使って新しいファームウエアをフラッシュメモリに書き込み
- 動作確認
順に説明します。
1.拡張子.binのファームウェアをローカルにコピー
上で紹介したリンク先から、ファームウエアをダウンロードします。
今回使ったのは、こちらのファイルです。
micropython_b7883ce_esp32_idf4.x_ble_camera.bin
2.esptoolを使ってM5CAMERAのフラッシュメモリデータを消去
フラッシュメモリの消去は以下のコマンドを使います
ダウンロードした.binファイルが置いてあるディレクトリで、次のコマンドを実行します。
esptool.py --port /dev/tty.usbserial-01EF52FF erase_flash
ここで、/dev/tty.usbserial-01EF52FFは、M5CAMERAのデバイス名です。
この部分は使っているデバイスや環境によって異なるため、自身の環境で確認が必要です。
確認方法は次のように行ってください。
まず、M5CAMERAをUSB接続していない状態で、デバイス情報をlsコマンドで確認
usagi@usagi-mba ~ % ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port
/dev/tty.wlan-debug
/dev/tty.debug-console
つぎに、M5CAMERAをUSB接続している状態で、デバイス情報をlsコマンドで確認します
usagi@usagi-mba ~ % ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port
/dev/tty.wlan-debug
/dev/tty.debug-console
/dev/tty.usbserial-01EF52FF
一つ増えた。/dev/tty.usbserial-01EF52FFがM5CAMERAです
以下は、メモリ消去実施結果です。
usagi@usagi-mba work % esptool.py --port /dev/tty.usbserial-01EF52FF erase_flash
esptool.py v3.0
Serial port /dev/tty.usbserial-01EF52FF
Connecting......
Detecting chip type... ESP32
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 24:62:ab:d8:3c:ec
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 12.6s
Hard resetting via RTS pin...
usagi@usagi-mba work %
Chip erase completed successfullyと表示されればOK!
3.esptoolを使って新しいファームウエアをフラッシュメモリに書き込み
ファームウェアの書き込みは、フラッシュメモリ消去の時と同様に、esptoolをつかいます
書き込むファームウエアを選んで下記のコマンドを実行します
esptool.py --chip esp32 --port /dev/tty.usbserial-01EF52FF --baud 460800 write_flash -z 0x1000 micropython_b7883ce_esp32_idf4.x_ble_camera.bin
書き込みを行うと以下のメッセージが流れます。
usagi@usagi-mba work % esptool.py --chip esp32 --port /dev/tty.usbserial-01EF52FF write_flash -z 0x1000 micropython_cmake_9fef1c0bd_esp32_idf4.x_ble_camera.bin
esptool.py v3.0
Serial port /dev/tty.usbserial-01EF52FF
Connecting.......
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 24:62:ab:d8:3c:ec
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Compressed 1575808 bytes to 1010481...
Wrote 1575808 bytes (1010481 compressed) at 0x00001000 in 89.0 seconds (effective 141.7 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
usagi@usagi-mba work %
特にエラーが出ていなければ問題ないと思います。
4.動作確認
ターミナルからscreenコマンドで、M5CAMERAに接続します。
screen /dev/tty.usbserial-01EF52FF 115200
真っ白なターミナル画面が表示されたら、1回リターンキーをおします。
すると、プロンプト>>>が表示されて、Pythonの対話モードに入ります。
Pythonの対話モードでは、上に示したように1+1を入力してリターンすると、計算結果が帰ってきます。help('modules')と入力すると、インストールされたPythonモジュールが表示されますが、この中にcameraが入っていればOKです。
Python対話モードの終了は、ctrl+a,ctrl+¥を続けて押します。
下記のような質問があるので、続けてy+エンターで抜けられます。
無事、ターミナルに戻れました。
今回は、ここらで終わりにしたいと思います。
次回は、対話モードでモータを動かしたいと思います。