M5StickC로 eCO2와 환기 팬(등)을 연동해 본다

12344 단어 M5StickC
M5Stack에서 CO2 모니터를 만들어 본 이야기를 했는데, 【집중력 UP】NETATMO+IFTTT+SwitchBot로 CO2 농도를 감시+자동 환기하는 방법 라는 기사를 소개해 주셨습니다.
수중에서 남기고 있는 M5StickC에서도 닮을 수 없을까, 라고 하는 것으로 해 보았습니다.

준비하는 것



  • M5StickC(본체만 해당) - 스위치 과학 ¥2,398

  • TVOC/eCO2 가스 센서 유닛(SGP30) - 스위치 과학 ¥1,562

  • M5Stack용 적외선 송수신 유닛 - 스위치 과학 ¥528

  • GROVE - 4핀 점퍼 메스 케이블 (5개 세트) - 스위치 과학 ¥550
  • 1x16 둘 다 긴 핀 헤더 - 스위치 과학

  • 아마존 | 옴 전기 기기 전용 리모콘 콘센트 [품번] 07-8251 OCR-05W 화이트 | 옴 전기 | 펜던트 라이트 ¥1,936

  • 누계 ¥7,056

    그리고 핀 헤더를 자르는 데 필요하기 때문에 가지고 있지 않다면 니퍼를.
    Amazon | 엔지니어 마이크로 니퍼 ESD 정전기 대책 120mm NS-04 | 소형 니퍼

    연결



    TVOC/eCO2 가스 센서 유닛은 부속의 커넥터로 HY2.0-4P(GROVE)에 접속.

    적외선 송수신 장치는 GROVE 4 핀 점퍼 메스 케이블 둘 다 긴 핀 헤더를 삽입

    GND -> GND
    5V -> 5V
    OUT -> G26
    IN -> G36

    에 연결.

    리모콘 콘센트를 환기 팬의 콘센트에 연결하십시오.

    할 수있는 것





    Arduino IDE 코드



    eCO2가 500을 경계로 전원을 제어하도록 되어 있습니다. 값은 실제로 사용해 보고 조정 예정입니다.
    #include "Adafruit_SGP30.h"
    #include <M5StickC.h>
    #include <Arduino.h>
    #include <IRremoteESP8266.h>
    #include <IRsend.h>
    
    Adafruit_SGP30 sgp;
    int i = 15;
    long last_millis = 0;
    
    const uint16_t kIrLed = 26;
    IRsend irsend(kIrLed);
    // on
    uint16_t onRawData[19] = {2578, 2664,  816, 876,  838, 850,  840, 1890,  840, 1892,  840, 1890,  842, 1892,  816, 876,  836, 852,  812};  // UNKNOWN 8F0C8B3A
    //off
    uint16_t offRawData[19] = {2554, 2688,  816, 878,  812, 1916,  840, 850,  812, 876,  814, 1918,  814, 876,  812, 1918,  840, 1890,  838};  // UNKNOWN D410BC59
    
    
    void setup() {
      M5.begin();
      irsend.begin();
    
      Serial.begin(115200);
      delay(1000);
    
      Wire.begin(32, 33); // M5StickC
    
      if (!sgp.begin()) {
        Serial.println("Sensor not found");
        while (1);
      }
      M5.Lcd.setRotation(3);
      M5.Axp.ScreenBreath(12);
      M5.Lcd.setTextColor(WHITE, BLACK);
    }
    
    void loop() {
      M5.update();
      if (! sgp.IAQmeasure()) {
        Serial.println("Measurement failed");
        return;
      }
      Serial.println("TVOC " + String(sgp.TVOC));
      Serial.println("eCO2 " + String(sgp.eCO2));
    
      if (sgp.eCO2 > 500) {
       Serial.println("eCO2 over 500 ");
       irsend.sendRaw(onRawData, 19, 38);  // Send a raw data capture at 38kHz.    
      }
      if (sgp.eCO2 <= 500) {
       Serial.println("eCO2 under 500 "); 
        irsend.sendRaw(offRawData, 19, 38);  // Send a raw data capture at 38kHz.    
      }
    
    
      M5.Lcd.fillScreen(BLACK);
      M5.Lcd.setCursor(0, 0, 2);
      M5.Lcd.print("eCO2");
      M5.Lcd.setCursor(0, 30, 4);
      M5.Lcd.print(sgp.eCO2);
      M5.Lcd.print("ppm");
      delay(1000);
    }
    
    

    좋은 웹페이지 즐겨찾기