Уличный датчик температуры и влажности

По сути, это должен быть не первый пост, потому что описываемый датчик полностью несамостоятельный и без базы от него нет пользы. Это не урок или статья "сделай сам", это просто описание моего датчика, вдруг, кого то вдохновит и/или поможет.
База представляет собой микроконтроллер esp32, со всякими датчиками и радиоприёмником на частоте 433мГц. О ней, может быть, как-нибудь в следующий раз, или нет, хз.


Решил значит я замутить себе метеостанцию, дабы в любой момент, со смартфона видеть актуальную температуру, да и вообще, набирать статистику. Под рукой была nodemcu v3 на базе микроконтроллера esp8266.

Уличный датчик температуры и влажности Arduino, Esp8266, Метеостанция, Самоделки, Длиннопост

nodemcu v3

Первая проблема, это питание. Я выбрал батарейки типа AA. На батарейках пишут 1.5В, но это не типа среднее напряжение или как там правильно, новая батарейка без проблем может выдавать 1.6 и чуть больше. 2 батарейки могут выдать 1.6*2=3.2, что допустимо для esp8266, но это пик, а я планирую высаживать батарейки по максимуму т.е. до 1В и ниже, а это уже 2В и ниже. Минимальное напряжение esp8266 2.5В(согласно датащиту https://www.espressif.com/sites/default/files/documentation/...). Плюс, я живу в Сибири и у нас бывают морозы, значит, напряжение надо бы повыше, с запасом.

3 батарейки AA это максимум 1.6*3=4.8, можно округлить до 5В. Для esp8266 5В это много, но в nodemcu v3 есть стабилизатор ams1117, который позволяет подавать до 15В, а на выходе у него те самые 3.3В. Но, не всё так гладко, т.к. у этого стабилизатора ток потребления 5 мА, а это значит, даже если вообще исключить потребитель, стабилизатор всё равно будет кушать 5мА. Согласно batterytest.ru, у батарейки GP Super ёмкость 2451, а это значит, её хватит всего на 2451/5=490,2ч или 20 дней при условие, что в цепи один лишь стабилизатор.

Я выпаял стабилизатор ams1117 и использовал MCP1700-3302E. У MCP1700-3302E ток потребления всего 1.6мкА, хотя, в комментариях, на али писали, что стабилизатор подделка и его потребление выше, но честно, я не замерял, решил довериться. Его максимальное, входное напряжение 6В, но это всё ещё выше 5В. Падение напряжения так же низкое, это я уже замерял, и даже при входе менее 3В, на выходе было лишь на несколько десятых ниже входа, а это значит, что 3 разряженные батарейки смогут выдать 1*3=3В, что будет хватать для питания esp8266.

Уличный датчик температуры и влажности Arduino, Esp8266, Метеостанция, Самоделки, Длиннопост

Вот тут https://itooktheredpill.irgendwo.org/2017/reducing-nodemcu-p... ещё предлагают отключить чип CH340, но я не стал этого делать, т.к. не настолько виртуозно владею паяльником и боялся сломать чип, а на тот момент, обойтись без него не мог.

Далее, была другая проблема, даже если не использовать wi-fi, при включение esp8266 инициализирует его, из за чего краткосрочно вырастает потребление, а экономить надо каждый мАч. Решение нашлось в примере LowPowerDemo, где в readme есть ссылка на https://github.com/esp8266/Arduino/issues/6642#issuecomment-... таким образом, можно отключить wi-fi с контроллер сразу будет загружаться в режиме модемного сна.

Если нет wi-fi, то как передавать данные? С помощью 433мГц и передатчика SYN115. Изначально, я просто подключил его на gpio 14. Но оказалось, что в глубоком сне esp8266 не сохраняет состояние пинов, т.е. даже если я даю команду LOW, 14 пин все равно станет HIGH, когда esp8266 уйдёт в deep sleep. Таким образом, SYN115 не только не перестаёт работать и засоряет эфир(моя китайская метеостанция, теряла связь со своим датчиком, в этот момент), но у нас так же повышенное потребление.

Уличный датчик температуры и влажности Arduino, Esp8266, Метеостанция, Самоделки, Длиннопост

Есть вот такая интересная пикча, на ней видно, что gpio 15, единственный пин, который должен быть притянут к земле, чтобы esp8266 нормально запустилась. По логике, раз там должен быть низкий уровень для старта, значит и в глубоком сне, там будет сохраняться низкий уровень. Я точно не помню, с SYN115 или с другим передатчиком, но ESP8266 отказывалась запускаться, будто я подаю на 15 пин высокий уровень. Так, я решил использовать mosfet 2N7000, его управление на GPIO 15, SYN115 на GPIO 14, таким образом, неважно, какое состояние gpio 14, если gpio 15 LOW.

Датчик температуры и влажности, я решил использовать AHT20, хотя, обычно, в инструкциях про метеостанции, этот датчик не упоминается. Работает по i2c, потребление от 250-980мкА. Можно было, его тоже посадить на тот же mosfet, что и SYN115, но мне было лень.

Всё это запихал в корпус с ali, верхние отверстия заклеил, по боком насверлил отверстий. Чтобы избежать попадания влаги внутрь, сделал небольшие крылья, вырезанные из пластиковой бутылки. Испытания весной прошли успешно, какой бы дождь не лил, а ветер не дул, всё продолжало работать.

Уличный датчик температуры и влажности Arduino, Esp8266, Метеостанция, Самоделки, Длиннопост

корпус

Самого фото датчика у меня нет, он на балконе, вскрывать и фотать влом, но я нарисовал схему.

Уличный датчик температуры и влажности Arduino, Esp8266, Метеостанция, Самоделки, Длиннопост

От 2 батареек к аналоговому пину А0 провод подключён для контроля заряда батареи.

Теперь об реальном опыте, а он есть.

Несколько дней назад, у нас были морозы, показатель датчика немного завышали, относительно прогноза из интернета, примерно на +1градус. Хотя, смотря какому прогнозу верить, ведь если я смотрю в 4 источниках(яндекс,гисметео,пр5,yr.no), то вижу несколько отличающиеся цифры.

Вот такие данные получены моим датчиком.

Уличный датчик температуры и влажности Arduino, Esp8266, Метеостанция, Самоделки, Длиннопост

усреднённые по времени суток данные

Уличный датчик температуры и влажности Arduino, Esp8266, Метеостанция, Самоделки, Длиннопост

суточный график

Результаты меня порадовали, датчик не замёрз, батарейки выжили. Специально для зимы, покупал в dns батарейки Nanfu AA, т.к. согласно тестам https://batterytest.ru/1120 очень даже ничего.

Уличный датчик температуры и влажности Arduino, Esp8266, Метеостанция, Самоделки, Длиннопост

У меня нет данных, сколько может проработать датчик от батареек, т.к. я впервые занимаюсь всем этим, и делал много ошибок, прежде чем прийти к описанному выше, батарейки высаживались достаточно активно. Первые батарейки проработали с 26.05 по 3.07 и напряжение 2 батареек было 1.98В, следовательно, каждая разрядилась, примерно до 1.98/2=0.99В. Потом были поставлены батарейки под брендом КОСМОС, но я их поменял на Nanfu AA т.к. боялся, что всю зиму те не проживут. КОСМОС проработали с 3.07 по 18.11 и 2 батарейки выдавали 2.44В т.е. батарейки ещё, вполне, были живы.


Вообще, метеостанция, это первое что я делал на esp, ранее, у меня не было опыта как с esp, так и с arduino, да вообще с микроконтроллерами, точно так же, как и не держал ранее паяльник в руках. Это я к тому, что если, вдруг, вдохновитесь, не бойтесь пробовать. У меня был только небольшой опыт в программирование, поэтому, я писал скетч сам, как хотелось, но библиотеки, конечно же, брал готовые. Но и без опыта программирования, в интернете куча готового кода, собирай, заливай и радуйся.


Спасибо всем, кто дочитал :)