工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

シャープGP2Y1010AU0Fセンサーで作る高精度空気質モニター

必要な部品と材料

部品数量
Arduino Nano R31
コンデンサ 220µF1
スルーホール抵抗 150Ω1

必要な工具

使用アプリ・サービス

プロジェクト概要

シャープ光学式ダストセンサー(GP2Y1010AU0F)は、タバコの煙のような極微細粒子の検出に特に優れ、空気清浄機システムで広く採用されています。赤外線発光ダイオードとフォトトランジスタが対角配置されており、空気中の粉塵による反射光を検知する仕組みです。

以前の動画ではDSM501AとPPD42NSベースの空気質モニターを紹介しました。今回は同等に安価(約5ドル)で入手できるシャープGP2Y1010AU0Fベースのデバイスを紹介します。電気回路は非常にシンプル(下図参照)。消費電流が非常に低い(最大20mA、典型11mA)ため、Arduinoから直接給電可能。出力は粉塵濃度に比例したアナログ電圧で、感度は0.5V/0.1mg/m³です。

シャープGP2Y1010AU0Fセンサーで作る高精度空気質モニター

Arduinoサンプルコード(DFRobot公開版)を改変し、読み取り値をµg/m³単位で出力するようにしました。さらにProcessingで「meter」ライブラリを用いたコードを書き、PC画面上で大型アナログメーター風に可視化することで、視覚的に分かりやすい表示を実現しています。

3種類のセンサー比較

同条件下でDSM501A、PPD42NS、GP2Y1010AU0Fの3種をテストした結果、シャープGP2Y1010AU0Fが最優秀でした。主な利点:

購入先(AliExpress):シャープGP2Y1010AU0F

ソースコード

Arduinoコード

/* Standalone Sketch to use with a Arduino UNO and a Sharp Optical Dust Sensor GP2Y1010AU0F */
int measurePin = 0; // ダストセンサーをArduino A0ピンに接続
int ledPower = 2;   // ダストセンサーのLEDドライバーピン3本をArduino D2に接続
int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;
float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;

void setup(){
  Serial.begin(9600);
  pinMode(ledPower, OUTPUT);
}

void loop(){
  digitalWrite(ledPower, LOW); // LEDオン(アクティブロー)
  delayMicroseconds(samplingTime);
  voMeasured = analogRead(measurePin); // ダスト値読み取り
  delayMicroseconds(deltaTime);
  digitalWrite(ledPower, HIGH); // LEDオフ
  delayMicroseconds(sleepTime);
  // 0-5Vを0-1023の整数値にマッピング
  calcVoltage = voMeasured * (5.0 / 1024.0);
  // 線形方程式(Chris Nafis 2012 https://www.howmuchsnow.com/arduino/airquality/ より)
  dustDensity = 170 * calcVoltage - 0.1;
  Serial.println(dustDensity); // 単位: µg/m³
  delay(1000);
}

Processingコード(PC側可視化)

/* Meter as a partial circle. Change a few colors.
 * Note that the circle starts at 90.0 degrees (6:00 OClock) and moves clockwise.
 * created April 19, 2017 by Bill (Papa) Kujawa. Public domain.
 */
import processing.serial.*;
import meter.*;

Serial port;
String[] list;
Meter m;

void setup() {
  size(1150, 910);
  background(255, 255, 200);
  port = new Serial(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);
  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));
  }
}

回路図

シャープGP2Y1010AU0Fセンサーで作る高精度空気質モニター

製造プロセス

  1. Raspberry Piで構築する空気質・気象ステーション:InfluxDB & Grafana活用
  2. OpenSensorsで空気質を測定: ArduinoとPythonによるガイド
  3. Heliumベースのソーラー駆動空気質センサー:設計と導入ガイド
  4. LoRaベースのスマートシティ大気質監視システム
  5. Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
  6. DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
  7. スマート室内空気品質・廃棄物監視システム:Raspberry Pi/Arduino/NodeMCUでIOTA Tangle連携
  8. K30 CO2センサで室内空気質をリアルタイム監視する
  9. Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
  10. Bosch Sensortec、AI搭載BME688空気質センサを発表、ウイルス感染リスク低減へ
  11. 先進カーボンベースNO₂センサーが室内空気質モニタリングを強化