M5StickCでeCO2と換気扇(など)を連動してみる
M5StackでCO2モニターを作ってみた話をしたところ、【集中力UP】NETATMO+IFTTT+SwitchBotでCO2濃度を監視+自動換気する方法という記事を紹介いただきました。
手元で余らせているM5StickCでも似たことができないかな、ということでやってみました。
準備するもの
- M5StickC(本体のみ) - スイッチサイエンス ¥2,398
- TVOC/eCO2 ガスセンサユニット(SGP30) - スイッチサイエンス ¥1,562
- M5Stack用赤外線送受信ユニット - スイッチサイエンス ¥528
- GROVE - 4ピン-ジャンパメスケーブル (5本セット) - スイッチサイエンス ¥550
- 1×16 両方長いピンヘッダ - スイッチサイエンス
- Amazon | オーム電機 電機器具専用 リモコンコンセント [品番]07-8251 OCR-05W 白 | オーム電機 | ペンダントライト ¥1,936
累計 ¥7,056
あと、ピンヘッダーを切るのに必要なので持っていないようならニッパーを。
Amazon | エンジニア マイクロニッパー ESD 静電気対策 120㎜ NS-04 | 小型ニッパ
接続
TVOC/eCO2ガスセンサユニットは付属のコネクタで HY2.0-4P(GROVE)に接続。
赤外線送受信ユニットは、GROVE 4ピン-ジャンパメスケーブル に両方長いピンヘッダを差して
GND -> GND
5V -> 5V
OUT -> G26
IN -> G36
に接続。
リモコンコンセントを換気扇のコンセントに接続する。
できたもの
Arduion 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);
}
Author And Source
この問題について(M5StickCでeCO2と換気扇(など)を連動してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/kenji0302/items/e6fc2e55fd6acc9c215c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .