Interface(CQ出版社)2021年7月号で紹介されていた「空気の品質センサ」を試作してみました。
概要は以下の動画をご覧ください。
試作過程の詳細
使用する部品はこれだけです。
他には、Arduinoのプログラムを接続するPC、接続用のUSBケーブルが必要です。
部品について順にご紹介します。
広く使われているArduino UNO R3 です。
これは正規品ですが、後でご紹介するように互換ボードでも動きます。
半導体MOX(金属酸化物)センサです。
ここではCCS811を使用しています。
このセンサはCO2(二酸化炭素)を直接測定するものではなく、水素やVOCなどを測定し、CO2に換算するものでeCO2(等価二酸化炭素)と呼ばれます。
表示用のOLED(有機LED)基板です。
コントローラはSSD1306です。
ブレッドボードです。
半導体MOXセンサとOLEDが乗る小さなものです。
ブレッドボード用の配線セットです。
実際に使うのは数本です。
すべての部品をブレッドボード上で接続します。
部品の種類によりピンの位置が変わりますが、SCL、SDA、VCC、GNDを接続します。
ArduinoのプログラムはInterface誌のダウンロード・ページから2021年7月号の特集 第1部「まずはIoT 基板を作ろう」のプログラムをダウンロードして使います。
特に修正するところはありません。
ところが、起動するとうまく動きません。
MOXセンサは動作エラーになり、OLEDは表示がおかしくなります。
誤作動の原因を確かめるために、MOXセンサとOLEDを単独で繋いでみると(もちろん、Arduinoのプログラムもそれなりに改造して)正しく動くようです。両方を繋ぐと動かないようです。
原因として考えられるのはI2Cアドレスの衝突ですが、仕様書を見ると問題なさそうだし。
思いついて、半導体MOXセンサ・OLEDへのVCCを5Vから3.3Vに変更してみたら動くようになりました。
謎です。
OLEDの表示もされるようになりましたが、測定値としてかなり大きな値が表示されています。
等価二酸化炭素は通常は400ppm程度なのですが、5000ppmを超え、さらにかなりばらついて表示されます。
使用している半導体MOXセンサは内部で加熱しており、そこに吸着している酸素とVOC等が反応する時の抵抗の変化を観測しているとのことです。
その仕組み上、ある程度の時間のエージングが必要らしいので、2日間程度電源を入れたままにしてみました。
測定値はかなり安定してきたようです。
ここで、安価なArduino互換ボードが届いたので、入れ換えてみました。
(Arduino UNO R3互換で650円)
特に問題なく動いているようです。
なお、ここで使用している部品はfj.miscで取り扱います。
遠方の方は送料が発生しますので販売元へ直接発注される方がよいと思いますが、大村市近傍の方は配達いたしますので、お尋ねください。併せて、技術サポートも行います。