

🌬️ Breathe smarter, monitor sharper — never miss a particle in your airspace!
The KEYESTUDIO PM2.5 Sensor is a compact, low-power air particle monitor designed for Arduino and Raspberry Pi platforms. Utilizing Sharp optics with IR LED and photoelectric transistor technology, it detects fine particles as small as 0.8μm, including cigarette smoke. Operating efficiently between -10℃ and 65℃ with a max current of 20mA, it offers reliable air quality monitoring for DIY air purifiers, conditioners, and environmental projects. Supported by comprehensive online tutorials, it empowers makers to calibrate and optimize sensor accuracy over a 5-year lifespan.
| ASIN | B07B2PFPB5 |
| Item model number | ks0196 |
| Manufacturer | KEYESTUDIO |
| Package Dimensions | 11.18 x 5.08 x 3.56 cm; 99.79 g |
A**7
Many people have suggested that it lacks documentation. I have found out that the led should turn on and off at the interval specified and the measurement should be taken at specific time in that period (the example code shows it good enough). I have plotted analog input value and vs. PM2.5 value obtained from a more reliable PMS5003 laser sensor. The slope of the graph is actually 0.05V per 100ug/m^3 (exactly 10 times less than the suggested.) The intercept is the bigger problem, it can be any value between 0.0V to 0.6V which is way larger than the sensitivity. It seems that each device would need calibration. My general guideline to calibration is picking the smallest voltage as the intercept and subtract approx 0.01V from it (as it is closest to the voltage you get at 0ug/m^3, 0.01V would be approx 20ug/m^3). After that I have measured 1000 times in one second and averaged it. This gives result with less noise. If you use following code you will get a OK accurate sensor: #include <dht.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE); int measurePin = 0; //Connect dust sensor to Arduino A0 pin int ledPower = 5; //Connect 3 led driver pins of dust sensor to Arduino D5 int samplingTime = 280; int deltaTime = 40; int sleepTime = 9680; float voMeasured = 0; float calcVolt = 0; float dustDensity = 0; float temp = 0; float vMin = 1; //1v as intercept float initPM = 34; //initial PM where the device turns on void setup(){ Serial.begin(9600); lcd.begin(16,2); lcd.clear(); // Print a message to the LCD. lcd.setCursor(0,0); lcd.print("PM2.5="); lcd.setCursor(0,1); lcd.print("vMin(V)="); pinMode(ledPower,OUTPUT); } void loop(){ temp = 0; //measure 1000 times and average the result for (int i=0; i<1000; i++) { digitalWrite(ledPower,LOW); // power on the LED delayMicroseconds(samplingTime); voMeasured = analogRead(measurePin); // read the dust value digitalWrite(ledPower,HIGH); // turn the LED off //Serial.println(voMeasured); temp = temp + voMeasured; delayMicroseconds(deltaTime); delayMicroseconds(sleepTime); //delay(1000); } Serial.println(""); voMeasured = temp/1000; calcVolt = voMeasured/1023*5.0; if(calcVolt<vMin){ vMin = calcVolt; } dustDensity = (int)((calcVolt - (vMin + 0.01 - 0.05*initPM/100))/0.05*100); lcd.setCursor(7,0); lcd.print(dustDensity); lcd.setCursor(7,1); lcd.print(vMin); Serial.println(voMeasured); Serial.println(dustDensity); Serial.println(""); delay(100); } I have to say that the values themselves are not that reliable, but the change is quite reliable.
A**A
UNOでは、予定数値に近い値が検出され一応満足しています。 ESP8266では、なぜだか分かりませんが、基本スケッチのままだと低い値しか出ず困りました。 キャリブレーションの基準がないので、詳しくは分かりません。
C**Y
I found that on my sensor, the through hole on the board (for the air to flow through) was covered by double sided tape. I eased off the sensor from the board, cleared the hole and pushed the sensor back on, making sure the hole was clear and lined up. All now works OK.
ら**ん
センサーの固定に両面テープが使われています。 そのテープがセンサーの反対側の穴をふさいでいます(最初はフィルターかと思った)。あっても問題ないかもしれませんが、なんとなくないほうがいい気がします。 商品としては、センサーに変換基板がついているので多少便利かな?という感じです。
B**E
I teach computer science to middle school student in a valley where dust and pollution are very prevalent. Since we do Arduino projects in class I thought this would be fun and relative for the kids. It was easy to set up and the sample code works well. To clear up a couple of issues from another reviewer I thought I would share the following info; 1) Based in the code the preferred voltage is 5v 2) Measurement is given using a European standard micrograms/cubic meters or ug/m3 (though the u looks more like a backwards y
Trustpilot
2 weeks ago
3 weeks ago