2019年3月24日日曜日

M5Stackを使って何かしたい人が何から始めたら良いかという覚え書き

いざ、M5Stackを手にしてみたはいいものの、こいつをどのようにいじくりまわしたら良いかわからない人や、それが自分にもできるかどうか不安な人(要するに筆者自身なわけだが)のためのメモ。


■ はじめに
何を今さら。という感じだろうけど、自分以外にこの記事を開いた人は、M5Stackが何であるかを知っていることだろう。「ワオ!なにこれ面白そう!」とポチったはいいけれど、具体的になにをどうしたらよいかもわからず、プレインストールされているサンプルプログラムをRunさせてあとは押入れにraspberry piと仲良く押入れにStackされているかもしれない。


※Aliexpressとかで買った人は↑こんなのが入っているらしいので、キノコを食べてレンガを破壊するといった少しはエキサイティングな作業もできるだろう。

しかし、そうではないM5Stackが机の中で↓哀れな感じになっているようであれば、
    

そこから引っ張り出してきてせめてHelloWorldくらいはさせてあげよう。

それで、昔のPC98のN88BASICだとかであれば、Bootさせてそのままコードをちゃらっと書いてすぐRUNさせることができたけれど(いつの時代の話だw)。このM5Stackにはソフトウェアを書くのにいくつかのアプローチがある。それらを挙げてみよう。


■ M5Cloud
おそらくこれが基本的な開発環境なのでしょう。
    

     
言語は今をときめく「ジャーン!神出鬼没のスペイン宗教裁判だ!」のPythonです(はてなブログのようにキーワードに自動でリンクが付く機能がBloggerにはないのが辛い…)。

ブラウザで動くわけだからは、なにかインストールする必要も無いし……

……と言いたいところだけど、USBとM5Stackを接続してシリアル(コーンフレークのことではない)通信をするためのドライバを入れなければいけないし、M5Stackにファームウェアを書き込まないといけないし、M5Cloudのアカウントを作るのもメンドクセ(゚Д゚)というわけで、意外とN88BASIC(しつこい!)のようにはいかんのです。

くわしいセットアップ方法については、Googleればザクザクと出てくるから、そういったブログを参照されたし。

ちゃらっとコードを書いてちゃらっと実行させるには、こいつが一番楽だと思います。特に初心者はこれが一番やりたいことをさせるのに楽な方法でしょう。(ただ本当の初心者が一番やりたいことってHelloWorldなんかより3D表現の大長編RPGを作りたいとかそういうものなんですよね(^^;



■ Arduino IDE
M5Stackで使われているCPUというかSoCというか、要するにメインとなっている頭脳のESP32はArduinoIDEで開発することができるので、この情報もぐぐれば、それこそ山のように出てくる。   

言語はC/C++のようなもの。(ほとんどC/C++なんだけど、プロトタイプ宣言がいらなかったりなど微妙に違う。ここのプログラミングに慣れたあと、Cに戻るとNot declaredで怒られまくるのがあるあるだったりする(^^;)

最近はpythonでもそれなりにプログラマーとしてやってけるらしいけど、M5Stackのようなリッチではない環境でのプログラムを書くには、やっぱりC/C++は避けて通れないので、こいつでチマチマとコード書いて、チマチマとコンパイルすることも経験してみるといい。

今時、Cなんてヤッテランネーヨという気持ちもよくわかるけれど、Cに取り憑かれた人は「Cのソースファイルがコンパイル&ビルドされるときにワシャワシャとコンソール上に出てくるメッセージを見てると脳汁が出る。」と良く言う。自分は何のことかよくわからない。だから落ちこぼれシステムエンジニャーになってしまったんだと思う。

それはともかく、先人たちがたくさんM5Stack用のライブラリを用意してくださっているので、そいつをありがたく使わせてもらうと、だいたいやりたいことはできたりする。

特に普段Windowsを使っていて、「C言語やファームウェア開発というのを勉強がてらやってみたい」という人にはオススメ。意外とこれが初めて触る統合開発環境という方もいるかもしれない。GUIでソース編集からコンパイルから、書き込みまでできてしまうので、これまでVisualStudioだとか、そういう統合開発環境を使ったことが無い方はこれから始めるといいでしょうね。


■ ESP-IDF
たぶん上級者用。これも言語はC/C++。


    
基本的にコンソール上で動くから上級者用と感じるけれど、慣れてしまえばこれが一番楽にソースを編集できたりする…というか、自分が使い慣れたテキストエディタを使えるというだけなんですが(^^;

例えばいくらか古い世代のプログラマーであれば、統合開発環境にくっついてくるやたらと動作のとろいエディターには辟易していることだろう。ヒデマルとかいう会社支給のパソコンなのになぜか4000円払わされて「こんなモン、メモ帳でええやろ、メモ帳で」とかぼやいているうちに、ヒデマル無しに仕事ができなくなる人もいるかもしれない。

人によっては、それがサクラエディタだとかMIFESだとか、viだとか、emacsだとかそういう何が最強かという戦争が起こって死人がでる!?くらい、人によって好みが別れたりするのでエディタに何が使えるかというのは重要だ。

まあ、やる気がないときほどのGUIほどありがたいものはないので、こいつをフロントエンドで動かす統合開発環境をくっつけてあげてもいいですね。(ビルドと書き込みツールがクリック一発でできるのは、なんだかんだで便利)人気なのはやっぱりEclipseでしょうか。……そのへんのESP-IDF+Eclipseというネタも一杯あるので、こんなとこを見てないでそういうのを開発したブログを参照されたし。


■ 最近はMicrosoft謹製エディタのVSCode拡張で PlatformIO も人気があるみたい。詳しくはぐぐりましょう。


ArduinoIDEではできないことが増えた!あるいは、ただ単にビルドがトロいと感じたら、これを使ってみるのが良いのではないでしょうか。

自分みたいにGUIプログラミング?なんだそれは?という人は始めからこれを使うのがとっつきやすいみたい。直でSoCを叩ける感じ(専門用語でベアメタルというらしい)がなんとなく好き。

でも他人に勧めるならM5Cloudだな…教えるの簡単そうだし(^^;

    
■ 余談
プログラミングに最強の教材は「ゲームを作る」ことだと自分的には思うんだけど(楽しさ&モチベーション維持)M5Stackでなにかゲームとか作ろうと思う場合、サウンドがネックになりそうですね(^^;
    
M5Cloudだって、pythonが使えるとはいえ、MicropythonでPygameのライブラリが使えるわけではないし、M5StackのDACはひどいものだという評判があるw

そしてM5Stackの回路図を見るとわかるとおり、SPIがすでにTFTやらSD両方使うことになってたりして、例えばSDカードからオーディオデータをひっぱりだしてくるだけでもたいへんそうだ。ソフトウェアデコードさせるのも一苦労だろう。

M5Stackのスペック的には初代ファミコンとかゲームボーイより上だとか言われるけど、それはCPUだけの話なんでしょうね。画像処理やオーディオまでCPUにさせようと思ったら、結構ゲームを作るのは難しそうな気がします

……とは言ってもたいていのゲームはNESのエミュレ…おっと誰かが来たようだ。


0 件のコメント:

コメントを投稿