Windows ではじめるM5Stack

#免責事項

本記事はWindows 環境でM5Stack を扱うための最初の手順を、個人メモとして纏めたもので、記事の内容を100%保証するものではありません。

また、内容の正当性に関して、いかなる保証もするものではありません。万が一、本記事の内容に誤りがあり、問題が生じた場合でも一切責任を負いかねますのでご了承下さい（間違い等の指摘があれば適宜修正はしたいと思いますが）。

尚、本記事の内容は予告なしに変更、または削除することがあります。

# はじめに
M5Stack はカラーディスプレイ、microSD スロット、スピーカを搭載したArduino コンパチブルな四角いモジュールで、搭載されているESP32 により、Wi-Fi、Bluetooth 通信も扱え、充電池も内蔵されています。USB ケーブルで接続することで充電やPCとの通信を行います。

また、本体と同形の拡張モジュール（GPS 等をはじめ、プロトタイプ用のものもあり）をスタッキングしていくことで、機能を拡張することができます。

- 公式サイト： http://m5stack.com/
- GitHub：https://github.com/m5stack

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/fe7fc481-2be2-7f9a-f3bc-ca2b7bb8ed6d.jpeg" width=50%/>

というわけで、はじめから色々準備されていて触りやすいのですが、開発方法がいろいろあって、最初の準備が分かりづらいので、Windows での手順をメモがてらまとめてみました。

尚、利用したM5Stack はBasic モデルに加速度、ジャイロ、磁気を計測可能な9軸センサ、MPU9250 を搭載したモデルM5Stack Gray になります。

# 開発手順
M5Stack は以下のような開発方法が利用できます。

