
今回はちょっと実験で、先日行ってきた寒冷地計測をしてみようと思います。
実は2年前にも似たような計測を行っております。
このときは、WEB上のenebularからのESP32 Devデバイスでの対応。今回は、enebular editorでセンサーの値を見ながら、Nefry BTでやってみることとします!
まず計測デバイス NefryBT を準備
以前の記事を参考に設定していきます。
温度・湿度・気圧を計測できるGROVE – 温湿度・気圧センサ(BME280)を使って対応していきます。
Nefry BTに書き込んだソースはこちらです。Nefry BTはR3を使いました。
#include <Nefry.h>
#include <NefryFireBase.h>
#include <NefryDisplay.h>
#include "Seeed_BME280.h"
#include <Wire.h>
BME280 bme280;
NefryFireBase firebase;
// Nefryメッセージ用Buffer変数
char NefryTextBuffer[50];
void setup() {
// ボタンの有効化
Nefry.enableSW();
// FireBaseに接続するための設定
firebase.begin(" ***myfirebaseID*** .firebaseio.com"); // 設定を書き換える
// 起動時に一度データを0で送る
DataElement elem = DataElement();
elem.setValue("sensor", 0);
firebase.write("Nefry", &elem);
//
Serial.begin(115200);
if(!bme280.init()){
Serial.println("Device error!");
}
}
void loop() {
// SWが押されたらダミーデータを送る
if (Nefry.readSW()) {
// ランダムの値を生成
int sensorValue = random(300, 500);
// ディスプレイ表示
Serial.print("sensorValue:");
Serial.println(sensorValue);
sprintf(NefryTextBuffer,"data: %d",sensorValue);
NefryDisplay.print(NefryTextBuffer);
// Firebaseにデータを送る
DataElement elem = DataElement();
elem.setValue("sensor", sensorValue);
firebase.write("Nefry", &elem);
// ディスプレイ表示
Serial.println("send ok...");
sprintf(NefryTextBuffer,"sended...");
NefryDisplay.print(NefryTextBuffer);
Nefry.ndelay(500);
}
//
float t = bme280.getTemperature();
float h = bme280.getHumidity();
float p = bme280.getPressure();
float a = bme280.calcAltitude(p);
//get and print temperatures
Serial.print("Temp: ");
Serial.print(t);
Serial.println("C");//The unit for Celsius because original arduino don't support special symbols
//get and print atmospheric pressure data
Serial.print("Pressure: ");
Serial.print(p);
Serial.println("Pa");
//get and print altitude data
Serial.print("Altitude: ");
Serial.print(a);
Serial.println("m");
//get and print humidity data
Serial.print("Humidity: ");
Serial.print(h);
Serial.println("%");
//
sprintf(NefryTextBuffer,"T:%3.1fC H:%3.1f%%",t,h);
NefryDisplay.print(NefryTextBuffer);
sprintf(NefryTextBuffer,"A:%3.1f m",a);
NefryDisplay.print(NefryTextBuffer);
// Firebaseにデータを送る
DataElement elem = DataElement();
elem.setValue("t", t);
elem.setValue("h", h);
elem.setValue("a", a);
firebase.send("enebular/NefryBT", &elem);
delay(5000);
}
書き込むと、このように動作します。

まず、これで、Firebaseにデータが蓄積されます。
いよいよ野外を計測してみる
さて、データが蓄積できたので、いよいよ野外にデバイスを置いて動かしてみましょう。
この記事をベースにして、今回は「しっかりしたデータ可視化をINFOMOTIONで行う前に、一旦ダッシュボードでデバイスの稼働状況を見てみる」という想定で画面を作ります。

このように作りました。

外に置いて、寒いのですぐ室内に退散します!

enebular editorで起動してみてみましょう。

enebular editorを起動しておくと、
このように、1880ポートで見れます。具体的なURLを確認する方法は、前回の記事を参考にしてみてください。

さて、そんなわけで、温度が2度! 低い!!!! 寒かった!
けれど、実はこの仕組みだとマイナス 0 度以下が表示できなかったことを後から気づきましたが、うまく表示できてよかったです。
やってみて思うこと
1年前、2年前と比べてenebularも多様になってまいりました!
やはり、enebular editorはオンラインエディタと違い、制限時間を気にすることなく作業ができるのでよいですね。もちろん、しっかりとした可視化ダッシュボードはINFOMOTIONに任せますが、すぐにセンシング状況を確認するにはうってつけです。
また、もちろん、インターネットにつながる必要がありますが、Firebaseとの接続についても、以前よりドキュメントも整って扱いやすくなっており、変わってきているところです。



