Как стать автором
Обновить

Комментарии 205

Реализация подсчета импульсов на прерываниях не подходит, т.к. вода может быть перекрыта в момент замыкания геркона (зона ~3л), и ток будет утекать через подтягивающие резисторы.

Не совсем понял, как между собой связаны прерывания и утечка тока через подтягивающие резисторы.
батарейка будет через замкнутый геркон разряжаться на подтягивающий резистор, если у меня в голове все нарисовалось верно.
Насколько я вижу, разъём датчика подключается между ножками контроллера, и не подтягивается к земле напрямую.
Если на выходную ножку подать ноль, а на ответной стороне (после геркона) будет слабая подтяжка вниз — на входе будет ноль и тока в цепи не будет. А в момент измерения выходная ножка переводится в «1», по цепи течёт ток (или не течёт, если датчик разомкнут) и входной пин определяет, есть ли импульс.
Простое и в то же время энергоэффективное решение.
Я не особо специалист по ардуинам, но у меня чёткое ощущение, что у автора оба пина сконфигурены как входы)
Тогда тем более непонятно, как автору помешали прерывания.
Чтобы прерывание срабатывало при замыкании (по GND), мне надо подтягивать вход МК к питанию резистором. Высока вероятность, что геркон останется в замкнутом положении после перекрытия воды.
Делал подобную сторию с ATTiny85 в передатчике для передачи изменения состояния классического выключателя, что в стены для освещения вставляют, т.е. примерно по четверти суток оно замкнуто.
Встроенная подтяжка, естественно, не вариант. Использую подтяжку внешнюю 470 КОм на VCC. При трех вольтах и замкнутом выключателе ток течет приемлемо малый (~6мкА). На CR2032 работает уже год :).

Не скажу, что этот комментарий — рекомендация. Но как вариант.
Мегаом тоже подходит.
Я решил не медитировать на помехи от замыкания длинных проводов, да и 6 * 2 = 12мА… хотелось меньше, да и код с watchdog проще читается.
А что детектирует смену положения выключателя?
CR2032 плохо для ESP.
Смена положения детектируется прерыванием по смене уровня на tiny85. Она спит постоянно, и просыпается по этому прерыванию.
В моем случае дальше происходит отправка сообщения через 433 MHz передатчик.

По поводу батарейки, это просто для примера, у меня ESP не используется, мне хватает одного tiny85.
Высокоомная подтяжка — чувствительность к помехам. Вы просто не замечаете как ваша схема периодически реагирует на помехи и грозовые разряды.
и 6мкА это чудовищный ток, контроллер правильно настроенный на сон может потреблять 500нА (0.5мкА) и даже это не предел для микроконтроллеров как таковых. С такими токами уже имеются проблемы с коммутацией полевиками, внезапно оказывается что утечка через закрытый полевик такого же порядка и нагрузка не отключается полностью.
Емкость батарейки CR2032(оригинальной) 30мА*ч при разряде током менее 500мкА можно легко посчитать штатное время работы. Кстати надо иметь в виду что эти марганцево-литиевые батареи плохо работают при токах больше 2мА, а радиомодуль в импульсе может потреблять до 300мА, нужна существенная шунтирующая емкость с низким ESR и индуктивность для развязки.
Для связи у Вас только только то, что в профиле на Гитхаб? Уменя нет таких аккаунтов. Можно ли у Вас приобрести пару плат, для повторения такого нужного и полезного девайса?
В Хабрахабр есть личные сообщения.
На микромощных схемах (а у автора как раз микромощная схема) у контроллеров, работающих с пинами настроеными на вход, могут возникать наводки от внешних помех, что может вызвать некорректное поведение / ошибки счёта / сброс / зависание. Именно по этой причине добавлены подтягивающие резисторы. Обычно они соединяются между пином и рецессивным уровнем на линии. Чаще всего — подтягивают как раз к общему проводу, а активный сигнал в этом случае будет положительным.
Реализация подсчета импульсов на прерываниях не подходит, т.к. вода может быть перекрыта в момент замыкания геркона (зона ~3л), и ток будет утекать через подтягивающие резисторы.

а если RC цепь вкрутить?

Приведите, пожалуйста пример =). Я не совсем электронщик, я программирую промышленную автоматизацию…
В линию счетчика — последовательно конденсатор, между ним и микроконтроллером — резистор на землю. Ток будет определяться током утечки конденсатора, то есть очень низкое значение :)
Мне кажется нужно резистор для разрядки конденсатора, в несколько мегаом… Иначе конденсатор сработает 1 раз, зарядится и всё.
Да, в этой схеме резистор понадобится, я не подумал про него :)
3.3V-(R=1M||C=1nF)-gerkon-(R=10K)-gnd.
забирать сигнал с R=10K. Ток утечки конечно будет приблизительно 3мкА. И ограничится максимальная частота импульсов + импульс на выходе будет довольно коротким.
Если ограничится частота импульсов это и хорошо, получается антидребезг встроенный. А забирать только прерыванием, длительность импульса 10 микросекунд.
Можно поставить конденсатор хотя бы на 1 микрофарад, геркон медленный достаточно.

1M*1nF=1мс, т.е. до 3мс период между импульсами. а для 1мкф уже 3секунды, мне кажется многовато это.
да и если уж увеличивать то резюк, для уменьшения тока утечки при замкнутом герконе.

