忙しい人のための最低限の分割したバージョンの記事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 件のコメント:
コメントを投稿