Seeed K.K.の中井です。
Grove - CO2 & Temperature & Humidity Sensor for Arduino (SCD30)を入手したので二酸化炭素濃度を計測して何かできないかと模索していたところ、 二酸化炭素濃度が高くなると換気のために自動的にサーキュレータが稼働する製品がありました。
今回はこの製品の機能を模倣したWio Terminalを作ってみました。
Wio TerminalでSCD30を利用する
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)から制御する」ブログを参考にさせていただきました。
- Wi-Fiスマートプラグ TP-Link HS105
SASAPEA'S LABさんの記事で紹介されているライブラリ・サンプルスケッチを使って動作確認してみました。
TARGET
のデバイス名やWiFiのssid
とpassword
を変更するのを除けば、
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 | 作成 |