- 必要なコンポーネント
- シャープGP2Y1014AU0Fセンサー
- OLEDディスプレイモジュール
- 回路図
- パフォーマンスボード上に回路を構築する
- 大気質分析装置のコード説明
- SharpGP2Y1014AU0FセンサーとArduinoのインターフェースのテスト
大気汚染は多くの都市で大きな問題であり、大気質指数は日々悪化しています。世界保健機関の報告によると、自動車事故よりも空気中に存在する危険な粒子の影響により、より多くの人々が時期尚早に殺されています。環境保護庁(EPA)によると、室内の空気は屋外の空気より2〜5倍毒性が高い可能性があります。そこで、ここでは、空気中のダスト粒子密度を測定することによって大気質を監視するプロジェクトを構築します。
そのため、LPG検出器、煙探知器、大気質モニターなどの以前のプロジェクトの続きとして、ここでは、SharpGP2Y1014AU0FセンサーをArduinoNanoと接続して、空気中のダスト密度を測定します。ダストセンサーとArduinoNanoの他に、OLEDディスプレイも測定値の表示に使用されます。シャープのGP2Y1014AU0Fダストセンサーは、タバコの煙のような非常に細かい粒子を検出するのに非常に効果的です。空気清浄機やエアコン用に設計されています。
必要なコンポーネント
- Arduino Nano
- シャープGP2Y1014AU0Fセンサー
- 0.96'SPIOLEDディスプレイモジュール
- ジャンパー線
- 220 µfコンデンサ
- 150Ω抵抗
シャープGP2Y1014AU0Fセンサー
シャープのGP2Y1014AU0Fは、空気中のほこりの粒子を感知するように設計された、小型の6ピンアナログ出力光空気品質/光ほこりセンサーです。レーザー散乱の原理で動作します。センサーモジュールの内部には、下の画像に示すように、赤外線発光ダイオードと光センサーが空気入口穴の近くに斜めに配置されています。
ほこりの粒子を含む空気がセンサーチャンバーに入ると、ほこりの粒子はIRLED光を光検出器に向かって散乱させます。散乱光の強度は、ほこりの粒子に依存します。空気中のほこりの粒子が多いほど、光の強度は大きくなります。センサーのVOUT端子の出力電圧は、散乱光の強さに応じて変化します。
GP2Y1014AU0Fセンサーのピン配列:
前述のように、GP2Y1014AU0Fセンサーには6ピンコネクタが付属してい ます。次の図と表は、GP2Y1014AU0Fのピン割り当てを示しています。
S.いいえ。 |
ピン名 |
ピンの説明 |
1 |
V-LED |
LEDVccピン。150Ω抵抗を介して5Vに接続 |
2 |
LED-GND |
LEDアースピン。GNDに接続します |
3 |
導いた |
LEDのオン/オフを切り替えるために使用されます。Arduinoの任意のデジタルピンに接続します |
4 |
S-GND |
センサーの接地ピン。ArduinoのGNDに接続します |
5 |
V OUT |
センサーアナログ出力ピン。任意のアナログピンに接続します |
6 |
V CC |
正の電源ピン。Arduinoの5Vに接続します |
GP2Y1014AU0Fセンサーの仕様:
- 低消費電流:最大20mA
- 標準動作電圧:4.5V〜5.5V
- 検出可能な最小ダストサイズ:0.5µm
- 粉塵密度検知範囲:最大580 ug / m 3
- 検知時間:1秒未満
- 寸法:1.81 x 1.18 x 0.69 ''(46.0 x 30.0 x 17.6mm)
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
リンクをたどって、OLEDとさまざまなマイクロコントローラーとのインターフェースの詳細をご覧ください。
回路図
SharpGP2Y1014AU0FセンサーをArduinoに接続するための回路図を以下に示します。
GP2Y10センサーとOLEDディスプレイモジュールのみをArduinoNanoに接続しているため、回路は非常に単純です。GP2Y10センサーとOLEDディスプレイモジュールは両方とも+ 5VとGNDで給電されます。V0ピンはArduinoNanoのA5ピンに接続されています。センサーのLEDピンはArduinoのデジタルピン12に接続されています。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 |
S.No |
センサーピン |
Arduinoピン |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
導いた |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
150Ω抵抗を介して5V |
パフォーマンスボード上に回路を構築する
パフォーマンスボード上のすべてのコンポーネントをはんだ付けすると、次のようになります。ただし、ブレッドボード上に構築することもできます。SDS011センサーのインターフェースに使用したのと同じボードにGP2Y1014センサーをはんだ付けしました。はんだ付けするときは、はんだワイヤーが互いに十分な距離にあることを確認してください。
大気質分析装置のコード説明
このプロジェクトの完全なコードは、ドキュメントの最後に記載されています。ここでは、コードのいくつかの重要な部分について説明します。
コードは使用しています Adafruit_GFX 、および Adafruit_SSD1306の ライブラリを。これらのライブラリは、ArduinoIDEのライブラリマネージャーからダウンロードしてそこからインストールできます。そのためには、Arduino IDEを開き、 Sketch <Include Library <ManageLibrariesに 移動し ます 。次に、 Adafruit GFX を検索し、 Adafruitに よるAdafruitGFXライブラリをインストールします。
同様に、AdafruitによってAdafruitSSD1306ライブラリをインストールします。
ライブラリをArduinoIDEにインストールした後、必要なライブラリファイルを含めてコードを開始します。Arduinoのアナログピンから直接電圧値を読み取るため、ダストセンサーはライブラリを必要としません。
#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);
その後、ダストセンサーのセンスピンとLEDピンを定義します。センスピンは、電圧値を読み取るために使用されるダストセンサーの出力ピンであり、LEDピンはIRLEDをオン/オフするために使用されます。
int sensePin = A5; int ledPin = 7;
ここで、 setup() 関数内で、デバッグ目的でシリアルモニターを9600のボーレートで初期化します。また、 begin() 関数を使用してOLEDディスプレイを初期化します。
Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC);
loop() 関数内で、ArduinoNanoのアナログピン5から電圧値を読み取ります。まず、IR LEDをオンにしてから、0.28ms待ってから出力電圧を読み取ります。その後、アナログピンから電圧値を読み取ります。この操作には約40〜50マイクロ秒かかるため、ダストセンサーのLEDをオフにする前に40マイクロ秒の遅延を導入します。仕様によれば、LEDは10msごとに1回パルスされる必要があるため、 10msサイクルの 残りの部分 = 10000-280-40 = 9680マイクロ秒を 待ち ます 。
digitalWrite(ledPin、LOW); delayMicroseconds(280); outVo = AnalogRead(sensePin); delayMicroseconds(40); digitalWrite(ledPin、HIGH); delayMicroseconds(9680);
次に、次の行で、出力電圧と信号値を使用してダスト密度を計算します。
sigVolt = outVo *(5/1024); dustLevel = 0.17 * sigVolt-0.1;
その後、 setTextSize() と setTextColor() を使用してテキストサイズとテキストの色を設定します。
display.setTextSize(1); display.setTextColor(WHITE);
次に、次の行で、 setCursor(x、y) メソッドを使用してテキストが開始する位置を定義します。そして、 display.println() 関数を使用して、OLEDディスプレイにダスト密度値を 出力し ます。
display.println( "Dust"); display.println( "Density"); display.setTextSize(3); display.println(dustLevel);
そして最後に、 display() メソッドを呼び出して、OLEDディスプレイにテキストを表示します。
display.display(); display.clearDisplay();
SharpGP2Y1014AU0FセンサーとArduinoのインターフェースのテスト
ハードウェアとコードの準備ができたら、センサーをテストします。そのためには、Arduinoをラップトップに接続し、ボードとポートを選択して、アップロードボタンを押します。下の画像でわかるように、OLEDディスプレイにダスト密度が表示されます。
完全に機能するビデオとコードを以下に示します。チュートリアルを楽しんで、何か役立つことを学んだことを願っています。ご不明な点がございましたら、コメントセクションに残すか、フォーラムを使用して他の技術的な質問をしてください。