- 必要なコンポーネント
- NovaPMセンサーSDS011
- 0.96フィートOLEDディスプレイモジュール
- 大気質分析装置の回路図
- パフォーマンスボード上に回路を構築する
- 大気質モニターのコード説明
- Arduino大気質モニターテスト
大気汚染は多くの都市で大きな問題であり、大気質指数は日々悪化しています。世界保健機関の報告によると、自動車事故よりも空気中に存在する危険な粒子の影響により、より多くの人々が時期尚早に殺されています。環境保護庁(EPA)によると、室内の空気は屋外の空気より2〜5倍毒性が高い可能性があります。そこでここでは、空気中のPM2.5とPM10の粒子を測定することにより、空気の質を監視するデバイスを構築します。
以前は、大気質モニターにMQ135ガスセンサーを使用し、空気中の粉塵密度を測定するためにシャープGP2Y1014AU0Fセンサーを使用していました。今回は、Arduino NanoでSDS011センサーを使用して、 大気質アナライザーを構築しています。SDS011センサーは、空気中のPM2.5およびPM10粒子の濃度を計算できます。ここでは、リアルタイムのPM2.5とPM10の値がOLEDディスプレイに表示されます。
必要なコンポーネント
- Arduino Nano
- NovaPMセンサーSDS011
- 0.96'SPIOLEDディスプレイモジュール
- ジャンパー線
NovaPMセンサーSDS011
SDS011センサーは、NovaFitnessによって開発されたごく最近の大気質センサーです。レーザー散乱の原理に基づいて動作し、空気中の粒子濃度を0.3〜10μmにすることができます。このセンサーは、小さなファン、吸気バルブ、レーザーダイオード、およびフォトダイオードで構成されています。空気は空気入口から入り、そこで光源(レーザー)が粒子を照らし、散乱光が光検出器によって信号に変換されます。次に、これらの信号が増幅および処理されて、PM2.5およびPM10の粒子濃度が取得されます。
SDS011センサーの仕様:
- 出力:PM2.5、PM10
- 測定範囲:0.0-999.9μg/ m3
- 入力電圧:4.7V〜5.3V
- 最大電流:100mA
- スリープ電流:2mA
- 応答時間:1秒
- シリアルデータ出力頻度:1回/秒
- 粒子径分解能:≤0.3μm
- 相対誤差:10%
- 温度範囲:-20〜50°C
0.96フィートOLEDディスプレイモジュール
OLED(有機発光ダイオード)は、2つの導体の間に一連の有機薄膜を配置することによって構築された自己発光技術です。これらのフィルムに電流を流すと、明るい光が生成されます。OLEDはテレビと同じ技術を使用していますが、ほとんどのテレビよりもピクセル数が少なくなっています。
このプロジェクトでは、モノクロ7ピンSSD13060.96インチOLEDディスプレイを使用しています。SPI 3ワイヤーモード、SPI 4ワイヤーモード、I2Cモードの3つの異なる通信プロトコルで動作します。ピンとその機能は、以下の表で説明されています。
ピン名 |
他の名前 |
説明 |
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仕様:
- OLEDドライバーIC:SSD1306
- 解像度:128 x 64
- 視角:> 160°
- 入力電圧:3.3V〜6V
- ピクセルカラー:ブルー
- 使用温度:-30°C〜70°C
リンクをたどって、OLEDとさまざまなマイクロコントローラーとのインターフェースの詳細をご覧ください。
大気質分析装置の回路図
Arduinoを使用してPM2.5およびPM10粒子を測定するための回路図は非常に単純で、以下に示します。
SDS011センサーとOLEDディスプレイモジュールは両方とも+ 5VとGNDで給電されます。SDS011のトランスミッターピンとレシーバーピンは、ArduinoNanoのD3ピンとD4ピンに接続されています。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 |
パフォーマンスボード上に回路を構築する
また、パフォーマンスボードのすべてのコンポーネントをはんだ付けして、見栄えを良くしました。ただし、ブレッドボードで作成することもできます。私が作ったボードは以下の通りです。はんだ付けの際は、ワイヤーを分類しないでください。私がはんだ付けしたパフォーマンスボードを以下に示します。
大気質モニターのコード説明
このプロジェクトの完全なコードは、ドキュメントの最後に記載されています。ここでは、コードのいくつかの重要な部分について説明します。
このコードは、SDS011、 Adafruit_GFX 、および Adafruit_SSD1306 ライブラリを使用します。これらのライブラリは、ArduinoIDEのライブラリマネージャーからダウンロードしてそこからインストールできます。そのためには、Arduino IDEを開き、 [スケッチ]> [ライブラリを含める]> [ライブラリの管理]に 移動し ます 。次に、SDS011を検索し、R。ZschiegnerによるSDSセンサーライブラリをインストールします。
同様に、 AdafruitのAdafruitGFX および AdafruitSSD1306 ライブラリをインストールします。
ライブラリをArduinoIDEにインストールした後、必要なライブラリファイルを含めてコードを開始します。
#include
次の行で、PM10とPM2.5の値を格納する2つの変数を定義します。
フロートp10、p25;
次に、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);
ここで、 setup() 関数内で、デバッグ目的でシリアルモニターを9600のボーレートで初期化します。また、 begin() 関数を使用してOLEDディスプレイとSDS011センサーを初期化します。
my_sds.begin(3,4); Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC);
void loop() 内で、SDS011センサーからPM10とPM2.5の値を読み取り、その読み取り値をシリアルモニターに出力します。
void loop(){エラー= my_sds.read(&p25、&p10); if(!error){Serial.println( "P2.5:" + String(p25)); Serial.println( "P10:" + String(p10));
その後、 setTextSize() と setTextColor() を使用してテキストサイズとテキストの色を設定します。
display.setTextSize(2); display.setTextColor(WHITE);
次に、次の行で、 setCursor(x、y) メソッドを使用してテキストを開始する位置を定義します 。ここでは、PM2.5とPM10の値をOLEDディスプレイに表示して、最初の行が(0,15)で始まり、2番目の行が(0、40)座標で始まるようにします。
display.setCursor(0,15); display.println( "PM2.5"); display.setCursor(67,15); display.println(p25); display.setCursor(0,40); display.println( "PM10"); display.setCursor(67,40); display.println(p10);
最後に、 display() メソッドを呼び出して、OLEDディスプレイにテキストを表示します。
display.display(); display.clearDisplay();
Arduino大気質モニターテスト
ハードウェアとコードの準備ができたら、デバイスをテストします。そのためには、Arduinoをラップトップに接続し、ボードとポートを選択して、アップロードボタンを押します。下の画像でわかるように、OLEDディスプレイにPM2.5とPM10の値が表示されます。
完全に機能するビデオとコードを以下に示します。チュートリアルを楽しんで、何か役立つことを学んだことを願っています。ご不明な点がございましたら、コメントセクションに残すか、フォーラムを使用して他の技術的な質問をしてください。