Pull to refresh

Comments 50

А вы не экспериментировали с CCS811? Я как раз сейчас жду все запчасти для сбора своего анализатора воздуха и мне CCS811 нравится своим низким энергопотреблением. Но есть мнение, что он не совсем про измерение углекислого газа. Вдруг у кого опыт был.
Вроде измеряет equivalent CO2 и Total Volatile Organic Compound
CO2e allows other greenhouse gas emissions to be expressed in terms of CO2 based on their relative global warming potential (GWP).

CO2 has a GWP of 1, methane has a GWP of approximately 25 (on a 100 year time horizon). In other words, for every 1 tonne of methane (CH4) emitted, an equivalent of 25 tonnes of CO2 would be emitted.

Я экспериментировал. Открываешь окно в комнате — показывает 400 ppm (минимум), закрываешь — через час 4000-5000 ppm. Дышалось при этом вполне нормально. Максимум шкалы в районе 8100 ppm также достигался без особых проблем. Какое отношение эти попугаи (eCO2) имеют к концентрации углекислого газа, я не понял.

Ни когда не понимал стрелочные часы на экранах с низким разрешением. Какой-то кибер-стим-панк получается. Т.е. современная технология эмитирует архаизм но делает это очень плохо, в итоге выходит ерунда в квадрате. Читаемость хуже чем у цифрового вывода, детализация ужасная, цвета ужасные, расчеты сложные. Зачем? Вы-же сами пишете что вам нравится вариант с численным выводом. Тогда даже такой скромный экран можно скрыть за тонированным стеклом и будет красиво.
Если очень хочется стрелочные часы, может стоит сделать вывод на подложку реальных стрелочных часов?
«Ни когда не понимал стрелочные часы на экранах с низким разрешением.»
Сейчас вы смотрите на экран через объектив камеры с расстояния 3-10 см. Если смотреть человеческим глазом с расстояния 0,3...0,5м, то угловатость сглаживается, а цифры на таком экране еще можно прочитать.
Под другой экран — будут другие часы, другая графика символов и остальное. Конечно, выводить информацию в таком виде на дисплей планшета — это дикость!
"… цвета ужасные,… "
На этом цветном экране 1,44 можно задать столько же цветов, как и на мониторе вашего компа: (0xzуzуzуzу), zу — числа в шестнадцатиричном формате.
Повторюсь, снимки в статье сделаны с очень маленького расстояния.
Задать то конечно можно, но цветопередача не даст их нормально отобразить. Судя по фото подсветка экрана на светодиодах очень холодного света. Черного нет, он выглядит как голубой. Размер угловатости красной стрелки в 2 раза больше чем размер минимального шрифта на экране (дата в верху), значит или не будет видно дату, или будет видно угловатости. У меня были телефоны с такими экранами, я помню как красиво на них выглядели круги и диагональные линии.
Если найду цветной экран размером до 1,5 дюйма и с разрешением хотя бы раз 5 выше — ваши претензии снимутся автоматически. Ставить в устройство экран со старого телефона — сомнительная идея.
Претензий ни каких нет, что вы. Я скорее просто задал вопрос «зачем стрелочные на таком экране». А насчет экрана от телефона — речь про качество цветопередачи и восприятие глазом, ставить их я не предлагаю, просто говорю что я видел в живую такие экраны ни один год, и в кармане носил.
«Претензий ни каких нет, что вы. ...»
Спасибо за понимание!
Нестандартное решение позволяет вначале запустить ESP8266, а затем использовать это же вывод как цифровой для приема информации с датчика DHT22.

а зачем так сложно? не проще ли поменять gpio15 и gpio16 местами и gpio15 притянуть резистором на землю?
Т.е. cs экрана дергать через gpio15, а с датчиком общаться по gpio16.
Тогда и транзистор не нужен будет.

«а зачем так сложно? не проще ли поменять gpio15 и gpio16 местами и gpio15 притянуть резистором на землю?»
В этом случае, возможно, — да, но я смотрю на задачу под углом использования экрана в термостате и возможного увеличения количества датчиков в будущем.
И не стоит забывать, что только отдельные цифровые выводы ESP8266 работают в режиме прерываний или поддерживают протокол I2C.
>И не стоит забывать, что только отдельные цифровые выводы ESP8266 работают в режиме прерываний или поддерживают протокол I2C.

