LoginSignup
4
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-01-02

地味すぎてわかりづらいおうちハック、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に書き出したグラフ

image.png

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

気づき

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

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

4
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
4
3