- PVSM.RU - https://www.pvsm.ru -

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек)

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек) - 1

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

Мой путь оказался непростым и витиеватым. Но в результате получилось устройство, передающее показания воды по Wi-Fi на телефон. Простое и понятное в использовании и настройке хоть школьнику, хоть гуманитарию пенсионеру. А знакомым со словом «Ардуино» — ещё и несложное для изготовления. Девайс способен работать от батареек четыре года (дольше, чем длились отношения с вашей бывшей). Это ещё и первый открытый проект с такими характеристиками. Заводские аналоги я выписал [1], их мало, да и ладно с ними.

Итак, у нас есть немного денег и большое, но честное желание упростить себе жизнь, не нарушая Уголовный Кодекс. И чтобы никаких этих ваших 220В, серверов и кучи кнопок! Показания смотрим на смартфоне в приложении Blynk или аналогичном сервисе.

Теперь устройтесь в кресле поудобнее, съешьте ещё этих мягких французских булочек да выпейте чаю. Смотрите красивые фотографии и слушайте мой рассказ о том, что надо учитывать при создании автономных устройств. Но сначала краткое описание Вотериуса.

Требования

  • счетчик с проводом (выход «сухой контакт»)
  • Wi-Fi роутер с интернетом

Характеристики

  • Питание: 3 батарейки АА
  • время работы 4 года или дольше
  • 2 счётчика воды
  • одна-единственная кнопка для настройки
  • энергонезавимая память для показаний и сетевых настроек

Ежедневная передача по Wi-Fi

  • текущих показаний
  • потребления воды за сутки
  • напряжения питания
  • эл. письма (тело и заголовок можно менять)

Реализована поддержка TCP сервера и приложения Blynk. Добавляйте протоколы HTTP, MQTT, Modbus TCP, облака Cayenne, IFTTT и т.п. (тут даётся место для проявления вашего творческого гения).

Настройка

При нажатии на кнопку Вотериус включает Wi-Fi точку доступа. Подключаетесь, заполняете форму, трижды кланяетесь на восток и говорите «спасибо» разработчикам WiFiManager [2]. Можно мысленно.

Настройка Вотериуса с помощью Wifimanager

Занимательная электроника

Россыпь радиоэлементов для сборки Вотериуса

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек) - 3

Единственный способ достичь единиц микроампер потребления во время подсчета импульсов — использовать экономичный микроконтроллер, а не то, что вы подумали. Сердце Вотериуса — микроконтроллер Attiny85 [3](аналоги — MSP430, STM8L). Прошивается без проблем любой платой Ардуино любыми руками, растущими выше пояса. Attiny85 работает на частоте 1МГц от внутреннего генератора и считает импульсы, проверяя периодически 2 входа на замыкание и кнопку. Ток сна 4 мкА при 3В [4]. Сказка.

В качестве Wi-Fi я использую ESP8266-01. Потребления во время работы 75мА, импульсами до 250мА. Общаются два микроконтроллера по шине i2c. Правильность выбора подтвердил проект метеостанции [5]. ESP8266 постоянно во сне: пин EN подтянут к GND через резистор. Ток потребления меньше 10мкА (мне попадались экземпляры с 0мкА). Раз в сутки Attiny85 подает HIGH, ESP8266 просыпается, получает показания от Attiny85, подключается к домашнему Wi-Fi и отправляет данные за ~4 сек — что по исследованиям британских учёных гораздо быстрее, чем вы обычно добираетесь вручную до этих самых счетчиков.

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек) - 4На фото хорошая ESP, потребление прыгает 7-11мкА. Обычно цифры 19-23мкА.

Другие типы сна Вотериусу не подойдут, хоть обсыпьте его мелатонином под звуки колыбельной: Бесконечный deepsleep с мгновенным пробуждением по импульсу на External reset потребляет 20мкА и подходит для частой отправки данных. Самый экономичный вариант: полное отключение ESP8266, но понадобятся полевые транзисторы, которые боятся статического электричества, так-то.

