M5StickC + PIR HAT로 움직이는 물체를 감지하고 Ambient에 내보내기

3850 단어 AmbientPIRM5StickC
너무 수수하고 이해하기 어려운 집 해킹 , 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

만드는 법


  • Ambient 계정 만들기
    (참고:Ambient를 사용해 본다)
  • M5StickC 개발을 위한 Arduino IDE 설정
    (참고로 해 주신 사이트 「쿠라츠키네트」님)
  • Arduino IDE에 Ambient 라이브러리를 설치
    (Ambient 공식 블로그를 참고로)
  • 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 책의 원고에 전념하기 위해, 「연말 연시 #수수하고 너무 이해하기 어려운 집 해킹」연속 투고는 일단 잘자요-.

    좋은 웹페이지 즐겨찾기