見出し画像

高精度!CO2濃度お知らせマシンの自作

 リモートワークなど自宅に閉じこもって仕事をする機会が増えています。室内の環境に気をつけたいものですが、とくにCO2(二酸化炭素)濃度は集中力や体調に大きく影響するという話を聞きました。そこでCO2計を買ってこようと思ったのですが案外値が張るのでした。(既製品があれば既製品で済ませたいです)調べてみると、そこそこ正確なCO2濃度センサーというものはデバイス単体でも結構高いのでした。
 AmazonやAliexpressなどを見てまわると安価なものもありますが、ちょっと精度や取り回しに不安があります。ちゃんとしたものを使ってみたいと思いました。

 センスエアー(Senseair)社というスウェーデンのメーカーが、ガスセンサー専業のメーカーで有名らしく、センサーモジュールもいろいろと販売しています。2018年から旭化成の子会社とのこと。
https://senseair.com/
https://www.asahi-kasei.co.jp/asahi/jp/news/2017/el180201.html

 CO2センサーはNDIR(非分散型赤外線吸収法)という仕組みが使われていて、長くフィラメント式の灯体が用いられています。センサー内部の遮光空間(空気の出入りはあるので密閉空間ではないですが)で人知れず電球が光っているんですね。なんだか不思議な気がします。フィラメント式電球は赤外線を効率よく放射するのですが、一方で消費電力は少なくありません。IoTや車載用途など、より小型で低消費電力なデバイスが求められるなか、センスエアー社は2018年にLED方式のセンサーを1機種だけ発表しました。それがSenseair Sunriseです。こうしたデバイスはなかなか小ロットでの入手は難しいものですが、普通にDigikeyなどで買うことができます。1個6,000円程度。買ってみることにしました。
↓これです。↓
https://www.digikey.jp/product-detail/ja/senseair-north-america-inc/006-0-0002/2194-006-0-0002-ND/10416535

2日で届きました。
Digikeyの荷物って開けるのわくわくしますよね。

画像1

非常にルックスのいいセンサーモジュールです!かっこいい!

画像2

 裏側はこんな様子です。
 UARTかI2Cのどちらでも値を取得できるしくみです。便利!Arduinoなどでも簡単に使えそうな感じがします。ただし、ライブラリのようなものは用意されていません。仕様書はとても親切なものがダウンロードできます。
http://senseair.jp/product/oem/9880.html

 Arduinoのコードですが、どうにもI2Cが通信がうまくいかず困っていると、IoT系などの話題が集まるフォーラムでやはり同じ議論があり、その中で関係者っぽい人がサンプルコードを共有してくれていました。これがそのままコピペで動きました。超ありがとう。
https://www.letscontrolit.com/forum/viewtopic.php?t=7432

 サンプルコードはセンサーとArduinoをI2Cで接続し、ハードウェアシリアルで値を送ってくれるというシンプルなものです。このセンサーにはおまけ機能として温度も測ることができるので、CO2と温度のデータが送られてきます。CO2はppm、温度は摂氏です。

 今回、単体で動くものを作るつもりだったので、測定値を表示するディスプレイも必要です。秋月電子の通販で発色の良いOLED表示機を選びました。RGBカラー表示ができるものです。市販の測定器ではCO2濃度がしきい値を超えたときインジケーターとしてLEDを光らせたりするものですが、カラーOLEDであればディスプレイの色を変えて目立たせることができてシンプルでいいかなと。
http://akizukidenshi.com/catalog/g/gP-14435/

 ディスプレイはSPI通信で、SSD1331というチップが使われています。Arduino用に整備されているライブラリ『Ucglib』を何も考えずに使いました。これは動作が激遅なので普通は避けたいのですが、今回はフレームレートは遅くてもいいですし、簡単に組めるのを優先しています。
 Ucglibライブラリのいいところは内蔵フォントがすごく(必要以上じゃないかというほど)充実しているところです。めちゃきれいな文字表示ができるので、そういう意味ではおすすめです。
https://github.com/olikraus/ucglib

 マイコンはESP32を使いました。これでないといけない理由はなく、ロジック3.3VなのでOLEDやセンサーと直につなげられたり、安いとか、小さいとか、Amazonですぐ届くとかそういった事情です。せっかくの無線機能などは使っていません。近頃なんでもかんでもこのESP32を使ってしまいます。消費電力が大きいので、そこはちょっと注意が必要です。

 ブレッドボード上でマイコンボードとセンサーとディスプレイをつなげてプロトタイピングします。

画像3

なんと一発で動きました。しかし電池では不安定だった&一晩で電池切れになったので、USBコネクタから電源を取る方式ですすめることにしました。

回路図はこんなかんじです。

画像4

見てもらうとわかるように、周辺部品が一切なくて、ただモジュール同士をつなぐだけです。なんかこれで動きました。

画像5

リード線で結線した様子です。これをケースに収めます。
はんだづけの本を作ったりしているのに、とても適当な実装…。

画像6

横長ではなくて奥行方向に伸びている形にしてみることにしました。
Fusion360で設計して、 Simplify3Dというお手軽スライサーソフトで3Dプリンタ用のデータを作ります。

スクリーンショット 2020-04-14 4.55.51

接地面積が小さくて背が高いという無理のある設定になってしまいましたが、うちの3Dプリンターは優秀なので、、

画像8

難なく出力完了。(ひやひやしました)

画像9

部品を詰め込んで、ディスプレイをネジ止めして出来上がりです。


画像10

出来上がりです!CO2濃度が高くなると画面が赤くなり、下がると黒くなります。

まとめ
センスエアー社のセンサーSunriseは入手性もいいですし、なにより信頼性も高いですし、周辺部品なしで動きますし、超便利です。
Arduinoなどのマイコンとセットで使うことで部屋の環境をグラフ化したり、いろいろな用途に使えそう。部屋に人がいるかなど、分析しがいもありそうです。
家にいることが多くなる情勢ですが、ないものは作ったりして、すこしでも快適にすごしましょう!


この記事が気に入ったらサポートをしてみませんか?