Я тут посовещался: RC цепочка позволяет детектировать 1 импульс. Софтовое устранение дребезга не будет работать. А оно нужно, т.к. дребезг будет при размыкании геркона и может прийти помеха по длинным проводам счетчиков. Она будет расценена как импульс.
Ну это смотря какой дребезг. Для 30-20мкс устранять уже нечего:
image
Не надо всех этих ухищрений. Достаточно повесить на один из выходов контроллера подтягивающие резисторы и включать их только на время опроса состояния контактов. Буквально 1-2мкс. И не забыть про циклы ожидания перед опросом кнопки — емкость проводов не позволит быстро установится напряжению на входе после подключения подтяжки. Хоть это время и может быть порядка 1-2 тактов контроллера, но всё же… специально проводил эксперимент — подтяжка 1МОм, напряжение на входе контроллера поднимается за 3-4 такта когда вывод просто висит и примерно за 16-20 когда касаешься пальцем. Емкостные сенсоры так и работают. А на проводе обычном сетевом длиной в 3 метра приходится вкачивать ток примерно 100мА чтобы обеспечить фронты порядка 1-2мкс, такова его ёмкость…
Что-то я не уловил принцип работы «кольцевого буфера с кольцевой меткой». Если сохранять ссылку на текущее положение метки в EEPROM, то ресурс также будет расходоваться, а если не сохранять, то после рестарта система не будет знать где находятся актуальные данные. Кто-нибудь может объяснить сам принцип работы «кольцевого буфера с кольцевой меткой»?
Блок данных маркируется идентификатором, который увеличивается на единицу при каждой записи. При перезапуске МК ищет блок с максимальным значением идентификатора и считает этот блок последним. Максимальное значение идентификатора должно быть не меньше общего кол-ва блоков. Таким образом мы равномерно используем всю EEPROM.
Только не с просто максимальным, а максимальным в непрерывной последовательности :)
Да, совершенно верно!
У меня везде нули, а в текущей crc8 соответствующего блока.
|xxxx|xxxx|xxxx|xxxx|crc|0|0|0|
А если какая-то запись как раз даст CRC с нулями? :)
Ну как вариант :)
Кстати в данной реализации удвоенный износ в области хранения CRC( VAL > 0 > VAL2 > 0....)
Я не знаю что имел в виду автор под кольцевой меткой, но вот один из вариантов кольцевого буфера, не требующего хранить где-то отдельно адрес последней записи:
— в каждой записи содержится ее порядковый номер, размерность которого гарантированно превышает максимальное количество записей в буфере. То есть если буфер, например, может содержать до 100 записей, то для номера можно отвести 7 бит (128 значений).
— когда нужно найти последнюю запись просто пробегаемся по записям, ища нарушение непрерывной последовательности (с учетом перехода к нулю после максимального значения — "..., 126, 127, 0, 1, ...").
Скажите, что будет, если на момент передачи данных WiFi недоступен?
1. Есть таймаут подключения. ESP пошлет команду «спать», Attiny85 снимет питание.
2. Если ESP «затупит» и что-то пойдет не так, Attiny85 снимет насильно питание через 15 секунд.
Однажды мне тоже надоело снимать показания счетчика воды, и я просто взял среднегодовой расход, поделил на 12 месяцев и передаю каждый месяц фиксированное количество кубов воды, а потом в конце года просто устраняю образовавшуюся неточность
Сам не знаю, зачем людям сдавать точные показания. Я делал не только для себя, но и для нескольких друзей, часть из которых старшего поколения, а оно сдавать не точно не умеет.
Его можно использовать при сдаче квартир в аренду для отслеживания количества проживающих людей.
Но, конечно, хочется датчик протечки…
мой недавний неприятный опыт показал, что протечка может быть не только после ввода горячей/холодной воды, но и по стояку (батарее отопления), где расход ничем не считается
Решающим аргументом в наших с женой спорах о том, кто пойдёт снимать показания счётчиков, является её фраза «Я тогда от балды приблизительно напишу». После этого я как миленький поднимаюсь и иду. Так уж некоторые из нас устроены…
В общем, я рад, что Вотериус сможет помочь семьям =).

Когда я узнал КУДА лезут каждый месяц мои взрослые знакомые, разработка ускорилась. Из-под раковины торчали только мои ноги, когда я подключал им Вотериус.
НЛО прилетело и опубликовало эту надпись здесь
Хм… да, некорректно прозвучало. Но и устройство они не будут покупать, т.к. им несложно посмотреть показания и у них нет Wi-Fi.

низкого потребления не добиться. необходима низкоуровневая работа с ESP, эта микросхема даже для специалистов является чёрным ящиком.

Не добиться? Если использовать 2 батарейки АА и отправлять данные раз в день, то ESP проработает больше года!
А считать импульсы кто будет? Просто спать и просыпаться это экономичнее, да.
Ну не знаю, думаю годик можно из него выжать. Мне удалось протянуть 10 дней на 2х литиевых 18650 с опросом счетчиков каждые 4 секунды и отправкой данных (с довольно посредственным уровнем сигнала Wi-Fi) каждый полчаса.
Если учесть, что отправка занимала секунд по 10, и сделать отправку раз в сутки, то думаю реально. Во всяком случае сейчас как раз буду в таком режиме пробовать. Через год могу отписаться о результатах)

Ну если средний ток потребления будет около 6000/365/24/4=171мкА, то 4 года протянет.

низкого потребления не добиться. необходима низкоуровневая работа с ESP, эта микросхема даже для специалистов является чёрным ящиком.
Обратите внимание на модуль Wi-Fi Texas Instruments СС3235.
В режиме MCU shutdown ток потребления 1 µA.
Допускается низкоуровневое управление любыми регистрами напрямую.
Модуль стабилен и хорошо документирован, в отличие от ESP с его местами корявым английским.
Бонус — поддержка диапазона 5 GHz.

Для такой простой задачи должно быть достаточно одного микроконтроллера, например входящего в состав упомянутого Wi-Fi модуля.
Использование подхода big-little (ESP+ATtiny) в данном случае напрашивается на overkill.
Да, спасибо, знаем. С учетом wi-fi такая минимизация потребления не совсем оправдана. А вот если делать другие версии, то да.
Если купить две литиевые батарейки АА 1.5В 3 А*ч, Вотериус будет работать до 10 лет и при низкой температуре, а там — глядишь — и коммунизм построим.

У обычных литиевых батарей саморазряд 40% в течение года. Особенно у мощных. Подойдут вот эти.

Можно было ставить обычную Atmega328, потребление выше, но не намного, зато возможностей больше, можно датчик протечки ставить и много чего еще

Active Mode: 0.2мА
Power-down Mode: 0.1мкА
Power-save Mode: 0.75мкА