Кнопка настройки расположена на линии SCL. Все пины Attiny85 заняты! По этой причине Вотериус не поддерживает выходы счётчиков «намур» и не имеет датчика протечки.
Светодиод подключен к TX пину ESP и горит, когда ESP работает. Подключите TTL-USB переходник, чтобы видеть лог (интересно же!). В начале разработки я считал, что для индикации ошибки нужно моргать светодиодом, но обойдётесь — это только усложнит код.
При успешном подключении к Wi-Fi роутеру через 3-10 секунд светодиод погаснет, а если продолжит гореть — подключитесь телефоном к Вотериусу заново. Сложная техника, нанотехнологии, наработки НАСА, учения Древнего Китая.

Любой из нас знает: особенность устройств с низким потреблением заключается в подверженности электромагнитным помехам. Поэтому я обратился к знакомому электронщику и изучил литературу [6] (+красивейший курс Murata [7]). Все пины у ESP и Attiny подтянуты к питанию или GND. Установлены конденсаторы по питанию. «Грязная» земля счётчиков подключена к «чистой» через резистор 300 ом, а сами выходы через резистор 3к3. Всем бы так!

Корпус

Берем пластиковую бутылку… шутка. Я использовал отсек на 4 батарейки АА. В крышке вырезается дырка под разъем, сбоку для светодиода и кнопки.

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек) - 5

Можно распаячную коробку использовать (с 3D-принтером и прочим шаманизмом экспериментируйте сами, если ннннада).

В github [8] лежит однослойная плата для ЛУТа и двухслойная для фабричного производства. Вотериус может изготовить даже школьник! Правда, если он не имеет гироскутера и никогда не крутил спиннер.

Идеальная плата сразу не получается. Первый прототип выглядел так:

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек) - 6

А вот постройневшая четвертая версия, почти «идеальна»:

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек) - 7

Я не смог устоять и заказал пачку плат в Резоните. Это кайф!

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек) - 8

Питание

В Вотериусе стоит стабилизатор MCP1700 [9]на 3В с очень низким минимальным потреблением (несколько мкА). Три алкалиновые батарейки АА 1.5В смогут разрядиться [10] почти полностью до 3.2 В. Плюс на Attiny85 будет стабильное напряжение (и меньше плавать частота [11], что есть гуд, хотя в этом проекте не принципиально).

Схема будет работать и без стабилизатора от двух батареек АА. Attiny85 следует купить версии V (питание до 1.8В). ESP работала «в интернетах» до 2.5В. Мы сможет воспользоваться 40% ёмкости батареек (не верите — см. тестирование А. Надежина [12]). Если купить две литиевые батарейки АА 1.5В 3 А*ч, Вотериус будет работать до 10 лет и при низкой температуре, а там — глядишь — и коммунизм построим.

Отсутствие инструментов не позволяет мне точно измерить потребление Вотериуса. Дома он работает уже 45 дней, отправляя показания каждые 30 мин (для ускорения разряда). Напряжение питания упало на 0.17В с 4.68В до 4.51В. Если так пойдет дальше, то батареек хватит на 1.5 года. Отправка показаний раз в сутки в 3 раза экономичнее, поэтому 4 года работы. Да, я знаю про саморазряд батареек. Даташит energizer [13] и срок годности на упаковках говорят, что не сильно.

Вот расчет потребления батареек и стоимость компонентов для самых любопытных (гуглтаблица [14]).

Программистские подробности (для тех, кто не устал)

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

Для защиты от перезагрузки Attiny я сохраняю все значения в ее память EEPROM. Для превышения ограничения в 100к записей я написал кольцевой буфер [15] с кольцевой меткой текущей ячейки. Теперь сплю спокойно, чего и вам желаю. В коде предусмотрено включение логирования для отладки. Подключите TTL-USB в разъём второго счётчика.

Экспорт данных

Сначала я написал Телеграм бота, но Роскомнадзор заблокировал Телеграм. Пришлось отказаться от этого решения, чтобы не запускать прокси-сервер и не раскачивать лодку. Использование Blynk оказалось оптимальным (бесстрашные разработчики борются с блокировками). Вот QR код проекта [16]. Кроме него приложение для телефона есть у проекта Cayenne.

