Module Cảm Biến Bụi Gp2y1010au0f (chính Hãng Waveshare)

Module Cảm Biến Bụi GP2Y1010AU0F

Mô tả sản phẩm

Module Cảm Biến Bụi GP2Y1010AU0F (Chính hãng Waveshare) sử dụng cảm biến bụi GP2Y1010AU0F của SHARP, được sử dụng để nhận biết nồng độ bụi trong không khí.

Thông số kỹ thuật

  • Độ nhạy: 0.5V / (100μg / m3)
  • Phạm vi đo lường: 500μg / m3
  • Điện áp: 2.5V ~ 5.5V
  • Dòng tiêu thụ: 20mA (max)
  • Nhiệt độ hoạt động: -10 ℃ ~ 65 ℃
  • Nhiệt độ bảo quản: -20 ℃ ~ 80 ℃
  • Tuổi thọ: 5 năm
  • Kích thước: 63,2mm × 41,3mm × 21,1mm
  • Kích thước lỗ gắn: 2.0mm
  • Kích thước lỗ khí: 9.0mm

CODE TEST ARDUINO:

#define PIN_LED 7 #define SENSOR_PIN A0

// Cấu hình const int SAMPLES_PER_CYCLE = 10; // số mẫu analog trong 1 chu kỳ đo để lấy trung bình const int DELAY_MS_LOOP = 200; // thời gian giữa 2 chu kỳ đo (Plotter dễ nhìn) const int BASELINE_SECONDS = 5; // thời gian đo baseline khi khởi động (giây)

// Hệ số hiệu chuẩn mặc định (µg/m3 trên Volt của delta Vo). // Bạn phải tinh chỉnh CAL_FACTOR bằng cách hiệu chuẩn thực tế. // Giá trị mặc định này là điểm bắt đầu - cần hiệu chuẩn với thiết bị tham chiếu. float CAL_FACTOR = 20000.0; // µg/m3 per Volt (mặc định, cần hiệu chuẩn)

float baselineADC = 0.0; float smoothDensity = 0.0; const float SMOOTH_ALPHA = 0.2; // hệ số cho EMA smoothing (0..1)

void setup() { Serial.begin(9600); pinMode(PIN_LED, OUTPUT); digitalWrite(PIN_LED, LOW);

// Đo baseline khi startup (yêu cầu môi trường sạch) Serial.println("Calibrating baseline... keep sensor in clean air."); baselineADC = measureBaseline(BASELINE_SECONDS); Serial.print("Baseline ADC = "); Serial.println(baselineADC); delay(500); }

void loop() { // Lấy trung bình nhiều mẫu trong 1 chu kỳ float sum = 0; for (int i = 0; i < SAMPLES_PER_CYCLE; ++i) { // Kích LED đo theo timing chuẩn digitalWrite(PIN_LED, HIGH); delayMicroseconds(280); int adc = analogRead(SENSOR_PIN); delayMicroseconds(40); digitalWrite(PIN_LED, LOW);

sum += adc;

// Khoảng cách giữa các mẫu nhỏ để giữ đồng bộ LED delay(5); } float adcAvg = sum / SAMPLES_PER_CYCLE;

// Tính toán float deltaADC = adcAvg - baselineADC; if (deltaADC < 0) deltaADC = 0; // bỏ giá trị âm float deltaVo = deltaADC * (5.0 / 1023.0); // chuyển ADC -> Volt float density_ugm3 = deltaVo * CAL_FACTOR; // công thức tuyến tính đơn giản (cần hiệu chuẩn)

// Smoothing (EMA) smoothDensity = SMOOTH_ALPHA * density_ugm3 + (1.0 - SMOOTH_ALPHA) * smoothDensity;

// Ghi ra Serial plotter: in 2 giá trị (rawADC, µg/m3) hoặc chỉ µg/m3 // In dạng CSV (2 cột) để plot 2 đường (raw & calibrated) Serial.print(adcAvg); Serial.print(","); Serial.println(smoothDensity);

delay(DELAY_MS_LOOP); // thời gian giữa các vòng để Plotter kịp cập nhật }

// Hàm đo baseline trung bình trong 'secs' giây float measureBaseline(int secs) { unsigned long endt = millis() + (unsigned long)secs * 1000UL; long sum = 0; long count = 0; while (millis() < endt) { // một chu kỳ đo giống như loop digitalWrite(PIN_LED, HIGH); delayMicroseconds(280); int adc = analogRead(SENSOR_PIN); delayMicroseconds(40); digitalWrite(PIN_LED, LOW);

sum += adc; count++; delay(50); } if (count == 0) return 0; return (float)sum / (float)count; }

Từ khóa » Cảm Biến Gp2y1010au0f