I2c у 8266 софтварный, так что любой пин.
Прерывания вроде все кроме gpio16. Так что если нужны прерывания для датчика можно поменять местами 12-15, уж для дрыгания ресетом экрана точно прерываний не надо :)
«I2c у 8266 софтварный, так что любой пин.
Прерывания вроде все кроме gpio16. Так что если нужны прерывания для датчика можно поменять местами 12-15, уж для дрыгания ресетом экрана точно прерываний не надо :)»
О том, что в режиме прерываний работают все пины, кроме gpio16 — не знал. Спасибо!
Когда подключал библиотеку RCSwitch.h (передатчик, режим прерываний) — там речь шла только о двух пинах, работающих в режиме прерываний с этой библиотекой. К сожалению, страница с этой информацией уже не открывается.
Протокол I2c со всеми датчиками и экраном я с трудом запустил на «родных» выводах, используя «заплатки».
Впрочем, возможно ваш подход — правильный. Набросайте схему подключений ESP8266+цветной экран SPI+dht22+mh-z19+передатчик 433МГц + датчик угарного газа на ваш выбор. Заранее приношу извинения, если схема заработает.
...ESP8266+цветной экран SPI+dht22+mh-z19+передатчик 433МГц + датчик угарного газа ..

Есть похожая схема часов, но для передачи использую nrf24l01 и esp используется только как чип работы с Инетом (управление и получение погоды)
цепи питания условно не показаны:

RC-цепь — стандартная цепь сброса при подаче питания (низким или высоким уровнем в зависимости от того какой дисплей);
Аналоговая часть для MQ-7 — возможно просто резисторный делитель;
Ключ — тоже вроде в некоторые MQ-7 уже встроен.
«цепи питания условно не показаны:
...»

Спасибо!
У меня просьба — укажите, пожалуйста, соответствие выводов экрана на вашей схеме маркировке для экрана 8-pin: CS, AO, SCK, SDA.

ss-cs
a0-d/c
sck-sclk
sda-mosi

а зачем так сложно? не проще ли поменять gpio15 и gpio16 местами и gpio15 притянуть резистором на землю?
Т.е. cs экрана дергать через gpio15, а с датчиком общаться по gpio16.
Тогда и транзистор не нужен будет.

У вас конфликт: сначала вы предлагаете притянуть gpio15, к которому подключаете вывод CS экрана, к «земле», а потом «дергать» CS, получается, «землю».
В целом, это попытка перевести управление экраном 1.44 SPI Adafruit с 4-х проводов на 3 (RESET — не в счет).
Цитирую из примера test к библиотеке TFT_ILI9163C.h (экран 1.44, 128х128 Adafruit):
/*
Teensy3.x and Arduino's
You are using 4 wire SPI here, so:
 MOSI:  11//Teensy3.x/Arduino UNO (for MEGA/DUE refere to arduino site)
 MISO:  12//Teensy3.x/Arduino UNO (for MEGA/DUE refere to arduino site)
 SCK:   13//Teensy3.x/Arduino UNO (for MEGA/DUE refere to arduino site)
 the rest of pin below:
 */
#define __CS 10
#define __DC 9
/*
Teensy 3.x can use: 2,6,9,10,15,20,21,22,23
Arduino's 8 bit: any
DUE: check arduino site
If you do not use reset, tie it to +3V3
*/

Я доверяю разработчику библиотеки. Хотя, поверьте, мне бы очень хотелось ошибаться.
Популярно о 1.44″TFT можно посмотреть тут.
У вас конфликт: сначала вы предлагаете притянуть gpio15, к которому подключаете вывод CS экрана, к «земле», а потом «дергать» CS, получается, «землю».

Притяните gpio15 это имелось ввиду через резистор на землю. К слову в nodemcu он уже впаян на плату:
https://github.com/nodemcu/nodemcu-devkit/blob/master/Documents/NODEMCU_DEVKIT_SCH.png


В целом, это попытка перевести управление экраном 1.44 SPI Adafruit с 4-х проводов на 3 (RESET — не в счет).
Цитирую из примера test к библиотеке TFT_ILI9163C.h (экран 1.44, 128х128 Adafruit)…

гляньте схему включения m5stack там для управления экраном (тем же IL9341) используются:
1) mosi
2) sck
3) r/s
эти три обязательные. и вспомогательные:
4) cs — для выбора экрана, так как на этих же пинах висит sd карточка (у вас ее нет поэтому пин можно исключить);
5) reset — тут я думаю идея понятна — сбрасывать по питанию, тем более что в работе пин практически не используется.


Итого — трех пинов для работы с экраном должно хватать. И да, для этого надо немного допилить библиотеку.

Итого — трех пинов для работы с экраном должно хватать.

Очень обнадеживающе! Спасибо!
И да, для этого надо немного допилить библиотеку.

Как это сделать? Возможно в нете кто-то проделал эту работу? Подскажите!
Как это сделать? Возможно в нете кто-то проделал эту работу? Подскажите!