Автоматическая отправка в Мосводоканал не реализована, т.к. проект некоммерческий, но какие наши годы. Или ваши. У меня нет средств содержать свой сервер и «узаконивать» процедуру отправки, но вы поспрашивайте по знакомым, вдруг… Буду рад вашей помощи и бесплатным мыслям.

Москвичи отправляют показания по СМС, значит, достаточно веб-сервера для приема данных Вотериуса и страницы с СМС (github [17]). Московским знатокам программы Fiddler, кто пользуется приложением Госуслуги Москвы, должен быть интересен мой Python скрипт [18] отправки показаний воды.

Развитие

Один из самых главных тормозов при создании нового продукта — перфекционизм, как вы понимаете. Нет необходимости делать новую функцию, не проверив, нужна ли она потребителям. Простой код легче развивать.

Путь к перфекционизму лежит через

  • Обновление прошивки ESP и Attiny через интернет
  • поддержку HTTPS или шифрования
  • сервер, где пользователь мог бы загрузить свой скрипт для отправки показаний воды.
  • использование STM8L/MSP430 (они экономичнее и больше пинов)
  • наглядную проверку наличия контакта со счетчиками при подключении
  • указание периода отправки эл. письма
  • поддержку выходов «намур» у счетчика
  • датчик протечки
  • управление кранами
  • поддержку электросчетчиков

Благодарности

Спасибо Ивану Коваленко [19] и Иван Ганжа за консультации по электротехнике, Лапину Е.Н. за правильный подход к жизни и папе за то, что я умею не только программировать, но и паять, а вам — за внимание!

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек) - 9

Буду рад любым предложениям, пул реквестам и критике!

Разогреваем паяльник! Проект на github [20]

Автор: dontsov

Источник [21]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/diy/287549

Ссылки в тексте:

[1] я выписал: https://github.com/dontsovcmc/waterius/issues/10

[2] WiFiManager: https://github.com/tzapu/WiFiManager

[3] Attiny85 : https://www.microchip.com/wwwproducts/en/ATtiny85

[4] 4 мкА при 3В: https://habrastorage.org/webt/a_/tf/9h/a_tf9hei5bjzg-kipcsvh5xxju8.png

[5] проект метеостанции: https://www.cron.dk/esp8266-on-batteries-for-years-part-5/

[6] литературу: https://github.com/dontsovcmc/waterius/issues/19

[7] Murata: https://www.murata.com/en-eu/products/emc/emifil/knowhow/basic

[8] github: https://github.com/dontsovcmc/waterius/tree/master/Board

[9] MCP1700 : https://eu.mouser.com/datasheet/2/268/20001826D-737536.pdf

[10] смогут разрядиться: https://github.com/dontsovcmc/waterius/issues/3

[11] плавать частота: https://habrastorage.org/webt/gf/ni/nz/gfninzdpsrn5iramzzmy1suezig.png

[12] А. Надежина: https://habr.com/company/madrobots/blog/364773/

[13] Даташит energizer: http://data.energizer.com/pdfs/alkaline_appman.pdf

[14] гуглтаблица: https://docs.google.com/spreadsheets/d/1fBV8hDb4R7eH10uAEd9G-35D6rSsODIu7HmnhNsZueg/edit?usp=sharing

[15] кольцевой буфер: https://github.com/dontsovcmc/waterius/blob/master/Attiny85/src/Storage.h

[16] QR код проекта: https://github.com/dontsovcmc/waterius/blob/master/files/qr.png

[17] github: https://github.com/smeeckaert/sms-link

[18] Python скрипт: https://github.com/dontsovcmc/emp_mos_api

[19] Ивану Коваленко: https://www.linkedin.com/in/ivan-kovalenko-a5b326131/

[20] Проект на github: https://github.com/dontsovcmc/waterius

[21] Источник: https://habr.com/post/418573/?utm_source=habrahabr&utm_medium=rss&utm_campaign=418573