Комментарии 144
Цена постоянно обсуждается в комментариях к таким статьям. Например
https://geektimes.ru/company/dadget/blog/253084/#comment_8436346
Ну я и написал — «хорошие датчики стоят 70+ баксов».
gy-21 SI7021 i2c
Ух ты, отдельное спасибо за упоминание! Не знал, что такие бывают.
Последнее время стоял все время на зарядке как будильник, в этом режиме экран постоянно горел.
ЗА примерно 3 года выцвел в ноль.
Единственное что хочу у себя добавить — это небольшой литиевый аккумулятор, который будет заряжаться при питании от USB. Так появится еще и автономность.
Вместо bmp280+gy-21 планирую попробовать BME280, он измеряет давление, температуру и влажность сам в одном флаконе. Или может по нему есть какие-то нарекания?
Ну, и поглядываю на Wemos D1 mini, можно еще места сэкономить…
небольшой литиевый аккумуляторДатчики углекислого газа потребляют достаточно большую мощность. И прогреваются при этом несколько минут, импульсами включать не получится.
Так что придётся или аккумулятор делать уровня 18650, или хватать будет на несколько часов работы.
Те пару ИК датчиков что мне попадались начинали выдавать показания уже через 20-30 секунд и более-менее адекватные показания, а не случайные значения от балды. Проверить эталона нет, но по крайней мере показания не сильно менялись после выжидания нескольких дополнительных минут. В пределах 5-15% и тут сложно сказать сколько из этого плавающая точность датчика, а сколько реальные изменения концентрации в воздухе от моего собственного присутствия и движения воздуха в помещении.
Да, только на несколько дней заряда хватит. Но не несколько часов. Как основной(единственный) источник для постоянной работы поэтому подходит плохо, но как дополнительный — вполне нормально.
Питание от аккумулятора возможно, но тогда стоит использовать другой дисплей, вводить esp8266 в спящий режим, и подключаться к WiFi периодически.
а вот сэкономить на питании mh-z19 сложнее. Его лучше держать включенным постоянно. Он потребляет ток около 18ma, а значит система с аккумулятором на 700ma, как у маленькой нокии, сможет продержаться 1,5 суток.
Чтобы не искать свободные usb в каждом помещении или не таскать какой-нибудь PowerBank. А просто достал, включил — работает. Естественно не вечно.
Даже сутки работы для таких целей более чем достаточно, можно и неплохую динамику заснять, если потребуется.
<img src="
![](https://habrastorage.org/files/fad/efa/fb8/fadefafb8a87491ea4ae3b947bf128ae.jpg)
![](https://habrastorage.org/files/2a3/98f/eb5/2a398feb50914f548bdaf4f1e6ac958a.jpg)
Увы, нет одинаковых, купленных пачкой — чтобы сравнить их показания, все покупались поштучно.
Интересно было бы увидеть статистику по разбросу, точности и т.п. по самым популярным датчикам.
По году-полутора наблюдений могу сказать, что разброс bmp/bme в пределах 0.5..1С и 0.5..1.6 мм.рт.ст. при том, что высота установки примерно одинакова (±0.5м). С влажностью сложнее, но BME280 по ощущениям гораздо адекватнее DHT22, особенно при высокой влажности, где DHT «промокает» и держит 99.9% довольно долго. Разность по влажности DHT BME была порядка 5-7.
Есть три рядом стоящих датчика — BMP на плате с «мозгами» на ESP8266, BME+DS18B20 на выносном датчике в паре метров рядом. Давление различается на 0.5мм, стабильно за всё время наблюдений. А вот температура 18B20+BME гораздо непредсказуемей. во-первых, BME _гораздо_ лучше ловит отраженное тепло (коррекция -2.2С по сравнению с 18B20), во-вторых у них сильно разная инерционность и расхождение гуляет до пары-тройки градусов (особенно, когда сосед снизу окно открывает ;) ) Что, в общем-то, логично, т.к. BMx250 позиционируются в том числе для навигации в помещениях.
ЗЫ: где-то мелькал совет по вымачиванию DHT22 полчаса в спирте с последующей сушкой несколько часов — вроде как перестаёт откровенно левые показания давать и выравнивается между датчиками. Не пробовал…
Собирал на arduino pro micro этот же датчик + датчик температуры + microsd, ethernet, RTC ии… скажем для дисплея доступных 29кб прошивки уже не хватает
Корпус — напечатаная надстройка над телефонной розеткой (сами джеки для подключения питания и внешнего термодатчика)
![image](https://habrastorage.org/getpro/geektimes/comment_images/b60/22d/b7d/b6022db7d3cecd237e2dea1324681676.jpg)
![image](https://habrastorage.org/getpro/geektimes/comment_images/e8f/fc2/19f/e8ffc219ff25aa95b9a98a55fa5b914d.jpg)
ssid и ip-шник-то зачем??? :)
Можете сколько угодно хаить едакий девайс, но
![/](https://habrastorage.org/files/a48/c16/2e8/a48c162e850146eabca0bbb396925aab.jpg)
ip-шник (он внутренний за роутером c DHCP) для того чтобы можно было зайти на внутренний веб-сервер esp8266 и посмотреть показания датчиков.
Это первый вариант устройства. Главные на мой взгляд недостатки это питание от usb. Надо переходить на батареи, монохромный дисплей и использование спящего режима.
Веб сервер оказался никому не нужен. Самые удобные «показометры» это экранчик и отправка данных куда-нить на сервер по get(php) или mqtt (чтобы народ мог посмотреть с телефона например).
P.S. Для программирования использовал среду arduino
Хотя мой друг, живущий в Шанхае, активно использует подобную систему с датчиком пыли.
Достаточно точный. Реагирует на пайку, открытие корпуса компа, уборку в комнате.
Как калибровать только непонятно.
![image](https://habrastorage.org/files/0ba/48d/d81/0ba48dd81c9e4cf79b027110720c2d41.png)
Удобно в ванной комнате.
Если заморачиваться с чистотой, то перед всеми действиями необходимо помыться, тотально и глобально.
Полиэтиленовую шапочку и топлесс :) или что-то типа медицинского халата.
И настоятельно рекомендую потренироваться без пациента :)
Добавил раздел подключение
А кто-нибудь может посоветовать аналогичный готовый девайс?
Можно даже без экранчика, главное чтоб по сети данные можно было смотреть, без облаков и прочих удалённых сервисов (либо они должны быть опциональны).
http://mybroadlink.ru/catalog/meteostanciya-e-air/
на али стоит 2400р.
Только вместо CO2 показывает «качество воздуха» а это может быть что угодно.
у китайцев цены примерно такие же и выше.
Она же USBшная, а не сетевая. Плюс требует дополнительный софт для работы.
Сколько будет стоить?
но что если делать, то нужно сделать печатную плату, чтобы упростить монтаж и сделать еще чуть компактнее.
Да и качество 3д-печатного корпуса не дотягивает до ожиданий от купленного устройства.
Если же wifi сеть не обнаружится, то монитор загрузится в режиме ожидания настройки и поднимет точку доступа.Имхо, кнопка предпочтительнее тем более, что кнопка для прошивки все равно нужна:
зажатая кнопка + включение питания — переход в режим прошивки
включение питания + надпись на экране на пару секунд «Press button to enter setup» + нажимаем кнопку — переход в режим конфигурирования
PlatformIOУже можно пользоваться? Когда пробовал был очень сырой продукт, но явно амбициозный :)
Корпус3D печать это здорово и модно, но все ж таки несколько аляповато получилось.
но провода внутри все равно занимают большую часть местаС учетом коннекторов — чудо, что вообще влезло )
Ну, то все мелкие придирки, за исходники отдельное спасибо!
Кнопка, по моему мнению, не нужна.
Всего одна строчка в коде `wifiManager.setTimeout(180);` позволяет не входить в режим настройки навечно — если проблема с сетью временная.
Прошивка по воздуху активируется через мобильное приложение, для прошивки через провод, кнопка тоже не нужна.
Обновление по воздуху работает по другой схеме. URL с которого нужно загрузить новую прошивку содержится в текущей прошивке, а не передается по воздуху. По воздуху отправляется лишь команда «проверить обновления прошивки»
К слову здесь используется простой http, но проблем с https (в том числе с tls 1.2) быть не должно
Внутренний параноик:
— это еще надо посмотреть как генерятся эти логин и пароль.
Внутренний параноик (про TLS):
— да, кстати, не припомню об реальном использовании ssl на девайсах с esp8266
Внутренний параноик (вообще):
— знать бы еще что эти китайцы в реализацию ip-стека засунули…
:)
Можно ссылкой…
Это описано в документации к esp8266/arduino на английском
Собрано два девайса 1. Макетка (датчики немного разнесены) — ESP8266 + MH-Z19 + SHT10 + BMP280. 2. «Готовое изделие» ESP8266 + MH-Z19 + DHT22 (датчик температуры вынесен на корпус).
При «стоячем воздухе» разница в показаниях до 3'C, при проветривании (с учетом что стол стоит в углу) снижается до 1'C.
Нагрев от понижаюки и самого еспешки довольна существенный.
да я тут реализовал сие наконец тоже и в 10 минут прикрутил к thingspeak (сервер из статьи как-то непонятно как сейчас работает, и вдобавок поставить приблуду из QR кода стоило $4, как настраивать ее неясно..)
упомянутый MH-Z19 может ещё и температуру говорить, хотя в даташите это не указано. Однако указано, что градусник там есть, что и побудило меня порыться в интернете на эту тему.
https://revspace.nl/MHZ19#Command_0x86_.28read_concentration.29
Байт сразу после СО2 — температура плюс некоторая константа (по-хорошему надо её калибровать). Хотя здесь ложка дёгтя — для генерации дальнего ИК используется лампочка Ильича, каковая дополнительно нагревает датчик. Но это опять же мерять надо, насколько она его греет.
Следующий байт — судя по всему, символизирует точность, достигаемую прибором на настоящий момент. А оная точность время от времени ухудшается — когда датчик тревожат, открывают дверь, либо вовсе без видимых причин (быть может, калибруется?), и тогда на графике мы видим пляски святого Витта. Коли всё хорошо — то байт равен 64, а когда плохо — то падает до 4. Например, это может пригодиться, ежели мы чем-то управляем на основании измерения СО2 — коли мы видим, что байт упал ниже 64, мы не рвёмся сразу переключать реле, а ждём, пока снова не станет 64, и показаниям снова можно будет доверять (ну или просто усредняем усерднее).
Далее там ещё два байта — а вот что они значат, одному аллаху ведомо. Но, видимо, ничего, что бы относилось к параметрам окружающей среды. Автор упомянутой статьи высказывает предположение, что это давление, но вряд ли давление будет час стоять на одном месте с абсолютной точностью, затем несколько минут падать, а затем столь же незыблемо сохранять своё значение.
Конец цитаты.
Вот график: https://hsto.org/files/80c/0d2/20e/80c0d220e601462391b20c35ac9a7f13.png
Когда температура падает (приблизительно до 8 градусов) — это я окно открыл.
Собственно, видно, что когда показания СО2 колбасит, красная линия уходит вниз. И видно, что датчик довольно нежный — малейший ветерок — и показания скачут (быть может, это мой экземпляр такой?).
А также видно, что чуть раньше 24 часов она внезапно волевым решением приравнивает концентрацию СО2 к 400 ппм. Говорят, что она таким образом автоматически калибруется — видит минимальную концентрацию за сутки и считает, что это 400 ппм. Лично на мой взгляд это довольно подлое поведение — калиброваться без спроса, к тому же тогда, когда нет никакой уверенности, что перед тобой эталон. Вполне может быть, что окна вовсе за сутки не будут открываться, да и с открытыми окнами нет гарантии, что у нас именно 400 — быть может, мы в Москве или, чего доброго, в Шанхае? Про график Килинга я и вовсе не говорю — надо очень долго ждать, чтобы изменение глобальной концентрации СО2 превысило заявленную погрешность прибора.
Я пытался калибровать его в атмосфере чистого азота (купил жидкий азот для этого), толку ноль.
Реально этот датчик подходит для примерной оценки, не более.
Этот случай как нельзя лучше раскрывает всё паскудство «интеллектуальной» автоматической калибровки. Выдавай он «сырые» значения — можно было бы самому вытаскивать из ни концентрацию (или хотя бы понять, сошёл датчик с ума или нет). Быть может, оные значения выдаются какой-либо командой из тех, что не проверены в упомянутой статье.
Правда, в описанном происшествии есть некоторая доля моей «вины». Вначале я подсоединил датчик к +5 вольтам ардуины (а её к УСБ через трёхметровый удлинитель). Так она двое суток поработала. А потом подсоединил к +3,3 вольтам той же ардуины, а они там берутся из крена на 160 мА. И, видимо, этих мА ему не хватает, что выражается в визуально более долгом времени горения лампочки внутре и повышению температуры на 2 — 3 градуса. Тем не менее даже при таком раскладе он выдавал значения от 400 и до чуть более 2000, правда, норовя выдать 400 либо 1755. А ещё через сутки я подключил оный датчик к аккумулятору, чтобы ему точно тока хватило. И вот здесь-то и произошло описанное событие, как в том анекдоте про японский станок и суровых русских мужиков. Тем не менее вины с датчика это не снимает — коли ты такой умный, то мог бы догадаться, что не надо калиброваться, коли тебе питания не хватает. Или по крайней мере не распространять эту калибровку на тот случай, когда питания хватает.
И похоже, что я таки понял, что символизирует неведомое число в конце вывода датчика. А символизирует оно время работы лампочки (ну или энергию, затраченную на оную работу). При питании от 5 вольт было чуть более 10 тысяч, а от крена на 3,3 В — уже более 15 тысяч (то бишь больше, чем при старте датчика). А от аккумулятора — сейчас рисует 9676.
Теперь следующий шаг — надо вогнать ему в питание 1 ом и записывать график напряжения на таковом. И посмотреть корреляцию с неведомой величиной. А затем потестировать различные недокументированные команды — быть может, какой-то из них можно управлять зажиганием/измерением непосредственно.
> Но у меня после месяца непрерывной работы скачки показаний раз в сутки сильно уменьшились.
А после перезагрузки сохраняется калибровка или слетает?
На графике видны почти ежедневные ступеньки на 50-100 ppm, около 11 утра
![image](https://habrastorage.org/getpro/geektimes/comment_images/36a/2b1/283/36a2b12830defd6e344495f42bdd36cb.png)
По графику хорошо можно оценить насколько точная у датчика на данный момент калибровка 400ppm — ведь по идее падение к 400 должно быть плавным, если в комнате не открыто окно, а открыто в другом месте.Плюс у меня датчик стоит в почти закрытой коробке, таким образом убираются случайные пики.
Так вот падение к 400 иногда прямо очень плавное, а иногда — совсем нет.
Сегодня находился в комнате 10кв. метров, с датчиком 2.5 часа. Дверь закрыта. Показание выросло линейно с 500 до 1500ppm. После открытия двери за две минуты упало до 900ppm, дальше еще за 12 минут — 700ppm. Выглядит адекватно.
А вот на день раньше днем — полка 400ppm при том, что в комнате был человек (это видно по графику датчика движения) и в соседней комнате было чуть приоткрыто окно (это видно по температуре, гг). Мне кажется это странным.
Похоже, что перезагрузка датчика не изменила калибровку. Скачков на 200-300 ppm нет.
Я у своего датчика вызывал калибровку, замыкая какие-то пины (в документации описано). И не заметил разницы между калибровкой в азоте и на воздухе.
Датчики стояли на макетке.
Кстати, на Алиэкспресе можно получать кэшбек до 10% процентов с почти мгновенным выводом. Пишите в личку, расскажу как.
Не думал что тема еще актуальна так как в свое время собирал схожий девайс о котором я хотел написать еще год назад, но все никак не нашел свободного времени. Принцип работы немного отличается от того что собрал автор. У моей метеостанции на месте мозгов стоит Atmega328, а ESP8266 играет роль модема. Так-же имеется "протокол" для подключения беспроводных мини-модулей к которым можно понацеплять кучу датчиков, и все это добро отправлять на сайт народмониторинга. На данный момент из сенсоров стоят счетчик гейгера, СО2 (MH-Z19), BME280х2 и фоторезистор. В планах было присобачить датчики влажности почвы для напоминаний о поливе растений, но не свершилось, так как у меня больше нет растений в доме :) беспроводные модули кстати запитаны от CR2032. К чему про все это — если кто работает над схожим проектом или просто имеются вопросы, то можете мне написать. Постараюсь помочь чем смогу, так как думаю до написания статьи уже наверняка дело не дойдет.
"Протокол" — это было громко сказано, поэтому и обернул это слово в кавычки. На самом деле все до безобразия просто. Используются нативные библиотеки <nRF24L01.h> и <RF24.h> а данные перед отсылкой пакуются в одну строчку разделенную запятыми, где первый параметр это ID датчика а все остальные параметры это собственно показания разных датчиков. Т.е когда "базовая станция" получает данные с удаленного датчика, первым делом она их распаковывает и сверяет ID, после чего уже точно знает какого рода данные полученные, сколько параметров и как их правильно разбить. Ко всему этому я добавил low power команды, чтобы после отправки данных, удаленный датчик засыпал и переводил NRF в энергосберегающий режим до следующего просыпания по истечению n-ного количества времени. Соответственно, как вы уже наверное догадались, все коммуникации работают в одностороннем порядке. Пишу развернутый ответ так как одновременно хотел ответить пользователю slgeo .
Код относящийся именно к передаче и получению данных выглядят так (заранее извиняюсь за английский в комментариях — мне так было проще):
в setup:
radio.begin(); //radio.setPayloadSize(8); //reduce payload to 8 (32 max) radio.setDataRate(RF24_250KBPS); //Pay attention to transfer speed radio.setRetries(15, 15); radio.openWritingPipe(rxAddr); radio.stopListening();
в loop:
radio.powerUp();`
sprintf(msg, "%d,%d,%d,%d,%d,%d", sensorID, temp1002, hum1002, pres1002, lux1002, bat1002);
radio.write( &msg, sizeof(msg)); //Send data to 'Receiver'
radio.powerDown();
`
в define:
`//****Data received via NRF24***
char msg[32];
int sensorID;
int data1;
int data2;
int data3;
int data4;
int data5;
//****sensor ID1001 — Base Station. No protocol — continous polling
float temp1001;
int hum1001;
float pres1001;
float avgcpm; //CPM for geiger events
float uSv; // uSv converted from CPM
float uRh; // Microroentgen= uSv100
int COppm;
//*****sensor ID1002 — Outside weather. Protocol ID:Temp:Hum:Pres:Lux:Bat
float temp1002; //apply formula (float)data/100-50
int hum1002;
float pres1002; //apply formula (float)data/100
int lux1002;
float bat1002; //apply formula (float)data/100
//*****sensor ID1003 — Hygrometer plant1. Protocol ID:Hygr:Bat
int hygr1003;
float bat1003; //apply formula (float)data/100
//**sensor ID1004 — Hygrometer plant2. Protocol ID:Hygr:Bat
int hygr1004;
float bat1004; //apply formula (float)data/100
в Setup-e обычная инициализация NRF24l01
radio.begin();
radio.setDataRate(RF24_250KBPS);
radio.openReadingPipe(0, rxAddr);
radio.startListening();`
в loop:
`//check radio actively for updates
while (radio.available())
{
digitalWrite(ledpin, HIGH);
radio.read(&msg, sizeof(msg));
sscanf(msg, "%d,%d,%d,%d,%d,%d", &sensorID, &data1, &data2, &data3, &data4, &data5);
if (sensorID == 1002) {
//structure read data for ID1002 - outside weather
temp1002 = ((float)data1 / 100) - 50; //apply formula (float)data/100-50
hum1002 = data2;
pres1002 = (float)data3 / 10; //apply formula (float)data/100
lux1002 = data4;
bat1002 = (float)data5 / 100;
}
else if (sensorID == 1003) {
//structure data for ID1003 - plant 1
hygr1003 = data1;
bat1003 = (float)data2 / 100;
}
else if (sensorID == 1004) {
//structure data for ID1004 - plant 2
hygr1004 = data1;
bat1004 = (float)data2 / 100;
}
else if (sensorID == 1005) {
//structure data for ID1005 - reserved for future sensor
}
`
Счетчик Гейгера установлен в центре квартиры там где и база метеостанции. Идеально было бы его поставить за окно или на балкон, но в моем случае это нереализуемо. Думаю ставить его у входа в квартиру не имеет особого смысла если только кто-то из домашних не работает в шахтах и случайно может занести кусок урановой руды в ботинке.
Все правильно Аtmega328 + nRF24L01 + BME280 + фоторезистор + светодиод. Так же стоят пару электролитических конденсаторов на линиях питания. Схемы к сожалению не составлял, но там все предельно просто. CR2032 по моим подсчетам должно хватить на более года работы (в идеальных условиях) если передавать данные каждые 10 минут или 250 дней если передавать данные каждые 5 минут. Дальнобойность проверял в пределах 10 метров через стены — все работало. В спящем режиме такой набор потребляет порядка 6-7 микроампер (если верить дешевому китайскому мультиметру). Самая главная фишка, это подобрать адекватный модуль nRF24L01+ и правильно его настроить, так как даже из одной партии разные модули имеют разный ток потребления. По паспорту, там должно быть что-то около 2 микроампер. + 4 микроампер потребляет Atmega328 в глубоком сне. На данный момент беспроводной датчик уже проработал 4 месяца без замены батареи.
Добавил раздел подключение
Cперва оно попытается подключиться к сохраненной ранее сети и успешно выполнив
Если на роутере есть рут, можно попробовать телеграм-бот поднять и без белого ip, но для этого вероятно надо будет писать код.
Можете посмотреть в сторону narodmon но не знаю как у них с удаленным управлением.
Эта нет, для CO есть недорогой (~$1.3) датчик MQ-7. Он имеет массу недостатков, но задачу решать должен. Он был упомянут в статье на гиктаймс
Да, но СО имеет смысл мониторить только там, где может быть его повышенная концентрация, в гаражах, в квартирах — если есть газовый водогрей или газовая плита. В отсутствии возможных продуктов горения, смысла в мониторинге особо нет. СО2 же есть везде, и при высоких концентрациях продуктивность и комфорт может сильно падать
При курении — да. При дыхании нет. В душных офисах — нет, в них как раз стоит контролировать содержание CO2, которое легко может превысить 2000 ppm.
В организм окись углерода поступает через органы дыхания. Моноксид углерода способен соединяться с гемоглобином в 200 раз быстрее, чем кислород с образованием карбоксигемоглобина (HbCO). Период его полураспада — 4-6 часов. Расщепление карбоксигемоглобина на гемоглобин (Hb) и монооксид углерода (CO) происходит в 10 000 раз медленнее, чем расщепление оксигемоглобина на Hb и O2. Поэтому при наличии во вдыхаемом воздухе CO кислород постепенно вытесняется из гемоглобина. Уже при концентрации 0,1% CO в воздухе больше половины гемоглобина крови превращается в карбоксигемоглобин; в результате нарушается перенос кислорода от лёгких к тканям и развивается так называемое угарное отравление. Карбоксигемоглобин не способен переносить кислород к тканям организма, поэтому при отравлении окисью углерода у человека может быстро наступить смерть. Хроническая экспозиция низких концентраций СО может привести к возникновению таких симптомов, как головная боль, усталость, головокружение, ощущение биения сердца, боли в груди, тошнота, рвота и абдоминальные боли.
…
Результаты исследования уровня монооксида углерода в выдыхаемом воздухе.
Исследование взрослых не курящих лиц показало, что концентрация СО у них определялась в интервале от 0 до 1 ррm. У эпизодически курящих лиц в возрасте от 25 до 62 лет концентрация монооксида углерода определялась от 0 до 3 ррm. У лиц, выкуривающих более 10 сигарет в день концентрация СО определялась от 16 до 21 ррm.
Так, у лиц, выкуривающих в день более 12 сигарет в день, по сравнению с теми, кто выкуривал до 5 сигарет в день, наблюдалось резкое повышение уровня СО. Связано это, по-видимому, с тем, что в организме курильщика накапливается монооксид углерода в бронхолегочной системе, который не успевает вывестись, поскольку при интенсивном курении (более 10 сигарет в день) курильщик, как правило, курит каждые 1-2 часа в день, а период полураспада карбоксигемоглобина составляет 4-6 часов, что и обусловливает высокое содержание СО в организме.
…
Так как концентрация угарного газа в бронхах и легких повышается при длительных поездках на велосипеде по автострадах, нахождении в задымленном помещение, при чрезмерном вдыхании выхлопных газов и т. п.
Источник: http://www.hintfox.com/article/soderzhanie-ygarnogo-gaza-v-vidihaemom-vozdyhe-kak-indikator-tabakokyrenija-podrostkov.html
В общем не совсем понятна эта история, но я так думаю что если в душном офисе соберутся активные курильщики, а это не редкость, то накочегарят они там что мама не горюй…
![image](https://habrastorage.org/files/a1c/8d0/73a/a1c8d073ad1a448d8a666e65a1a067a6.jpg)
Китайская Itead Studio делает вот такую штуку за $20:
Как всегда у Itead, устройство очень хакабельно, open hardware и open software, и тов. Tinkerman написал прошивку, которая отдаёт данные через MQTT на вашу любимую систему мониторинга или автоматизации. Он же обнаружил пару свободных GPIO, так что можно подключить MH-Z19 или экранчик.
kumekay подскажите пожалуйста, нет ли проблемы с выгоранием дисплея при работе 24х7? Может стоит сделать режим снижения яркости\выключение?
ps: я использовал стандартный корпус для поделок с ebay, получилось довольно компакнтно и бюджетно…
![image](https://habrastorage.org/getpro/geektimes/comment_images/cfc/9f0/0ce/cfc9f00ce4c2253aebb1c34eecc02283.jpg)
Рад, что статья оказалась полезной.
Для блинк-а я использую свой сервер, развернутый при помощи https://github.com/kumekay/blynk-server,
поэтому даже не задумывался о ресурсах.
К слову можно развернуть его на scaleway.com за 2.99 евро и не задумываться о потреблении.
Что касается времени жизни дисплея, то пока никаких проблем нет, с другой стороны сенсор включен у меня далеко не постоянно. Я довольно много где использую подобные дисплеи, но везде они отображают не постоянно, поэтому даже спустя полтора года сложно сказать. Может проблема и не так серьезна.
К слову, компоновка как у меня в статье (и как у вас) не очень удачная, тепло от esp8266 может искажать показания датчика.
— Что мешает сделать разъём, для подключения внешних первичников (датчиков)?
Это, заодно, и позволит использовать девайс не только как измеритель
параметров среды (внутри устройства),
но и замерить где-либо ещё (например, за окном).
«но провода внутри все равно занимают большую часть места»
— Их не обязательно брать такими толстыми. Это-же не силовая схема.
Спасибо за эту публикацию.
Экранчик работает, все ок!
Переделал под себя по быстрому — подключение к блинк-серверу по хелпу, все остальное функциями из кода выше.
Еще раз спасибо! Теперь я подключу таки в умный дом датчики со2!!!
ПЫСЫ И да, напиши что блин таки платный. Считывание куар кода стоит конкретно денег. Я зажмотился и разобрался за вечерок во всем, но не все поймут прикол же.
ПЫПЫСЫ Что там за сайт с которого должна ообновляться прошивка? Лежит мертвый.
ПЫПЫПЫСЫ Я так и не смог понять как работает PlatformIO, но я не прораммист, это так, хобби. Все зашил через ардуину, не все библиотеки есть по умолчанию в ардуино иде, написал бы как-что ставить.
![image](https://habrastorage.org/getpro/geektimes/comment_images/6a6/a0f/46f/6a6a0f46fc949e298ba7e81373a1c6c1.jpg)
Короче, материал огонь! Но новички сломают ноги. А людям вроде меня было по кайфу собрать датчик углекислого газа в дополнение к умному дому))
да, тоже реализовал проект вот сейчсас и обнаружил все это. Блунк содрал четыре доллара и неясно как там эту прилагу настраивать. Ардуина ИДЕ рулит.
Кстати на гитхабе автора форк для другого датчика плохо работает с поднятием точки доступа, если одна сетка уже зашита. Не поднимает. Ну, может, это из за того, что у меня почему-то работает со2 и не работают другие датчики.
по повод остального — я хз. если что-то не работает — сделай сам)) я взял части кода и сваял под себя, использовал части из помощи блинка. все заработало, все ок. правда сетку вайфай зашил намертво, все лишнее поубирал.
хватило бесплатного блинка))) но у меня темпер и влажность уже измеряются, мне только со2 нужен.
Вопрос дилетанта, если пока едет из Китая датчик температуры, давления и экранчик, можно подключить только esp и датчик со2, (уже прикупил) и мониторить через андроид?
Можно, но может нужно будет что-нибудь в коде поправить.
Если что, справишайте в issues на гитхабе: https://github.com/kumekay/kuhomon
И попробуйте вот этот qr код проекта, он должен влезать в бесплатный лимит на blynk — если нет напишите, я еще подрежу что-нибудь
StaticJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6
Но вот уже несколько недель мучаюсь с проблемой:
При выполнении функции, где идет проверка файловой системы (if (!SPIFFS.begin()) ...) выводится сообщение «Failed to mount file system».
Поначалу предполагал, что в результате многочисленных перезаписей затер файловую систему, но на новом модуле NodeMCU ESP12E проблема не исчезла.
Для наглядности привожу информацию с монитора Arduino IDE (ESP.reset(); и factoryReset(); в скетче закомментированы).
*WM: Adding parameter
*WM: blynk_token
*WM: Adding parameter
*WM: address
*WM: Adding parameter
*WM: tZ
*WM: Adding parameter
*WM: Tmn
*WM: Adding parameter
*WM: Tmx
*WM: Adding parameter
*WM: Cmx
*WM: Adding parameter
*WM: Hmn
*WM: Adding parameter
*WM: timeSW
*WM: Adding parameter
*WM: formFS
*WM:
*WM: AutoConnect
*WM: Connecting as wifi client…
*WM: Using last saved values, should be faster
*WM: Connection result:
*WM: 0
Connect to WiFi:
net: am180206
pw: vb654321
Open browser:
192.168.4.1
to setup device
*WM:
*WM: Configuring access point…
*WM: am180206
*WM: vb654321
*WM: AP IP address:
*WM: 192.168.4.1
*WM: HTTP server started
*WM: Request redirected to captive portal
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Handle root
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Sent config page
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Request redirected to captive portal
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Request redirected to captive portal
*WM: Handle root
*WM: WiFi save
*WM: Parameter
*WM: blynk_token
*WM: b0bf3e0d02f648c6b7aff07028fff25c
*WM: Parameter
*WM: address
*WM: cadil@ukr.net
*WM: Parameter
*WM: tZ
*WM: 2.0
*WM: Parameter
*WM: Tmn
*WM: 18.0
*WM: Parameter
*WM: Tmx
*WM: 25.0
*WM: Parameter
*WM: Cmx
*WM: 1600.0
*WM: Parameter
*WM: Hmn
*WM: 35.0
*WM: Parameter
*WM: timeSW
*WM: 1.0
*WM: Parameter
*WM: formFS
*WM: 0
*WM: Sent wifi save page
*WM: Connecting to new AP
*WM: Connecting as wifi client…
*WM: Connection result:
*WM: 3
Should save config
saving config
failed to open config file for writing
{«blynk_token»:«b0bf3e0d02f64хххххххххх»,«address»:«ххххххххх»,«tZ»:«2.0»,«Tmx»:«25.0»,«Cmx»:«1600.0»,«Tmn»:«18.0»,«Hmn»:«35.0»,«timeSW»:«1.0»,«formFS»:«0»}WiFi connected
IP address: 192.168.1.102
Load config…
Failed to open config file
Failed to load config
e-mail: e-mail
T_Zone:
T max:
CO2 max:
T min:
H min:
Time Summer/Winter:
format FS: 0
token: Blynk token
*WM:
*WM: AutoConnect
*WM: Connecting as wifi client…
*WM: Already connected. Bailing out.
*WM: IP Address:
*WM: 192.168.1.102
IP number assigned by DHCP is 192.168.1.102
Starting UDP
Local port: 2390
waiting for sync
Transmit NTP Request
time.nist.gov: 132.163.97.4
No NTP Response :-(
! Off Blynk!
:) OnLINE
T: -100.00*C
H: -1%
Ti: -100.00*C
165.85.2009
37:165
…
Из протокола видно, что ключ Blynk и и остальное не сохранилось. Ответ, конечно, есть в первой строке - «Failed to mount file system», но с трудом верится, что на трех модулях ESP8266 проблемы с ФС.
Помогите, пожалуйста, разобраться.
Я пытался, что-то найти в нете, но ничего не нашел. Возможно не там искал?
Компактный монитор домашнего воздуха (CO2, температура, влажность, давление) с Wi-Fi и мобильным интерфейсом