
前回の試作から3年、疫情も明けてようやく現地へ赴いて 環境センサ のメンテが可能になったことから、 MOSFET による I2C デバイスへの電力供給制御機能を盛り込んだ ESP-12E 環境センサを ケースに入れて量産しました。
改良1. ESP-12EのA0端子でI2CのGND電位を計測
前回以降に得た知見から量産前にいつくか改良を施しました。
そのまず1つが、ESP-12Eの持つアナログ入力端子 A0 を使い、I2Cの GND が確かにMOSFET(AO3400)によって開閉されているのか、確認するというもの(関連記事はこちら)。
本来ならばMOSFETはI2Cの Vcc を開閉し、その電位を A0 端子で確認するのが分かりやすいのですが、それは将来の課題に。
I2C GND の電位計測であれば、配線とコネクタ1本追加なので改造範囲も少なく済みます。
ケースに入れる前に、裸のESP-12Eと繋いで動作確認。
改良2. ESP EasyのRulesでGPIOの状態をセット
ESP Easyでは Hardware タブでブート時のGPIOの初期状態を設定することができるはずなのですが、期待通りに機能しないことがよくありました。
そこで、独自のカスタムスクリプトを定義できるRules機能を使って、GPIOの初期状態をセットするようにします。
まず、ESP Easy の Tools >> Advanced でRulesを有効にした後、 Rules タブを開いて起動時に GPIO10 を HI にするカスタムルールを次のように設定します。
1 2 3 |
On System#Boot Do GPIO,10,1 Endon |
ESP Easy上でMOSFETによるI2C給電制御
平常時、ESP Easyの Devices タブには、2つの環境センサBME280とBH1750の計測値の他、I2CバスのGND電位とそれを制御する GPIO10 の状態が、以下のようになっています。
少し分かりにくいのでまとめると、GPIO10とI2Cバスの関係は次の通り。
- GPIO10 Hi : A0 = GND : I2Cバス通電中
- GPIO10 Lo : A0 ≠ GND : I2Cバス断電中
ESP Easyの Tools タブの Command 欄に直接GPIOを制御するコマンドを送信して、I2Cバスへの給電を絶ってみます。
1 |
gpio,10,0 |
再び Devices タブを開くと、確かに切られたことが分かります。環境センサ計測値は以前の古い値がそのまま保持されています。
試しに Tools タブから I2C Scan をかけてみると、センサデバイスは検出されます。
但し、ログを数分間確認していても、それらセンサデバイスの計測がログに挙がって来ないので、I2Cバスへの給電切断は果たせたと思って良さそう。
ちなみにI2Cバスへの復電は、先ほどの Command 欄で次のコマンドを送信するだけ。
1 |
gpio,10,0 |
ESP-12Eケースの製作
ESP-12Eを入れるケースは、淘寶でPCB製の筐体を購入(RMB0.9/個)。サイズは外寸60x36x16mmで、ピンヘッダの付いたESP-12Eがちょうど収まるので、樹脂製のM2.5スペーサ4mm高を接着して固定台座としました。
ESP8266の金属シェル付近には、発熱対策にアルミテープとカプトンテープを貼り付け。
ケース上蓋には、使用するピンヘッダの開口をカッターであけました。
ケースを閉じてセンサ基板を繋いで完成です。
同じものを6個、初回ロットとして生産しました。
これらを現在ブレッドボードで運用している環境センサユニットと入れ替えて数ヶ月経ちますが、全機問題無く機能しています。