대인 센서로 침입자를 검지하고 Slack에 통지하는 bot(ESP8266&HC-SR501편)(인감 센서 모듈의 응용)

대인 센서(인감 센서 모듈 HC-SR501)로 침입자를 검지해 Slack에 통지하는 bot를 만들어 보았습니다.

대인 센서로 침입자를 검지하고 Slack에 통지하는 bot를 만들어 보았습니다. 인체의 적외선을 감지하면 적색 LED가 켜지고 Slack에 알립니다. #slack #iot #esp8266 피 c. 라고 r. 코 m / 아 CWX7m없이 HC — Yukito (@yukitter) 2017년 4월 13일


사람을 검지하면, 적색 LED가 점등해, 이런 식으로, 나마하게가 Slack에 통지해 줍니다.
(검지에는 인체가 발하는 적외선을 이용하고 있습니다.)



어쩌면 이런 응용을 할 수 있을까


  • 혼자 살아가는 방향의 유수 중 침입 탐지
  • 서버 룸 침입 탐지
  • 차고 침입 탐지
  • 방 앞의 도둑질 듣기 감지
  • 사물함이 열린 감지
  • 컬렉션 방 침입 감지?

  • ※응용을 생각하고 있으면 인간 수상하게 될 것 같다. . .

    부품



    ESP8266과 HC-SR501을 주로 사용하고 있습니다.

    ESP8266은 그래서 M구 ぅ아 그림 SP8266 CH340이라는 개발 보드를 사용합니다.
    구입은 아마존를 추천합니다. 중국에서 도착하는 데 시간이 걸립니다만, ¥ 480으로 염가입니다. 핀 헤더도 설치되어 있으므로 납땜 불필요한 부품입니다.

    HC-SR501 가 대인 센서(인감 센서)로, ¥145 정도로 구입할 수 있습니다. 이쪽도 염가입니다.

    그리고는 검지 중에 빛나는 LED와 저항 330Ω을 하나씩.



    회로도 같은 것




  • 센서(HC-SR501)에 대해서
  • 전원은 DC4.5-20V이므로 개발 보드의 5V를 연결합니다.
  • 출력은 3.3V이므로 GPIO 입력에 그대로 연결됩니다.
  • 반 고정 저항을 사용하여 감지 거리 (센터 5 ~ 7m, 측면 3 ~ 4m)와 감지 지속 시간 (3 ~ 200 초)을 조정할 수 있습니다.
  • 데이터시트는 여기


  • 소스 코드



    esp8266-slack-webhook 이라는 라이브러리를 이용하고 있습니다.

    HC-SR501.ino
    #include "SlackWebhook.h"
    
    // GPIO
    int DetectPin = 14;
    int LEDPin    = 13;
    
    // wifi
    const char* ssid     = "XXXXXXXX";
    const char* password = "XXXXXXXXX";
    
    // Slack
    const char* host        = "hooks.slack.com";
    const char* fingerprint = "ab f0 5b a9 1a e0 ae 5f ce 32 2e 7c 66 67 49 ec dd 6d 6a 38";
    String url = "/services/XXXXX/XXXXX/XXXXX";
    String slackBotName = "surveillance bot";
    SlackWebhook webhook(host, url, fingerprint);
    
    // other
    int beforeDetectStatus = 0;
    
    
    void setup() {
      // シリアル通信を開始
      Serial.begin(115200);
      Serial.println("Serial start.");
    
      // ピン設定
      pinMode(DetectPin, INPUT);
      pinMode(LEDPin,    OUTPUT);
    
      // wifi接続を開始
      WiFi.begin(ssid, password);
      Serial.println("WiFi start.");
    
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("");
      Serial.print("Connected to ");
      Serial.println(ssid);
      Serial.print("IP address: ");
      Serial.println(WiFi.localIP());
    
    }
    
    void loop() {
    
      int detect = digitalRead(DetectPin);   // 人を検知していれば1、していなければ0が返る
      digitalWrite(LEDPin, detect);          // 1を書き込むとLEDが点灯、0で消灯
      Serial.println(detect);
    
      if (detect == 1 && beforeDetectStatus == 0) {
        postSlackMessage("侵入者を検知しました!!!∑(=゚ω゚=;)");
        beforeDetectStatus = 1;
      }else if (detect == 0 && beforeDetectStatus == 1){
        beforeDetectStatus = 0;
      }
    
      delay(100);
    }
    
    void postSlackMessage(String message) {
      String postData = "{\"username\": \"" + slackBotName + "\", \"text\": \"" + message + "\", \"icon_emoji\": \":japanese_ogre:\"}";
      webhook.postMessageToSlack(postData);
    }
    
    
  • Arduino IDE에서 빌드하고 ESP8266에 씁니다.
  • 개발 환경을 구축하는 것은 여기 가 참고가 됩니다.
  • 좋은 웹페이지 즐겨찾기