Найти тему
Luka

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

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

Ближе к делу

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

nodemcu v3
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.

-2

Вот тут 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 не только не перестаёт работать и засоряет эфир(моя китайская метеостанция, теряла связь со своим датчиком, в этот момент), но у нас так же повышенное потребление.

-3

Есть вот такая интересная пикча, на ней видно, что 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, верхние отверстия заклеил, по боком насверлил отверстий. Чтобы избежать попадания влаги внутрь, сделал небольшие крылья, вырезанные из пластиковой бутылки. Испытания весной прошли успешно, какой бы дождь не лил, а ветер не дул, всё продолжало работать.

корпус
корпус

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

-5

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

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

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

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

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

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

-8

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

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

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