はじめに
以前から懸案であった「ソーラーゆらゆら パンダ」を M5StickC から動かしました.せっかくなので,MH-Z19 で CO2 濃度を測定し,基準値より高ければゆらゆら踊って知らせることとしました.また,測定データは定期的に Ambient に送信し,変化を確認できるようにしました.
新型コロナ感染拡大による在宅勤務と子供のオンライン授業で家族の間のコミュニケーションは増えたのですが,大丈夫とは思っていても閉め切った家の中での生活は不安が伴います.また,なんとなく眠気が襲うことも多く,CO2濃度が上がったからだと言い訳をしたいためもありました.
製品の分解を伴いますので,追試に関しては十分注意した上で,自己責任で行ってください.生じた故障又は損害などに関しては,当方では一切の責任を負いかねますのであらかじめご了承ください.
CO2 濃度の測定
赤外線 CO2 センサ MH-Z19B
MH-Z19B は Amazon 等で入手がしやすく,Ambient のサイトの記事より比較的正しい値で測定できることがわかりました.今回は Amazon で一番安そうなもの(ケーブル付き)を購入したのですが,買ってみたら表面の丸い凸状の部分がありませんでした (fake 品だったようです「RevSpace's article」).やや不安ではありますが,使用上は問題なさそうだと感じています.
センサーについての比較はこちらのサイトを参考にしています.
「CO2センサー、空気品質センサーの測定値を比較する(Ambient Data)」
M5StickC との接続
M5StickC に接続し,Arduino IDE で開発しています.J.Dempsey 氏の MH-Z19 ライブラリをライブラリマネージャからインストールし,UARTで接続してデータを読み込みます.M5StickC への接続は2種類試しました.
(1) HATコネクタ側:G0(RX), G26(TX), 5V, GND
(2) GROVE互換コネクタ側:G32(RX), G33(TX), 5V, GND
どちらも動作するのですが,パンダを HAT コネクタ側につなぐ関係で(2)を選びました.
UART での接続ですから MH-Z19B の RX, TX を,M5StickC の TX, RX にそれぞれ接続(クロスで接続)することに注意して下さい.
今回は MH-Z19B のケーブルのうち必要なV-, V+, TX, RX に接続されているものを途中で切断して,ピンをはんだ付けしました.また,M5StickC のGROVE互換コネクタ側にGROVE - 4ピン-ジャンパメスケーブルを接続し,MH-Z19B のケーブルと接続しました.
Ambeint へのデータ送信
Ambient Data 製の Ambient ESP32 ESP8266 lib をインストールし,Ambeint.io へ10分に一度データを送信するように設定しました.以前 ENV HAT で利用した際は,本体の発熱の影響を避けるために,送信後 Deep Sleep モードへ移行するようにしていましたが,MH-Z19 は長時間使っていないと安定しないとのことだったので,常時稼働するようにしました.
パンダの分解
ソーラーゆらゆらシリーズはいろいろありますが,今回はパンダを利用することにしました.白黒のパンダが揺れると視認性が良く気が付きやすいのと,普段あまり活躍していないことから分解するのに抵抗が無いからです.
細いマイナスドライバを使い,裏蓋を丁寧にこじ開けます.内部には太陽電池(VIMUN SC-3012-2A),電解コンデンサ(220μF, 10A)のついた小さなモールド基盤,細い線を巻いたコイルがあるので,丁寧に外します.
太陽電池のマイナス側に接続されているケーブルにマークをつけ,接続されているケーブルを太陽電池に近い側で切り離します.基盤に配線をはんだ付けしても構いません.太陽電池を取り外した穴からケーブルを外に出し,元通りに組み立てます.
太陽電池の出力を測定したところ 1.2V 程度だったので,まず,切り離した回路に 1.5V 電池を接続し,パンダが動くことを確認しました.その後,M5StickC で簡単なサンプルプログラムを作成し,+ 側を G26 に,- 側を GND に接続し,G26 をデジタル出力としてパンダが動作することを確認しました.
== 基板上の回路が不明なため,場合によっては抵抗等で電圧を下げる必要があるかもしれません ==
プログラムの構成
setup()
- M5SctickC,G26 pin,MH-Z19の初期化
- WiFi の初期化
- RTC の設定
loop()
- RTC での時刻取得,MH-Z19 での CO2 濃度測定を行い,LCD に表示
- Ambient 送信時刻を過ぎたかチェックし,過ぎていたら送信し次回送信時刻を更新
- CO2 濃度が設定されたしきい値を上回っていた場合には G26 pin を 5 秒だけ HIGH にして,PANDA に踊ってもらう
- 次の測定まで 10 秒待つ
その他
- NTPサーバから時刻を取得し,RTC に設定する.RTC への設定は,M5StickC/Basics/RTC や次の記事を参考にして作成しました.
「M5StickCのRTCをNTPサーバーからセットする (Lang-ship)」
完成して
ふだん室内ではあまり動かなかったパンダが,強制的にでも動くようになり良かったです(何故かペンギンや招き猫は室内でも結構動いているのです).計測したリビングの CO2 濃度については,夜間に下がり続けた後,朝食の準備で一気に上がることがわかりました,また,値が安定するためには1日くらいは必要に思えるのですが (fake 品だからかもしれません),室外でキャリブレーションをかけてから使用する方法,オートキャリブレーションモードを利用する方法があるようなので,使いやすい方法がないか検討してみたいと思っています.また,回路を通さず,とある周期で直接コイルを駆動しても動く気がしますが,どうでしょうか.
部品の接続
| M5StickC | 外部 |
|---|---|
| HY2.0 黒: GND | MH-Z19 青 : V- |
| HY2.0 赤: 5V | MH-Z19 緑 : V+ |
| HY2.0 白: G32(RX) | MH-Z19 黒 : TX |
| HY2.0 黃: G33(TX) | MH-Z19 黃 :RX |
| GND | パンダ - |
| G26 | パンダ + |
※私の使用したケーブルでの色を書いています
使用した部品
| 部品 | 入手先 |
|---|---|
| M5StickC | Switch Science |
| MH-Z19B | Amazon |
| ソーラーゆらゆら パンダ | ダイソー |
| GROVE - 4ピン-ジャンパメスケーブル | Switch Science |
その他,ジャンパーケーブルなど


-
ttks007
さんが
2021/01/03
に
編集
をしました。
(メッセージ: 初版)
-
ttks007
さんが
2021/01/03
に
編集
をしました。
(メッセージ: タイトル画像を付け加えました.)
-
ttks007
さんが
2021/01/03
に
編集
をしました。
(メッセージ: 重複した画像を削除しました.)
-
ttks007
さんが
2021/01/03
に
編集
をしました。
-
ttks007
さんが
2021/01/03
に
編集
をしました。
-
ttks007
さんが
2021/01/03
に
編集
をしました。
-
ttks007
さんが
2021/01/06
に
編集
をしました。
-
ttks007
さんが
2021/01/06
に
編集
をしました。
ログインしてコメントを投稿する