====== Датчик пыли 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}}