Тут было много обзоров всяких сенсоров для мониторинга состояния воздуха, хочу показать короткий обзор на сенсор измеряющий количество частиц пыли категорий PM2.5 (диаметром меньше 2,5 мкм) и PM10 (диаметром от 2,5 до 10 мкм) в воздухе.
Принцип действия основан на анализе рассеянного света от частиц пыли подсвеченных лазерным излучением.
За подробностями прошу под кат…
Сенсор довольно новый, разработан компанией
inovafit.
Характеристики:
1) заявленная скорость реакции не менее 10 с;
2) разрешение: 0,3 мкг / м3;
3) напряжение питания: 4,7 ~ 5,3 В;
4) потребляемая мощность > 1 Вт (я так понял пиковая);
5) продукция прошла сертификацию CE / FCC / RoHS (может кому-то и пригодится);
6) температурный диапазон: -20 ~ +50 °C;
7) размеры: 71 мм * 70 мм * 23 мм.
Данные с датчика выдаются по UART раз в секунду.
Вот немного картинок, которые утащил
отсюда:
Вот это уже мой:
До этого мне приехали датчики попроще
GP2Y1010AU0F, но адекватно заставить их работать с ардуиной я так и не смог, сенсор выдавал слишком маленькие значения на аналоговом выводе, которые при пересчёте по формуле из описания давали отрицательное значение… (Нормально он реагировал только на карандаш в отверстии и то выдавал не то напряжение, которого я ожидал). Не исключаю кривизну своих рук, но так или иначе этот приборчик удобнее, выдаёт данные в цифровом виде, имеет встроенный пропеллер для прокачивания воздуха и носик для подключения трубки для небольшого отвода.
Свой сенсор я подключил к платке Orange pi zero, которая по вайфаю через MQTT отправляет данные на сервер Home Assistant, который крутится на малинке. Убрал его правда подальше в коридор, т.к. пропеллер всётаки шумит хоть и тихо, но мне мешает ночью спать (по шуму тише, чем тихий ноут типа моего lenovo t61).
Вот тут немного скопипащенного чужого кода без проверки CRC данных и с усреднением на 30 секунд.
import serial
import time
import struct
import paho.mqtt.publish as publish
mosquitto_ip = "192.168.1.86"
sens_name = "SDS011_1"
n = 30
ser = serial.Serial('/dev/ttyS2', baudrate = 9600, stopbits=1, parity="N", timeout=2)
#ser.open()
ser.flushInput()
byte, lastbyte = "\x00", "\x00"
while True:
lastbyte = byte
byte = ser.read(size=1)
# We got a valid packet header
if lastbyte == "\xAA" and byte == "\xC0":
sentence = ser.read(size=8) # Read 8 more bytes
readings = struct.unpack('<hhxxcc',sentence) # Decode the packet - big endian, 2 shorts for pm2.5 and pm10, 2 reserved bytes, checksum, message tail
pm_25 = readings[0]
pm_10 = readings[1]
# ignoring the checksum and message tail
for i in range (1,n-1):
b1 = ser.read(size=2)
sentence = ser.read(size=8)
readings = struct.unpack('<hhxxcc',sentence)
pm_25 = pm_25 + readings[0]
pm_10 = pm_10 + readings[1]
pm_25_m = round(pm_25/(n*10.0),2)
pm_10_m = round(pm_10/(n*10.0),2)
#print "pm_2.5:",pm_25_m,"ug/m^3 PM 10:",pm_10_m,"ug/m^3"
#print "raw: %.2f " %pm_25
ser.close()
try:
publish.single("sens/SDS011_1/pm_2.5", pm_25_m, hostname = mosquitto_ip)
publish.single("sens/SDS011_1/pm_10", pm_10_m, hostname = mosquitto_ip)
except Exception:
print "No mosquittoo ((("
time.sleep(60)
#time.sleep(30)
ser.open()
Примерно вот так выглядит график для обычного дня. Ночью открыто окно и затягивает с улицы пыль и показания повыше. (График CO2 добавил, чтобы было видно, как себя ведёт, когда никого нет дома).
Показатели количества пыли ведут себя почти не связанно друг с другом. Если трясти в квартире одеялами, заметно увеличивается уровень крупной пыли, а мелкая пыль почти не меняется (пик в конце графика — сдул пыль, перед фотографированием). Уровень мелких частиц поднимается при готовке на кухне (до значений в сотни мкг/м3) и например если жечь аромасвечку (ну тут датчик вообще зашкаливает до ~ единиц мг/м3, если до него дымок дойдёт, так что хорошая альтернатива датчику дыма).
Также ко мне приехала другая версия SDS021, её пока не подключал, если дойдут руки, напишу и про неё.
Это конечно актуальнее китайцам с их смогом в крупных городах, но и для Москвы интересно. Например заметил повышение PM 2.5 во времяя новогодних салютов…
Если нет, то можно стучать до позеленения, результат будет нулевым.
У меня дома мультиметр с логгером, можно использовать для контроля напряжения в сети, но если решу пожаловаться, то далеко не факт что отреагируют, так как прибор не поверен, а для поверки он должен быть в реестре средств измерения.
А вообще для жалобы в МЧС или Роспотреб/природнадзор прибор не нужен… При многочисленных жалобах они сами должны с прибором приехать.
*А если прибор поверен вы будете доказывать, что именно здесь намерили или не дымом от сигареты подули…
Спутал, т.к. фильтры обсуждали вот тут mySKU.me/blog/china-stores/57949.html
Так что пока жду весны-лета)))
Про качество воздуха и его измерения хорошо пишет Виктор Борисов, если тема интересна то стоит почитать его блог.
Вот один из свежих его постов на эту тему:
victorborisov.livejournal.com/300594.html
Нет дыма — сенсор видит черную стенку напротив. Есть дым — сенсор видит свет рассеянный им.
Перпендикулярно плоскости, в которой лежат каналы проходит сквозное отверстие. Воздух проходит через точку, где пересекаются каналы и блики от пыли фиксируются детектором. Тот считает их количество и яркость.
Куплен 2 с лишним года назад, тогда назывался SDL307
Точность и ограниченное количество каналов не порадовали
forum.ixbt.com/post.cgi?id=print%3A47%3A012215&text=sdl307&user=&date=&date_days=980&date1_d=9&date1_m=5&date1_y=2015&date2_d=12&date2_m=1&date2_y=2018&posts=&pages=
И слать графики на narodmon.ru будет наверное проще и полезнее для окружающих.
forum.ixbt.com/topic.cgi?id=47:12215
aircms.online/#/