tl; dr
- 環境測定器(温度/湿度/CO2濃度)作った
CO2センサー
「日中眠くなるし、CO2濃度が原因かもなぁ(責任転嫁)」的なノリで2年前ぐらいに買ったCO2センサー(MH-Z19B)くん。
その後、某感染症の流行等で換気がさけばれ、CO2濃度計の需要が高まったり色々あったが、結局ブレッドボードで少し遊んだだけで放置していたので、これを機にちゃんと組み立てる。
CO2濃度はセンサーの基板部分から取得可能だが、せっかくコネクターがついているのでここから取得している。 接続にはaitendoのCN125SS-2P(7極)を使用。
CO2濃度取得処理
#include <SoftwareSerial.h> // UART通信で使用するピンを指定 #define UART_RX A0 #define UART_TX A1 // CO2センサー(MH-Z19B) SoftwareSerial MH_Z19B(UART_RX, UART_TX); // CO2濃度リクエスト byte request_co2[9] = { 0xff, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79 }; void setup() { // MH-Z19B初期化(ボーレート: 9600) MH_Z19B.begin(9600); // シリアルモニター初期化 Serial.begin(9600); } void loop() { // UART通信 byte responseMessage[9] = {0}; MH_Z19B.write(request_co2, sizeof(request_co2)); MH_Z19B.readBytes(responseMessage, sizeof(responseMessage)); // 濃度計算 int ppm = (responseMessage[2] * 256) + responseMessage[3]; // シリアルモニターに出力 String message = "co2: "; message.concat(ppm); Serial.println(message); delay(5000); }
温湿度取得処理
#include <string> #include <sstream> #include <DHT.h> // 使用するピンを指定 #define DHT_DATA_PIN 1 #define DHT_TYPE DHT22 // 温湿度センサー(AM2302(DHT22)) DHT dht(DHT_DATA_PIN, DHT_TYPE); void setup() { // AM2302(DHT22)初期化 dht.begin(); // シリアルモニター初期化 Serial.begin(9600); } void loop() { // 温度・湿度を取得 auto temperature = dht.readTemperature(); auto humidity = dht.readHumidity(); // シリアルモニターに出力 std::stringstream ss; ss << "Hum: " << humidity << "%, Temp: " << temperature << "℃"; Serial.println(ss.str().c_str()); delay(5000); }
ケース作成
以前3Dプリンターを買ったので、練習もかねてFusion360
でモデリング。
あとは適当に配線した基板をケースに詰め込む。
完成
蓋をして完成。
最初はバッテリーとか電池で長期運用ができないかと思っていたが、消費が大きそうなので断念。