shotaのマイクロマウス研修28 ESP32マウスでHello World!


こんにちは、shotaです。
社員研修として、オリジナルマウスを製作しました。

初めてのオリジナルマウス Especial

全国大会で完走したので研修は終わりましたが、本ブログはプログラムの説明が終わるまで続けます。

今回の記事では、ESP32を搭載したマウスでHello World!を実行する方法を書きます。

ソースコードは公開してますが・・・

制作したESP32マウスEspecialのソースコードはGitHubに公開しています。

ShotaAk/especial – GitHub

このコードでマウスを動かし、全国大会の迷路を走らせたのですが、Hello World!を説明するにはコード量が多くて複雑です

そのため、一からプログラムを作成して説明します。
ESP32初心者の方でも理解できるように書きます。(がんばります)。

ESP32でHello World!

それでは始めます。

ESP32の開発環境の選択

私のマウスEspecialには、ESP-WROOM-32Dモジュールを搭載しています。

http://akizukidenshi.com/catalog/g/gM-13318/

世の中にはESP32の開発ボードESP32-DevKitC-32Dがあります。
こちらのほうがメジャーだと思いますが、載っているモジュールは同じなので心配ありません。
開発ボードはUSBコネクタや電源IC、USB-シリアル変換ICを搭載しているので、手早くESP32を動かしたい!という方にはこちらがおすすめです。

http://akizukidenshi.com/catalog/g/gM-13628/

開発環境は色々ありますが、ESP-IDFarduino-esp32の2つが有名です。

大雑把に言うと、ESP-IDFはC/C++で開発し、arduino-esp32はArduinoで開発します。

私はESP-IDFで開発したので、これからの記事はESP-IDFのプログラムの説明を書きます。

ESP-IDFの環境構築

ESP-IDFのマニュアルはこちらのページです。

Get Started(安定版) – ESP-IDF Programming Guide

Get Started(最新版) – ESP-IDF Programming Guide

安定版と最新版がありますが、私は最新版を選択しました。

まず、Step 1. Install prerequisitesで必要なソフトウェアをインストールします。

私は開発用PCにUbuntu 18.04 (Linux)を使用しているので、Linux -> Ubuntu and Debianのページに進み、マニュアル通りに次のコマンドを実行します。

$ sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev

ついでに、ページ下のPermission issues /dev/ttyUSB0に進み、シリアルポートの権限も変更します。
これを実行しないとUSBで接続したESP32と通信できません。

Step 2. Get ESP-IDFに戻り、GitHubのESP-IDFをダウンロード(git clone)します。

まず、espディレクトリを作成し、その後ダウンロードします。

$ mkdir ~/esp
$ cd ~/esp
$ git clone --recursive https://github.com/espressif/esp-idf.git

続いて、Step 3. Set up the toolsに進み、ESP-IDFで使うツールをセットアップします。

$cd ~/esp/esp-idf
$ ./install.sh

最後に、Step 4. Set up the environment variablesで環境変数をセットアップします。

$ . $HOME/esp/esp-idf/export.sh

もし、IDF_PATH must be set before sourcing this script とエラーが出た場合は、環境変数IDF_PATHを設定した後に、もう一度export.shを実行します。

$ export IDF_PATH="$HOME/esp/esp-idf"

Hello World!の実行

Step 5. Start a Projectに進み、hello_worldサンプルをコピーします。

もともとのサンプルコードを壊さないために、ESP-IDFのサンプルを試すときは、サンプルのディレクトリをコピーするのがおすすめです。

cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .

次に、ESP32(ESP32マウス)を接続します。

Especial接続

Step 6. Connect Your Deviceに書いてあるとおり
デバイス名/dev/ttyUSB0が表示されていることを確認します。

$ ls /dev/ttyUSB0
/dev/ttyUSB0

その後、Step 7. ConfigureでHello Worldプロジェクトの設定をします。

次のコマンドを実行すると設定画面が表示されます。

$ cd ~/esp/hello_world
$ idf.py menuconfig

menuconfig

今回は何も変更せず、Exitに進み、設定を保存して終了します。

最後に、Step8,9,10より、Build, Flash, Monitorを実行します。
まずはBuildです。

$ idf.py build
... 以下略 ...
Project build complete. To flash, run this command:
../esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --after hard_reset write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/hello-world.bin
or run 'idf.py -p (PORT) flash'

次にflashコマンドで、生成したバイナリデータをESP32に書き込みます。

$ idf.py -p /dev/ttyUSB0 flash
... 以下略 ...
Leaving...
Hard resetting via RTS pin...
Done

最後にmonitorコマンドでESP32のシリアル出力を表示します。

$ idf.py -p /dev/ttyUSB0 monitor
... 以下略 ...
Hello world!
This is ESP32 chip with 2 CPU cores, WiFi/BT/BLE, silicon revision 1, 2MB external flash
Restarting in 10 seconds...
Restarting in 9 seconds...
Restarting in 8 seconds...
Restarting in 7 seconds...
Restarting in 6 seconds...
Restarting in 5 seconds...
Restarting in 4 seconds...

monitorコマンド実行

無事、Hello world!が表示されました。

次回の記事

Hello world!のプログラムを編集する記事を書きます。


Posted in DCマウス研修, ブログ, 研修
Tags: , , ,