да, заводские решения обычно на подобных элементах питания. с саморазрядом нет исследований. видел график, что алкалиновые разряжаются до 20% при 0 или при +40. При комнатной меньше 10%.


Надо смотреть потребление с включенным watchdog.
Про то, что Attiny328 имеет такие же крутые характеристики, что и Attiny85 я узнал слишком поздно =). надо на Ардуино UNO попробовать, вытащив контроллер с платы.

Периферию только нужно отключить, она по умолчанию включена, библиотека даже для этого есть
Я находил один единственный обширный пост с примерами без библиотек, постараюсь найти и добавить в GitHub.
Мне только не понятно, почему со словом энергосбережение все советуют Attiny использовать, ощущение, что старшие линейки раньше не были экономичными и вышли обновленные версии. Я вижу странные слова picoPower, намекающие на это.
Attiny все же меньше потребляют, хотя бы из-за меньшей памяти, но по моим впечатлениям разница потеряется на фоне саморазряда батареек, сеансов связи по WiFi и работе WDT, который нельзя отключать.
Даташит говорит, что столько же, причем здесь память? Надо считать.
Память, потому что это SRAM, чем больше объём тем больше статическое потребление. В даташите пишут про предельные(гарантированные) значения, а сколько будет реально — зависит от конкретного экземпляра. И всё же, чем больше периферия тем больше минимальное потребление. Там ещё много ньюансов есть — то что указано в даташите это режимы потребления в глубоком сне, с остановленным тактовым генератором. Power-save это режим с тактированием но потребление приведено для тактирования от встроенного RC-генератора на минимальной частоте, если у вас внешний кварц и включен «сильный режим»(а он обязателен для стабильной работы кварцевых резонаторов на частоты выше 2МГц и темболее низкодобротных) потребление в таком режиме может быть просто конским по сравнению с цифрой из даташита.
НЛО прилетело и опубликовало эту надпись здесь

Наверное имелись в виду Energizer Lithium (т.е. обычные щелочные батареи на основе лития), а не аккумуляторы.
У них паспортный срок хранения (когда просто лежат в блистере, и вы их не собираетесь использовать) — 10 лет.

Да, именно они, спасибо!
Однажды мне надоело снимать показания воды
Только когда увидел «Требования: счетчик с проводом» понял, что автор имел в виду «показания счетчика воды». А не показания качества воды или температуры, или уровня…
Полностью согласен. Надо добавить «счётчика» в название статьи. А то я уже подумал, что очередная «память воды» на Хабр пролезла…
добавил, спасибо =)
Да, спасибо. Она специально сделана, чтобы по своему радиоканалу передавать. Очень полезно изучать схемотехнику delelopment board. Пока критерий — оперативность разработки, а не гонка за техническим прогрессом. Сейчас отладим бизнес-логику и в путь! =)
Самый экономичный вариант: полное отключение ESP8266, но понадобятся полевые транзисторы, которые боятся статического электричества, так-то.

Да ладно!
Например: krs.terraelectronica.ru/product/2000619
Сопротивление сток-исток открытого транзистора (Rds): 0.054 Ohm
Для защиты внутри транзистора даже на затвор-исток стоит шотки…
Это ограничитель напряжения. Не диод Шоттки.
Проблема этих «идеальных» транзисторов с низким сопротивлением канала в высоком токе утечки в закрытом состоянии. Увы идеала не существует — такой транзистор может запросто сифонить в закрытом состоянии током порядка 1мкА. Нужно внимательно читать на него даташит, и скорей всего выбрать другой транзистор.
НЛО прилетело и опубликовало эту надпись здесь

На схеме не переправил компонент. На 3В использую.

1. Очень круто!

2.
Я реализовал периодический опрос каждые 250мс и инкрементирую (красивое слово, правда?) значение только при повторном замыкании.

не вполне понял, что значит «при повторном замыкании»? Типа если два раза подряд состояние «замкнуто», то фиксируем замыкание геркона? А зачем такая логика?

3. По моему скромному мнению, частоту опроса можно спокойно уменьшить уменьшить раз в 10. Задача — не пропустить замкнутое состояние. Замкнутое состояние длится у вас 3 литра (в моем счетчике 2 литра). Принимаем меньшее — два литра. Если два литра протекают за 250 мс, то за минуту должно выливаться 480 литров. Это совершенно нереальный расход. Полностью открытый кран в идеальных условиях дает порядка 10 литров в минуту. Если таких кранов 2, то 20. То есть можно сэкономить на потреблении МК посредством уменьшения частоты пробуждений.

4. Из идей (сам думал такую штуку делать, но пока руки не доходят). Если прибор показывает постоянный и небольшой расход на протяжении длительного времени, то это может быть какая-то утечка — подтекающий кран, унитаз и т.п. Вполне можно обратить на это внимание. Все, конечно, зависит от настройки параметров, выделенных жирным. И полезность для меня не так, чтобы очевидна.
Если два литра протекают за 250 мс, то за минуту должно выливаться 480 литров. Это совершенно нереальный расход


Кстати, это способ засечь аварийную утечку. В моем горьком опыте десятилетней давности был случай срыва шланга с бачка унитаза с последующим добровольным проливом трех этажей. Понятно, что вероятность такого события крайне мала, но, тем не менее, цена лишней батарейки на несколько порядков дешевле ремонта трех квартир (или даже добровольного страхования гражданской ответственности)
От такого должен защищать датчик протечки.

Когда что-то течет — уже не важно, большой расход, или нет. Три этажа запросто зальет даже при очень небольшом (вполне обычном) расходе.
  1. Спасибо!
  2. Защита от дребезга контактов.
  3. Всё верно. Я ещё не занимался сильной оптимизацией. Минимально: надо от pinMode, digitalRead отказаться. Уже в 6 раз меньше бодрствовать будем.
  4. Всё верно, но всё же датчик протечки сильно эффективнее, поэтому быстрее и проще его добавить в Вотериус.
Под 4 я имел ввиду не протечку, а утечку.

Например, если в унитазе не герметично затыкается сливное отверстие, то никакой протечки не будет (вода-то течет в канализацию), но постоянная маленькая утечка будет. Типа подтекающего крана, только если из закрытого крана капает, это хорошо видно, а когда немного подтекает унитаз, это можно довольно долго не замечать.

