クリエイター手抜きプロジェクト[590]IoT obniz編 M5StackにobnizOSを入れる
── 古籏一浩 ──

投稿:  著者:



久々のobnizのネタですが、今回はプログラムではなく、8月16日に新しく出たobnizOSを入れるまでのトラブルなどを書きます。トラブルと失敗だらけなので、誰かの役に立つかもしれません。が、そんな失敗はしないだろうみたいな感じで読んでもらっても構いません。

なお、Windowsを経由してインストールする場合は、以下に説明があります。
https://qiita.com/iizuka2019/items/4736796f4d07b82c677e


今回使ったのはmacOS HighSierraです。なお、obnizOSに関しては以下の公式ページとBlogに記載があります。

https://obniz.io/ja/products

https://blog.obniz.io/ja/news/obnizos-2-0-1-was-released/






obnizは、これまでobnizというシングルボードコンピューターとして販売されていました。数か月前までは、obnizOSという名前を見ることはありませんでした。

勝手な想像ですが、obnizを作った後に思いついてしまったんだと思います。obnizで使用しているESP32を使えば、obniz(ボード)でなくても同じようなことができるのでは? と。

・ESP32
https://ja.wikipedia.org/wiki/ESP32


WiFiなどの接続情報などはESP32側が持つので、I/Oポートを制御する部分だけ対応すればよいのでは? と。そうなれば、ESP32を搭載したワンボードマイコンなどに、obnizと同じ機能を搭載できそう→obnizOSということにしよう、みたいな感じだったのではないかと。

ESP32を搭載したボードはいくつかありますが(ESP32を使って自作するというのもあります)、8月20日時点での公式対応は以下のデバイスです。

obniz Board(これまで単純にobnizと呼ばれていたもの)
M5Stack BASIC
Dev-KitC
Stduino:bit
ESP32-WROOM32搭載デバイス(自作の場合など)

この中で、手元に何台かあったのがM5Stack BASIC。ということで、M5Stack BASIC(以後M5Stack)にobnizOSをインストールしてみることにしました。

なお、M5にはM5 Stick(すでに製造・販売とも終了)、M5Stick C、M5Stick Vがありますが、obnizOSが対応しているのはM5Stackのみです。あと、M5StackはBASIC以外にGRAYやFIREがありますが、それらに入るかどうかは分りません。

・M5Stack BASIC
https://www.switch-science.com/catalog/3647/

・M5StickC
https://www.switch-science.com/catalog/5517/

・M5StickV
https://www.switch-science.com/catalog/5700/


obnizOSを入れるには以下の手順に従って行います。
https://obniz.io/ja/doc/obnizos/os_install


この通りに行けば何のトラブルもないのですが、まっさらなmacOS HighSierraだと簡単にいきません。公式ドキュメントの「pip install obniz_cli」のところで、いきなり駄目です。

というのも、Pythonのパッケージ管理ツールのpipが、標準では入っていないからです。それ以前に、Python 3.4以降がmacOS HighSierraには入っていません。Python 3.4以降をインストールするにはいくつかの方法がありますが、今回はHomeBrewを使うことにしました。

が、このHomeBrewそのものが、macOS HighSierraには入っていません。

・HomeBrew
https://brew.sh/index_ja.html


ということで、公式ページにある以下のコマンドをターミナルから入力し、インストールします。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)
"

しばらく待つとインストールが終了します。ここで、駄目だったらAnaconda一式入れた方がいいかもしれません。現時点ではPython 3.7の方を入れます。

・Anaconda Distribution
https://www.anaconda.com/distribution/


HomeBrewがインストールできたら、以下のコマンドを入力してPythonをインストールします。

brew install python

インストールが終わるとpython3の両方が入りますが、コマンドラインから入力する場合、単純にpython〜とやると、Python2系が実行されてしまいます。なので2系と3系混在したままにする場合、obniz公式ページのpipのコマンド名をpip3に読み替えて実行します。

pip3 install obniz_cli

これが無事に実行されインストールされれば第一段階は終了です。次にobnizOSを購入します。今のところ年間1500円/1ライセンスです。

・obnizOS用の購入
https://obniz.io/ja/doc/licenses/license_buy_for_obnizos


購入するとデバイスキーが発行されます。macOSだと白紙のアイコンですが、中身は単なるテキストなので、テキストエディットなどのエディタで開く事ができます。記載されているのはデバイスキーのみです。これを後でコピー&ペーストして使います。

次に、M5StackとmacOSをつなぎます。シリアル経由で書き込むのでM5StackのUSB Type Cの短いケーブルをmac本体のUSB端子に差し込みます。

この後、うまく書き込めない場合には、USB Type Cケーブルの上下を逆にしてM5Stackに差し込んでください。上下方向によっては読めるけど、書き込めないという状況もあるようです。また、M5Stackにはシリアル通信のためのRXD,TXD端子がありますが、これと接続しても書き込めません。

M5Stack側は電源さえ入れば、どのモードでも書き込むことができます。自作で変なプログラムを動かしている場合はわかりませんが、UI FlowのQRコードが表示されている画面であれば書き込めます。USBモードにしなくても書き込めます。

