使用夏普 GP2Y1010AU0F + Arduino 自制空气灰尘传感器

admin 2022年5月17日02:54:15安全博客 安全闲碎评论7 views1656字阅读5分31秒阅读模式

最近看到小伙伴的文章,正好自己手中有一块 Arduino 在积灰,觉得难度应该不大,就淘宝上买了几个零件自己组装了一下。

需要的材料有

  • Arduino,通用的几种型号都可以
  • 夏普 GP2Y1010AU0F 灰尘传感器,价格大约30块钱左右
  • 面包板,方便连线
  • 一大把杜邦线

传感器的说明书在这里

传感器中心有个洞可以让空气自由流过,其内部对角安放着红外线发光二极管和光电晶体管,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量,网上资料说可以测量 0.8μm 以上的灰尘,但是我并没有在说明书上找到。

要注意的是这个传感器测量的是每立方空气中颗粒物的重量,基础单位是 $mg/m^3$,不是通常意义上的 PM2.5 或者 AQI。输出电压和灰尘浓度的换算关系见说明书的最后面。

安装电路图是
使用夏普 GP2Y1010AU0F + Arduino 自制空气灰尘传感器

传感器有六根线输入,颜色分别是蓝、绿、白、黄、黑、红,分别编号为 1-6,也对应上图里面的 1-6 的。

里面不太清楚的是3和6,他们需要和 Arduino 相连,连接方式是

  • Sharp pin 3 (LED) => Arduino PIN 2 (开关LED)
  • Sharp pin 5 (Vo) => Arduino A0 pin (空气质量数据通过电压模拟信号输出)

不要忘记了里面 150欧的电阻和 220uf 的电容,有的电容是有正负极的,一般画了一条白线的引脚是负极,最好不要接反了。

小伙伴还画了一张实际的走线图,原图在这里

使用夏普 GP2Y1010AU0F + Arduino 自制空气灰尘传感器

我一开始按照这个走线的,但是输出一直不对,后来发现了问题,就是

使用夏普 GP2Y1010AU0F + Arduino 自制空气灰尘传感器

图片来源

图上的红色和蓝色中间会断开,两部分是不通的,直接用两根杜邦线连上就好了,不再拆了,不过就是显的线很乱。

电脑端读取的 Arduino 程序是

int measurePin = 0; //Connect dust sensor to Arduino A0 pin
int ledPower = 2;   //Connect 3 led driver pins of dust sensor to 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); // power on the LED
  delayMicroseconds(samplingTime);
   
  voMeasured = analogRead(measurePin); // read the dust value
   
  delayMicroseconds(deltaTime);
  digitalWrite(ledPower,HIGH); // turn the LED off
  delayMicroseconds(sleepTime);
   
  // 0 - 5V mapped to 0 - 1023 integer values
  // recover voltage  
  calcVoltage = voMeasured * (5.0 / 1024.0);
   
  // linear eqaution taken from http://www.howmuchsnow.com/arduino/airquality/
  // Chris Nafis (c) 2012
  dustDensity = 0.17 * calcVoltage - 0.1;
   
  Serial.print("Raw Signal Value (0-1023): ");
  Serial.print(voMeasured);
   
  Serial.print(" - Voltage: ");
  Serial.print(calcVoltage);
   
  Serial.print(" - Dust Density: ");
  // 换算成 ug/m^3
  Serial.print(dustDensity * 1000);
  Serial.println(" ug/m3 ");
  delay(1000);
}

我的实拍

使用夏普 GP2Y1010AU0F + Arduino 自制空气灰尘传感器

使用夏普 GP2Y1010AU0F + Arduino 自制空气灰尘传感器

FROM :strcpy.me | Author:strcpy

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月17日02:54:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  使用夏普 GP2Y1010AU0F + Arduino 自制空气灰尘传感器 http://cn-sec.com/archives/1013410.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: