- 必要なコンポーネント
- 0.96フィートOLEDディスプレイモジュール
- MQ-135センサーの準備
- MQ135をArduinoとインターフェースするための回路図
- Rの計算
- ArduinoMQ135センサーを使用してCO2を測定するコード
- MQ-135センサーのインターフェースのテスト
地球の大気中のCO2レベルは日々増加しています。2019年の世界平均大気二酸化炭素は409.8ppmであり、2020年10月には411.29です。二酸化炭素は重要な温室効果ガスであり、排出量の約4分の3を占めています。そのため、CO2レベルのモニタリングも重要性を増し始めています。
以前のプロジェクトでは、重力赤外線CO2センサーを使用して空気中のCO2濃度を測定しました。このプロジェクトでは、ArduinoでMQ-135センサーを使用してCO2濃度を測定します。測定されたCO2濃度値はOLEDモジュールに表示され、最後にArduinoMQ-135センサーの読み取り値を赤外線CO2センサーの読み取り値と比較します。CO2とは別に、Arduinoを使用してLPG、煙、およびアンモニアガスの濃度も測定しました。
必要なコンポーネント
- Arduino Nano
- MQ-135センサー
- ジャンパー線
- 0.96'SPIOLEDディスプレイモジュール
- ブレッドボード
- 22KΩ抵抗
0.96フィートOLEDディスプレイモジュール
OLED(有機発光ダイオード)は、2つの導体の間に一連の有機薄膜を配置することによって構築された自己発光技術です。これらのフィルムに電流を流すと、明るい光が生成されます。OLEDはテレビと同じ技術を使用していますが、ほとんどのテレビよりもピクセル数が少なくなっています。
このプロジェクトでは、モノクロ7ピンSSD13060.96インチOLEDディスプレイを使用しています。SPI 3ワイヤーモード、SPI 4ワイヤーモード、I2Cモードの3つの異なる通信プロトコルで動作します。リンク先の記事を読むことで、OLEDディスプレイの基本とそのタイプについてさらに学ぶことができます。ピンとその機能は、以下の表で説明されています。
ピン名 |
他の名前 |
説明 |
Gnd |
接地 |
モジュールのアースピン |
Vdd |
Vcc、5V |
電源ピン(3-5V許容) |
SCK |
D0、SCL、CLK |
クロックピンとして機能します。I2CとSPIの両方に使用 |
SDA |
D1、MOSI |
モジュールのデータピン。IICとSPIの両方に使用 |
RES |
RST、リセット |
モジュールをリセットします(SPI中に役立ちます) |
DC |
A0 |
データコマンドピン。SPIプロトコルに使用 |
CS |
チップセレクト |
SPIプロトコルで複数のモジュールを使用する場合に便利です |
OLED仕様:
- OLEDドライバーIC:SSD1306
- 解像度:128 x 64
- 視角:> 160°
- 入力電圧:3.3V〜6V
- ピクセルカラー:ブルー
- 使用温度:-30°C〜70°C
MQ-135センサーの準備
MQ-135ガスセンサーは、NH3、NOx、アルコール、ベンゼン、煙、CO2などのさまざまなガスを検出するための空気品質センサーです。MQ-135センサーは、モジュールとして購入することも、センサーのみとして購入することもできます。このプロジェクトでは、MQ-135センサーモジュールを使用してPPMのCO2濃度を測定しています。MQ-135ボードの回路図を以下に示します。
負荷抵抗RLは、センサーを機能させる上で非常に重要な役割を果たします。この抵抗器は、ガスの濃度に応じて抵抗値を変化させます。MQ-135のデータシートによると、負荷抵抗の値は10KΩから47KΩの範囲です。データシートでは、空気中の100ppmNH3または50ppmアルコール濃度に対して検出器を校正し、約20KΩの負荷抵抗(RL)の値を使用することを推奨しています。しかし、PCBトレースを追跡して、ボード内のRLの値を見つけると、 1KΩ(102)の負荷抵抗がわかります。
したがって、適切なCO2濃度値を測定するには、1KΩの抵抗を22KΩの抵抗に交換する必要があります。
MQ135をArduinoとインターフェースするための回路図
MQ-135ガスセンサーをArduinoに接続するための完全な回路図を以下に示します。
MQ-135センサーとOLEDディスプレイモジュールのみをArduinoNanoに接続しているため、回路は非常に単純です。MQ-135ガスセンサーとOLEDディスプレイモジュールは両方とも+ 5VとGNDで給電されます。MQ-135センサーのアナログ出力ピンはArduinoNanoのA0ピンに接続されています。OLEDディスプレイモジュールはSPI通信を使用するため、OLEDモジュールとArduinoNanoの間にSPI通信を確立しました。以下の表に接続を示します。
S.No |
OLEDモジュールピン |
Arduinoピン |
1 |
GND |
接地 |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
回路図に従ってハードウェアを接続すると、ArduinoMQ135センサーのセットアップは次のようになります。
Rの計算
RLの値がわかったので、きれいな空気でのRo値の計算方法に進みましょう。ここでは、MQ135.hを使用して空気中のCO2濃度を測定します。だから、まずRを読む前に24時間センサーを予熱、MQ-135ライブラリをダウンロードしてくださいoを値。予熱プロセスの後、以下のコードを使用してRo値を読み取ります。
#include "MQ135.h" void setup(){Serial.begin(9600); } void loop(){MQ135 gasSensor = MQ135(A0); //センサーをピンA0に接続しますfloatrzero = gasSensor.getRZero(); Serial.println(rzero); delay(1000); }
R o値を取得したら、 [ドキュメント]> [Arduino]> [ライブラリ]> [MQ135-master ]フォルダーに移動 し、 MQ135.h ファイルを開いて、RLOADとRZEROの値を変更します。
///ボードの負荷抵抗#defineRLOAD 22.0 ///大気中のCO2レベルでの校正抵抗#defineRZERO 5804.99
次に、下にスクロールして、ATMOCO2値を現在の大気CO2である411.29に置き換えます。
///キャリブレーション目的の大気CO2レベル#defineATMOCO2 397.13
ArduinoMQ135センサーを使用してCO2を測定するコード
MQ-135センサーをArduinoとインターフェースするための完全なコードは、ドキュメントの最後に記載されています。ここでは、MQ135Arduinoコードのいくつかの重要な部分について説明します。
コードは使用しています Adafruit_GFX 、および Adafruit_SSD1306 、および MQ135.hの ライブラリを。これらのライブラリは、ArduinoIDEのライブラリマネージャーからダウンロードしてそこからインストールできます。そのためには、Arduino IDEを開き、 Sketch <Include Library <ManageLibrariesに 移動し ます 。次に、Adafruit GFXを検索し、AdafruitによるAdafruitGFXライブラリをインストールします。
同様に、AdafruitによってAdafruitSSD1306ライブラリをインストールします。MQ135ライブラリはここからダウンロードできます。
ライブラリをArduinoIDEにインストールした後、必要なライブラリファイルを含めてコードを開始します。
#include "MQ135.h" #include
次に、OLEDの幅と高さを定義します。このプロジェクトでは、128×64のSPIOLEDディスプレイを使用しています。あなたは変更することができ SCREEN_WIDTH 、および SCREEN_HEIGHTの ディスプレイに応じて変数を。
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
次に、OLEDディスプレイが接続されているSPI通信ピンを定義します。
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
次に、SPI通信プロトコルで以前に定義した幅と高さのAdafruitディスプレイインスタンスを作成します。
Adafruit_SSD1306ディスプレイ(SCREEN_WIDTH、SCREEN_HEIGHT、OLED_MOSI、OLED_CLK、OLED_DC、OLED_RESET、OLED_CS);
その後、MQ-135センサーが接続されているArduinoピンを定義します。
int sensorIn = A0;
ここで、 setup() 関数内で、デバッグ目的でシリアルモニターを9600のボーレートで初期化します。また、 begin() 関数を使用してOLEDディスプレイを初期化します。
Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC); display.clearDisplay();
loop() 関数内で、 analogRead() 関数を呼び出して、 最初 にArduinoのAnalogピンで信号値を読み取ります。
val = analogRead(A0); Serial.print( "raw =");
次に、次の行で、 gasSensor.getPPM() を呼び出してPPM値を計算します。PPM値は、負荷抵抗R 0と、アナログピンからの読み取り値を使用して計算されます。
float ppm = gasSensor.getPPM(); Serial.print( "ppm:"); Serial.println(ppm);
その後、 setTextSize() と setTextColor() を使用してテキストサイズとテキストの色を設定します。
display.setTextSize(1); display.setTextColor(WHITE);
次に、次の行で、 setCursor(x、y) メソッドを使用してテキストが開始する位置を定義します。そして、 display.println() 関数を使用してOLEDディスプレイにCO2値を印刷します。
display.setCursor(18,43); display.println( "CO2"); display.setCursor(63,43); display.println( "(PPM)"); display.setTextSize(2); display.setCursor(28,5); display.println(ppm);
そして最後に、 display() メソッドを呼び出して、OLEDディスプレイにテキストを表示します。
display.display(); display.clearDisplay();
MQ-135センサーのインターフェースのテスト
ハードウェアとコードの準備ができたら、センサーをテストします。そのためには、Arduinoをラップトップに接続し、ボードとポートを選択して、アップロードボタンを押します。次に、シリアルモニターを開き、しばらく待ちます(予熱プロセス)。その後、最終データが表示されます。値は、以下に示すようにOLEDディスプレイに表示されます。
これは、MQ-135センサーを使用して空気中の正確なCO2を測定する方法です。完全なMQ135大気質センサーArduinoコードと作業ビデオを以下に示します。疑問がある場合は、コメントセクションに残してください。