ラビット・エンジニアリング

趣味の電子工作を、備忘録もかねて・・・・

M5CAMERAでラジコン戦車作ってみた〜【Part2:microPythonファームウエアのインストール 】

M5CAMERAでラジコン作りの記事です^^)

 

前回、Part1 ではハードの製作について解説しました。

今回、Part2 では開発の準備として、microPythonファームウエアのインストールを説明します

 

 

開発環境の準備

開発用のプログラミング言語Pythonを使います。

Pythonの命令をM5CAMERAが理解できるように、M5CAMERAに搭載されているesp32マイコンに、専用のファームウエアを書き込みます。

ファームウエアは、これを使いました。

github.com

 

注意点ですが、M5CAMERAのカメラモジュールを使うには、カメラ機能がサポートされたファームウエアが必要です。M5STACK用のファームウエアでは、カメラが使えません。

また、M5CAMERAに搭載されているesp32マイコンフラッシュメモリにファームウエアを書き込むには、esptoolを使います。esptoolをあらかじめインストールしておく必要があるので、こちらを参考に実施してください。

teck-rabbit.hatenablog.com

 

パソコンとM5CAMERAをUSBケーブルでつなぐ

Part1で作成した戦車のM5CAMERAとPCをUSBケーブルでつなぎます。

USBからの給電でM5CAMERAが動くので、電池ボックスの電源はOFFのままで大丈夫!

 

f:id:Pin-Pon-Usagi:20210529173052j:plain

M5CAMERAとPCをUSBケーブルで接続。USBから給電されるので、電池BOXはOFFでOK

 

ファームウエア書き込み

ファームウエア書き込みの流れは、

 

  1. 拡張子.binのファームウェアをローカルにコピー
  2. esptoolを使ってM5CAMERAのフラッシュメモリデータを消去
  3. esptoolを使って新しいファームウエアをフラッシュメモリに書き込み
  4. 動作確認

順に説明します。

 

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

 

f:id:Pin-Pon-Usagi:20210528174051p:plain

ターミナルからscreenコマンドを実行

真っ白なターミナル画面が表示されたら、1回リターンキーをおします。

f:id:Pin-Pon-Usagi:20210528174142p:plain

真っ白な画面が現れたら、リターンキーを1回押します

 

すると、プロンプト>>>が表示されて、Pythonの対話モードに入ります。

f:id:Pin-Pon-Usagi:20210528174255p:plain

プロンプト>>>が表示され、Pythonの対話モードが開始される

 

f:id:Pin-Pon-Usagi:20210528175422p:plain

動作およびモジュールの確認画面

Pythonの対話モードでは、上に示したように1+1を入力してリターンすると、計算結果が帰ってきます。help('modules')と入力すると、インストールされたPythonモジュールが表示されますが、この中にcameraが入っていればOKです。

 

Python対話モードの終了は、ctrl+a,ctrl+¥を続けて押します。

下記のような質問があるので、続けてy+エンターで抜けられます。

f:id:Pin-Pon-Usagi:20210528174914p:plain

screenを終了する時の画面

f:id:Pin-Pon-Usagi:20210528175036p:plain
無事、ターミナルに戻れました。

 

 

 

今回は、ここらで終わりにしたいと思います。

次回は、対話モードでモータを動かしたいと思います。