HRP-N3 - серия источников питания с максимальной пиковой мощностью в 350% от MEAN WELL
РадиоЛоцман - Все об электронике

Учет расхода воды и ресурса проточного фильтра

Мастер Кит MP3509

Учет расхода холодной и горячей воды и ресурса проточного фильтра при помощи модуля MP3509. Разработка Android приложения для телефона.

Для фильтрации водопроводной воды я использую проточный фильтр Барьер, установленный под раковиной. Фильтр-элементы этого устройства имеют ограниченный ресурс, и их нужно время от времени менять, а стоят они недешево. Ресурс задан в литрах, и мне не хочется менять их раньше времени, а значит – нужен счетчик расхода воды через фильтр.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Готовых решений я особо не нашел – только в Леруа-Мерлен был подходящий прибор по цене порядка 4 тысяч рублей, поэтому решил собрать устройство самостоятельно. Ну и сразу сформировались дополнительные «хотелки»:

  • Сбор данных со счетчиков холодной и горячей воды
  • Звуковая индикация наполнения стандартного кувшина из фильтра
  • Передача данных в облако с возможностью контроля через приложение на телефоне
  • Опционально – подключение датчиков протечки и автоматическая блокировка подачи воды при протечке (пока не реализовано)
  • Измерение температуры горячей воды (пока не реализовано)

Выбор «железа»

Собственно, особо выбирать и не пришлось. Модуль MP3509 имеет достаточное количество выводов для подключения счетчиков, пищалки; силовые реле позволят реализовать отключение воды. Для измерения расхода через фильтр был куплен вот такой счетчик на известном китайском сайте за 300 руб:

Учет расхода воды и ресурса проточного фильтра

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

Выбор «софта»

Я решил остановить свой выбор на Mongoose-OS в качестве операционки для контроллера. Раз в 5 секунд, если сработал хотя бы один из счетчиков, событие отправляется по протоколу MQTT в Google IOT, а оттуда – в Firebase. Раз в месяц Firebase отправляет e-mail сообщение с текущими показаниями счетчиков, а в приложении на Android можно посмотреть текущий расход воды.

Почему такой набор софта. Mongoose-OS – это RTOS, может быть запущена на нескольких видах контроллеров. Имеет хорошую интеграцию с несколькими облачными сервисами, встроенное OTA обновление прошивки, API хорошо документировано. Интеграция c Google IOT и Firebase обеспечивает защищенную передачу данных, аутентификацию, разграничение доступа, при этом для домашних проектов она останется бесплатной.

Схемотехника

Схема подключения очень проста:

Учет расхода воды и ресурса проточного фильтра

Счетчики для холодной и горячей воды подключаются к выводам GPIO12 и 14 (эти выводы имеют встроенную защиту). Подключение лучше выполнить с помощью витой пары; для симметрии в земляной провод добавить резистор на 330 Ом. Динамик, управляемый через ключевой транзистор, подключается к выводу GPIO2 (транзистор подойдет любой с N-каналом, открывающийся от напряжения 3.3 В). Счетчик для фильтра требует питания; его выходной сигнал подключается к выходу GPIO13. Нам потребуется перепрошить контроллер. Для этого добавим перемычку между GPIO0 и землей, а ко входам TX, RX подключим USB-UART преобразователь, например BM8051. Ну и, естественно, потребуется источник питания 5 В от любой старой зарядки.

Программирование контроллера

Программирование контроллера производим при помощи USB–UART адаптера BM8051.

Учет расхода воды и ресурса проточного фильтра

  1. Внимание! После программирования исходная прошивка будет стерта.
  2. Скачайте и установите инструмент mos для работы с Mongoose os. Вы можете повторить приведенные на странице скачивания шаги, чтобы попрактиковаться в работе с этим инструментом. Для переключения контроллера в режим программирования замкните переключатель SW1 на схеме и выполните сброс.
  3. Клонируйте репозиторий с файлами проекта https://github.com/sergkit/WaterMeter. В репозитории несколько папок, к Mongoose-OS относятся папки fs, data-original и файл mos.yml.
  4. Измените конфигурацию в mos.yml в соответствии со схемотехникой устройства:
  • startPin задает начальный вывод контроллера для подключения счетчиков.
  • countPin задает общее количество подключенных счетчиков (может быть до 5).
  • filterPin вывод, к которому подключается счетчик фильтра.
  • filterDivider делитель для счетчика фильтра, который определяет, как часто будут передаваться показания в облако.
  • filterSize количество импульсов счетчика фильтра, после которых включается зуммер.
  • pickPin вывод, к которому подключается зуммер
  1. Загрузите прошивку в контроллер (mos build и mos flash).
  2. Посмотрите список wifi сетей. Найдите сеть с именем типа Mongoose_?????? и подключитесь к ней (пароль Mongoose, вы можете задать собственное имя устройства и сети в файле конфигурации). Зайдите на адрес 192.168.4.1 и задайте параметры домашней сети (не забудьте вставить имя устройства). Контроллер перезагрузится и подключится к домашней сети.

Google IoT

  1. Установите Google Cloud SDK, так как многие действия удобнее выполнять из терминала, вводя команды gcloud в командной строке. Скачать SDK можно со страницы загрузки Google Cloud SDK.
  2. Загрузите бета версию команд из консоли gcloud components install beta.
  3. Если у вас нет учетной записи Google, создайте ее.
  4. Последовательность настройки проекта Google Cloud приведена на сайте Mongoose OS. Ниже краткая выжимка команд, которые надо выполнить из консоли:

