投稿

ESP32でCO2モニターを自作したい

ESP32でCO2モニターを自作したい

ESP8266 で CO2 モニターを作っていたが、I2C 通信が不安定で悩んでいた。調べたことをまとめておく。

ESP8266 の I2C が不安定になる原因

しばらく動いていると CO2 センサーや BMP280 からエラーが返ってくる症状。考えられる原因は以下。

原因 説明
プルアップ抵抗の問題 2つのセンサーを並列接続すると合成抵抗が半分になる。引き上げ力が強すぎて不安定になることがある
クロックストレッチ CO2センサーが測定中に通信を一時停止する。ESP8266のソフトI2Cはこれへの対応が弱い
I2C速度 100kbps → 400kbps に上げると信号の立ち上がり時間が短くなり、プルアップが弱い場合は悪化する

ESP8266 vs ESP32

ESP8266 の I2C はソフトウェアで実装されている(ビットバンギング)。そのため制御が荒く、センサーの「ちょっと待って」に対応しにくい。

ESP32 はハードウェアで I2C を持っているため、クロックストレッチを適切に処理できる。安定性が段違い。

ゼロから作る場合のコスト

部品

部品 目安価格
ESP32 開発ボード 700〜1,500円
CO2センサー(MH-Z19B) 2,000〜3,000円
BMP280(温度・気圧) 400〜600円
ブレッドボード 300〜500円
ジャンパーワイヤー 300〜500円
USBケーブル 300〜500円

合計:約4,000〜6,500円

ブレッドボード(はんだ不要の試作台)で組めば、道具なしでも動くものが作れる。

開発環境

方法 難易度 備考
Arduino IDE(C/C++) 普通 ライブラリが豊富。王道
MicroPython 易しい Pythonで書ける
TinyGo 難しめ Go対応あるがライブラリが少ない

センサーのライブラリは Arduino(C++)向けが圧倒的に充実しているので、最初は Arduino が無難。

まとめ

  • ESP8266 の I2C 不安定問題は ESP32 に乗り換えると解決しやすい
  • CO2センサーが一番高い(約2,000〜3,000円)
  • 全部揃えても5,000〜7,000円程度で作れる

トレンドのタグ