1. Arduino IDE での開発
2. M5Stack をWiFi に接続し、[m5cloud](http://cloud.m5stack.com/ m5cloud) に接続することで、ブラウザによってクラウド経由でコード開発（MicroPython）。
3. 2. のオフライン版ファームを利用してのコード開発（MicroPython）。

開発環境の切り替えは、ファームウェアをダウンロードしてきて、M5Stack に転送することで行います。Arduino IDE の場合はArduino IDE 用に用意されたモジュール内のesptool から、m5cloud の場合は[espressif.com](http://www.espressif.com)の用意している[Flash Download Tools (ESP8266 & ESP32)](https://www.espressif.com/en/support/download/other-tools)を利用して転送します。

という訳で、それぞれの場合を見てましょう。

## 1. Arduino IDE 開発の場合
PC にArduinoIDE をインストールして、USB ケーブルで接続して開発します。公式サイトでは以下のページで手順が紹介されています。

- https://github.com/m5stack/M5Stack

### 1-1. Windows マシンにUSB ドライバをインストール
[SiLabs CP2104 Driver](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers)をダウンロードし、インストールします。

公式ガイドの但し書きによると、Windows10 の場合はUniversal ドライバ(v10.1.1) は入れず、古いバージョンのものを使用してね、とありますが私の環境はWindows 8.1なのでv6.7.5 のドライバをダウンロードして入れました。
<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/1ffe7d89-c1f1-1cf4-0b84-9a063ca72cfc.png" width=80%/>

### 1-2. arduino.cc からArduino IDE をダウンロード、インストール。
以下のURL からArduino IDE をダウンロードし、インストールします。

- https://www.arduino.cc/en/Main/Software

私の環境では、既存のArduino IDE がありましたが、最新版の1.8.5 のインストーラ版を上書きインストールしました。

### 1-3. スケッチブックの保存場所を確認
Arduino IDE を起動し、「ファイル」＞「環境設定」で「スケッチブックの保存場所」のフォルダを確認し、閉じます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/5dfadd2d-e813-9311-92e3-7010ffb68c74.png" width=50%/>


### 1-4. git からモジュールコピー
公式サイトの手順ではgit クライアントをインストールしていますが、今回は手動でコピーして配置しました（git をインストールした場合には、モジュールの更新があった場合は楽になります）。

1-3 で確認したフォルダ以下に「hardware\espressif\esp32」フォルダを作成します。以下のページを開き、右にある「Clone or download」からZIP をダウンロードし、作成したフォルダ内に中身を展開します。

- https://github.com/espressif/arduino-esp32.git

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/d7b0bad0-c9b2-fa6b-61b4-2e228d2ce217.png" width=80%/>

### 1-5. esptool.exe の配置
1-4 で展開したフォルダ内の「tools」フォルダ内にある「get.exe」をダブルクリックします。ファイルがダウンロードされ、正常終了すると「esptool.exe」ファイルが増えます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/4501b5a2-a92b-3181-10ba-688e24f1de68.png" width=70%/>

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/70062283-0af4-c4e1-83c2-174dd08d0f82.png" width=70%/>

### 1-6. Arduino IDE へのライブラリ設定
M5Stack をUSBケーブルで接続します。デバイスマネージャなどでCOM ポートの接続先を確認します（以下の図ではCOM3）。

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/60d17825-1ae2-6ca6-dcc9-b626639eb736.png" width=80%/>

Arduino IDE を起動し、「スケッチ」＞「ライブラリをインクルード」＞「ライブラリを管理」を選択します。表示されたダイアログで「m5stack」でフィルタリングすれば、目的のライブラリが表示されますので、「インストール」ボタンを押します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/405175ad-03c2-af06-74b5-c0895c54f8f3.png" width=80%/>

### 1-7. ボード設定
Arduino IDE の「ツール」＞「ボード」で「M5Stack-Core-ESP32」を選択します。「シリアルポート」を1-6 で確認したCOM ポートに設定、Upload Speedを「115200」に設定します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/d33c5454-b579-2526-f95f-b07aba7383f1.png" width=60%/>

### 1-8. サンプルファイルの実行
Arduino IDE の「ファイル」＞「スケッチ例」以下にサンプルがあるはずです。

コンパイルして書き込んで実行してみましょう。


## 2. m5cloudによるオンラインMicroPython 開発の場合
クラウドを使って、Web 上のIDE からMicroPython で開発できます。公式サイトでは以下のページで手順が紹介されています。

- https://github.com/m5stack/M5Cloud

### 2-1. Windows マシンにUSB ドライバをインストール
1-1 と同様の手順でUSB ドライバをインストールします。

### 2-2. 書き込みツールのインストール
[espressif.com](http://www.espressif.com)の用意している[Flash Download Tools (ESP8266 & ESP32)](https://www.espressif.com/en/support/download/other-tools)を利用してファームの書き込みを行います。

ダウンロードして展開し、適切な場所に配置して下さい。フォルダ内にある「ESPFlashDownloadTool_XXXX.exe」が本体になります。

### 2-3. ファームをダウンロード
m5cloud 版のファームを以下よりダウンロードします。尚、ファイル名に「psram」の文字があるものは、2018年モデルの4MB メモリのM5Stack 向けのもののようですので、通常はファイル名に「psram」の文字のないもので良いかと思います。

- https://github.com/m5stack/M5Cloud/tree/master/firmwares


### 2-4. ファームの書き込み
M5Stack をUSBケーブルで接続します。デバイスマネージャなどでCOM ポートの接続先を確認します（以下の図ではCOM3）。

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/60d17825-1ae2-6ca6-dcc9-b626639eb736.png" width=60%/>

2-2 で用意した「ESPFlashDownloadTool_XXXX.exe」をダブルクリックします。以下のような画面が出たら「ESP32 DownloadTool」をクリックします。

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/bea0a6e0-b1e6-c7de-d193-1840ded12c13.png" width=40%/>

ダウンロードしたファームを選択し、＠の後ろの欄に「0x1000」と入れます。また、「COM」欄に確認したCOMポートを設定します。「ERASE」ボタンを押してクリアした後、「START」ボタンを押すとファームが書き込まれます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/ed31f642-a851-3f4b-977a-7c00eb507c81.png" width=50%/>

ここから先の手順については[@inachi さん](https://qiita.com/inachi/)の[こちらの記事](https://qiita.com/inachi/items/d23b9e39551836cddb09
)が詳しいので省略します。


## 3. オフラインMicroPython 開発の場合
PC とUSB ケーブルで接続して、シリアル接続でMicroPython によって開発できます。

### 3-1. Windows マシンにUSB ドライバをインストール
2-1 と同様の手順でUSB ドライバをインストールします。

### 3-2. 書き込みツールのインストール
3-1 と同様の手順で書き込みツールをインストールします。

### 3-3. ファームをダウンロード
オフライン版のファームを以下よりダウンロードします。今回「m5stack-20180228-v0.3.4.bin」を試したところ、うまくいきませんでしたので、1つ前の「m5stack-20180206-v0.3.3.bin」をダウンロードしました。

- https://github.com/m5stack/M5Cloud/tree/master/firmwares/OFF-LINE

### 3-4. ファームの書き込み
2-4 と同様の手順でファームの書き込みを行います。

### 3-5. シリアル接続とコードの書き込み
ファームの書き込みツールを閉じた後、[Tera Term](https://forest.watch.impress.co.jp/library/software/utf8teraterm/) で接続します。「設定」＞「シリアルポート」で「ポート」に3-3 で確認したCOMポートを、ボーレートに「115200」を設定します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/138e45e6-0f83-cef7-e2b4-485d92031d2e.png" width=50%/>

M5Stack をリセットすると、Tera Term でブートログが見れるはずです。

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/fec3dc50-95f7-6d53-ee2b-a40f368cfccb.png" width=80%/>

リターンキーを何度か押すと入力できるはずです。```help()```でヘルプが見れますが、```CTRL ＋ e```でペーストモードに入りますので、コピーしたソースを張り付け、```CTRL ＋ d```で終了できます（キャンセルは```CTRL ＋ c```）。

<img src="https://qiita-image-store.s3.amazonaws.com/0/71407/f2f84187-4dd7-a2f2-8b33-5f0fb9234327.png" width=80%/>

M5Stack をリセットすると書き込んだプログラムが起動します。