Датчик пыли Waveshare: инструкция, примеры использования и документация

Используйте Waveshare Dust Sensor для оценки качества воздуха в помещении, измерив концентрацию пыли и твёрдых мелкодисперсных частиц PM2.5.

Пример работы для Arduino

На роль мозга для работы с датчиком пыли рассмотрим платформы из семейства Arduino, например Arduino Uno.

В качестве примера выведем концентрацию твёрдых мелкодисперсных частиц в Serial-порт.

Что понадобится

Схема устройства

Код для Arduino

BasicReading.ino
// Определяем ядро платы Arduino
// для установки рабочего напряжения
#if defined(__AVR__)
#define OPERATING_VOLTAGE   5.0
#else
#define OPERATING_VOLTAGE   3.3
#endif
 
// Назначаем пины для коммуникации с датчиком пыли
constexpr uint8_t PIN_AOUT = A0;
constexpr uint8_t PIN_IR_LED = A1;
 
// Нулевой порог напряжения
float zeroSensorDustDensity = 0.6;
 
// Переменные для хранения данных с датчика
int sensorADC;
float sensorVoltage;
float sensorDustDensity;
 
void setup() {
  // Открываем Serial-порт
  Serial.begin(9600);
  // Пин с IR-LED в режим выхода
  pinMode(PIN_IR_LED, OUTPUT);
  // Выключаем IR-LED
  digitalWrite(PIN_IR_LED, LOW);
}
 
void loop() {
  // Считываем значение с датчика
  for (int i = 0; i < 10 ; i++) {
    digitalWrite(PIN_IR_LED, HIGH);
    delayMicroseconds(280);
    sensorADC += analogRead(PIN_AOUT);
    digitalWrite(PIN_IR_LED, LOW);
    delay(10);
  }
  sensorADC = sensorADC / 10;
  // Переводим «сырые» значения с АЦП в напряжение
  sensorVoltage = (OPERATING_VOLTAGE / 1024.0) * sensorADC * 11;
  // Переводим напряжение в концентрацию пыли
  // Также учитываем нулевой порог напряжение
  if (sensorVoltage < zeroSensorDustDensity) {
    sensorDustDensity = 0;
  } else {
    sensorDustDensity = 0.17 * sensorVoltage - 0.1;
  }
  // Выводим результат в Serial-порт;
  Serial.print(sensorVoltage);
  Serial.print("\t\t");
  Serial.print(sensorDustDensity);
  Serial.println(" ug/m3");  
  delay(1000);
}

Пример работы для Raspberry Pi

На роль мозга для работы с датчиком пыли рассмотрим компьютеры из семейства Raspberry Pi, например Raspberry Pi 4 Model B.

В качестве примера выведем концентрацию твёрдых мелкодисперсных частиц в консоль.

Что понадобится

К сожалению в компьютере Raspberry Pi нет встроенного аналого-цифрового преобразователя. Используйте плату расширения Troyka HAT, которая добавит малине аналоговые пины.

Схема устройства

Код для Rython

Для работы примера установите библиотеку TroykaHatPython.

basic_reading.py
# Библиотека для работы со временем и задержками
import time
# Библиотека для работы с платой Troyka HAT
import troykahat
# Создаём объект для работы с расширителем портов
ap = troykahat.analog_io()
 
# Назначаем пины для коммуникации с датчиком пыли
PIN_AP_AOUT = 0
PIN_AP_IR_LED = 1
 
# Нулевой порог напряжения
zero_sensor_dust_density = 0.6
 
# Пин IR-LED в режим выхода
ap.pinMode(PIN_AP_IR_LED, ap.OUTPUT)
# Пин AOUT в режим входа
ap.pinMode(PIN_AP_AOUT, ap.INPUT)
 
while True:
    # Считываем значение с датчика
    # Для точности показаний считываем 10 выборок
    total_sensor_ADC = 0
    for i in range(10):
        ap.digitalWrite(PIN_AP_IR_LED, True)
        time.sleep(0.00028)
        # Считываем значение с датчика
        total_sensor_ADC = total_sensor_ADC + ap.analogRead(PIN_AP_AOUT)
        time.sleep(0.00004)
        ap.digitalWrite(PIN_AP_IR_LED, False)
    sensor_ADC = total_sensor_ADC / 10
    # Переводим «сырые» значения с АЦП в напряжение
    sensor_voltage = sensor_ADC * 3.3 * 11
 
    # Переводим напряжение в концентрацию пыли
    # Также учитываем нулевой порог напряжение
    if sensor_voltage < zero_sensor_dust_density:
        sensor_dust_density = 0
    else:
        sensor_dust_density = 0.17 * sensor_voltage - 0.1
 
    # Выводим показания датчика
    print("Voltage: ", round(sensor_voltage, 2), '\t',
          "Dust: ", round(sensor_dust_density, 2))
    # Ждём 10 мс
    time.sleep(0.1)

Критерии загрязнённости воздуха микрочастицами пыли

Значения индекса AQI Концентрация частиц PM2.5 Качество воздуха
0–50 0–12,0 Хорошее
51–100 12,1–35,4 Умеренное
101–150 35,5–55,4 Нездоровое для чувствительных групп
151–200 55,5–150,4 Нездоровое
201–300 150,5–250,4 Очень нездоровое
301–500 250,5–500 Опасное

Элементы платы

Сенсор частиц Sharp GP2Y1010AU0F

Модуль WaveShare Dust Sensor построен на оптическом сенсоре Sharp GP2Y1010AU0F, который способен определять концентрации частиц диаметром менее 2,5 мкм или как их называют PM2.5.

JST-разъём (питание и данные)

Модуль подключается к управляющей электронике через разъём JST PH-4 Male (папа). Для коммуникации используйте кабель с разъёмом JST PH-4 Female с четырьмя проводниками «мама» на конце:

Имя контакта Цвет провода Назначение Подключение
Питание (VCC) Красный Питание модуля (+) Подключите к питанию микроконтроллера.
Земля (GND) Чёрный Питание модуля (−) Подключите к земле микроконтроллера.
Сигнальный (AOUT) Синий Выходной аналоговый сигнал сенсора. Подключите к пину микроконтроллера с поддержкой АЦП.
Сигнальный (IR-LED) Жёлтый Управления встроенным инфракрасным светодиодом. Подключите к цифровому пину микроконтроллера.

Контакты JST-разъёма, также продублированы на двух группах отверстий под пайку.

Светодиодная индикация

Имя светодиода Назначение
PWR Индикатор питания модуля.

Повышающий DC-DC преобразователь PT1301

Повышающий DC-DC преобразователь PT1301 обеспечивает питание оптического сенсора Sharp GP2Y1010AU0F, которому для стабильной работы необходимо напряжение 5 вольт. Диапазон входного напряжения преобразователя от 2,5 до 5 вольт. Выходное напряжение 5 В с максимальным выходным током 300 мА.

Принципиальная схема

Габаритный чертеж

Характеристики

  • Модель: Waveshare Dust Sensor (SKU 10500)
  • Сенсор частиц: Sharp GP2Y1010AU0F
  • Тип датчика: оптический
  • Сигнал датчика: аналоговый
  • Диапазон измерений: 0–500 мкг/м³
  • Диаметр отверстия для воздуха: 9 мм
  • Напряжение питания: 2,5–5 В
  • Потребляемый ток: до 20 мА
  • Размеры: 46,1×45,8×21,2 мм

Ресурсы

Инструкции

Документация