Используйте Waveshare Dust Sensor для оценки качества воздуха в помещении, измерив концентрацию пыли и твёрдых мелкодисперсных частиц PM2.5.
На роль мозга для работы с датчиком пыли рассмотрим платформы из семейства Arduino, например Arduino Uno.
В качестве примера выведем концентрацию твёрдых мелкодисперсных частиц в Serial-порт.
// Определяем ядро платы 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 4 Model B.
В качестве примера выведем концентрацию твёрдых мелкодисперсных частиц в консоль.
К сожалению в компьютере Raspberry Pi нет встроенного аналого-цифрового преобразователя. Используйте плату расширения Troyka HAT, которая добавит малине аналоговые пины.
Для работы примера установите библиотеку TroykaHatPython.
# Библиотека для работы со временем и задержками 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 | Опасное |
Модуль WaveShare Dust Sensor построен на оптическом сенсоре Sharp GP2Y1010AU0F, который способен определять концентрации частиц диаметром менее 2,5 мкм или как их называют PM2.5.
Модуль подключается к управляющей электронике через разъём JST PH-4 Male (папа). Для коммуникации используйте кабель с разъёмом JST PH-4 Female с четырьмя проводниками «мама» на конце:
Имя контакта | Цвет провода | Назначение | Подключение |
---|---|---|---|
Питание (VCC) | Красный | Питание модуля (+) | Подключите к питанию микроконтроллера. |
Земля (GND) | Чёрный | Питание модуля (−) | Подключите к земле микроконтроллера. |
Сигнальный (AOUT) | Синий | Выходной аналоговый сигнал сенсора. | Подключите к пину микроконтроллера с поддержкой АЦП. |
Сигнальный (IR-LED) | Жёлтый | Управления встроенным инфракрасным светодиодом. | Подключите к цифровому пину микроконтроллера. |
Контакты JST-разъёма, также продублированы на двух группах отверстий под пайку.
Имя светодиода | Назначение |
---|---|
PWR | Индикатор питания модуля. |
Повышающий DC-DC преобразователь PT1301 обеспечивает питание оптического сенсора Sharp GP2Y1010AU0F, которому для стабильной работы необходимо напряжение 5 вольт. Диапазон входного напряжения преобразователя от 2,5 до 5 вольт. Выходное напряжение 5 В с максимальным выходным током 300 мА.