Хабрахабр

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

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

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

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

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

Требования

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

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

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

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

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

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

Настройка

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

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

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

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

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

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

Обычно цифры 19-23мкА. На фото хорошая ESP, потребление прыгает 7-11мкА.

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

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

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

Корпус

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

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

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

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

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

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

Питание

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

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

Дома он работает уже 45 дней, отправляя показания каждые 30 мин (для ускорения разряда). Отсутствие инструментов не позволяет мне точно измерить потребление Вотериуса. 17В с 4. Напряжение питания упало на 0. 51В. 68В до 4. 5 года. Если так пойдет дальше, то батареек хватит на 1. Да, я знаю про саморазряд батареек. Отправка показаний раз в сутки в 3 раза экономичнее, поэтому 4 года работы. Даташит energizer и срок годности на упаковках говорят, что не сильно.

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

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

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

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

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

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

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

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

Развитие

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

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

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

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

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

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

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть