M5Stack、はじめました

M5Stackについては、IoT界隈でちょくちょく聞く名前だなーとは思っていたものの
新しいガジェットを遊ぶのもしんどいなと思ってスルーしていたのだが、
どうやらArduinoと似たようなものだし、Groveのモジュールも使えそうっぽいことを知ったので、買ってみた。

# 到着

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">届いてた！ <a href="https://t.co/sidgt9Sa5R">pic.twitter.com/sidgt9Sa5R</a></p>&mdash; なかまえ (@ryo_naka) <a href="https://twitter.com/ryo_naka/status/1126124317526257666?ref_src=twsrc%5Etfw">2019年5月8日</a></blockquote>

# 開封
![IMG_6309.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106639/c801288d-1866-c414-d123-54551f671848.jpeg)

## とりあえずLチカ
とりあえずLチカ的なことを目標にセットアップ/開発環境構築をスタート

### arduino IDE
- インストール
	- Wio LTEを触った際にIDEそのものはインストール済みなので割愛
- arduino-esp32のインストール
    - インストールしていなくても、ライブラリ管理画面に出てくる。なので、試しにインストールを押下してみる。
<img width="590" alt="2019-05-11_11h02_28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106639/88ecc6d4-42dc-92ba-cd42-b7d5fed2220e.png">


なんかインストールできたっぽいので試してみようかと思ったが、ボードにM5Stackが出てこない。
ここに出すためのものを必要なのかな。
なのでちゃんとarduino-esp32をインストールしてみる。

以下実行してクローン

```
cd <スケッチブックの場所>\hardware\espressif
git clone https://github.com/espressif/arduino-esp32.git esp32
git submodule update --init --recursive
```
※hardware\espressifの部分のフォルダがなかったら自分で作成。
esp32まで作ってしまうとclone実行時に「もう存在しているで」って怒られる。

上記後にtoolsフォルダの中にあるget.exeもしくはget.pyを実行

これでIDEを再起動すると、
ボード一覧にM5Stack-Core-ESP32が出てくるようになっているので選択。
端末にUSBで接続するとシリアルポートもわかるようになっているはずなので、それも指定。

### Hello World
〇スケッチ例：[Display]
スケッチサンプルの[Display]を書き込んでみる
コンパイルされたうえで書き込まれる。
![IMG_6310.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106639/e8299374-3283-abc7-1ffa-9dba1d3880c8.jpeg)

チカチカして気持ち悪いがちゃんと動いている。

〇スケッチ例：[Speaker]
音声も出してみようと[Speaker]を書き込んでみる。
ボタンには反応しているのだが、beepもtoneも実施されていない？
それとも音量が小さいだけ？

ググってもわからなかったのでつぶやいてみたら、すぐにどこからともかく解答っぽいのが飛んでくるからIoT界隈は好きだわ。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">失礼します。M5.Speakerから音が出ない件でしたら、<br>ライブラリを0.2.5に変更するか、githubからリリース前の最新の状態のライブラリを入手して試してみてください。</p>&mdash; らびやん (@lovyan03) <a href="https://twitter.com/lovyan03/status/1127047585116577792?ref_src=twsrc%5Etfw">2019年5月11日</a></blockquote>


ということで、ライブラリの管理から0.2.5に変更して試してみる。

が、コンパイルエラー

```
Arduino：1.8.5 (Windows 10), ボード："M5Stack-Core-ESP32, QIO, 80MHz, Default, 921600, None"

libraries\M5Stack\M5Display.cpp.o:(.literal._ZN9M5Display5beginEv+0x8): undefined reference to `TFT_eSPI::begin(unsigned char)'

libraries\M5Stack\M5Display.cpp.o: In function `M5Display::begin()':

C:\Users\RyoNakamae\Documents\Arduino\hardware\espressif\esp32\libraries\FS\src/FS.h:47: undefined reference to `TFT_eSPI::begin(unsigned char)'

libraries\M5Stack\M5Display.cpp.o:(.rodata._ZTV9M5Display[vtable for M5Display]+0x18): undefined reference to `TFT_eSPI::drawPixel(int, int, unsigned int)'

libraries\M5Stack\M5Display.cpp.o:(.rodata._ZTV9M5Display[vtable for M5Display]+0x30): undefined reference to `TFT_eSPI::drawChar(unsigned short, int, int, unsigned char)'

libraries\M5Stack\M5Display.cpp.o:(.rodata._ZTV9M5Display[vtable for M5Display]+0x34): undefined reference to `TFT_eSPI::drawChar(unsigned short, int, int)'

collect2.exe: error: ld returned 1 exit status

「SD.h」に対して複数のライブラリが見つかりました
使用済：C:\Users\RyoNakamae\Documents\Arduino\hardware\espressif\esp32\libraries\SD
未使用：C:\Program Files (x86)\Arduino\libraries\SD
exit status 1
ボードM5Stack-Core-ESP32に対するコンパイル時にエラーが発生しました。
```

クリーンビルドしたいのだが、よくわからないので、一回それぞれのヘッダをリネームして、コンパイル。エラーを出させた後に、名前を戻して、コンパイル。
無理やりリビルド。

で、書き込みしたら音がでた！

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">音出た！ <a href="https://t.co/7GZ0agYw5C">pic.twitter.com/7GZ0agYw5C</a></p>&mdash; なかまえ (@ryo_naka) <a href="https://twitter.com/ryo_naka/status/1127058884412051456?ref_src=twsrc%5Etfw">2019年5月11日</a></blockquote>

〇スケッチ例より：[TFT_Clock]
これを腕時計にしたらスマートウォッチになるのか？

![IMG_6311.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106639/5c1eaf81-f586-a84d-689b-0e8dc453b431.jpeg)

とりあえずはここまで。

# 参考
- 技術書典6で購入した[プリン本](https://anoken.jimdo.com/products/%E3%83%97%E3%83%AA%E3%83%B3%E3%82%92%E5%AE%88%E3%82%8B%E6%8A%80%E8%A1%93/)
- http://tutuurara.com/m5stack-arduino/