Arduino IDEでFireBeetle 2の開発環境を構築し、FireBeetle 2を使ってIoTデータを簡単に可視化するサービス「Ambient」へアクセスします。

FireBeetle 2について

WiFiとBluetooth内臓のESP32を搭載したFireBeetle 2は、低消費電力で使いやすいIoT​​開発プラットフォームです。FireBeetle 2の詳細については「FireBeetle 2 ESP32-E」に示します。

FireBeetle 2のピンアサインを次に示します。

FireBeetle 2開発環境の構築

Arduino IDEを使ったFireBeetle 2開発環境の構築の手順を次に示します。

  1. Arduino IDEを立ち上げて、メニューから「ファイル」→「環境設定」を開き、「追加のボードマネージャのURL」次のデータを設定し、「OK」をクリックします。
  2. 	
    https://git.oschina.net/dfrobot/FireBeetle-ESP32/raw/master/package_esp32_index.json
    

  3. 「ツール」→「ボード」→「ボードマネージャ」をクリックし、「FireBeetle-ESP32 Mainboard」と入力し、「FireBeetle-ESP32 Mainboard」をインストールします。最新版の0.0.6をインストールしました。
  4. 「ツール」→「ボード」で、「ESP32 Arduino」→「FireBeetle-ESP32」を選択します。

開発環境の動作確認

開発環境の動作確認のために、D9ピンに接続されている内蔵LEDを1秒おきにON/OFFする次のコードをFireBeetle 2に書き込みます。

FireBeetle_led.ino

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(D9, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(D9, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);                       // wait for a second
  digitalWrite(D9, LOW);    // turn the LED off by making the voltage LOW
  delay(100);                       // wait for a second
}

FireBeetle 2で作成したコードを実行している画像を次に示します。上部のグリーンLEDをコードで制御しています。下部のレッドLEDは電源の供給状態を示します。

Ambientの設定

Ambientの設定手順を次に示します。

  1. Ambientへログインすると次のようにチェンネル一覧が表示されるので、「チャンネルを作る」ボタンをクリックして新規チャンネルを作成します。
  2. それぞれのチャンネルの「・・・」ボタンをクリックし、プルダウンメニューから「設定変更」を選択すると、次の内容が表示されます。特に設定は必要ありません。
  3. トップメニューの「ボード一覧」メニューをクリックし、プルダウンメニューから「ボード一覧」を選択します。
  4. 次のボード一覧が表示されるので、「ボードを作る」ボタンをクリックして新規ボードを作成します。
  5. 作成したボード名をクリックすると、次のようにグラフが表示されます。ここではAmbientへの書き込みコードを実行して保存されたテーブルを示します。トップメニューをクリックし、プルダウンメニューから「設定変更」を選択します。
  6. 次の表示から、チャートの種類等の変更が可能となります。

Ambientへの書き込みコード作成

作成したAmbientへの書き込みコードを次に示します。

FireBeetle_ambient.ino

#include <WiFi.h>
#include "Ambient.h"
#define PERIOD 10

WiFiClient client;
Ambient ambient;

const char* ssid     = "xxxx";
const char* password = "xxxx";

unsigned int channelId = xxxx; // AmbientのチャネルID(数字)
const char* writeKey = "xxxxx"; // ライトキー

char *data1;
char *data2;
char *data3;
bool ret;


void setup()
{
  Serial.begin(115200);
  delay(10);

  // We start by connecting to a WiFi network

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  ret = ambient.begin(channelId, writeKey, &client); // チャネルIDとライトキーを指定してAmbientの初期化
  Serial.println(ret);
}

int value = 0;

void loop()
{
  data1 = "1";
  data2 = "2";
  data3 = "3";

  ambient.set(1, data1);
  ambient.set(2, data2);
  ret = ambient.set(3, data3);
  Serial.println(ret);

  ret = ambient.send(); // データをAmbientに送信
  Serial.println(ret);
  ret = Serial.println(ret);
  Serial.println(ret);
  Serial.println("***");

  delay(PERIOD * 1000);

}

Ambientへアクセスするソースコードは、「ESP8266/ESP32用Arduino・Ambientライブラリー」より取得して、上記「FireBeetle_ambient.ino」と同じフォルダに保存します。

コンパイルエラー

コンパイル時に次のエラーが発生しました

  • wifi.hの二重定義「「WiFi.h」に対して複数のライブラリが見つかりました」
  • 既存のwifi.h(..\Arduino\libraries)と今回ライブラリとして登録したFireBeetle 2のwifi.h(..\AppData\Local\Arduino15\packages\esp32\hardware\DFRobot_FireBeetle-ESP32\0.0.6\libraries\WiFi)が存在したため、既存のwifi.hを削除しました。(仮処置:ファイル名「WiFi-2重定義」に変更して親のフォルダに移動)

  • 「this->client->connect」メソッドのパラメータの誤り
  • 「Ambient.cpp」の120行目を次のように変更します。

            this->client->setTimeout(tmout);
            //ret = this->client->connect(this->host, this->port, tmout);
            ret = this->client->connect(this->host, this->port);
    

リスト表示の場合、カラムには数値しか表示できないようです(「bool Ambient::set(int field, char * data)」がありますが)。文字列を表示するには「コメント」として表示します。コメントで表示するには、「bool Ambient::setcmnt(const char * cmnt)」を実行します。