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開発環境の構築の手順を次に示します。
- Arduino IDEを立ち上げて、メニューから「ファイル」→「環境設定」を開き、「追加のボードマネージャのURL」次のデータを設定し、「OK」をクリックします。
- 「ツール」→「ボード」→「ボードマネージャ」をクリックし、「FireBeetle-ESP32 Mainboard」と入力し、「FireBeetle-ESP32 Mainboard」をインストールします。最新版の0.0.6をインストールしました。
- 「ツール」→「ボード」で、「ESP32 Arduino」→「FireBeetle-ESP32」を選択します。
https://git.oschina.net/dfrobot/FireBeetle-ESP32/raw/master/package_esp32_index.json
開発環境の動作確認
開発環境の動作確認のために、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の設定手順を次に示します。
- Ambientへログインすると次のようにチェンネル一覧が表示されるので、「チャンネルを作る」ボタンをクリックして新規チャンネルを作成します。
- それぞれのチャンネルの「・・・」ボタンをクリックし、プルダウンメニューから「設定変更」を選択すると、次の内容が表示されます。特に設定は必要ありません。
- トップメニューの「ボード一覧」メニューをクリックし、プルダウンメニューから「ボード一覧」を選択します。
- 次のボード一覧が表示されるので、「ボードを作る」ボタンをクリックして新規ボードを作成します。
- 作成したボード名をクリックすると、次のようにグラフが表示されます。ここではAmbientへの書き込みコードを実行して保存されたテーブルを示します。トップメニューをクリックし、プルダウンメニューから「設定変更」を選択します。
- 次の表示から、チャートの種類等の変更が可能となります。
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」に対して複数のライブラリが見つかりました」
- 「this->client->connect」メソッドのパラメータの誤り
既存の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重定義」に変更して親のフォルダに移動)
「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)」を実行します。