M5Stack CoreInkでHello Worldする手順

この投稿ではM5Stack CoreInkを開封後、画面にHello Worldを表示するまでの手順を説明します。

## M5Stack CoreInkとは？

ざっくりいうと、ディスプレイ、バッテリー、WiFi、Bluetooth、入出力ピンがついたArduino互換のちっこいコンピューターです。Arduinoといえば電子工作ですが、ケースやディスプレイなどの部品を自分で選定したりする必要がありますが、M5Stack CoreInkは本体にいろいろなパーツが組み込まれているので、とっつきやすそうという印象があるデバイスです。

<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/02c6c35e-2643-4fda-359a-6a6013f3b9e6.jpeg">

M5Stack CoreInkの特徴は、ディスプレイが電子ペーパーという点です。電子書籍リーダーのKindle Paperwhiteのモニターと同じ仕組みのディスプレイです。電子ペーパーなので、色は黒しか出ませんが、画面を更新しない限り電力を食わないので、情報を表示しっぱなしにするのに向いています。

M5Stack CoreInkは、本体に磁石もついているので、冷蔵庫など鉄製のものならひっつきます。

M5Stack CoreInkの大きさは、感覚的にはお菓子のFRISKのケース2枚分くらいです。Apple AirPodsのケースよりやや小さいです。重さは、見た目以上に軽く、AirPodsのケースより全然軽いです。

<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/2d43ad92-1b4f-0179-ec6f-8a25a6963d4a.jpeg">

<https://www.switch-science.com/catalog/6735/>

## 開発環境の構築

環境構築にはMacBook Proを用いることを想定しています。

### ドライバーをインストールする

まず、ドライバーのインストールが必要です。ドライバーは次のページからダウンロードできます。

<http://docs.m5stack.com/en/quick_start/coreink/arduino>

macOS用のドライバーはCP210とCH9102は2種類あり、デバイスが使用しているチップによってどちらか一方を入れるらしいですが、どちらを入れたらいいか調べるのが面倒なので2種類ともインストールします。2つインストールしても問題ありません。

インストールするドライバー:

- CP210x_VCP_MacOS
- CH9102\_VCP_SER_MacOS

このうち、CH9102のインストーラーはインストールを実行すると、エラーダイアログが表示されることがあります。エラーが表示されてもドライバーはインストールされているとのことなので無視して大丈夫です。

### Arduino IDEをインストールする

次のページからダウンロードします。ページを開くと寄付を求められますが、「JUST DOWNLOAD」を押すと無料でダウンロードできます。

<https://www.arduino.cc/en/software>

zipファイルを解凍すると、Arduino.appが出てくるので、これをApplicationsフォルダに移します。

### Arduino IDEのボードマネージャー設定

Arduino IDEを起動し、メニューバーの「Arduino」→「Preferences」を開きます。「設定」タブの「追加のボードマネージャのURL」の入力欄に次のURLを入力し、「OK」を押します。

```txt
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
```

<img width="640" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/37a5abc9-fbf4-304e-4a9c-a4552920149b.png">

次に、「ツール」→「ボード: "Arduino Uno"」→「ボードマネージャ」を開きます。

<img width="640" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/071398ae-2c2a-518c-d7c5-48e78c5f14ea.png">

ボードマネージャが開いたら、「M5Stack」で検索し「インストール」を押します。押すと、ボードのダウンロードとインストールが始まります。ダウンロードは結構時間がかかります。30分くらい見といたほうがいいです。

<img width="640" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/15948fd0-3f43-2978-8c18-a83f05519a26.png">

### ボードを選択する

「ツール」→「ボード: "Arduino Uno"」→「M5Stack Arduino」→「M5Stack-CoreInk」を選択します。

<img width="640" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/0cfece9a-5950-b72f-8b22-409808b35ded.png">

### ライブラリを設定する

メニューバーで「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」を開きます。

<img width="640" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/28345e03-caa2-8de4-7c0d-624e8cd66efc.png">

ライブラリマネージャが開いたら、「CoreInk」で検索し、「M5-CoreInk」をインストールします。

<img width="640" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/fceb8a7f-4000-00fe-a4e1-7d056d19eeed.png">

## Hello Worldを実装する

### CoreInkをMacBookとつなぐ

CoreInkとMacBookをUSBでつなぎます。CoreInk付属のUSBケーブルはType-A・Type-Cの型なのでMacBook Proには直接刺さりません。なので、付属のケーブルを使う場合は、USBハブ経由でつなぎます。

### シリアルポートを選択する

プログラムの書き込み先になるシリアルポートを選択しておきます。メニューの「ツール」→「シリアルポート」→「/dev/cu.usbserial-XXXXXX」みたいな名前のものを選びます。名前がこれで合ってるか不安な場合は、CoreInkをUSBから抜き差しして、出たり消えたりするポート名がどれかで判定してください。

<img width="640" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/92388ed4-fc86-86fc-4c66-9bd43c95c4d4.png">

### Hello Worldを表示するコードを書く

Hello Worldをディスプレイに表示するコードをArduino IDEに書きます。

<img width="640" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/a54cc052-8741-5dca-c884-6128b8cffb96.png">


```c
#include "M5CoreInk.h"

Ink_Sprite InkPageSprite(&M5.M5Ink);

void setup() {

    M5.begin();
    if( !M5.M5Ink.isInit())
    {
        Serial.printf("Ink Init faild");
        while (1) delay(100);
    }
    M5.M5Ink.clear();
    delay(1000);
    //creat ink refresh Sprite
    if( InkPageSprite.creatSprite(0,0,200,200,true) != 0)
    {
        Serial.printf("Ink Sprite creat faild");
    }
    InkPageSprite.drawString(35,50,"Hello World!");
    InkPageSprite.pushSprite();
}

void loop() {

}
```

### ボードに書き込む

Arduino IDEの「マイコンボードに書き込む」ボタンを押してボードに書き込みます。

<img width="640" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/588196bd-371f-5a51-5ade-ea66444cc7f9.png">

しばらくすると書き込みが完了し、CoreInkに「Hello World」と表示されます。

<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/ab211375-f87c-0310-7b75-7c52856136fb.png">