А датчик протечки (и не один) в такой дивайс добавить — святое дело!
Счетчики, кстати, имеют минимальный порог по расходу который они могут заметить. Не любую утечку можно будет так засечь.
Все-таки датчик протечки нужно делать именно как датчик протечки, срабатывающий при попадании на него воды. Потому как вариантов протечки может быть множество, расход воды при этом — разный. Даже нулевой — это когда вас топят соседи. Но нужно всегда обязательно сработать и оповестить человека. Например, недавно я проснулся в 2 часа ночи от звука текущей воды. Вода бежала через стояки отопления от соседа сверху. Побежал к нему, стучал, но он не просыпался. Только через полчаса он наконец проснулся и перекрыл воду. Все это время я самоотверженно вытирал пол, дабы вода на пошла дальше по этажам.
НЛО прилетело и опубликовало эту надпись здесь
Да, возможно такое решение, правда надо подумать, что делать с дребезгом контактов. Потребление 2мкА при 1В и нужно несколько штук.(PDF).
RC цепочка решает все проблемы с дребезгом. И это не логгер, а просто счетчик. Для того, чтобы раз в сутки передавать значения, все равно нужен микроконтроллер и RTC, в итоге от отдельного счетчика теряется смысл.
Вот не уверен, что решает: RC цепочка позволяет детектировать 1 импульс. Софтовое устранение дребезга не будет работать. А оно нужно, т.к. дребезг будет при размыкании геркона. Также может прийти помеха по длинным проводам счетчиков. Она будет расценена как импульс.
У нас есть текущее состояние геркона. Появилось прерывание — поставили таймер на 100мс, закрыли прерывания от входа и спать. Через 100мс проснулись и смотрим текущее состояние входа. Если поменялось — фиксируем импульс. Не поменялось — значит проскочила помеха. После такого анализа открываем прерывания и опять спать.

А если делать опрос, то можно, наверное, на время сна снимать напряжение с геркона и не разряжать батарейку. А на время измерения подавать достаточно большой ток, на который не будут оказывать влияния разные помехи.

Хотя я не электронщик — чисто дилетантски рассуждаю. Может это все бред.
НЛО прилетело и опубликовало эту надпись здесь
RC-цепочка конечно позволит, но… она только уменьшит дребезг но не уберёт его совсем. Избавится от дребезга можно только при помощи D-триггеров и генератора на 5-10Гц. При всём при этом, схема на двух PCF будет потреблять наверно больше чем современный МК во сне, а значит решение довольно сомнительное. К тому же, PCF потребуют МК для считывания с них значений и передачи на сервер.
Но из достоинств — высокая автономность по питанию, резервное питание обеспечить гораздо проще чем для МК и даже в случае выхода МК из строя при аккуратной его замене показания счетчиков НЕ ИЗМЕНЯТСЯ! И более того, на время замены контроллера счетчики себе будут считать будто ничего не происходит, а контроллер можно менять хоть неделю.
Там же есть ESP8266, она может сама себя разбудить и снять показания. Но в целом да толку по сравнению с тинькой почти никакого, да еще и защита от затупов ESP пропадает.
сервер, где пользователь мог бы загрузить свой скрипт для отправки показаний воды.


Блинк поддерживает СМС на локальном сервере (Blynk.sms(«hello»)), но надо подключать смс гейт. Как вариант — можно использовать email, а в почтовом клиенте настроить форвардинг на смс. Сейчас все операторы поддерживают email->sms.
Спасибо! В текущей реализации E-mail каждый день приходит. У Вотериуса нет календаря, хотя его можно с Blynk получить.
Не знал, что есть официальный API ЕМП для передачи показаний счетчиков воды… Хотя вроде гуглил, но не находил такого, поэтому написал скрипт для передачи показаний через парсинг сайта my.mos.ru и отправку значений. Там же есть и передача показаний электросчетчиков, но почему-то после передачи значений электросчетчиков, новые показатели отображаются не сразу, а только на следующий день, хотя на сайте мосэнергосбыта они отображаются сразу. Поэтому пишу сейчас скрипт для передачи показаний электросчетчиков, разбирая запросы-ответы мобильного приложения мосэнергосбыта. Может и для него есть какое-то открытое API, которое я не нашёл?

p.s. спасибо за статью, тоже хотел прикрутить ESP8266 к счетчикам, чтобы в итоге автоматически передавать показания, но не думал, что ради экономии питания стоит использовать другой микроконтроллер
Вот. После регистрации Вам дадут доступ к описанию API. Посмотрите на приложение Госуслуги Москвы, оно также умеет добавлять электросчетчик клиенту и слать его показания. Буду рад пул реквесту в github.

Там куча нюансов с этими счётчиками…

Классная микросхема, но мы передаем по Wi-Fi, поэтому полезность нивелируется. Но с нее можно взять минимум схемотехнику development board.
Кстати, можно еще посмотреть в сторону ESP32. У нее уже есть встроенный ULP (Ultra-Lower-Power Co-processor). Судя по даташитам (ESP32 Series Datasheet л.20) с работающим ULP обещают потребление 150мкА:
Power mode: Deep-sleep,
Description: The ULP co-processor is powered on,
Power consumption: 150 µA.
А зачем нам ESP32 с 150мкА? У нас ESP8266 во сне потребляет 0-10 мкА. А на подсчет импульсов уходит ~7 мкА.
1) вместо связки attiny+esp8266 будет стоять одна esp32 (с кучей свободных пинов);
2) 150мкА кушает встроенный ULP сопроцессор в режиме работы, но его тоже можно вгонять в сон, в этом случае работает только встроенный таймер который будит ULP и кушает он — 5µA;
3) потребление esp32 при CHIP_PU=0 — 0.1 µA.
Да, отличный вариант, спасибо!
О! у них даже в примерах уже счетчик импульсов на ULP есть:
# ULP Pulse Counting Example

examples/system/ulp/ вот что пишут:
With the default configuration (20ms ULP wakeup period), average current consumption in deep sleep mode is 16uA.

