買った時点では、M5Stackの小型のやつが安くなったんだな、という認識。M5Stackは、ESP32というWiFi+BlueToothなチップの上でArduinoが動くようにした上で、画面やセンサー類も付けて小さい筐体に入れたものです。
流行りかけのとき「しょせんはArduinoでしょ?」と、マトモに掘ってみる気がしなかったんですが、WiFiで気軽に通信できて、センサやカメラも繋ぎやすくなってるために色々な応用が一気に出て大ブレイク。
乗り遅れたものを追いかけるのも面倒…と思ってたんですが、新型が出たなら触ってもいい。安いし。
ということで注文。
届いたもの:
これだけ。本体、USB-Cケーブルに架台が3種。
で、さっそく起動…どうやって????
ぐぐってみると:
なんか変なの買ったみたいだぞ?!
で動かしてる例を発見。
ここの通りにやったらLEDは光りました。
あとこちらの方。
M5StickC obnizOS + Hobby Liteでコンソールを使用して(とりあえず)LCD表示できました。
— 淳 (@GEH00073) October 22, 2019
※下記URLのスクリプトを使用しました。https://t.co/ip6AymPEyP#M5StickC #obniz #HobbyLite pic.twitter.com/LkYCguKnuD
ブラウザで動かすJavaScriptでした。自分でもおなじスクリプトを手元に持ってきて、中のデバイスIDを書く部分("OBNIZ_ID_HERE"とある)を、シリアルコンソールで確認した自分のobniz idにして実行してみたら、ちゃんとLCDに3Dの球体(?)が出ました。嬉しい!
まだまだわからないことだらけですが、動かしていく過程で見えてきた景色を共有しときます。
ハードウェア関係:
- 電源を入れても何も表示されないのは仕様
- 電源ボタンはコレ
- 2秒の長押しで起動、6秒の長押しでオフになる。
- 裏面のシールの情報が役立つ。
LEDはG10、外に出てるコネクタはG26、36、0番、などなど。しょせんはマイコンだぜ感。
- 下側のGroveコネクタでI2C接続するのが便利なもよう。センサとかいろいろ販売されてる。
USB-Serial:
- M5StickC with obnizOSをプログラムするには、インターネットに出ていけるようにWiFiを設定する必要がある。
- WiFiの設定はシリアルコンソール。USBがUSBシリアルだった。チップ不明だがウチではドライバ不要だった。
- 付属のUSBケーブルでMacとM5StickCを繋ぐとデバイスファイルが作られる(ウチでは/dev/cu.usbserial-A55263C045)
- Macは定番のシリアルコンソールが無いが、Arduino IDEのシリアルコンソールが使える。これはobnizのCRLFをちゃんと解釈してくれて表示が崩れない。
- でも、M5StickCはいろんな部分が調子を崩しがちで、設定モードでリセットするにはタイミングよく「s」を押す必要があり、オレはscreenを使った。($ screen /dev/cu.usbserial-A55263C045 115200 -L )。
- まあ、電源オフしちゃった方が、きちんとリセットされるので、Arduino IDEでもよいかも。
ソフトウェア関係:
- Hobby Liteライセンスだと、プログラミングはJavaScriptしかなさそう。ブラウザで実行するかnode.jsで実行するか。
- m5stickcjsモジュールにはLCDグラフィックの例がある。が、ブラウザ版のみ。カッコいいんだけど、ブラウザからの接続は何だか不安定。「Error: [License] You don't have a correct license for connecting to obniz 8311-3923 throught obniz Cloud.」というエラーで動かないことがある。これはHobby Liteライセンスだからクラウドでは繋げないと言ってる様子なんだけど、オレはローカルで繋ごうとしてるんですよ。ローカルでの接続経路が見つけられないっぼい。
- 再起動すればエラーは消えるという話もあったけど一度出ると消えない感じ。
- 同じエラーはnode.jsのobnizモジュールでも出ることがあるけど、こちらの場合、スクリプトは止まらずにちゃんと動く。
- そんなわけで、node.jsからobnizモジュールを使おうと思う。npm install obnizで入る。
- ドキュメントはhttps://obniz.io/ja/doc/obnizjs_doc とか https://obniz.io/ja/doc/sdk/README とか(さいしょリファレンス的なものが見つからず苦労した)
- node.jsでm5stickcjsモジュールを使ってLCDに表示しようとしたがブラウザの画面を想定したコードがあって止まった。やってみたときはまったく意味がわからなかったけど、たぶんログ出力で代用できるので動かしたい。モジュールはいちおう npm install m5stickjsでインストールしてある。(node.js + npm、初めて使ってるけど便利ね)
まさかJavaScriptでマイコンプログラミングする羽目になるとは。
お作法がイマイチわかってないけど、これはモジュールのコードを読むのがいいんですかね。