Wio TerminalでCO2濃度を監視してサーキュレーターを自動運転させる

Seeed K.K.の中井です。

Grove - CO2 & Temperature & Humidity Sensor for Arduino (SCD30)を入手したので二酸化炭素濃度を計測して何かできないかと模索していたところ、 二酸化炭素濃度が高くなると換気のために自動的にサーキュレータが稼働する製品がありました。

kaden.watch.impress.co.jp

今回はこの製品の機能を模倣したWio Terminalを作ってみました。

f:id:mnakai:20210712155415p:plain

Wio TerminalでSCD30を利用する

www.seeedstudio.com

Wio TerminalでSCD30を制御するためのライブラリとしては、公式Wikiで紹介されているSeeed_SC30ライブラリ、 または、Seeed K.K.でメンテナンスしているGroveDriverPackなどがあります。 早速GroveDriverPackを用いて動作確認してみました。

  • スケッチ
#include <GroveDriverPack.h>

GroveBoard board;
GroveSCD30 scd30(&board.GroveI2C1);

void setup() {
  Serial.begin(115200);
  while (!Serial);

  board.GroveI2C1.Enable();
  scd30.Init();
}

void loop() {
  if (scd30.ReadyToRead()) {
    scd30.Read();
    Serial.print(" CO2: ");
    Serial.print(scd30.Co2Concentration);
    Serial.println(" ppm");
    Serial.print("TEMP: ");
    Serial.print(scd30.Temperature);
    Serial.println(" C");
    Serial.print("HUMI: ");
    Serial.print(scd30.Humidity);
    Serial.println(" %");
    Serial.println();
  }
  delay(2000);
}
  • 出力
 CO2: 659.56 ppm
TEMP: 31.27 C
HUMI: 52.60 %

 CO2: 660.59 ppm
TEMP: 31.28 C
HUMI: 52.59 %

参考情報として、、SCD30から取得した温度は自己発熱を含んだ値となるので多少高めに取得されます。 アナログ温度計と比較すると手元の環境では約2.2℃程度高くなっていましたので、 プログラム上ではオフセットをつけて調整するようにします。

サーキュレーターの制御

サーキュレーターの制御は、スマートプラグのON/OFFによって実現します。 こちらの「TP-LINK WiFiスマートプラグをESP32(Arduino)から制御する」ブログを参考にさせていただきました。

lab.sasapea.mydns.jp

  • Wi-Fiスマートプラグ TP-Link HS105

www.tp-link.com

SASAPEA'S LABさんの記事で紹介されているライブラリ・サンプルスケッチを使って動作確認してみました。 TARGETのデバイス名やWiFiのssidpasswordを変更するのを除けば、 Wio Terminalに対応させるためにはWiFiライブラリの変更とLED信号の変更で良いようです。

--- a/ESP32_TPLink.ino
+++ b/WioTerminal_TPLink.ino
@@ -1,9 +1,9 @@
-#include "WiFi.h"
-#include "WiFiClient.h"
+#include "rpcWiFi.h"
+#include "WiFiClientSecure.h"
 #include "WiFiUdp.h"
 #include "TPLinkSmartPlug.h"

-#define GPIO_BOARD_LED 2
+#define GPIO_BOARD_LED LED_BUILTIN
 #define TARGET "My Smart Plug Mini" // スマートプラグの端末名かIPアドレスを指定

 WiFiClient client;

動作確認

  • SCD30で二酸化炭素濃度を測定
  • Wi-Fiスマートプラグでサーキュレーターを制御

「二酸化炭素濃度を監視してサーキュレーターを自動運転させる」ために、上記2つの動作を確認しました。 あとは組み合わせてあげれば完成なのですが、Wio Terminalには2.4インチのLCDが使えるので表示部も作り込んでみました。

作成したソースコードはgithubに置いておきました。 github.com

動かしてみた様子はコチラから。 youtu.be

変更履歴

日付 変更者 変更内容
2021/9/14 mnakai 作成