このページのライセンス
MITライセンス。すきにしてください。あわよくばセンサーをショップ及びAmazon(MHZ19B/MHZ19C)で売っているのでそちらから買ってください。
(12/27追記) サンプルで付けているソースのライセンスは各ライブラリのライセンス(MHZ19のライブラリはLGPL等)に従ってください。
はじめに
EPEA-CO2-NDIR-04 Rev3.0.9はMH-Z19B、MH-Z19CをAtmega328PU(内部クロック8Mhz/3.3v)で動かすための基盤です。マイクロUSBのDIP化基板のみAliexpressで調達したもので入手に時間がかかりますが他の部品は秋月電子等ですぐに手に入ると思います。
(1/16追記) 3端子レギュレータは半田をしやすいように意図的に幅を広めています。そのため奥迄は入りません。
必要部品
- 基板:EPEA-CO2-NDIR-04 Rev3.0.9
- マイクロUSBのDIP化基板:EPEA電子工作グッズ/Aliexpress
- タクトスイッチ:秋月タクトスイッチ(EPEA電子工作グッズ(バラ売りhttps://kitamura054.stores.jp/)/秋月電子) 4本足であれば大体可
- アルミ電解コンデンサ:47uF
- セラミックコンデンサ:0.1uF × 2個
- CO2センサーモジュール:MH-Z19BまたはMH-Z19C
- 3端子レギュレーター:3.3v TA78L05S や LP2950L-3.3V
- ピンソケット: 2×1(1本)、4×1(1本)、5×1(1本)、14×1(2本)
- ICソケット:ICソケット (28P) スリム300milタイプ IC直接半田でも可
- Atmega:Arduino Bootloader書込済(3.3V 内蔵8MHz仕様) ATmega328P
- MH-Z19BまたはMH-Z19C
最低限動作スケッチ
最低限の動作をさせるためのスケッチです。基盤は0,1をソフトシリアルで使用していますが、ハードシリアルのピンなのでその内別のピンに変更します。なお、下記はMHZ19B用(外観)です。MHZ19C(外観)の場合はこちら(github)になります。
#include <FaBoLCDmini_AQM0802A.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <MHZ19.h>
#define SRX 0
#define STX 1
#define INTERVAL 6
MHZ19 myMHZ19;
SoftwareSerial softSerial(SRX, STX);
FaBoLCDmini_AQM0802A lcd;
void setup()
{
softSerial.begin(9600);
delay(100);
myMHZ19.begin(softSerial);
Wire.begin();
lcd.begin();
}
int count = 0;
int co2 = 0;
void loop()
{
if ((count % INTERVAL) == 0 ) {
co2 = myMHZ19.getCO2();
}
displayCo2(co2, (count % 2));
count++;
delay(1000);
}
void displayCo2(int co2, bool isPresiod) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CO2 ppm");
lcd.setCursor(0, 1);
lcd.print(co2);
if (isPresiod) {
lcd.print(" .");
}
}
回路図
応用例
プログラムの書き換え方法はこちら
数値が一定以上だったら音をならす。
数値が一定以上だったらLEDを光らせる。
数値が一定以上だったら何かを動作させる。
別のものとシリアル通信する。 サンプル
ネットワーク系は部品が足りないので苦手です。ネットワーク対応モジュール搭載基板がその内でるかもしれません。
ケース用SVG/Scad
3mmアクリル板をレーザーカッターで作る用のデータ github
その他必要資材は
- ボルトm3の30mm4本
- 1mm厚程度のナット 6個(基盤のスペーサー替わり4,基板押えるよう対角線に計2つ)
- ふたを抑える用のナット4個
- ワッシャ任意