в RTOS SDK есть пример, для другого экрана, но суть та же:
github.com/espressif/ESP8266_RTOS_SDK/tree/master/examples/peripherals/spi_oled

Допиливается выкидыванием функции oled_rst() и дефайна OLED_RST_GPIO из пары мест.
Update:
С SPI на 8266 не работал. Но по документации, esp8266 позволяет SPI экран привесить всего на две ноги…
ESP8266 Technical Reference, page 46


Аппаратный SPI с встроенным арбитром, для экономии пинов — самое то!
Вешаем экран параллельно SPI флэшке (благо на nodemcu эти ноги выведены), GPIO0 — заводим на CS, остается только A0 привесить на любой свободный пин. Итого — два пина на экран + программная разгрузка — т.е. ноги шевелятся аппаратно.
Еще бы коробочку симпатичную…
«Еще бы коробочку симпатичную…»
До коробочки еще далеко.
Еще надо решить проблему энергозатратности. Уменьшение частоты опроса датчиков, сна тут, похоже, не спасет.
не забудьте подправить встроенный драйвер I2C

Подскажите, а зачем эта «заплатка»?
«Подскажите, а зачем эта «заплатка»?»
Кликните на слово тут в «Инструкции — тут.», спросите у автора доработки. Мне «заплатка» помогла.
Очевидно, что у автора можно поинтересоваться, зачем он это сделал.
Но, я от вас и хотел услышать, с какими проблемами столкнулись, что потребовался патч.

Использую «коробочную» реализацию I2C (на шине: DS3231, BME280, PCF8574, ADS1115), и пока не сталкивался с проблемами. Аптайм более года, и было несколько апдейтов с пересборкой на разных версиях SDK.
«Использую «коробочную» реализацию I2C (на шине: DS3231, BME280, PCF8574, ADS1115), и пока не сталкивался с проблемами. Аптайм более года, и было несколько апдейтов с пересборкой на разных версиях SDK.»
Спасибо! Я вернусь к своей проблеме дефицита цифровых пинов, учитывая ваш опыт.
он в качестве экрана использовал планшет в рамке с 3D печатью

Да нет же, нету никакого планшета.
Обычный 7" дисплей, подключен к Arduino Mega, через адаптер. Для связи с внешним миром использован nRF24, вставленный в туже Мегу через самопальный адаптер. Все это долго время пребывало в голом виде, и только в ноябре прошлого года я заказал изготовить корпус на 3Д принтере. Получилось вполне пристойно. Если интересно, могу выложить фото снаружи и внутри.
«Да нет же, нету никакого планшета. ...»
Это ваш комментарий — habr.com/ru/post/440978/#comment_19780298?!
Удивил поход — дисплей в качестве экрана устройства, детали не важны.
Эх, а я по названию уж думал, что вы монитор воздуха и настройку часов запихнули в настенные стрелочные, а не софтварные на экране и без корпуса :-)
«Мой традиционный вопрос автору: зачем колхозил готовые модули?»
Я теряюсь с ответом на ваш вопрос. Предлагаете, сидя на кухне, разработать самому все то, что можно купить на AliExpress'e?
Утонченная у вас реклама. Успехов в продвижении продукта.
Вы ссылку проверяли? Тот же али, только варианты esp с корпусом и экраном.
Прошу прощения за иронию в предыдущем моем комментарии. Бегло взглянул на картинки, не читая описаний. Фантастика!
Еще раз — успехов!
Скажите, за передачу данных наружу отвечает void sendToBlynk()? Хочется например передавать по http данные куда то на свой сервис.
«Скажите, за передачу данных наружу отвечает void sendToBlynk()? Хочется например передавать по http данные куда то на свой сервис.»
Функция sendToBlynk() отравляет данные на сервер Blynk'а. Как отправить данные на другой сервис? — у меня нет ответа. Извините.
Вы не поняли, я просто хотел узнать — данные отправляются куда либо только из этой функции? Т.е. нет других участков кода, откуда отправляются данные наружу?
Реализовать отправку куда то в другое место это дело несложное.
«Вы не поняли, я просто хотел узнать — данные отправляются куда либо только из этой функции? Т.е. нет других участков кода, откуда отправляются данные наружу?»
Посмотрите mailer() — тут тоже отравляются данные наружу.
На куске схемы с транзистором 2N2222A нужно поставить ограничивающий резистор в базу, иначе он будет помирать с завидной регулярностью.

Субъективно монитор на пути от непростой игрушки немного приблизился к статусу профессиональной разработки. Тут под профессиональной разработкой подразумевается прибор, который можно тиражировать.