Т.е. если я правильно понимаю, то при 250мс периоде пробуждения кушать оно будет приблизительно: =16*20/250 = 1.28мкА.
Вау! На это стоит обратить внимание =).
Не очевидно, что они за потребление берут, поэтому надо брать микросхему и тестить. Владельцы ESP32! Соберите Вотериус 2.0! =)
… и замерьте реально потребляемый ток во всех режимах.
Потому что, как показывает практика, китайцы могут написать всё что угодно…
Ножка для датчика протечки у Вас есть, сконфигурируйте вместо reset входной пин. И настройте BOD, он умеет включать контроллер с небольшой задержкой после подачи питания. Еще ногу можно взять переведя протокол обмена между микроконтроллером и esp на onewire, или использовать сигнал SCL через RC цепочку для включения ESP, в таком случае после прекращения обмена по I2C ESP выключится самостоятельно после разряда конденсатора.
Класс! Спасибо! Я закину идею в github, вдруг кто раньше меня доберется до экспериментов!

Вопрос:
1. какая обвязка пина reset должна быть?
2. BOD для чего понадобится задерживать?
3. Да, кроме onewire есть еще PJON .

Решение с SCL отличное =), я бы запасся осциллографом для отладки.
И высоковольтным программатором, без пина RESET иначе ни как…
1. Обвязка как для обычного пина, фьюзы выключают функционал reset и ножка становится одним из портов как и остальные, без специальных разрешений. Но как сказали ниже, перепрограммировать после выключения резета можно только при наличии высоковольтного программатора.
2. Задержка запуска процессора нужна чтобы переждать переходные процессы при появлении питающего напряжения, это программируется тоже fuse битами при включении BOD.
Ножка RESET при этом надо учесть не полноценная — она сможет только подтягиваться к земле, а на "+" работает только встроенная подтяжка. И надо предусмотреть защиту схемы от внутрисхемного программатора, на этой ножке в режиме программирования всё-таки высокое напряжение!
Функция BOD к сожалению не бесплатна, она повышает потребление контроллера во сне.
Реализовывал коммерческий проект на базе AIU аддакс матрица. Постоянно была грёбаная проблема поверки по импульсам, т.к. через этот контроллер воду слали и газ. Газовые счетчики — это была отдельная история. Каждый производитель счетчиков: кто во что горазд :)
проект надо повторить в новом доме уже — поставил в главные закладки на реализацию
Здорово, что у вас есть практический опыт подключения к счетчикам. Я бы хотел собрать список совместимого оборудования, туда можно включить и подводные камни интеграции.
НЛО прилетело и опубликовало эту надпись здесь
Лучше сообщите REM платы в Резоните, чтобы можно было их там заказать. Ну, если только Вы не хотите ими барыжить:-)
А где это смотреть? Там пластина на 21шт, проще мне в личку написать.
На Резонитовском пакете с пупыркой наклейка, там есть строка «внутренний» или «заводской» номер. Формат его такой: REM XXXXXX — если это серийное или TIM XXXXXX — если это опытное/срочное производство.
А покажите, пожалуйста, фото установленного в продакшн :) девайса
Надо просить народ с хэштегом выкладывать =).
Фотоаппарат к такому варианту дотянулся:
image

Сбоку сверлится дырка и можно на стяжке подвесить.

-стоит ли повторять в этом виде проект?
-какой счетчик подойдёт? Не в курсе этой темы, подскажет кто?

Счетчик любой с импульсным выходом
типа «сухой контакт»

А без замены счётчика, отдельно сам датчик бывает?

Можно так «Оптическое распознавание символов на микроконтроллере»
habr.com/post/330936

Дешевле и проще поменять на счетчик с импульсным выходом
Это универсальное решение без замены какого либо счетчика. Наприимер можно на газовый подвесить.

Использованная в статье камера OV7670 на али стоит около 200 руб. ESP8266 около 150 руб.
Не встречал =(. Счетчик формально опломбирован, т.к. является измерительным устройством… Надо делать датчик положения стрелки, но в эту сторону вообще никто не думал…
Я видел/читал про газовые счетчики.
Некоторые модели уже имеют встроенный магнит, но не имеют встроенного геркона. При желании можно докупить за какие-то безумные (для геркона) деньги датчик, который ставится в отведенное ему углубление в корпусе счетчика. И таким образом счетчик апгрейдится до импульсного без снятия пломб.
С водяными такого не видел.
с газовыми беда, отдельно на завод в одном из жилых проектов когда работал писали задание на производство интерфейса под их готовый счетчик, те выкатили сумму… дороже счетчика, сами в итоге паяли :)
В качестве идеи, возможно, подойдёт.
Как существо ленивое и не обременённое знаниями, первый опыт с esp8266(NodeMCU), взял «сенсор линии» с компаратором. Считал обороты крыльчатки маленькой, у меня 6 лепестков было. «Посчитал количество ног и поделил на 4.»(ц)
Писал на lua, прерывания брал по нарастающему фронту, дребезга или ложных импульсов на 5м витой пары не заметил.
Данные на обороты есть в паспорте счётчика, емнип.
Так 2 года отработало.
Естественно, ни о каких батарейках и экономии на питании речи не идёт.
круто а осциллограф возможно?
мечта не прикручивать к контролеру экран а передавать на мобилку
желательно таким тупым байтовым протоколом
{1,254,2,253} {Umax b1 b2 } {Umin b3 b4} {800 байтов значения по y}
первая последовательность это маркер начала кадра (сбой маловероятен )
далее 2 байта макс напряжение встерченное в осциллограмме 2 байта минимальное
800 точек у на картинку.
в приципе мне бы хватило

ээ… вы сейчас что прокомментировали?

Отличный опус! Читал с упоением. Ещё раз убедился что всё что ты только задумал кем-то уже реализовано :-)

Спасибо =). Я сам много лет ждал этого решения, но пришлось взять паяльник. Не жалею, знаний вагон и тележка хайпа.
Москвичи отправляют показания по СМС, значит, достаточно веб-сервера для приема данных Вотериуса и страницы с СМС (github).


