M5stickVが人気があるのはご存じでしたか? ラズパイ好きなら気になっている人は多いと思います。但し、ラズパイと比べると情報も少なく、比較的に取っつきにくい部類に入ります。
買ってみたものの使いこなせないのは私も同じです。サンプルプログラムを動作させて、多少の変更を加えて楽しむ程度で考えています。
もしも慣れたら、ラズパイのようにアレコレと実現できるかも知れません。
前回、これより少し大きいM5stackについていくつか記事を書きました。
こちらはあまり活かせていません・・・。
MicroPython言語が使えるにしても、環境構築が簡単ではないと感じています。
C言語やJAVAに近いArduino IDEを利用するので、ラズパイではなくArduino使いの人はスンナリ使えるでしょう。
ましてやMac環境だとこれまた困ることも多くて・・・。導入部分というのは初心者には特に分かりにくいと思います。何からやればいいの??
はじめてM5stickVを買ってからサンプルプログラムを動かすまでをご紹介します。
はじめの手順——ファームウェア書き込み

現在、主に入手できるネット店ではスイッチサイエンスになります。秋葉原に行ける人なら別に入手も可能なものの、日本に入っている絶対数が少ないので、タイミングが合わないとしばらく手に入りません。
購入しても説明書などはありませんから、ネットの情報が頼りです。
当然ながら本家のサイトは一読しておいた方が良いでしょう。
最初に必要なのは、通常は書き込みできないFlashロムという場所に基本となるプログラムであるファームウェアを最新の物に入れ替える作業です。
書き込むファームウェアをFlashに書き込めるソフトウェアを使って実行します。
順番に3つのソフトウェアをダウンロードし書き込みます。
ファームウェアのダウンロード
クイックスタートガイドに書いてある通りにファームウェアを書き込むところから開始します。
バグなどが治っていることがありますから、なるべく最新版が良いでしょう。

画像のダウンロードボタン(click to download firmware)からダウンロードします。この時点で「m5stickV_Firmware_0630Fixed.kfpkg」でした。6/30版ということですね。その時の最新で構いません。
書き込みソフトのダウンロード
ファームウェアを書き込むためのソフトウェアをダウンロードします。
先程の下にあるFlash tool Kflash_GUIをOSごとに3つ用意されています。
※ちなみにMacOSとしてこちらをダウンロードするとバージョンが古かったものの動作しました。逆にGitHubからダウンロードした最新版は動きませんでした。
こちらがv.1.25で、GitHub最新版は1.52でした。
kflash_guiの最新版はGitHubのページにあります。(https://github.com/Sipeed/kflash_gui/releases)
書き込む
こちらが実際に書き込んだ時の設定です。
ファームウェアは先程のダウンロードしたものです。

ポートはUSB接続していますので、プルダウンから選んでください。恐らくもう一方はBluetoothとなっているハズです。
バッファレートは最小の115200でOKでした。これはシリアル通信の速度です。
速度が速く接続できたとしてもエラーが出やすいので、115200bpsで充分です。

これはエラーです。速度を遅くするか、書き込みソフトのバージョンを疑いましょう。


このようになればOKです。
これで最新のファームウェアに変わりました。バグなどが活発にアップデートされています。不具合にであったらファームウェアを更新すると解決する場合があります。
※但し! 失敗すると故障の原因にもなりますから、慎重に行なってください。
シリアル通信ツール
M5stickVも付属のUSBケーブル(USBCーUSBA)を使ってマシンと通信します。
記述したプログラムを転送させる役割になり、接続すると自動的にMaixpy UIに入ります。 M5stickV内でデフォルトコード(boot.py)を実行しているなら、Ctrl + Cで終了することができます。
つまり、シリアル通信に使うのは汎用のソフトウェアで良いということです。
しかしながら、操作は難しいため、IDEを利用した方が良いでしょう。
Windowsのシリアル通信
WindowsならPuttyが定番です。

設定項目はホスト名とポート番号、そしてシリアルにチェックを入れて接続します。

Macの場合
Macはターミナルでもシリアル通信が可能です。
ただ、ちょっと難しいので、ここでは紹介しません。
MaixPy IDEを利用
先程の通り、Puttyなどでシリアル通信させてもMaixPyのGUIに入ります。だからIDEが用意されているので、そちらを使います。Macな人もWindowsな人もこちらが無難です。
ダウンロード場所はGithubをご覧ください。(https://github.com/sipeed/MaixPy/releases)
記事執筆時点ではv0.2.3が最新でした。
ツール→ターミナルを開く→新ターミナル→シリアルポートに接続する



通信ができたこの状態だと、エディッタに書いたコードが実行できます。リアルタイムにできるというわけです。
サンプルの実行
公式サイトにあるサンプルコードをコピペしてみましょう。
import lcd
lcd.init()
lcd.draw_string(100, 100, "hello world", lcd.RED, lcd.BLACK)
エディッタ側(最初に出ていた画面)で新しいファイルボタンを押すと何やら初めからコードがありますけど、それを削除してサンプルの4行を書きます。
そして、シリアル通信状態の新しいターミナル画面の実行ボタンで実行します。

即座にM5stickVの本体液晶画面にHello Worldが表示されると思います。


uPyLoaderで転送
先程は直接コードを実行していましたが、今度はuPyLoaderというソフトウェアで.pyのファイルなど転送ができるようにします。
Windowsはv0.14が最新で、macOSはv0.1.3が最新でした。(記事執筆時点)
実行した後、接続方法は先程同様にUSBを選び、速度も同じ115200bpsです。

ここで注意! コネクトボタンを押す前に
ボタンA(LCDと同じ面にある大きなボタン)を押しっぱなしにしたままコネクトボタンを入れてください。(電源が切れている場合は電源を入れる前)
これは初期のboot.pyが起動することを回避させるためです。
それなりにずっと押していると、画面が出てきます。

なんかエラーっぽいですが、これで接続は成功しています。
ここに書いてあるように、メニューからFile → Init transfer filesを実行してくださいとあります。
この時点ではM5stickV側はこんな感じです。

4つのファイルが見えますね。
ここで先程の通り、メニューからFile → Init transfer filesを実行すると以下のようになり、これで.pyなどのファイルの転送が可能な状態になりました。


- _upload.py
- _doownload.py
これらが追加され完了です。
あとはプログラミングした.pyを転送すればOKです。
お疲れ様でした。
まとめ
情報量の多さという点からもM5シリーズは初心者にはキツイ面があります。
それにラズパイのRaspbianOSと異なり、PCライクな想像が難しいかも知れません。
ユーザー数の多いWindows系のツールなどを利用した方が情報は多いからも知れませんから、電子工作の特徴が大きいArduinoと同じように思えます。
M5シリーズ → Arduino+Windowsがオススメ!
実際にやっていること(プログラミング)が非常にピンポイントなので、M5シリーズは意外と多機能ながら必要最低限のミニマムな開発が可能と思われます。
ライブラリが用意されているので、カメラやブザー、LED、ボタン制御などのやり取りよりも、本来の目的である部分にフォーカスできる強みがあります。
ラズパイは多機能なことやライブラリは同じようでも、それぞれが自由度が高いために初心者や慣れていない人には逆に敷居が高いかも知れません。(色々な方法で実現できる部分が多い)
M5stickVは単機能ながら高機能の本体や、記憶容量の小ささなどを逆手に取ったシンプルな構成なので人気なのだと思いました!
その割に個々の機能が優れているのがスゴイ!
ちょっと入手しにくいM5シリーズですが、興味が沸いた人は手に取ってみてください。
