はじめに
本記事はM5Stack系デバイスへのopnizセットアップから、Node.js SDKでLチカするまでのハンズオン記事となります。
コマンドを6つ実行するだけで、だいたい15分ほどで完了します(ほとんどインストールやコンパイルの待ち時間です)。
対象読者
- JavaScript / TypeScriptでIoTしてみたい方(C / C++は書きたくない)
- できるだけ安くIoTしてみたい方
- 正直M5Stack積んでる方
用意するもの
- M5Stackデバイス
- 動作確認できているデバイスはこちら
- USB Type-Cケーブル
- デバイスをPCに接続する用
- PC
- Windows / Mac / LinuxどれでもOK
- Node.js v16以上をインストールしておいてください
opnizとは
opnizとはM5StackといったESP32デバイスをNode.jsからobnizライクに遠隔制御するための、Node.js SDKおよびArduinoライブラリです。
しくみとしてはESP32デバイスおよびNode.js SDK間にてJSON形式のRPCメッセージをやりとりし、相互に定義されたメソッドを呼び合います。
つまりはobnizっぽいことができるオープンソースIoTフレームワークです。
「opniz Node.js SDK」「opniz Arduino Library」で構成されます。
ハンズオン
- opnizデバイスのセットアップ(計12分)
1.1. 作業ディレクトリの作成(30秒)
1.2. opniz CLIのnpmインストール(3分)
1.3. M5Stackデバイスへのテンプレートスケッチ書き込み(8.5分) - Lチカプログラムを動かしてみる(計1.5分)
2.1. opniz Node.js SDKのnpmインストール(30秒)
2.2. Node.js SDKコード作成(30秒)
2.3. プログラムの実行(30秒)
1. opnizデバイスのセットアップ(計12分)
まずはopniz CLIを使ってopnizデバイスをセットアップします。
1.1. 作業ディレクトリの作成(30秒)
最初に作業ディレクトリを作成し、ディレクトリ移動します。
mkdir opniz-handson && cd opniz-handson
1.2. opniz CLIのnpmインストール(3分)
opniz CLIをnpmインストールします。
opniz CLIはM5Stackデバイスへopniz Arduino Libraryのテンプレートスケッチを簡単に書き込めるツールです。
npm install opniz-cli
opniz-cliのインストール時にArduino CLI実行ファイルのダウンロードやESP32環境の構築を行うため、インストールに数分かかります。
1.3. M5Stackデバイスへのテンプレートスケッチ書き込み(8.5分)
opniz CLIを使ってM5Stackデバイスへopnizテンプレートスケッチを書き込みます。
M5StackデバイスをUSBケーブルでPCと接続してください。
その後以下のコマンドを実行し対話モードで必要な情報を入力していきます。
npx opniz upload
ここで必要となる情報は以下のとおりです。
- デバイスのシリアルポート
- opnizデバイスが接続するWi-FiのSSID / パスワード
- opnizプログラムを実行するマシンのIPアドレス
- 書き込むM5Stackデバイスの種別
- opnizプログラムの通信ポート番号(デフォルトは
3000
)
このうちWi-Fiパスワード以外は自動的に情報を取得しリスト表示されるので選択するだけです。
opnizプログラムの通信ポート番号はデフォルトの3000
のままでいいのでそのままエンターキーを押してください。
GIF画像では書き込みがさくっと終わっていますが、コンパイル / 書き込みに数分かかります。
2. Lチカプログラムを動かしてみる(計1.5分)
内蔵RGB LEDを使ってLチカするプログラムを実行してみましょう。
ディスプレイ搭載デバイスはLチカの代わりにDチカ(Displayチカチカ)してみましょう。
2.1. opniz Node.js SDKのnpmインストール(30秒)
opniz Node.js SDKをインストールします。
npm install opniz
2.2. Node.js SDKコード作成(30秒)
以下のcurlコマンドでサンプルコードを直接ダウンロードします。
curl -fsSLk https://raw.githubusercontent.com/miso-develop/opniz-sdk-nodejs/main/examples/led.js > index.js
curl -fsSLk https://raw.githubusercontent.com/miso-develop/opniz-sdk-nodejs/main/examples/display.js > index.js
2.3. プログラムの実行(30秒)
以下のコマンドでプログラムを実行します。
node index.js
デバイスのLEDが1秒おきに点滅すれば成功です。
ディスプレイ搭載デバイスの場合はHello World!
の文字が点滅すれば成功です。
Next Step
お疲れさまでした!🎉
最後にopnizを使ったIoT開発の次のステップになるような情報をまとめましたのでご覧ください!
Examples
GitHubリポジトリにてExamplesを用意しています。
M5Stackデバイス備え付けの機能の使用例や、外部LED・サーボモーターの使用例があります。
APIドキュメント
TypeDocでAPIドキュメントを生成しています。
特に以下の2つのクラスのAPIが参考になると思います。
opnizを用いたQiita記事
opnizを用いて実際に何かを作ってみたりした記事です。