dontsov А можно поподробнее, что имеется в виду под страницей с СМС? Из описания на github не очень понятно… Спасибо.
Максимально упростить можно генерируя СМСку с нужными цифрами. Т.е. Вотериус может слать на вебсервер показания, а на веб странице может быть ссылка, при нажатии на которую сразу СМСка формируется. Зайдите на github библиотеки с телефона и нажмите на примеры.
Я правильно понял, что на веб-странице генерируется ссылка, при нажатии на которую с мобильного телефона, формируется СМС?

да

В том исполнении, что я вижу на фотографиях, есть неучтённое слабое звено- это окисление контакта между элементом питания и металлическим контактом, таких звеньев аж 6 штук. Проблема тем более актуальна, что пиковый ток достигает 250мА, в эти моменты будет самое большое падение напряжения. Влажность в помещении увеличивает риск многократно. Проблему можно решить точечной сваркой, пайка под вопросом, может кто предложит ещё пути решения?

ого, так глубоко я не копал, подразумевая домашнее дефалтно-температурное использование!


может схему питания построить на ионистре после стабилизатора? я видел статью, где для заботы о батарейках после стабилизатора ставили литиевый аккумулятор.

Ионистор… не так хорош как этого хотелось бы. Года два под напряжением и он портится необратимо.
А можно ссылку на источник такой информации?
Любой даташит на ионистор. Гарантированое время нахождения под напряжением — 8...10 тысяч часов. В реальности бывает больше, как повезёт…
Первый попавшийся Ионистор 100Ф 2,7В SAMWHA — гарантия 1000 часов на 2.5В 70 градусов цельсия. При этом внутреннее сопротивление может увеличиться в 2 раза.
Автор поста подразумевал «домашнее дефалтно-температурное использование».

Недавно проводил эксперимент: установил термометр рядом со счетчиками, и закрыл дверь в сантехнический шкаф. За 8 часов температура не превысила 35°C.

По даташиту указанного Вами ионистора, как впрочем и у других, Life Time при 20°C составляет около 10 лет (с учетом потери емкости до 30% и увеличения ESR до 200%).

Лет на пять должно хватить. Но Вы правы, на «пожизненное» решение это не тянет.

Спасибо, что обратили внимание. С меня плюсы )
… Но если снизить требования к емкости со 100 Ф до 1 Ф, то десять лет работы ионистора при 40°C и 100%Vrated гарантированы (см. стр.10).
Обожаю запихивать что-нить в отсек от AA! Респект и уважуха!

1. Что за терминал на 4 пина с зажимами? Прикольная штучка! DG141V-04P — оно?
2. Отправлять ESP в сон по пину… Блин, ну почему не я это придумал?!
3. Обновление прошивки по воздуху… Не, ну на ESP может быть… А вот на тиньке? Я обычно ее шью без загрузчика и прошивается по UsbASP — т.е. 4 пина, из которых все занято… Гммм…

Надо будет попробовать!

Йеее! Спасибо! Про отсек отдельно! Люблю, когда минимум усилий без лишних габаритов!


  1. да, подойдёт любой с шагом 2.54.
    у меня лозунг, который я забыл прокричать "никаких отверток!", поэтому выбрал пружинный зажим. Так и на винтах подойдёт.


  2. И не я это придумал)


  3. Да, тут проблемка… Первоначально я думал сделать Вотериус на ESP-12E и потом заморочиться с функцией ISP программатора, но как погряз во все нюансы, понял, что единственно верный первый шаг — сделать без лишних деталей и функциональности. Поэтому ESP-01 и ничего лишнего.
    Сейчас думаю добавить функцию передачи показаний по короткому нажатию, а настройка по длинному нажатию.
    Тогда можно будет легко проверить контакт, вылив воды и нажав кнопку.


Пссст!
Выключаем, жмем на кнопку и с нажатой кнопкой — включаем! Девайс при загрузке смотрит — оппаньки! Кнопка нажата! И впадает в настроечную эйфорию!

нет у него кнопки включения) не нужна

Да? А я думал у этих корпусов с крышкой выключатель штатная фигня??? Движочек такой…

Штатная… поэтому отправился в помойку =).
Буду рад линку на блок с крышкой без выключателя.

В Кварце искал в очередной раз батарейные блоки на покупку… Выдало в табличке, что батарейный отсек и два варианта — у одного в описании выключатель есть, а у другого — нет…
Обраааадовался. Смотрю параметры — ан нет! Он есть, просто при заполнении позиции в базе они опять глюканули…

У тебя печаток этих не осталось??? Пару штук выкупил-бы. А то ЛУТ у меня не работает, а разворачивать во время ремонта комплекс для фоторезиста просто негде сейчас… А Резонитить заказ ради двух штук — ну сам знаешь их расценки на «первичный» для платы на «подготовку»…
Если без выключатели, они обычно открытые. Можно взять открытый и в распаячную коробку запихать.
Остались, пиши!
Поржать…
Накупил этих клеммничков в ЧиДе, но я-ж вумный: вдруг еще пригодятся где?!
Ну и купил «одиночек»…

А тут смотрю — «А четыре в один слот батарейника влезут???»…
Не влезли…
На сайте ЧиДа под заказ только четверки и от 11 штук…

Почесал макушку, поддел аккуратно ногтем половинки и разъединил. После чего — пристыковал к другому… Еще 2 и вышел прямо четырехпиновый!
Ыыы! Кайф!
хе-хе =)
Вот бы ещё счётчики без вывода можно было без гимора так апгрейдить…

