M5StickC +PIR HATで動体検出してAmbientに書き出す


地味すぎてわかりづらいおうちハック、6日目です。
コードがあるので今日はqiitaに書きます。

今日の分は「何かに使った」という形に至らなかったのですが、パーツとして後々使えそうなので、忘れないように書き留めておきます。

なお余談ですけれども、秋葉原の千石電商のM5コーナーに寄るたびに何か買っていたところ、先日ついにすでに持ってるHATの2個目を間違えて買ってしまいました。
300円ちょっとだから別にいいや、という感覚でよく見ずに。。。
ブックオフでゴルゴ31の未読巻をゲットしたと思ったら、すでに持ってるやつだった、という現象によく似ていますね!(^o^) ほんまや!

作ったもの

人感センサーを使い、近くで何かが動いたら、
Ambientに書き出してグラフ化する。

部品、開発環境

部品:
M5StickC ¥1980
M5STickC用PIR Hat (AS312搭載) ¥286

開発環境:
Mac Book Air 11-inch (Mac OS = High Sierra )
Arduino IDE 1.8.9

作り方

  1. Ambientのアカウントを作成する (参考:Ambientを使ってみる)
  2. M5StickCの開発をするためのArduino IDEのセットアップ
    (参考にさせていただいたサイト「くらつきねっと」様)

  3. Arduino IDEにAmbientのライブラリをインストール
    (Ambient公式ブログを参考に)

  4. M5StickCにコードを書き込む
    Arduino IDE>ファイル>スケッチ例>M5StickC > HAT > PIR のコード
    +
    Ambient公式ブログの「M5StickCで小型環境センサ端末を作る」>「Wi-Fi に接続して、データをクラウドに送信する」
    を参考に書きました。

PIR.ino
#include <M5StickC.h>
#include "Ambient.h"

#define uS_TO_S_FACTOR 1000000  /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP  1       /* Time ESP32 will go to sleep (in seconds) */

WiFiClient client;
Ambient ambient;

const char* ssid = "自分の使うWifiのSSIDをここに書く";
const char* password = "上記のパスワードを書く";

unsigned int channelId = 100; // 自分のAmbientのチャネルIDに置き換える
const char* writeKey = "abcdefgh"; // 自分のAmbientのライトキーに置き換える


void setup() {
  // put your setup code here, to run once:
  M5.begin();
  M5.Lcd.setRotation(3);
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.println("PIR TEST");

  pinMode(36,INPUT_PULLUP);
}

void loop() {

  M5.Lcd.setCursor(60, 20, 4);
  M5.Lcd.println(digitalRead(36));

  WiFi.begin(ssid, password);  
  while (WiFi.status() != WL_CONNECTED) {  
    delay(500);
    Serial.print(".");
  }
  Serial.print("WiFi connected\r\nIP address: ");
  Serial.println(WiFi.localIP());

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

  // 人感センサーの値をAmbientに送信する 
  if (digitalRead(36) == 1) {
    ambient.set(1,digitalRead(36));
  }

  ambient.send();

  esp_deep_sleep(TIME_TO_SLEEP * uS_TO_S_FACTOR); 

}

動作状況



Ambientに書き出したグラフ

1=周囲に動くもの有り
0=なし

気づき

Ambientに書き出す代わりに、IFTTTのwebhookをリクエストしたり、MQTTのパブリッシャーを叩くと、いろんなアクションに繋げられそう(^o^)

今日はここまで。明日は技術書典8のvoiceflow本の原稿に専念するため、「年末年始 #地味すぎてわかりづらいおうちハック」連続投稿は一旦おやすみしますー。