Некоторое время назад я описывал
прибор для мониторинга качества воздуха в помещении, который можно сделать самостоятельно из деталей заказанных в известном китайском интернет магазине.
Где-то в комментариях или письмах мне посоветовали дополнить прибор датчиком BME280 для расширения функциональности.
Я посмотрел описания и обзоры этого датчика и понял что это отличная идея.
Датчик представляет из себя интегрированный комплекс датчиков позволяющий измерять температуру и влажность воздуха, а так же текущее атмосферное давление.
Характеристики датчика вполне достойны для применения в бытовых условиях.
В первую очередь он довольно маленький, что позволяет легко закрепить его вне прибора, что бы на него не влиял разогрев остальных элементов. Датчик питается напряжением 3,3 вольта, что меня устроило. Большинство датчиков и контроллер в моем приборе питаются именно этим напряжением.
Точность показаний заявленных производителем:
Температура — 0,5°C
Влажность — 3 %RH
Давление — 1.0 hPa
Датчик имеет интерфейс подключения I2C, что в моем случае меня очень порадовало. Дело в том что свободных ног, GPIO у контроллера в моем приборе не осталось. Но этот интерфейс позволяет подключить несколько разных датчиков на одни и те же контакты, различая их по адресам на шине. Шина I2C в моем приборе уже используется для доступа к модулю часов DS3231.
И я просто подключил новый датчик прямо к контактам модуля часов.
В результате этого не потребовалось изменения основной платы прибора. И те приборы которые были сделаны по старой схеме могут быть легко модернизированы до нового варианта. Достаточно припаять на шлейфе новый датчик и перепрошить контроллер.
В прошивке я добавил модуль обработки данных полученных с нового датчика BME280 и изменил модуль вывода информации на дисплей. Теперь каждые 15 секунд информация об уровне пыли заменяется на информацию полученную с нового датчика. Температуру, влажность, атмосферное давление.
Сам датчик BME280 я вынес за пределы корпуса прибора и разместил на задней панели.
На картинке это маленький радиатор в верхнем левом углу.
Для работы остальных датчиков используется вентилятор, который не спеша продувает корпус.
Вот такой получился окончательный результат:
Для тех кто заинтересовался конструкцией прибора может пройти по ссылкам:
Электрическая схема прибора
→
Тут можно взять новую прошивку
→
Тут Архив с файлами скриптов
→
Тут инструкция о том как самостоятельно собрать подобный прибор
Инструкцию о том как прошивать контроллер
Описание первого варианта прибора
Ну и преобразователь уровней на али готовый копейки стоит.
Или, например, если прикручивать известный цветной дисплей 128X128 1.44" SPI…
Очень круто конечно, прошивки и все такое. Но мне кажется, тема датчика не совсем раскрыта
Как с его точностью по разным параметрам?
Младший брат BMP180/280 ощутимо врал при измерении температуры
К тому же при постоянном питании еще и слегка нагревался стабилизатор напряжения?)
Давление тоже показывал довольно не точно.
Про влажность я вообще молчу — такие датчики показываю что-то корректное только при комнатной температуре.
Как у этого датчика с самонагревом?
Инертностью и прочими параметрами?
При включении прибора температура коррелирует с другими термометрами, потом медленно ползет вверх на 2-3С
Стабилизатор конечно low-drop. Но он все же линейный. И нагрев его зависит от входного напряжения. 1мкА — это только в режиме холостого хода. I2C при передаче явно больше 5мкА кушает. там только подтягивающие резисторы стоят на 4.7К. Так что для корректного измерения мерить не очень часто и переводить его в режим сна или вовсе питание отключать.
Ну и из собственного опыта (BMP180, BME280) — показания стабильны, саморазогрева не наблюдается.
паралельно подключил dht22 & ds18b20 для проверки…
так и есть завышает собака на 2.2-2.3градуса :(
BMP180 давление показывает архиточно (максимум расхождения — 1-2мм.рт.ст по отношению к данным Я.Погоды). Это раз.
За температуру — не скажу, я эти показания не беру, у меня температуру и влажность меряет SHT30.
Два: ни в одном из упомянутых датчиков никаких стабилизаторов напряжения не намечается (оба питаются от 3.3в).
Вряд ли кто то будет смотреть на высоту расположения метеостанции и приводить давление к своей высоте.
Датчики BMP085/180/280 используются как раз для определения высоты за счет измерения давления. Так что наверное по давлению их можно привести. А вот температурный датчик в таких приборах вспомогательный, нужен больше для термокоррециии показаний.
В общем давление у меня как то мерится, но с показаниями метеоцентров соотносится на 10-15мм обычно. В принципе это 2% — вполне хватает. А вот температура 2-3C это уже 10%
Так что тоже отдельным датчиком пользуюсь
Хуже всего датчик влажности типа DHT22 при отрицательных температурах.
У меня DHT22 работает на улице больше года, может тоже скоро сдохнет, но я много не набирал. Показания температуры совпадают с другими термометрами, влажность проверить нечем. Установлен в пластиковую коробочку с отверстиями в нижней части.
Легко проверяется, берется хороший барометр, тот у которого например тройная камера и у которого стрелку не надо толкать принудительно, т.е. не приукрашенный ширпотреб с аляповатыми надписями и в машину, на холмистой местности сразу визуально видно разницу в давлении во впадине и на вершине, а можно проверить на высотке.
У меня установлен конечно же BME280. Т.е. с влажностью.
Если интересно, то вот он: narodmon.ru/601
На показания до середины июля особо не смотрите. Там были проблемы с зависающей ESP'шкой.
Но датчик на улице с февраля висит.
Или просто пройти мимо?
Автор должен ваш уровень знаний знать и суметь угодить?
Это же не возможно)))
Напишите свое, а мы почитаем ;-)
PS добавилось сюда, в конце не даёт повторить текст — просто горе!(
Ну у него же там esp, экран и другие датчики… Хотя я вообще не понял зачем там esp и экран с таким «дизайном»…
А вообще, мне больше так нравится. :)
Вкратце выводы следующие: при измерении влажности DHT22 сильно врёт, HTU21D и BME280 измеряют правильно. При измерении температуры: самый точный DS18B20, DHT22 — относительно точный, но имеет большую тепловую инерционность. HTU21D и BME280 стабильно завышают температуру на 1..1.5 градуса.
Подробнее тут vladikoms.livejournal.com/97796.html
Учитывая что там сенсор Bosch BME280 получается неплохим вариантом.
Так вот, показаний влажности больше 50% в квартире не наблюдал никогда, даже, когда дышишь на датчик. Ввиду того, что влажность у меня контролируется увлажнителем, как-то не придавал особого значения этому, но все же… Хотя сейчас мысль пришла код проверить.
Ну а температуру действительно надо мерять DS18 — в BME280 по моему разумению датчик температуры встроен для обеспечения температурной компенсации.
Сходи по ссылке на thingspeak.com/channels/230321 — там будет ссылка на ЯДиск, где расположены материалы и, в том числе, исходники.
Наскидку, из определений:
— пины подключения аппаратуры
CONFIG.PINS = {
CO2 = 2,
DS18 = 3,
DHT22 = 1,
DISP = {
CS = 6, — fake, don't use, only for init disp soft
DC = 8,
RES = 0
},
I2C = { — все, что висит на I2C — BMx280, DS3231 и т.д.
SCL = 6,
SDA = 4
}
}
Какой пин как кодируется можно посмотреть по ссылке nodemcu.readthedocs.io/en/dev/en/modules/gpio/
В дисплее CS не используется, он, насколько я помню подтянут в 1, используются только DC и RES.
На i2C параллельно сидят часы и датчик BME280.
Остальные понятно из приведенного кода.
Код для отсылки на thingspeak лежит в файле netSend.lua
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.