Offtop. Иван Ганжа — это тот который альпинист? Если да, превед Ване, рад встретить общих знакомых на просторах =)
Пока нет open source решений =(. Я сайт для передачи показаний доделаю и хочу выкроить время: приделать Вотериусу камеру для вас.
Для электросчетчиков давно придуманы мощные счетчики Матрица ADDAX — там и управление потребителем и море параметров считывается и сразу ясно, как «качествено» спроектированы и построены сети 0.4 кВ
Я не нашел на сайте, куда отправляют данные эти счётчики? И… чем они лучше Меркурия? =)
Они отправляют их на свой сервер, который ты должен развернуть естественно ;)
Зачем в схеме нужен attiny?
Esp8266 спит с током 20мкА. Расчет показывает, что при емкости батареек 2000мАч, спать система может 10 лет.
Просыпаться достаточно раз в 2…3 секунды (3 / (макс.расход л/с)/ 2 * 10) для замера и раз в сутки для отправки данных.
Я не профи, хочу понять, где я не прав.
ESP8266 просыпается не мгновенно и в этот момент потребляет большой ток. Просыпаться надо: 3 м3/час расход. Пусть 3.6, если 10л/импульс, то импульс раз в 10 сек. Геркон замыкается при проходе стрелки через 3 из 10 сегментов стрелки, т.е. раз в 2 секунды надо просыпаться для надежности.
Сколько потребляет при загрузке ESP надо в недрах esp8266.ru искать. График там такой: www.cron.dk/esp8266-on-batteries-for-years-part-5.
Больше похоже на танк двигающийся в пробке. Если найдете, скиньте точные расчеты сюда!
Вы привели график потребления с учетом работы WiFi.
А WiFi для замеров включать не требуется.
А с учетом того, что частота ESP8266 в 5 раз больше — потребление при замерах может быть меньше чем на attiny.
Обычно потребление от частоты имеет прямую зависимость. Я написал, ищите на форуме. Там отдельный вид спорта «ускорить загрузку ESP».
Не помню в каком проекте видел, но про attiny было.
общая идея:
потребление на частоте 1мГц и 8мГц отличается в два раза (условно).
но время в активном режиме при частоте 8мГц в 8 раз меньше.
т.е. выгоднее использовать более высокую частоту.

про ускорениие ESP — все разговоры про ускорение с инициализацией wifi.
а это требуется раз в день. раз в пару секунд достаточно выполнения десятка прикладных команд.
Я не вдавался в глубь, может там загрузчик какой или еще что.

Я не критикую ваше решение, просто хотел понять необходимость второго контроллера.
На данный момент, я понимаю, что вы решили что так проще, особо не задумываясь.
Ааа понял мысль про частоту, обычно пишут Х мкА * 1Мгц, т.е. не будет выигрыша.
Про ESP я штудировал форумы: да, там загрузчик.
Attiny85 просыпается и проверяет входы ~0.2мс при токе 0.6мА (точно не измерил, буду рад, если кто поможет и подскажет целесообразность работы с битами, нежели Arduino framework).
ESP загружается сильно дольше при токе ~50мА. Несопоставимая разница.
можно ли это все померить без осциллографа?
Я думаю можно подавать HIGH потом LOW на вход Вотериуса вместо чтения, подключить его на вход Ардуино: измерить время импульса и написать в лог.
Собственно, у вас фактически получился осциллограф на ардуине.
точно не измерил, буду рад, если кто поможет и подскажет целесообразность работы с битами, нежели Arduino framework
Тут и измерять нечего.
Оптимизированная вручную ассемблерная вставка для работы с битами будет однозначно эффективнее (короче, быстрее), чем универсальный Arduino framework, написанный на языке Си для всех случаев в жизни.
В этом легко убедиться посмотрев ассемблерный листинг последнего…
Да, уже померили, спасибо. До ассемблера не дошли. Но перешли на analogread для совместимости с намуром. Следущей оптимизацией может быть запоминание типа счетчика, чтобы если он геркон, то digitalread, если намур — analogread делать. Правда, не факт, что в 4кб уложимся.
analogread в tinycore оптимальный, digitalread нет, поэтому там битами поработал.
Открыл даташит на одну из тинек: 1Мгц потребление 0.25мА в активном режиме, 8Мгц — 7мА. в 28 раз!!! Больше! А полезной работы он может сделать всего в 8 раз больше. Где вы такие форумы сказочные находите…
Даже там разница в 4 раза, и методика измерения потребления непонятна. В каком режиме, какая периферия активна, внешний обвес. Судя по всему, там активен ИОН для АЦП, а это довольно конский(посмотрел в даташит — при 5В это примерно 450мкА) потребитель который может исказить потребление на частоте в 1Мгц что сильно повлияет на соотношение. По хорошему, надо было измерить потребление при 1, 2, 4 и 8Мгц отделить статическое потребление от динамического(надо же, в даташите и этот график есть).
Но ИМХО, больше доверия именно даташиту. Там это всё было проверено.
Вообще то для подобных целей как то само собой использование BLE напрашивается.
BLE — это bluetooth? У меня не напрашивается — я могу быть не дома.
А зачем вам быть дома, esp-шка же тоже не к вашему телефону цепляется.
Я предположил, что progchip666 хочет по bluetooth на телефон передавать показания.
Я думаю как всякие Xiaomi Mi-flora/mi-temp, могут и в телефон, а могут и на гейтвей локальный.

т. к. показания воды не нужно слать каждые 5 минут или каждый час, то плюсов low energy не даст.

Bluetooth Low Energy. Последние два слова имеют существенное значение

не имеют, т. к.


  1. не нужно часто передавать данные
  2. нет потребности рядом с вотериусом держать телефон. или гейтвей делать
Low Energy — именно они и имеют. Существует возможность настраивать интервалы передачи данных и если они лежат в области сотен миллисекунд от одной трёхвольтовой батарейки устройство легко могло бы работать годами. Микроконтроллер управляющего модуля как правило имеет приличный резерв памяти программ, поэтому мог бы без проблем справиться и с обработкой данных от счётчика, устройство могло бы стать на порядок меньше и работать больше. Впрочем, для единственного экземпляра, собранного человеком, который специализируется на чистом софте или выступает в роли системного интегратора ради забавы вполне сойдёт и вариант, описанный в статье.
Я говорю, что не вижу применения BLE, т.к. не пойму куда вы предлагаете отсылать данные. Пассаж про специализацию я не знаю для чего вы написали ).
Имеющий глаза увидит, имеющий уши услышит, разбирающийся в Hardware никогда не сделает подобную поделку.
Вы не обосновали своё предложение и начинаете философствовать. Объясните, кому нужен BLE для передачи показаний счётчика воды? То, что он мало потребляет я и без вас знаю =).
Вот сделали на Bluetooth Low Energy! elehant.ru/cntr_water.php
Раз в 15 сек отсылают показания, от таблетки 6 лет работают… Если вы это имели ввиду под «low energy», то впечатляет, да. И, если нужно видеть показания на смартфоне в квартире, то это решение подходит. Но я не спец по приложениям для телефона и не люблю запущенные в фоне приложения.
Раз в 15 сек отсылают показания, от таблетки 6 лет работают…

