M5Stackでのオゾン濃度測定

オゾン(O3)脱臭器を使っているが、オゾン臭がしているときは濃度が高すぎないか気になり、オゾン臭がしないときは機能しているのかはっきりしない。

おおよそのオゾンの濃度を調べてみたいと思ったので、測定器やセンサーを少し調べてみた。Aliexpress で3千円台でデジタル出力のセンサーモジュールが買えることがわかったので、それを使って M5Stack で試してみることにした。

オゾンセンサーモジュール ZE27-O3

Zhengzhou Winsen Electronics Technology Co., Ltd (炜盛科技)のセンサーモジュール ZE27-O3 を購入した。ヘッダピンを取り付けられるようになっているbreakout board である。

https://www.winsen-sensor.com/sensors/o3-gas-sensor/ze27-o3.html

UART 3V-TTL出力が可能で、ppb 単位の出力が得られる。仕様上は10ppmまで 0.01ppmの分解能ということである。厳密な値が知りたいのではなく、オゾン臭がしている時との大小関係ががわかれば良いので、これで良いとした。

ZE27以外に、ケーブルコネクタがついている ZE25-O3 もあったが、基板の大きさがZE27-O3の方が小さかったので、ZE27-O3を選んだ。しかし、よく仕様をみておらず、ZE27-O3のピンヘッダが2.0mmピッチであることにモジュールが手元に届いてから気がついた。

M5Stackのプロトタイプボードに2.54mm間隔のピンソケットをつけて装着するつもりであったができない。しかたがないので、2.0mmピッチ と 2.54mmピッチ の変換基板を使うことにした。

2.0mmピッチ と 2.54mmピッチ の変換基板は、マルツの「XBeeピッチ変換基板ソケットセット」を流用することにした。ZE27-O3は5ピンしか使わないので、XBeeピッチ変換基板の片側の5ピン分だけを利用した。変換基板は、ZE27-O3にはちょっと大きすぎるが、M5Stackのプロトタイプ基板に載る大きさなのでそのまま使うことにした。

使用した部品等

組み立て

ピンの対応

ZE27-O3 M5Stack-Gray
pin 1 – Vin 5v
pin 2 – TXD GPIO16 – RXD2
pin 3 – RXD GPIO17 – TXD2
pin 4 – GND GND
pin 5 – NC

基板

基板の緑面(1枚目)の灰色と黄色の配線は実際には使っていない(つながっていない)。配線できなかったので、基板の白面(2枚目)でGNDと16番pinを接続している。

 

M5Stack Gray と Proto Boardと Base26

動作確認プログラム

https://github.com/fega/winsen-ze03-arduino-library と https://github.com/m5stack/M5Stack/blob/master/examples/Advanced/Display/TFT_Terminal/TFT_Terminal.ino を基にプログラムを作成した。

開発ツールには、PlatformIO IDE for VSCode を利用した。

WinsenZE03Example.ino

WinsenZE03.h

WinsenZE03.cpp

TFT_Terminal.cpp

platformio.ini

動作状況

起動したばかりの時を除いて最小値は、0.020ppmのようだ。これより小さい値は出力されない。0.001ppmの桁まで変化する。

アマゾンで3千円台で購入した手元の小型のオゾン脱臭器を動作させて、脱臭器のすぐ近くにセンサーを置くと測定値は、0.1ppm を超えたが、0.5ppmを超えることはなかった。1mくらい離れたところにセンサーを置くとオゾン脱臭器動作中は0.05ppm以下。脱臭器を止めてしばらく経てば、0.020ppm になった。オゾン臭を感じられない場合でも、センサーで脱臭器が動作していることは確認できた。

一方、オゾン脱臭器を動作させておらず、臭気を感じない場合でも、0.035ppmくらいになることがある。しかし、これがセンサーの誤差によるものなのか、センサーに影響する NO2やCl2などのガスのせいなのか、イオンを発生させる機能がついているエアコンからO3も少し出ているのせいなのか、それとも他の原因があるのかははっきりしなかった。