セットアップ

Arduino IDEにプラグインをインストールします。
Arduino IDEを事前にインストールしておいてください。
本項目ではWindowsの環境で解説しますが、Macでも文言が一部違いますが、同様の設定項目がありますので、そちらで設定をおこなってください。

Arduino IDEのインストールを完了したら起動させます。
「ファイル」→「環境設定」を開きます。

環境設定のダイアログが表示されます。
ダイアログ下部にある「追加のボードマネージャのURL」を探します。

「追加のボードマネージャのURL」の入力欄に下記のURLを挿入します。

https://obniz.github.io/obniz-plugin-arduino/package_obniz_index.json

設定できたら「OK」で閉じて設定を保存します。
次に「ツール」→ 「ボード」 → 「ボードマネージャ」を開きます。

「ボードマネージャ」を開くと処理が走り待ち時間が発生します。
しばらくすると落ち着くので検索欄に「obniz」と入力します。
次の画像のようにインストールというボタンがあるので、それを押しインストールを行います。

上記の画像のようにインストールできたら、「ツール」→「ボード」の選択肢にobniz plug-inとして、「ESP32 Dev Module」など複数のデバイスが確認できます。

DevKitCであれば、「ESP32 Dev Module」を選び開発を進めていきましょう。

これでセットアップは完了です。

Arduino IDEでの書き込み

プログラムを書き込む際には適切なシリアルポートを選択する必要があります。
「ツール」→「シリアルポート」→「適切なポート」で選びます。

選び終わったらArduino IDEの「→」の書き込みボタンより書き込みます。

obnizOS プラグインでなにができるのか

サンプルプログラムをArduino IDEから確認できます。
「ファイル」→「スケッチ例」→「obniz」からサンプルプログラムが複数用意されていますので、そちらから使用を始める良いでしょう。

obnizOSの開始

obniz.start();

obnizOSを開始します。

obnizOSの終了

obniz.end();

obnizOSを終了します。

obnizOSのバージョン取得

obniz.getOsVersion();

obnizOSのバージョンを取得できます。

obnizID取得

obniz.getId();

obnizIDを取得できます。

プラグインコマンドの送受信

コマンドの送信

obniz.commandSend(data,length);

コマンドの受信

void onCommand(uint8_t* data, uint16_t length){
  Serial.println("\nonCommand");
  Serial.write(data,length);
  Serial.println("\nEnd onCommand");
}

obniz.commandReceive(onCommand);

obniz.jsとデバイス間でコマンドを使用することでデータのやり取りができます。

IOの占有、解放

obnizOSから制御されないようにIOの使用権を占有できます。また意図的に解放できます。

次の関数ではIOを自動的に占有します。

  • pinMode
  • wire.begin
  • analogRead

占有していない場合には、obnizOSが起動する際や切断時(切断時にリセットを無効にする場合は次の設定が必要 reset_obniz_on_ws_disconnection: false) にIOのリセットが行われ、プラグインから正常に制御できなくなる可能性があります。

占有

obniz.pinReserve(io)

解放

obniz.pinFree(io)

obnizOSイベント

オフラインやオンラインになったときにイベントを取得できます。

Network系イベント

  • ネットワーク接続 PLUGIN_EVENT_NETWORK_HARDWARE_CONNECTED
  • obnizクラウド接続 PLUGIN_EVENT_NETWORK_CLOUD_CONNECTED
  • ネットワーク切断 PLUGIN_EVENT_NETWORK_HARDWARE_DISCONNECTED
  • obnizクラウド切断 PLUGIN_EVENT_NETWORK_CLOUD_DISCONNECTED
  • WiFiスキャン PLUGIN_EVENT_NETWORK_WIFI_SCANNING
  • WiFi未発見 PLUGIN_EVENT_NETWORK_WIFI_NOTFOUND
  • WiFi接続中 PLUGIN_EVENT_NETWORK_WIFI_CONNECTING
  • WiFiアクセスポイントモード時接続イベント PLUGIN_EVENT_NETWORK_WIFI_SOFTAP_CONNECTED
  • WiFiエラー PLUGIN_EVENT_NETWORK_WIFI_FAIL

その他

  • その他エラー PLUGIN_EVENT_FAIL
  • OTA開始 PLUGIN_EVENT_OTA_START
  • OTA終了 PLUGIN_EVENT_OTA_END
  • OTAエラー PLUGIN_EVENT_OTA_ERROR
void onEvent(os_event_t event, uint8_t* data, uint16_t length) {
  switch (event) {
  case PLUGIN_EVENT_NETWORK_HARDWARE_CONNECTED:
  case PLUGIN_EVENT_NETWORK_CLOUD_CONNECTED:
  case PLUGIN_EVENT_NETWORK_HARDWARE_DISCONNECTED:
  case PLUGIN_EVENT_NETWORK_CLOUD_DISCONNECTED:
  case PLUGIN_EVENT_NETWORK_WIFI_SCANNING:
  case PLUGIN_EVENT_NETWORK_WIFI_NOTFOUND:
  case PLUGIN_EVENT_NETWORK_WIFI_CONNECTING:
  case PLUGIN_EVENT_NETWORK_WIFI_SOFTAP_CONNECTED:
  case PLUGIN_EVENT_NETWORK_WIFI_FAIL:
  case PLUGIN_EVENT_FAIL:
  case PLUGIN_EVENT_OTA_START:
  case PLUGIN_EVENT_OTA_END:
  case PLUGIN_EVENT_OTA_ERROR:
    break;
  }
}

obniz.onEvent(onEvent);

ステータス確認

obnizOS実行中かどうか true時実行中

obniz.isRunning()

オンライン状態かどうか true時オンライン

obniz.isOnline()