Откуда?
Там же на сайте, для «выносного беспроводного дисплея»:
Работа батареек
2 года
А 6 лет — межпроверочный интервал, и к батарейкам никакого отношения не имеет. К слову сказать про то сколько батареи на счетчике хватает в характеристиках скромно умалчивают.
Хм… неужели я это придумал. Кстати, оцените: elehant.ru/img/Elehant-SWD-Instal-Battery.pdf
замена батарейки с паяльником.
о! тут видны потроха :)
1) батарея cr2477 — емкость 1000 mah
2) BLE модуль — NRF24L01+ SMD
3) счет импульсов видать отдельный МК + индуктивный датчик и возможно ОУ.

Итого что бы хватало на 6 лет среднее потребление должно быть:
1000мАч / (6*365*24) = 0,019025875 мА = 19 мкА.

Собсно при 20 мс на передачу данных и токе 8мА (из даташита на nRF24L01) все остальное должно кушать не более 8 мкА, при 3 мс на передачу данных — не более 17 мкА. Вобщем то вполне реально.
Ага. Виден главный контроллер возможно STM32. И какой-то 8 пиновый мелкий. Не пойму зачем нужен второй.

stm8 наверное. 32 тут жирно будет. в soic8 скорее всего ОУ (операционный усилитель), т.к. датчик импульсов индуктивный напрямую в МК его не воткнуть — маловата напруга будет.

Не факт. Если много витков намотать, может хватить на импульс порядка 2 вольт которого хватит чтобы переключить вход. А вот наличие ОУ и микроамперное потребление под сомнением. Может какой-то CMOS-счетчик? типа PCF8563 в режиме счета импульсов. А контроллер просыпается и каждую минуту считывает значение и передаёт. Кстати просыпаться он может по сигналу этого же счетчика…
п.с. если знаете низковольтные ОУ с микроамперным потреблением можно свободно делится их названиями, они найдут своё применение.
А вот наличие ОУ и микроамперное потребление под сомнением.

Собсно вот ОУ с потреблением в покое 320нА на канал:
www.ti.com/product/tlv8802
www.ti.com/product/lpv802

Может какой-то CMOS-счетчик? типа PCF8563 в режиме счета импульсов.

PCF8563 вроде кварц надо, чего на потрохах не видно. Да и на кой счетчик нужен если стм-ка есть? пусть ее переферия считает.
В режиме счета импульсов кварц не нужен.
Стоимость ОУ великовата для любительского применения.
Стоимость ОУ великовата для любительского применения.

Ценник не смотрел когда ответ писал. Счаз глянул tlv8802 на моузере — стоимость 1 вечнозеленый, т.е. ~ 70р. В чипедипе (правда под заказ) — 67р, в других инетмагазах около 90р. По мне так совсем не дорого.
Это для РФ, для европы смотрю меньше — 0.5$ и 0.18$ в катушке от 1000шт. Но больше их практически нигде нет, хотелось бы чтобы они были в наличии в локальных магазинах.
Это для РФ, для европы смотрю меньше — 0.5$ и 0.18$ в катушке от 1000шт.

Ежили оптом у нас брать то примерно так же:
24,40 p от 2500 шт
28,10 p от 1000 шт

Но больше их практически нигде нет, хотелось бы чтобы они были в наличии в локальных магазинах.

Интернет стирает границы. Где то и магазинов с радиодеталями нет, но почтовое отделение найдется.
Коллеги, что-то надоело кормить спящий ESP электричеством =(.
Что если Attiny85 напрямую к батарейкам подключить, а ESP запитать от регулятора с низким током спячки и пином EN.
Минус: Для линии i2c нужен будет делитель, т.к на Attiny85 будет 4.7В, а на ESP ~3.
Плюс: Сейчас ESP жрет около 7 мкА, что не оптимально.

Как искать такой регулятор?
Вот в таком проекте TPS61025
github.com/hamityanik/ULP-Weather-Logger/blob/master/Schematic.pdf
Как искать такой регулятор?

Заходишь на сайт производителя, например ti.com, и дальше по ссылкам. Power management > DC/DC switching regulators… LDO regulators итд.
Поменяй Attiny на STM8L и потребление снизишь и не нужно будет заморачиваться с разным напряжением питания ESP и Attiny.
Тогда надо будет сильно заморочится со стабилизатором который имеет низкий ток собственного потребления но уже в рабочем режиме, ведь тогда он вынужден будет работать всегда. Смысл в том чтобы гасить питание полностью, вместе со стабилизатором а это означает лишь одно — питание контроллера напрямую от исходного напряжения.

я ж правильно понимаю, что заменять батарейки надо при "выключенном водопотреблении" (не критика, а просто вопрос)?

Ага

а планируется версия энергозависимая, но с резервным питанием?
или, быть может, вы подскажете, как её можно было бы сделать из текущей?


А лучше: как можно запитать от 12В (правильным способом) (я не прям силён в электронике, но умею разбираться)? У меня рядом со счётчиком расположена система защиты от протечек со своим сетевым, но зарезервированным 12В питанием, можно было бы к ней "присоседить". К тому же, я планирую показания передавать чаще, чем раз в сутки (что скажется, понятно, на энергопотреблении)

Вместо батареек запихните: Модуль DC-DC преобразователя AMS1117 (с 6–12 V в 5 V)

и вообще респект за то, что поделились! и схемой, и разводкой платы и прошивками и описанием, в том числе процесса изготовления! это реально круто!

Спасибо! Буду благодарен за репост в соцсетях :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории