====== Датчик пыли Waveshare: инструкция, примеры использования и документация ====== Используйте [[amp>product/waveshare-dust-sensor-sharp-gp2y1010au0f?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Waveshare Dust Sensor]] для оценки качества воздуха в помещении, измерив концентрацию пыли и твёрдых мелкодисперсных частиц PM2.5. {{ :products:waveshare-dust-sensor-sharp-gp2y1010au0f:waveshare-dust-sensor-sharp-gp2y1010au0f.1.jpg?nolink |}} ===== Пример работы для Arduino ===== На роль мозга для работы с датчиком пыли рассмотрим платформы из семейства [[amp>collection/arduino?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Arduino]], например [[amp>product/arduino-uno?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Arduino Uno]]. [[articles:arduino-ide-install|Как начать работу с Arduino?]] В качестве примера выведем концентрацию твёрдых мелкодисперсных частиц в Serial-порт. ==== Что понадобится ==== * [[amp>product/arduino-uno?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Arduino Uno]] * [[amp>product/waveshare-dust-sensor-sharp-gp2y1010au0f?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Датчик пыли]] * [[amp>product/usb-cable?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Кабель USB (A —B)]] * [[amp>product/pin-header-straight-symmetric-1x40?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Контактные штыри PLS-40 (4 контакта)]] ==== Схема устройства ==== {{ :products:waveshare-dust-sensor-sharp-gp2y1010au0f:example-arduino-basic-reading.1.png?nolink |}} ==== Код для Arduino ==== // Определяем ядро платы 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 ===== На роль мозга для работы с датчиком пыли рассмотрим компьютеры из семейства [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Raspberry Pi]], например [[amp>product/raspberry-pi-4-model-b-4-gb?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Raspberry Pi 4 Model B]]. [[articles:rpi-guide|Как начать работу с Raspberry Pi?]] В качестве примера выведем концентрацию твёрдых мелкодисперсных частиц в консоль. ==== Что понадобится ==== К сожалению в компьютере Raspberry Pi нет встроенного аналого-цифрового преобразователя. Используйте плату расширения [[amp>product/raspberry-pi-troyka-hat?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Troyka HAT]], которая добавит малине аналоговые пины. * [[amp>product/raspberry-pi-4-model-b-4-gb?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Raspberry Pi 4]] * [[amp>product/raspberry-pi-troyka-hat?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Troyka HAT]] * [[amp>product/waveshare-dust-sensor-sharp-gp2y1010au0f?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Датчик пыли]] * [[amp>product/power-supply-adapter-robiton-tn2000s?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Импульсный блок питания Robiton TN2000S]] ==== Схема устройства ==== {{ :products:waveshare-dust-sensor-sharp-gp2y1010au0f:example-raspberry-pi-basic-reading.1.png?nolink |}} ==== Код для Rython ==== Для работы примера установите библиотеку [[https://pypi.org/project/troykahat/|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 | Опасное | ===== Элементы платы ===== {{ :products:waveshare-dust-sensor-sharp-gp2y1010au0f:waveshare-dust-sensor-sharp-gp2y1010au0f-annotation.png?nolink |}} ==== Сенсор частиц Sharp GP2Y1010AU0F ==== Модуль WaveShare Dust Sensor построен на оптическом сенсоре {{ :products:waveshare-dust-sensor-sharp-gp2y1010au0f:gp2y1010au0f-datasheet.pdf |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 преобразователь {{ :products:waveshare-dust-sensor-sharp-gp2y1010au0f:pt1301-datasheet.pdf |PT1301}} обеспечивает питание [[#сенсор_частиц_sharp_gp2y1010au0f|оптического сенсора Sharp GP2Y1010AU0F]], которому для стабильной работы необходимо напряжение 5 вольт. Диапазон входного напряжения преобразователя от 2,5 до 5 вольт. Выходное напряжение 5 В с максимальным выходным током 300 мА. ===== Принципиальная схема ===== [[this>_media/products:waveshare-dust-sensor-sharp-gp2y1010au0f:waveshare-dust-sensor-sharp-gp2y1010au0f-schematic.pdf|{{:products:waveshare-dust-sensor-sharp-gp2y1010au0f:waveshare-dust-sensor-sharp-gp2y1010au0f-schematic.png}}]] ===== Габаритный чертеж ===== [[this>_media/products:waveshare-dust-sensor-sharp-gp2y1010au0f:waveshare-dust-sensor-sharp-gp2y1010au0f-dimensions.pdf|{{:products:waveshare-dust-sensor-sharp-gp2y1010au0f:waveshare-dust-sensor-sharp-gp2y1010au0f-dimensions.png}}]] ===== Характеристики ===== * Модель: Waveshare Dust Sensor (SKU 10500) * Сенсор частиц: Sharp GP2Y1010AU0F * Тип датчика: оптический * Сигнал датчика: аналоговый * Диапазон измерений: 0–500 мкг/м³ * Диаметр отверстия для воздуха: 9 мм * Напряжение питания: 2,5–5 В * Потребляемый ток: до 20 мА * Размеры: 46,1×45,8×21,2 мм ===== Ресурсы ===== * [[amp>product/waveshare-dust-sensor-sharp-gp2y1010au0f?utm_source=man&utm_campaign=waveshare-dust-sensor-sharp-gp2y1010au0f&utm_medium=wiki|Датчик пыли Waveshare Sharp GP2Y1010AU0F]] в магазине. * [[https://github.com/amperka/hardware-drawings/blob/master/waveshare-dust-sensor-sharp-gp2y1010au0f.svg|Векторное изображение датчика пыли Waveshare Sharp GP2Y1010AU0F]] ==== Инструкции ==== * {{ :products:waveshare-dust-sensor-sharp-gp2y1010au0f:waveshare-dust-sensor-sharp-gp2y1010au0f-user-manual.pdf |User Manual на модуль Waveshare Sharp GP2Y1010AU0F}} ==== Документация ==== * {{ :products:waveshare-dust-sensor-sharp-gp2y1010au0f:gp2y1010au0f-datasheet.pdf |Datasheet на сенсор частиц Sharp GP2Y1010AU0F}} * {{ :products:waveshare-dust-sensor-sharp-gp2y1010au0f:pt1301-datasheet.pdf |Datasheet на повышающий DC-DC преобразователь PT1301}}