今回はちょっと実験で、先日行ってきた寒冷地計測をしてみようと思います。
実は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との接続についても、以前よりドキュメントも整って扱いやすくなっており、変わってきているところです。