Соре за негатив, но разработки подобного уровня не дотягивают до звания «профессиональные». Их нельзя тиражировать, т.к. они не до конца продуманы и не имеют сборочного комплекта, т.е. платы, на которую можно монтировать компоненты (или готовая смонтированная, которую нужно собрать в корпус).

Удачи
«На куске схемы с транзистором 2N2222A нужно поставить ограничивающий резистор в базу, иначе он будет помирать с завидной регулярностью.»
Спасибо! Сделал.

«Соре за негатив, но разработки подобного уровня не дотягивают до звания «профессиональные». Их нельзя тиражировать, т.к. они не до конца продуманы и не имеют сборочного комплекта, т.е. платы, на которую можно монтировать компоненты (или готовая смонтированная, которую нужно собрать в корпус).»
Не отрицаю. Читаем выше: "… немного приблизился к статусу профессиональной разработки".
На вашем месте я бы сменил DHT-22 на BME, или хотя-бы на более дешевые BMP от Bosch. По моему опыту DHT датчики совершенно не адекватные в плане измерение влажности и не очень долговечные.
«На вашем месте я бы сменил DHT-22 на BME, или хотя-бы на более дешевые BMP от Bosch. По моему опыту DHT датчики совершенно не адекватные в плане измерение влажности и не очень долговечные.»
Я вожусь с датчиком DHT22 около двух лет (после того, как благополучно сжег дорогой BME280). У меня свой опыт:
Разница в показаниях влажности между DHT22 и метеостанцией **CROSS* не более 10%. Сейчас, когда набираю эти строки 52% и 49%.
Неадекватность проявилась только один раз: датчик на двое суток зашкалил на отметке 99%, скорее всего, после моих издевательств.
У датчика есть «плюс» — он рассчитывает индекс жары. Насколько этот «плюс» актуальный — посмотрим летом…
Для домашнего применения сойдет, но для улицы я бы держался от них подальше. Мой опыт использования DHT22 был как в суровом морозном климате (норвегия) так и в удушающи влажном климате. В обоих влажность не показывала реальные данные, либо сильно завышенные, либо сильно заниженные. При морозе влажность частенько зашкаливала, а в удушливом климате хьюстона наоборот показывал 40-60% летом в то время как реальная влажность была далеко за 90% при температуре за 30. В обоих условиях DHT не жил больше 2х месяцев при эксплуатации на улице.
Я честно говоря не понимаю зачем вам измерять индекс жары в помещении (heat index — как я полагаю) параметр, имеющий значение при температурах намного выше тех что бывают в обитаемых помещениях. Например стандартный расчет который имеет какое либо значение для человека по Heat Index'у начинается от 27ми градусов. Я склонен думать что BME умеет отображать этот параметр. Как минимум его можно вывести математически зная температуру и влажность.
Глянул на алиэкспресс, на данный момент BME280 стоит дешевле DHT22. Так же не совсем уверен как вы могли его спалить на логике 3.3в на которой работает ESP8266, особенно если подключали по I2C. Впрочем самоделка ваша, вам и решать что на нее ставить. Я всего лишь написал что-бы поделиться опытом.
«Для домашнего применения сойдет, но для улицы я бы держался от них подальше.»
Да я и не замахиваюсь на улицу. Монитор качества воздуха — помещение заложено в названии.

«В обоих условиях DHT не жил больше 2х месяцев при эксплуатации на улице.»
Жаль, что в то время с интервалом два месяца вы только набирали статистику, меняя приборы с датчиком или сам датчик DHT22. Возможно задумайся раньше, у вас на сегодня была положительная (или другая) статистика по другому датчику, например, тому же ВМЕ280.

«Я честно говоря не понимаю зачем вам измерять индекс жары в помещении»
В северной стране Канада считают по-другому — там метеорологи публикуют этот индекс, в США тоже есть его аналог — индекс тепла. Что касается меня, то планы есть, но пока не буду их обнародовать, не проверив на практике.

«Я склонен думать что BME умеет отображать этот параметр.»
У меня тоже много догадок.

«Я всего лишь написал что-бы поделиться опытом.»
Спасибо!
Это мой первый комментарий: датчик СО2 МH-Z19 подключать на 5в( при 3.3 показывает завышенное значение СО но температуру не врёт), общение по rx tx нормально живёт при 5В(проверено в течении года). Только сегодня исправил и заметил этот глюк.<oembed><spoiler title="Заголовок спойлера"> </spoiler>
Спасибо! Глубоко копаете. Успехов!
… при 3.3 показывает завышенное значение СО но температуру не врёт ...

Надеюсь, СО — это досадная описка.
Ну конечно СО2, если вы об этом ;)
Sign up to leave a comment.

Articles