Arduinoで作る二酸化炭素濃度チェッカー(仮)
新型コロナの影響で、外出を自粛するよう言われている。家でできる趣味も限られているので、新しい趣味として電子工作を始めるためにArduinoを購入した。元々、趣味でPICを構っていたが、PICで調べているのにArduinoのことが出てくるくらい電子工作界隈では盛り上がっている。試しに使ってみたが、確かに簡単に扱える。今まで、PICを扱う際には開発環境とライターが必要だったが、Arduinoを扱う上で別途用意する必要はない。Arduino IDEという開発環境がシンプルなのがいい。記述自体も、AD変換やPWMなどが一行で済んでしまう。とはいえ、PICでも関数を自作すればこのように扱えることはできる。しかし、電子工作を始めたばかりのユーザーには難しい。元から関数が用意されているからArduinoはヒットしたのだと思う。例えると、PICはMT、ArduinoはATである。
Arduino Uno Rev3 ATmega328 マイコンボード A000066
- メディア: Personal Computers
これ1冊でできる! Arduinoではじめる電子工作 超入門 改訂第4版
- 作者:福田和宏
- 発売日: 2020/05/07
- メディア: 単行本
用意するもの
Arduino Uno Rev3 ATmega328 マイコンボード A000066
- メディア: Personal Computers
・CCS811搭載空気品質センサモジュール
www.switch-science.com
・ブレッドボード
・ジャンパ線
参考にしたサイト
配線
ArduinoとCCS811搭載モジュールの配線は、GNDと電源3.3V、I2C用のSDAとSCLの4本である。データシートによれば、CCS811の電源絶対最大定格は3.6Vなため、5Vに繋げないように注意。
また、CCS811のデータシートによると、エージングに48時間、センサのウォームアップに20分が推奨されている。二酸化炭素濃度の測定レンジは400~8192ppmである。空気中の二酸化炭素濃度が約400ppmである。1000ppmを超えると、思考力や集中力が低下する。5000ppm以上は8時間-TWA(8時間/日の作業限界密度)*4となる。在宅勤務中の二酸化炭素濃度を測るには十分なレンジである。
プログラム
プログラムはSparkFunのライブラリにあったサンプルプログラムをほぼ丸々使用した。シリアルプロッタでモニタリングしやすいように、CO2[ppm]を最初に送信している。あとは、CCS811搭載モジュールからの信号を送り続けているだけである。
github.com
#include <SparkFunCCS811.h> #define CCS811_ADDR 0x5B CCS811 mySensor(CCS811_ADDR); void setup() { Serial.begin(9600); Serial.println("CO2[ppm]"); Wire.begin(); if (mySensor.begin() == false) { Serial.print("CCS811 error. Please check wiring. Freezing..."); while (1); } } void loop() { if (mySensor.dataAvailable()) { mySensor.readAlgorithmResults(); Serial.println(mySensor.getCO2()); } delay(10); }
動作確認
Arduino IDEのシリアルプロッタは、センサーから得られた値を簡単にグラフで確認できる。まだエージングで推奨されている48時間には達していないが、正常に動作している。センサーに息を吹きかけると値が上昇する。
おわりに
センサーの精度、応答性、得られた結果の処理についてはこれから調査が必要である。チェッカーとして、Arduinoとセンサ類を筐体に収めたい。なるべく小型化したいので、Arduino microにするなどが考えられる。
*1:http://www.seikatsusyukanbyo.com/calendar/2012/002182.php
*2:ppm:part per million 1ppmは1mg/Lと同義
*3:自動車など