LoginSignup
12
3

More than 3 years have passed since last update.

enebular chainでサ○タを捕獲する作戦

Posted at

この記事はenebular Advent Calendar 2019の1日目です。

素敵なクリスマスになるようにがんばって書きます。

enebular x クリスマス

最初にenebularときいて思いつくのは星雲鎖ですよね。
星雲鎖と書いてネビュラチェーン。
アンドロメダ瞬の必殺技ですね。

今回はサンタクロース捕獲装置としてenebular chainを作ってみました。

仕組み

侵入者に対してはやはり窓際対策が有効と思われます。

窓が開く → 警報

これで行きましょう。
enebularchain_kousou.jpg

システム概要

enebularはFirebaseやTwitter連携がカンタンという噂なので、その辺りを使ってみます。

  • enebular chainにM5StickCを取り付けて加速度を得ます。
  • 加速度から得た窓の開け閉め情報をコード(0,1)でFirebaseに送ります。
  • Firebaseの情報を定期的にenebularで取り寄せます。
  • 窓が開いている情報が得られたらTwitterに通知します。 enebularchain_system.jpg

Firebaseの設定

こちらの記事を参考にしました!
https://blog.enebular.com/firebase/m5stack-firebase-enebular-collaboration/

M5SticC

上記記事のFirebaseとM5Stackのやり取りの部分に加えて、M5StickCに搭載されている加速度センサMPU6886について記載してます。

窓が開いた場合にaccYが大きくなるようにしました。
accYがしきい値を越えた時にFirebaseのデータを書き換えることにしました。
*面倒なので時間で勝手に戻るようにしました。

#include <M5StickC.h>
#include <IOXhop_FirebaseESP32.h>
#include <WiFi.h>

#define WIFI_SSID "XXXXXXXX"
#define WIFI_PASSWORD "XXXXXXXX"

#define FIREBASE_DATABASE_URL "XXXXXXX"

float accX = 0;
float accY = 0;
float accZ = 0;
float gyroX = 0;
float gyroY = 0;
float gyroZ = 0;
float temp = 0;

void setup() {
  // put your setup code here, to run once:
  M5.begin();
  M5.Lcd.setRotation(3);
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextSize(1);
  M5.Lcd.setCursor(40, 0);
  M5.Lcd.println("<<GUARD>>");
  M5.Lcd.setCursor(0, 15);
  M5.Lcd.println("  X       Y       Z");
  M5.MPU6886.Init();

    // connect to wifi.
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();

  // WiFi Connected
  Serial.println("\nWiFi Connected.");
  Serial.println(WiFi.localIP());
  M5.Lcd.println("WiFi Connected.");
  M5.Lcd.println("");

  Firebase.begin(FIREBASE_DATABASE_URL);
  Firebase.stream("/M5Stack/message", [](FirebaseStream stream) {
    String eventType = stream.getEvent();
    eventType.toLowerCase();

    Serial.print("event: ");
    Serial.println(eventType);
    if (eventType == "put") {
      String path = stream.getPath();
      String data = stream.getDataString();
      Serial.print("data: ");
      Serial.println(stream.getDataString());
    }
  });

  Firebase.setString("/M5Stack/message", "start");

}

int i = 0;

void loop() {
  M5.MPU6886.getAccelData(&accX,&accY,&accZ);
  M5.Lcd.setCursor(0, 30);
  M5.Lcd.printf("%.2f   %.2f   %.2f",accX * 1000,accY * 1000,accZ * 1000);
  M5.Lcd.setCursor(140, 45);

  delay(100);

    if(accY*1000 > 400) {

    // Firebaseへ送信
    Firebase.setInt("/M5Stack/status", 0);

    delay(5000);

    // Firebaseへ送信
    Firebase.setInt("/M5Stack/status", 1);

    delay(1000);
  }

  }

enebular

Firebaseから来たコードにSwitchをフィルタ代わりにしてTwitterに繋ぎこみました。

FirebaseもTwitterも連携が超簡単でした!
なんかアカウント入れてログインするだけ、みたいな簡単さです。
*残念ながらTwitterはConfirmationメールが来なくて時間切れでした。。

enebularchain_flow.jpg

enebular chain テスト

ドアが閉まっていると
IMG_20191201_182243.jpg

accYが245くらい
IMG_20191201_182302.jpg

ドアが開くと
IMG_20191201_182320.jpg

accYが440くらい
IMG_20191201_182311.jpg

窓の開け閉めを一往復するとデバッグ画面がcodeをキャッチ
*Twitterできなかったのでデバッグのみです。
enebularchain_code.jpg

enebular chainできました!

enebular x Firebase x M5StickC でサンタクロース侵入検出装置 enebular chain が完成しました。

enebular chain でサンタクロースの侵入にすぐに気づけますね!
侵入者とはいえサンタクロース、日頃の感謝を伝えるなり、お茶を差し入れるなり平和的なコミュニケーションを望みます。

まとめと振り返り

  • enebular で簡単に侵入者検出装置ができる!
  • enebular の連携はログインレベルで超簡単!Firebase使える!
  • M5StickC は小さいのに偉い!
  • ArduinoJsonのバージョン注意
  • Twitter連携はenebular側は簡単だけど、Twitter側のレスポンスがなんか、、、
  • Noodl使い忘れた!

Advent Calendar初参戦でしたが楽しいですね!
でもこのへんで許してください。

今年の6月にIoTをいじり始めて半年が経ちましたが、それこそ星雲のごとく多くの出会いに恵まれて大変充実した2019年でした。
みなさんありがとうございます。

こたつみかんより感謝をこめて
もりけん

12
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
3