ESP32-C6で室内の空気をモニタリング、Rustで書いた環境センサー表示デバイス「AirSniffer」

FabScene(ファブシーン)

nebelgrau77氏がESP32-C6と2つのセンサーを組み合わせた室内環境モニター「AirSniffer」を製作し、GitHubでソースコードを公開した。部屋の温度や湿度、空気の状況を手元で確認したいユーザー向けのデバイスだ。

AirSnifferは、温湿度・気圧センサーのBME280と、空気質センサーのENS160をESP32-C6に接続して使う。BME280は温度、湿度、気圧の3項目を、ENS160はAQI(空気質指数)とTVOC(総揮発性有機化合物)を計測する。計測結果は128×160ピクセルのST7735s TFTカラーディスプレイにリアルタイムで表示される。

ファームウェアはすべてRust言語で記述した。画面の描画には「Ratatui」というライブラリを使っている。RatatuiはPCのターミナル画面にダッシュボードやグラフを描くためのツールだが、「Mousefood」という組み込み向けアダプターを介すことで、マイコンに接続した小型TFTディスプレイでも同じ仕組みで画面を構成できる。非同期処理フレームワーク「Embassy」も採用しており、センサーの読み取りと画面の更新を効率よく並行処理している。

設計上の工夫もある。ENS160は内部にヒーターを持つセンサーで、動作中は発熱する。同じ筐体にBME280を同居させると、この熱がBME280の温湿度計測に影響してしまう。AirSnifferでは計測のたびにENS160をアイドルモード(待機状態)に切り替えることで発熱を抑えた。さらに、BME280で取得した温湿度データをENS160のキャリブレーション(校正)に定期的に反映させ、空気質の算出精度を高めている。

ただし制作者は、ENS160はアイドル復帰後に3分間のウォームアップが必要なため、頻繁にアイドルにすると計測精度が下がる可能性があると注記している。根本的な対策として、2つのセンサーを離して配置できる大きめの筐体を推奨した。ESP32-S3への移植は可能だが、ライブラリの互換性からESP32-C3では動作しない。ソースコードはGitHubで公開されている。

関連情報

airsniffer-esp32c6(GitHub)

fabsceneの更新情報はXで配信中です

この記事の感想・意見をSNSで共有しよう
  • URLをコピーしました!
目次