# Приведенные ниже команды нужно выполнить всего один раз для настройки Google Cloud project! Они могут быть выполнены из любой папки.

# Запрос авторизации в Google Cloud. В открывшемся окне нужно будет выбрать нужную учетную запись Google и разрешить доступ:gcloud auth login.

# Создание проекта. Например, выберем sensor-project как PROJECT_IDgcloud projects create sensor-project.

# Предоставление Cloud IoT Core прав на публикацию в Pub/Sub-теме:gcloud projects add-iam-policy-binding sensor-project --member=serviceAccount:[email protected] --role=roles/pubsub.publisher.

# Установка проекта по умолчанию для gcloud:gcloud config set project sensor-project.

# Создание тем Pub/Sub для отправки телеметрии:gcloud beta pubsub topics create main-telemetry-topic.

# Создание подписки Pub/Sub на созданную тему:gcloud beta pubsub subscriptions create --topic main-telemetry-topic main-telemetry-subscription.

# Создание хранилища для устройств (devices-registry).

# Определение топика Pub/Sub для публикации сообщений, в том числе для подпапки.

# Запрет подключения по протоколу HTTP: gcloud iot registries create devices-registry --project=sensor-project --region=europe-west1 --event-notification-config=topic=registry-topic,subfolder=registry --event-notification-config=topic=main-telemetry-topic --no-enable-http-config.

# На запрос разрешения API нужно отвечать «да».

# Команда не будет работать, если на аккаунте не настроен биллинг.

# В этом случае нужно перейти по ссылке, настроить биллинг и повторить команду.

Обратите внимание, нужно будет настроить биллинг (Но для проектов с небольшим трафиком использование сервиса останется бесплатным).

  1. Регистрация устройства в проекте Cloud IoT Core. Программа mos предоставляет удобную команду для выполнения этой задачи. Следует просто набрать следующую команду с идентификатором проекта и именем регистра:

# Регистрация устройства в Cloud IoT Core (выполнить для каждого устройства!):mos gcp-iot-setup --gcp-project sensor-project --gcp-region europe-west1 --gcp-registry devices-registry

Результаты работы команды выводятся на консоль mos. В папке проекта появятся два ключа – закрытый и открытый. Закрытый ключ (xxx.key.pem) – для ESP, а открытый (xxx.pub.pem) – для Google IoT Core. Они будут использоваться во время процесса аутентификации с использованием JSON Web Token в Google IoT Core. Теперь контроллер должен начать передавать данные в IoT Core.

Firebase

  1. Перейдите в консоль Firebase (https://console.firebase.google.com/). Выберите в ней созданный ранее проект. Примечание: После подключения проекта от вас потребуется выбрать тарифный план Firebase. В большинстве случаев для небольших и тестовых проектов план Blaze с оплатой по факту использования ресурсов даст достаточно бесплатных квот.
  2. Установите Node.js и Firebase Cli.
  3. Перейдите в папку firebase, выполните в консоли firebase login (откроется страница в браузере, где можно выбрать учетную запись Google) и выполнить команду инициализации firebase init. В процессе инициализации выберите созданный ранее проект, на все остальные вопросы подходят ответы по умолчанию. Обратите внимание: загруженные из репозитария GitHub файлы firebase/functions/index.js и firebase/public/index.html перезаписывать не нужно.
  4. Подключите авторизацию OAuth2 для вашего проекта. В консоли google cloud перейдите в меню API и сервисы, учетные данные. Создайте учетные данные для клиентов OAuth 2.0. Сохраните полученные идентификатор и ключ клиента.
  5. Определите переменные окружения

firebase functions:config:set googleapi.client_id="CLIENT_ID" googleapi.client_secret="SECRET" googleapi.mailto="MAILTO" googleapi.email="MAILFROM"

  1. Выполните деплой подготовленных функций

firebase deploy --only functions

  1. Перейдите в панели управления firebase в раздел Function, скопируйте адрес функции В настройках OAuth добавьте домен в список разрешенных.
  2. Перейдите по адресу функции authgoogleapi, авторизуйтесь, разрешите использования API Gmail в облачных функциях.
  3. Добавьте в базе Firebase узел config, в него добавьте следующие настройки:

Учет расхода воды и ресурса проточного фильтра

Они имеют следующие значения:

  • a,b,c,d,f – делители для пересчета импульсов счетчиков в отображаемые значения;
  • Stat – включает сохранение передаваемых с контроллера сообщений в узле stat;
  • Day – день, в который отправляется письмо с показаниями счетчиков;
  • M, Y – месяц и год с последними сохраненными данными.

Приложение для Android

  1. Установите Android studio, откройте в нем проект из папки WaterMeter1.
  2. Подключите firebase к проекту. На главной странице проекта в консоли Firebase нажмите кнопку Добавить приложение, выберите платформу Android, введите название пакета sergkit.watermeter сформируйте файл json и сохраните его в папку WaterMeter1app.
  3. Теперь вы можете собрать и запустить приложение. После запуска зайдите в настройки, задайте имя устройства и тарифы на воду.

Все готово. Теперь показания счетчиков отображаются в телефоне и раз в месяц отправляются на электронную почту.

Мастер Кит

KIT MP3509
Мастер Кит
1 127 ₽
T-electron
Россия и страны СНГ
KIT MP3509
Мастер Кит
3 331 ₽
Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя