[ESP-WROOM-02]ESP-WROOM-02+토양습도센서와 IFTTT로 센서값 정기 tweet

소개



이 항목은 다음 항목의 연속입니다.
  • [ESP-WROOM-02] 브라우저가 HelloWorld를 표시하도록 합니다.
  • [ESP-WROOM-02]ESP-WROOM-02+ 토양 습도 센서로 브라우저에 아날로그 센서의 값을 표시시킨다

  • 기르고 있는 분재의 물의 타이밍을 보이게 하고 싶었기 때문에, ESP-WROOM-02, 토양 습도 센서를 사용해, 흙 속의 수분을 측정합니다

    이번에는 IFTTT을 사용하여 토양 습도 값을 tweet합니다.

    전자부품



  • ESP-WROOM-02 개발 보드(핀 소켓 실장 완료) 스위치 과학에서 구입

  • 토양 습도 센서 aitendo에서 구입
  • 100Ω과 200Ω의 저항을 하나씩

  • 참고


  • IFTTT를 사용하여 Arduino에서 트윗
  • ESP-WROOM-02에서 얻은 센서의 값을 IFTTT에 전달

  • IFTTT 준비



    IFTTT 에 액세스하여 My Recipes에서 레시피를 만들어갑니다.

    「this」에는 「Maker」를 설정, 「that」에는 「twitter」를 설정한다
    이 때 「Maker」로 설정한 이벤트명을, 스케치(ESP-WROOM-02에 기입하는 프로그램)로 사용

    설정 후 h tps : //이 f t. 코m/마케 r에 액세스하면 비밀 키가 나열됩니다.
    이쪽도, 스케치(ESP-WROOM-02에 기입하는 프로그램)로 사용한다

    센서의 값에 따라 tweet 내용을 바꾸고 싶었기 때문에 레시피는 3개 준비했다

    스케치 만들기



    ArduinoIDE 메뉴 파일 > 스케치 예제 > ESP8266WiFi > WiFiClient를 선택하고 샘플 스케치 사용

    ESP-WROOM-02에서 얻은 센서의 값을 IFTTT에 전달 를 참고로 스케치 만들기

    센서의 값에 따라 tweet을 바꾸고 싶었으므로 이벤트 이름을 if 문으로 분기했습니다.
    또한 ESP-WROOM-02의 기능인 deep sleep을 사용하는 것을 생각하고 루프에는 아무것도 쓰지 않고 setup 내에서만 GET하도록 했다

    setup의 마지막에 「ESP.deepSleep(3600 * 1000 * 1000);」를 더해 개발 보드의 IO16핀과 RESET핀을 연결한다
    이렇게하면 ESP-WROOM-02의 절전 모드 인 deep sleep 기능을 사용할 수 있습니다.

    arduino
    #include <ESP8266WiFi.h>
    
    const char* ssid = "自分のwifi環境のSSID";
    const char* password = "自分のwifi環境のパスワード";
    
    const char* host = "maker.ifttt.com";
    const char* secretkey = "自分のMakerのkey";
    
    extern "C" {
    #include "user_interface.h"
    }
    
    void setup() {
      Serial.begin(115200);
      delay(10);
    
      // We start by connecting to a WiFi network
    
      int moisture = readMoisture();
      String moisture_str = String(moisture);
    
      WiFi.begin(ssid, password);
    
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
    
      // Use WiFiClient class to create TCP connections
      WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
      }
    
      char* event = "";
      if (moisture >= 200) {
        event = "hungry_bonsai_full";
      } else if (moisture >= 100 and moisture < 200) {
        event = "hungry_bonsai_soso";
      } else {
        event = "hungry_bonsai_hungry";
      }
    
      // We now create a URI for the request
      String url = "/trigger/";
      url += event;
      url += "/with/key/";
      url += secretkey;
      url += "?value1=";
      url += moisture_str;
    
      Serial.print("Requesting URL: ");
      Serial.println(url);
    
      // This will send the request to the server
      client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                   "Host: " + host + "\r\n" + 
                   "Connection: close\r\n\r\n");
      delay(10);
    
      // Read all the lines of the reply from server and print them to Serial
      while(client.available()){
        String line = client.readStringUntil('\r');
        Serial.print(line);
      }
    
        // every 60 min
      ESP.deepSleep(3600 * 1000 * 1000);
    }
    
    void loop() {
    }
    
    int readMoisture() {
      int moisture = 1024 - system_adc_read();
      return moisture;
    }
    

    결과





    @hungry_bonsai

    요약



    IFTTT를 사용하면 ESP-WROOM-02와 트위터의 연계를 쉽게 할 수 있습니다.
    하나의 함수를 호출하는 것만으로 deep sleep을 사용할 수있어 편리
    그리고는 deep sleep을 사용할 수 있으면 분재의 수분량을 보이게 할 수 있다고 생각한다.

    좋은 웹페이지 즐겨찾기