書き込めない場合は、USB Type Cのケーブルを変えてください。このUSB Type Cケーブルはいいろあり外れもあるので、ちゃんとしたケーブルにした方がいいでしょう。うまくいかない場合は、USB Type Cケーブルを疑った方がいいかもしれません。

さて、M5StackとMacをUSB Type Cケーブルで接続したらOKというわけではありません。今度はCP210x USBドライバーを入れないと、M5Stackが認識されないことがあります。もし、以下のコマンドを入力してM5Stackを接続したUSBポートが認識されるなら、CP210x USBドライバーは不要です。

obniz_cli flashos

認識されない場合は、CP210x USBドライバーを以下の公式ページからダウンロードしてインストールします。

・CP210x USB - UART ブリッジ VCP ドライバ
https://jp.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers


無事にドライバーが入ったらターミナルで以下のコマンドを入力します。

obniz_cli flashos

実行すると

0:/dev/cu.Bluetooth-Incoming-Port
1:/dev/cu.SLAB_USBtoUART

のように、接続・使用可能なデバイスのパスが表示されます。USBtoUARTのように表示されているのが、M5Stackになります。複数接続していると複数表示されますが、その場合は間違って書き込んでしまわないように外しておきましょう。

書き込むM5Stackの接続USBを番号で指定します。上記の場合は1を入力し、リターンキーを押します。すると、M5StackにobnizOSが書き込まれます。obnizOSを小さいので、すぐに書き込みは終了します。

Hard resetting via RTS pin...

と表示されれば完了です。

次に、WiFiの接続設定を行います。この設定は一度行えば、後は電源を落としても記憶されたままになりますので、再度設定する必要はありません。ESP32側に接続設定が保存されるようです。

WiFi接続設定は、以下のようにコマンドを入力します。python3〜で駄目なら公式ページにあるようにpython〜の方で入力してください。

python3 -m serial.tools.miniterm /dev/tty.SLAB_USBtoUART 115200

接続されると--- Miniterm on〜〜のような文字が表示されます。表示されたらリターンキーを押します。ちょっと待つと

DeviceKey:

と表示されますので、ここでライセンス購入したデバイスキーの文字を入力し、リターンキーを押します。正常に処理されると

obniz ver:2.0.1
obniz id:12345678
MAC Address: 8404567854AD

のように表示されます。プログラムから使用する場合、obniz idの横の数値がデバイスコードになります。この値はメモしなくてもブラウザ(obniz Cloud)で確認することができます。

しばらくすると、接続可能なWiFi一覧が表示されます。一覧が表示されると

Enter SSID-Pass

と表示されるので、接続するWiFi名を入力します。接続先の一覧の名前をコピー&ペーストします。すると今度は接続パスワードの入力になります。

Password:

接続パスワードを入力し、リターンキーを押します。パスワードが正しい場合は、以下のような表示になります。

select Network
0:DHCP(default)
1:Static IP: 0

通常は0を選択します。固定IPの場合は1を選択しIPアドレスを入力します。選択すると自動的にobnizのClondサーバーに接続されます。

Connection Cloud
Online

と表示されれば接続完了です。実際に接続されているかどうかは、ブラウザからも確認することができます。

接続してしまえば、後はobnizボードと同じように使えます。M5Stackのボタンなどの機能を使いたい場合は、以下のサイトにあるライブラリファイルを利用します。現時点ではM5Stack用しかありませんが、他のデバイスでも同様にライブラリが整備されていくと思われます。

https://github.com/obniz/m5stackjs


M5StackのようにI/O端子が多ければ、より多くのデバイスを接続することができます。ここらへんは用途次第というのもありますが、obnizOSなら低コストで済むというメリットがあります。

逆に4年以上継続して使うなら、obnizボードの方が安上がりになります。ここらへんは難しく、obnizボードが量産効果がきいて価格が安くなると話が違ってきます。obnizボードが2000円台になってしまうようであれば、obnizボードを買った方が簡単で便利です。

なお、プログラムでI/O端子にアクセスする場合、obnizボードではobniz.io0〜obniz.io11でしたが、M5StackのようにI/O端子が増えている場合は、obniz.io15のようになります。単純にポート番号が増えるだけです。

現時点では最大ポート番号を取得する機能がなく、どのデバイスで動作しているかを調べる機能もありません。そこらへんを気にせずにプログラムを作成できればいいのですが、こしばらく様子見といったところです。


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/


夜になると外は秋の虫の声。10月から消費税が上がって虫の息...中国関係の小説や孫子の兵法、韓非子など昔それなりに読んだけど、ほとんど忘却の彼方。六韜(りくとう)とか、いくつかは漫画として解説・出版されてるものも。

個人的に面白く読んだのが范蠡(はんれい)の小説。張良も小説が出ているけど、余生はあんな具合にしないと生き残れないのか、と何ともな感じに。范蠡も結局逃亡するけど、他の国で成功する(陶朱公「とうしゅこう」と名乗る)ので、後味がいいかな。

・InDesign自動化サンプルプログラム逆引きリファレンス上/下
https://www.amazon.co.jp/dp/4844396846/

https://www.amazon.co.jp/dp/4844396854/


・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram


・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936

[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/


・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591

https://www.amazon.co.jp/dp/4844397605


・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP

http://digiconcart.com/dccartstore/cart/info/2561/218591


・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/


・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/


・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/


・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/


・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/