M5StickC[obnizOS + Hobby Lite]でLピカする。
2019/10/15にobnizOS[Hobby Liteライセンス]入りのM5StickCがobniz公式ストアから購入できるようになりました。早速買って使ってみたのですが、色々大変なところがあるのでまずはNode.jsを使ってM5StickCのLEDを点灯するところまで解説します。
※ まだ手探りなので誤情報があるかもしれません。その点はご了承くださいm(_ _)m
もくじ(Index)M5Stack関連の目次へ戻る
記事で使用した環境
今回の記事で使用した環境は下記の通りです。
- Windows10 Pro 64bit
- ArduinoIDE 1.8.10(シリアルモニタだけ使用)
- obnizOS 2.1.0
- node.js 10.16.3
※ シリアルモニタはシリアル通信ができるソフトであれば何でも構いません。
Hobby Lite ライセンスの注意事項
Hobby Liteライセンスは、使ってみると制限が多くお試し版という感じです。クラウドで利用したい場合はHobby ライセンス以上を購入する必要があります。
初心者の方は、Hobbyライセンスがいいかもしれません。
ファームウェアは書き換えない。
元から入っているobnizOSは、バックアップ等取ることができません。従って、ArduinoIDE等でファームウェアを書き込んでしまった場合、元に戻すことはできないので注意してください。
Webで書いてある手順でobnizOSを上書きしてもいけません。obniz IDは固定のようなので注意しましょう。
クラウドでは利用できない。
Hobby Liteライセンスはコンソールでは管理できません。Node.jsやオンラインHTMLでobniz.jsを使って利用します。
訂正(2019/10/22):
デバイスの一覧で管理はできませんが、コンソールではobniz idを使ってプログラムの実行はできます。
クラウド料金体系の「ライセンス比較表(一覧)」に詳しく書いてあります。
セットアップ
送られてくるパッケージはM5StickCのみで特に説明書は付いていません。Webを見ることになるのですが、Hobby Liteライセンスについてはあまり詳しく書かれておらず大変です。
①電源を入れる
まずはM5StickCをUSBケーブルでPCに繋ぎ電源を入れます。電源ボタンは「M5」と書いてあるボタンの左側面にあるボタンを2秒押します。
電源が入っても何も起こりません。焦らないように注意しましょう。
obnizOSの今のところの仕様だそうです。obniz Boardだとobniz IDが表示されるようなので、何とかしてほしいです。。。
動作しているか確認する方法
- WiFiアクセスポイントが増えているか確認する。
obnizOSが初期設定の状態で起動するとWiFiアクセスポイントが増えています。
スマホやタブレットで確認しましょう。 - シリアルモニタで確認する。(CR+LF、115200bps)
電源投入時にArduinoIDEのシリアルモニタを起動しておくとメッセージが表示されます。
②WiFiをセットアップする
設定はシリアルモニタから行う方法と、スマホやタブレットから行う2種類あります。obniz IDを調べる必要もあるのでシリアルモニタでの手順を紹介します。
(1)シリアルモニタでの操作
シリアルモニタを起動した状態でM5StickCを起動します。(既に起動している場合は再起動します。6秒長押し→2秒長押し)
1.起動直後
下記のようにシリアルモニタに表示されます。コマンドの入力は上の欄に入力して「送信」ボタンを押します。
ここで表示されるobniz id(8桁の数字)は後で使うのでメモしておいてください。(実行に必要なキーとなります。)
2.SSIDとパスワードを入力
付近にあるSSIDの一覧が表示されるので、接続するアクセスポイントのSSIDとパスフレーズを入力します。
※ M5StickCに内蔵されているESP32は2.4GHz帯しか対応していないので注意しましょう。
3.IPアドレスの設定
DHCPの場合は0を入力して「送信」をします。固定IPを指定したい場合は続くメッセージに従って設定を行ってください。
4.接続完了
接続に成功すると最後に「Online」と表示されます。
ソフトウェアの準備
Node.jsのインストール
こちらの記事ではNode.jsを入れて実行する手順を紹介します。インストーラー版はNode.jsからダウンロードして実行します。
しかし、私はZip版が好きなのでZip版で説明します。
①Zip版をダウンロード
Node.jsを開いて、「他のバージョン」→64bitのZip版をクリックします。
②解凍する
Zip版の場合は適当なフォルダに解凍します。今回は「D:\dev\obniz」へ解凍したとして説明します。
③コマンドプロンプトを開く
「ここに入力して検索」に「cmd」と入力しコマンドプロンプトを起動します。コマンドプロンプトの画面が表示されます。
④コマンドを実行する
下記のようにコマンドを実行してディレクトリを移動します。(自分で解凍したフォルダに移動)
d:
cd \dev\obniz
node --version
コマンドプロンプトにバージョンが表示されたらOKです。引き続き使用するのでコマンドプロンプトはそのままで実行します。
obniz.jsのインストール
コマンドプロンプトに下記のコマンドを入力して実行します。
npm install obniz
アプリの作成
後はプログラムを書いて実行するだけです。
app.jsを作成する。
d:\dev\obnizにテキストエディタで「app.js」というファイルを作成します。(appという名前は適当に付けます。)
作成する内容
M5StickCのLEDはGPIO 10であり、これをLOW(false)にすると赤色のLEDが点灯します。
★XXXXXXXXのところには自分のobniz idを入れます。
const Obniz = require('obniz');
let m5 = new Obniz("XXXXXXXX");
m5.onconnect = async function() {
console.log("connected");
console.log("ledON");
m5.io10.output(false);
}
app.jsを実行する。
コマンドプロンプトから下記のようにして実行します。
node app.js
動作確認
実行してコマンドプロンプトに「ledON」と表示された後にM5StickCのLEDが点灯します。
トラブルシューティング
ライセンスエラー
ライセンスエラーが出た場合は一度M5StickCを再起動してみましょう。
{'Error: [License] You don\'t have a correct license for connecting to obniz XXXX-XXXX throught obniz Cloud.'}
m5stackjsライブラリについて
obniz.jsと同じようなライブラリでm5stickjsというライブラリもあるのですが、2019/10/22に確認した限りではライセンスエラーが出て止まります。今のところNode.jsから実行する時はobniz.jsを使うしかないようです。
2019/12/22訂正 Node.jsでもm5stackjs使えました。m(_ _)m下記のコマンドを入力するとライブラリがインストールされます。
npm install m5stickcjs
Webのコンソールでプログラムを作成し実行する場合はライセンスのエラーが出ますがプログラムは動きます。
https://github.com/obniz/m5stickcjs
終わりに
自分もまだここまでしか試せていません。LCDに文字を表示しようとしているのですが難航しています。もし進んだら別途記事にしていこうと思います。まだJavaScriptはよく知らないので記事を書いてしまいましたが、気づいた点がありましたらコメントかTwitterにて指摘していただけると助かります。m(_ _)m
M5StickCやM5Stackの新しい開発スタイルを楽しんでいきましょう。
ラズパイ好きの日記さん、ご存知でしたら教えていただきたいことが1つあります。
M5StickCなどでWiFi接続設定を行う際には、M5StickC自身のSSIDに接続(Pass無し)後、自宅のWiFi APなどに対して携帯などを使ってM5StickCに自宅APの
SSIDとPasswordを入力し再接続を行います。ここまでは、多くの方が説明をされています。さてこの状態の時、M5StickC自身はPassword無しで自宅のWiFi APに接続されているわけですが、このままではM5StickCのセキュリテイが有りません。PCなどでこのM5StickCにWiFi接続してみると簡単に外部へNet接続ができてしまいます。実験的に短い期間であれば良いのですが、継続的に使用する場合には適当では有りません。M5StickCのFirmを書き換えると自動的にこのWiFi接続ができるようになりますが、このWiFi接続にPasswordをかける手法をご存知ないでしょうか。皆さんはどうなされているのでしょうか?色々調べてはみたのですが、良い解が得られていません。(初心者のため)
ベータ様
コメントありがとうございます。
パスワードなしの状態は初期設定モードなので、WiFi設定後はM5StickCはアクセスポイントにはならないはずです。(なっていたらバグなのでメーカーに問い合わせですね。)
従って、外部へのNet接続はできません。あとは、M5StickCに悪意のある通信を中継する機能が実装されていないとそれは実現できません。
無線LANを設定する時の通信データとIoT機器に保存されたファームウェアは暗号化はされていないと思うので設定時にハッシュ値を用いるのも手でしょうか。
何故暗号化しないの?と思われるでしょうが、暗号化してしまうとCPUにもメモリにも負担が大きくなります。あとは、暗号化してしまうとパスワードを忘れた時に自分でもメーカーでも再設定できない=使えなくなるというデメリットもあります。
対策をとるとすれば、定期的にWiFiのパスワードを変更する、外部からのアクセスには気を付けて異変を感じたら対策をとるしかないでしょう。
難しい言葉はここで説明すると長くなってしまうのでご自身で書籍やネットで確認をお願いいたします。
ラズパイ好きの日記さん、早速コメントを頂き大変恐縮です!!
「・・・WiFi設定後はM5StickCはアクセスポイントにはならないはず・・」ということなのですね。FirmはM5Burnerを使ってUIFlow-v1.4.1-betaをインストールしています。
M5StickC×2とM5Stack×1台でも確認してみましたが、やはりPCのWiFi検索でセキュリテイ無しでWiFi-APとなっているようです。初期WiFi設定時のSSIDと自宅のWiFiに接続成功後ではSSIDが変わるようです。名称が変わったSSID(M5StickC)にPCで接続し外部のNetにも出ていくことができます。このM5StickCがトンネルとなって自宅のAP(WAP2)を通過しています。Firmのせいなのですかね?UIFlow-v1.4.2で再確認してみます。うちだけ!?
UIFlow使ってないので、知りませんでした(・・;)
それはまずいですね。
こちらでも調べてみます。
まずFireで試してみましたが、WiFi設定後はAPは消えました。
また、設定中にスマホから外部ネットにアクセスしてみましたができません。
もしかしたら外部接続はモバイルネットワークでしていませんか?
機内モードでWiFiだけONにすると確認できると思います。
先ほどのはv1.4.2でした。
UIFlowv1.4.1-betaだとM5STACK_SETUPというアクセスポイントになってますね。多分バグでしょう、、、
機内モード+WiFiで確認したところ、外部接続はこちらではできませんでしたのでベータさんも試してみてください。
もんごんたさん、色々試されていたのですね!恐縮です。
Firmをご指摘の通りUIFlowv1.4.1-beta -> UIFlowv1.4.2に書き換えたところ
M5StickCがPassword無しの公のAPから消えました!
こんな明らかなバグがあるなんて想像もしていませんでした。
もんごんたさんが一言「バグじゃないの!?」って言っていただけたので
ここ数週間の問題が解決ができました!
ありがとうございました!