2020年12月10日木曜日

CODE02 ~MH-Z19B~

 忙しい人のための最低限の分割したバージョンの記事Part2

~MH-Z19B~

 NDIR式のCO2センサの中では安価で定番な、MH-Z19B(リンク:Amazonの検索結果)です。Amazonの商品画像とはちょっと裏の基盤のシルク印刷が違ってるけど、なんとかわかったからヨシ。(TxとRxに"d"がついて、VinがV+、GNDがV-になってて、ADTとSRが消えてる)(ADTとSRは使わないからどうでもいいけど)
表面 こっちは変化なし

裏面 基盤の色とかシルクとかちょっと違う

 そして、ピンヘッダを必要な部分にはんだ付けして

表面はんだ付け後
裏面はんだ付け後

 GroveケーブルでM5StickC本体と接続
 ちなみに、センサ側のTxdにG32、RxdにG33を接続して、V+に5V、V-にGNDを接続しました(TxdとRxdの端子を逆にしてみたら-1ppmという値が出たのでこの通り配線しないといけないようです)。
ペイント3分クォリティのMH-Z19B簡易配線図


Grove-メスピンヘッダケーブル
接続後 ピンが緩かったのでこのあとテープで補強した


下記のコードで動いている様子 シンプルでしょ?

code:2 MH-Z19B TEST
/*注意 私の理解できたところのみ説明が書かれています
 説明がないということは…そういうことです
 また、英語はガバガバ英語だったりDeepLに頼った英語だったりします。自己満です。 */
 
//Include Libraries ライブラリをインクルード
#include <M5StickC.h>
#include "MHZ19_uart.h"

//Define Valiable 変数を定義
MHZ19_uart mhz19;

void setup() {
  M5.begin(); //Initialize M5StickC M5StickCを初期化
  delay(50); //Wait 50msecs 50ミリ秒待機

  mhz19.begin(32,33); //Initialize I2C of MHZ19 MHZ19のI2Cを初期化
  mhz19.setAutoCalibration(false); //MHZ19's autoCalibration turn off MHZ19の自動校正をしない
  delay(3000); //Wait 3000msecs 3000ミリ秒待機
  M5.Lcd.setRotation(3); //Set Lcd's Direction 画面を横向き(左上)に
  M5.Axp.ScreenBreath(10); //Decrease Lcd's Brightness to 10 画面の輝度を10に下げる
  setCpuFrequencyMhz(80); //Set Cpu Frequency to 80MHz CPUの動作周波数を80MHzにする
  M5.Lcd.fillScreen(BLACK); //Fill Screen Black 背景色を黒に
  M5.Lcd.setCursor(0,0,4); //Set Cursor to (0,0) and Assign Fonts 4 カーソルを(0,0)へ、フォントは4を指定
}

void loop() {
  int co2,temp;
  int i;
  unsigned int t;
  co2 = mhz19.getPPM();
  temp = mhz19.getTemperature();
  Serial.printf("CO2=%d ppm / Temp=%d C\n",co2,temp);
  M5.Lcd.fillScreen(BLACK); //Fill Screen Black 背景色を黒に
  M5.Lcd.setCursor(0,20,4); //Set Cursor to (0,0) and Assign Fonts 4 カーソルを(0,0)へ、フォントは4を指定
  M5.Lcd.printf("%4dppm",co2); //CO2 concentration in integers in ppm CO2濃度をppmの単位で整数で表示

  
}

0 件のコメント:

コメントを投稿