シャープなGP2Y1010AU0Fセンサーを備えたDIY空気品質モニター
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
> |
|
アプリとオンラインサービス
> |
| |||
|
このプロジェクトについて
シャープオプティカルダストセンサー(GP2Y1010AU0F)は、タバコの煙などの非常に細かい粒子の検出に特に効果的であり、空気清浄機システムで一般的に使用されています。この装置には、赤外線発光ダイオードとフォトトランジスタが斜めに配置されており、空気中のほこりの反射光を検出することができます。
以前のビデオでは、DSM501AおよびPPD42NSセンサーボードに基づく空気品質モニターを紹介しました。今回は、Sharp GP2Y1010AU0Fセンサーボードをベースにした同じデバイスを紹介します。これも非常に安価で、価格は約5ドルです。このデバイスの電気回路図は非常にシンプルで、下の図に示されています。低消費電流(最大20mA、標準11mA)で、Arduinoボードから直接電力を供給できます。センサーの出力は、測定されたダスト密度に比例するアナログ電圧で、感度は0.5V / 0.1mg / m3です。
「Dfrobot」ページのArduinoサンプルコードを変更して、値の読み取りがmicrog / m3になるようにしました。次に、「メーター」ライブラリに基づいた処理コードを作成しました。これにより、これらの値がPCモニターに大型のアナログ計測器の形で表示され、明確な視覚効果が得られます。
<図>
最後に、3つのセンサーボードすべて(前のビデオで説明したDSM501AとPPD42NS、および上記のSharp GP2Y1010AU0F)を比較してみましょう。3つのセンサーはすべて非常に安価で、数ドルで購入できます。結果によると、私は同じ条件でそれらをテストしました、そして勝者はシャープGP2Y1010AU0Fです。その中にはいくつかの良い点があります:
-非常に低い値に対してより敏感です
-消費電力が非常に低く、Arduinoから直接電力を供給できます
-簡単にカスタマイズできる非常にシンプルなArduinoコード
-アナログ出力を備えているため、追加の電子機器なしで測定器に直接接続できます
このセンサーはAliExpressで購入できます
https://www.aliexpress.com/item/32661666070.html?spm=a2g0s.9042311.0.0.27424c4dKW7gUj
ご覧いただきありがとうございます
コード
- Arduinoコード
- コードの処理
Arduinoコード Arduino
/ * ArduinoUNOおよびSharpOptical Dust Sensor GP2Y1010AU0F * / intmeasurePin =0で使用するスタンドアロンスケッチ。 //ダストセンサーをArduinoA0に接続しますpinintledPower =2; //ダストセンサーの3つのLEDドライバーピンをArduinoD2に接続します(9600); pinMode(ledPower、OUTPUT);} void loop(){digitalWrite(ledPower、LOW); // LEDの電源をオンにしますdelayMicroseconds(samplingTime); voMeasured =analogRead(measurePin); //ダスト値を読み取りますdelayMicroseconds(deltaTime); digitalWrite(ledPower、HIGH); // LEDをオフにしますdelayMicroseconds(sleepTime); // 0-1023整数値にマッピングされた0-5V //電圧を回復calcVoltage =voMeasured *(5.0 / 1024.0); //http://www.howmuchsnow.com/arduino/airquality/から取得した線形方程式// Chris Nafis(c)2012 dustDensity =170 * calcVoltage --0.1; Serial.println(dustDensity); //単位:ug / m3 delay(1000);}
処理コード C / C ++
/ * // <> //部分的な円として計測します。いくつかの色を変更します。円は90.0度(6:00 OClock)から始まり、時計回りに移動することに注意してください。目盛りラベルはこの順序である必要があります。非ハードウェアの例。 2017年4月19日にBill(Papa)Kujawaによって作成されました。このサンプルコードはパブリックドメインにあります。 * / importprocessing.serial。*; importmeter。*; Serial port; String [] list; Meter m; void setup(){size(1150、910); background(255、255、200);ポート=新しいシリアル(this、 "COM4"、9600); //フルサークルメーターを表示します。 m =new Meter(this、125、25、true); //フルサークルメータークラスをインスタンス化します。 m.setMeterWidth(850); m.setFrameColor(color(100、0、0)); m.setTitleFontColor(color(0、200、0)); m.setPivotPointColor(color(255、0、0)); m.setArcColor(color(0、0、200)); m.setScaleFontColor(color(200、100、0)); m.setTicMarkColor(color(217、22、247)); //スケールラベルが表示される場所を定義しますm.setArcMinDegrees(90.0); //(開始)m.setArcMaxDegrees(360.0); //(終了)m.setArcThickness(5); m.setNeedleThickness(4); //スケールラベルに対応するメーター値を設定します。 m.setMinScaleValue(0.0); m.setMaxScaleValue(800.0); m.setInputSignalOutOfRangeFontColor(color(0、255、0)); m.setMinInputSignal(0); m.setMaxInputSignal(800); m.setHighSensorWarningActive(true); m.setHighSensorWarningValue((float)200.0); String [] scaleLabelsA ={"0"、 "100"、 "200"、 "300"、 "400"、 "500"、 "600"、 "700"、 "800"}; m.setScaleLabels(scaleLabelsA); //タイトルをデフォルトの「Voltage」からより意味のあるラベルに変更します。 m.setTitle( "Airquality(ug / m3)"); //デジタルメーターの値を表示します。 m.setDisplayDigitalMeterValue(true);} void draw(){if(port.available()> 0){String val =port.readString(); list =split(val、 '、'); float air =float(list [0]); println( "Airquality:" + air + "mg / m3"); m.updateMeter(int(air)); }}
回路図
製造プロセス