Меню

Arduino снятие показаний счетчика

Arduino.ru

Счетчик воды, электричества. Arduino. TCP , Synology, PHP, MySQl.

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

Система учета и контроля помещения.

  1. Общее описание.

1.1 Система Учета и Контроля Адаптивная в дальнейшем «СУКА», (15/26 квартир) проектируется для решения следующих задач:

  1. Сбор показаний счетчиков: Электричества, счетчик холодной и горячей воды.
  2. Контроль температуры помещения.
  3. Контроль протечки воды.
  4. Контроль работоспособности кранов перекрытия воды.
  5. Тревоги: Протечки, Превышение комнатной температуры более 40С.
  6. Извещения.
  1. Все собранные данные должны быть переданы по локальной сети на устройство хранения информации NAS Synology 212 (в дальнейшем NAS).
  2. Хранение данных выполняется в базах данных Maria DB 10 (MySQL).
  3. На NAS развернут WEB server, который отображает:
    1. На первой странице: текущую температуру помещений 16 квартир. Тревоги.
    2. На второй странице показания счетчиков электроэнергии.
    3. На третьей страницы: счетчики холодной/горячей воды.
    4. Внизу каждой страницы графики аналитики за месяц. (за любой месяц, год).
    5. +1 Ошибки работы кранов перекрытия воды.
    6. +1 Количество перезагрузок «СУКА» или W5500 в месяц.

1.5 Каждая «СУКА» является самостоятельным WEB сервером. С возможностью чтения и записи текущих параметров.

  1. Термины:
    1. «1» — Логическая единица- +3,3-5V.
    2. «СУКА» — Система Учета и Контроля Адаптивная.
    3. «NAS» — Synology 212.
  1. Железо.
    1. Arduino Nano – 1 шт.
    2. Ethernet Shield W5500. (W5100).
    3. Датчик температуры DS18B20, или DH22 или IC2.
    4. Электросчетчик Орман СО-Э711 Т1 («1» выход). Max 3,1 Hz. (0,323 сек.).
    5. Водяной счетчик Пульсар d15 (геркон). Max 0,83 Hz. (1,2 сек.).
    6. Датчик протечки. Автономный релейный модуль. В случае протечки воды выдает «1» на Arduino. https://aliexpress.ru/item/32875516681.html?spm=a2g0s.9042311.0.0.144e33ede503sK
    7. Управление краном «1» на датчик протечки. Логическая 1 на Arduino.
    8. Кран воды. Отсечка воды в случае протечки. https://aliexpress.ru/item/32838488915.html?spm=a2g0s.9042311.0.0.274233edbzrqL5

Работает автономно. Arduino раз в месяц проводит проверку работоспособности крана (см. проверка крана параграф 4).

  1. NAS.
  2. Роутеры, хабы, пачкорды по желанию….
  1. Ожидаемые проблемы.
    1. Проблема 1. Запись в EPROM. Ограниченное число циклов 100 000.
      1. Решение: Запись только при изменении десятых значений счетчика.
      2. Запись по кругу 10 ячеек. Для счетчика Электроэнергии. Для счетчиков воды не обязательно.
      3. При чтении/записи с EPROM обязателен контроль CRC. При несовпадении код ошибки.
      4. С целью экономии потребления энергии, прогромно отключить АЦП и прочие не используемые блоки Arduino.
  1. Проблема 2. Медленные библиотеки. Считывание температурного датчика. DHT 22 до 2 секунд. Тогда применяем DS18B20 12 bit, точность 0,5 градуса. Не использовать библиотеку. Запуск и разогрев в цикле? Запрос. «Часть кода» Затем чтение. Чтение 250 ms. Электросчётчик читаем по прерыванию. Счетчики воды влезут в основной loop.
  1. Проверка кранов.
  1. Подать «1» на блок протечки.
  2. Измерить время появления сигнала закрытие крана. (220V используем оптопару)
  3. После закрытие открыть кран.
  4. Вывести результат о скорости работы крана в секундах. Если кран в течении 20 секунд не закрылся вывести сообщение об ошибке.
  1. Тревога и ошибки.
    1. Виды тревог: протечка, превышение температуры более 40С.
    2. Тревоги выводятся по email через NAS.
    3. Тревоги выводятся через альтернативные сервера. Например, Hikvision.
    4. Тревоги отображаются на WEB server на первой странице.
    5. Тревога выдается «1». Для пожарной сигнализации.
    6. В случае неполучения информации от определенного «СУКА» более 1 часа вывести 0 или ERR на WEB. Отправить инфо на майл.
  1. Защита от сбоев.
    1. Активировать Watch Dog в «СУКА» исходя из длины loop.
    2. Проверять зависание W5100. При необходимости сброс.
    3. Подсчитывать число циклов перезагрузки «СУКА» и W5100 в месяц. Выводить значение на WEB.
  1. Обратная связь.
    1. Возможность корректировки значения в каждом счетчики (в случае отклонения) с центральной WEB консоли или напрямую на сайте «СУКА».
  1. Трудности проекта.
    1. Минусы. Код для Ардуино могу написать сам (но лень). Поэтому буду приставать с вопросами по вашему коду.
    2. Плюсы. PHP не знаю. Отдамся в хорошие руки. (Друг знает PHP L).
    3. Вопрос. Печатные платы под проект можете? J ( L я так и знал…).

Источник



смотреть показания счетчика воды

Сегодня мы научимся выводить данные со счётчиков воды на свой телефон, планшет или компьютер используя WIFI модуль ESP8266. Я думаю, что вы не раз чертыхались снимая показания со счётчиков, ведь они расположены, мягко говоря, в не очень удобных местах. Но теперь достаточно включить свой телефон, открыть страницу в браузере и вы сразу увидите цифры. Для этого даже не надо идти к месту установки водосчётчиков, так как теперь это можно сделать удалённо используя свою домашнюю сеть.
Если заинтересовались, то милости просим для просмотра этого видео.

Кстати – это уже второе видео про счётчики воды. В первом я рассказывал как вывести показания воды на дисплей и сохранять данные во внутренней памяти Ардуино. Но тот урок показался подписчикам довольно сложным и меня попросили сделать что-нибудь попроще.
Вот вариант попроще. Как говорится «Лень – двигатель прогресса».
Если вы не знаете как работать с модулем WIFI ESP8266, то обязательно посмотрите предыдущее видео, там подробно всё рассказано.
Для работы нам понадобятся импульсные счётчики воды, то есть те из которых выходят 2 провода, а то что они болтаются без дела. И если эта тема вам интересна, то пишите в комментариях и я буду продолжать её усовершенствовать. Есть задумки что ещё можно сделать.

Читайте также:  Акт технического состояния электросчетчика

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

В принципе это обычная кнопка и работать мы будем с ней как с кнопкой. Примеры работы с кнопками можно посмотреть здесь.

Какие данные мы будем выводить.
Так как нам нужно сдавать только кубометры, то и выводить будем только их. Я их сделал побольше чтобы можно было легко увидеть. Так же я их сделал разными цветами. Горячая вода – Красный, холодная вода- Синий.
На счётчике это 5 цифр. Чтобы не перегружать память я сделал переменные типа int, поэтому можно выводить цифры от 0 до 65535.
Но практика говорит, что вы не сможете использовать столько воды. Раньше счётчик сломается или придёт время его менять. Но если вам принципиально, то вы можете использовать переменные других значений и сохранять большее количество цифр.

Давайте сначала посмотрим как это всё работает.
Сначала надо открыть браузер и ввести IP адрес что был присвоен вашему модулю ESP. Как это сделать рассказано в предыдущем видеоуроке.
На экране отобразятся 2 счётчика и на обоих будут значения ноль.
Имитировать счётчик я буду замыкая провода на землю.
В скетче я прописал, что к выводу 2 будет подключен счётчик горячей воды, а к четвёртому я подключил холодный.
Ещё я в скетче прописал небольшую задержку при срабатывании. Это необходимо потому, что счётчик – это не кнопка, и нажатие происходит очень медленно и дребезг контактов здесь очень заметен.
Так же я сделал обновление страницы в браузере что бы видеть результат сразу на экране. В реальной жизни это можно убрать, так как цифры меняться будут очень редко и вы не будете держать свой телефон во включенном состоянии так долго.
Для особо внимательных объясняю, что мигание светодиода на модуле WIFI происходит потому, что он подключен ко 2 выводу, как и горячая вода. Если вас это напрягает, то можете поменять вывод на другой, например пятый.
Это мы с эмулировали подключение к новому счётчику, но у вас может быть уже установленный счётчик и вы захотите подключиться к нему.
Для этого я предусмотрел в скетче пару переменных которым можно задать начальные значения. И установив их, вы запустите счётчик не с нуля, а с этих значений.
Давайте например вставим такие значения. Я выбрал вот такие. Через пару кликов мы сможем увидеть как обновляются большие цифры. Сотни и тысячи.
Как видите всё работает.

Скетч для скачивания доступен Активным пользователям канала. Если вы хотите скачать этот скетч, то вам надо посмотреть полностью 5 последних видео и оставить под ними комментарии. Написать мне, и я вышлю ссылку на скетч.
Прошу меня понять. На каждое видео у меня уходит около недели и всё свободное время, а так же использование различных модулей, которые я покупаю на свои деньги, а вам всего лишь надо включить(и не обязательно смотреть) и написать комментарии. Это не так уж и сложно.
Вот и закончилось ещё одно видео. У меня есть ещё огромные планы и интересные уроки. Так что подписывайтесь, и нажимайте колокольчик чтобы не пропустит. А пока вы можете посмотреть вот эти видео. В конце каждого видеоурока я даю ссылки на видео со схожей тематикой. И рекомендую их посмотреть.

Вот здесь показана схема соединения для прошивки кода. Как я говорил ранее, прошивать можно с помощью специального контроллера или с помощью Ардуино. Так как не у всех может быть контроллер поэтому мы будем использовать Ардуино.
RX Ардуино соединяем с RX на модуле
А TX с TX. То есть напрямую, а вот если прошивать с помощью контроллера, то соединять надо крест-накрест.
Ещё желательно использовать резистивный делитель напряжения, так как логика модуля работает от напряжения 3,3 вольт, а Ардуино от 5 вольт. И чтобы не сжечь модуль надо согласовать выходы.
И при прошивке надо нулевой вывод модуля соединить с землёй. И обязательно до подачи питания. А после прошивки отсоединить нулевой контакт от земли. И делать это надо при отключенном питании.

Читайте также:  Как намотать электронный счетчик электроэнергии

Самое тяжёлое позади, теперь осталось просто подключить выводы от счётчика воды и подать питание на модуль. Выводы счётчика подключаются. Один вывод к контакту 2 для горячей воды, а другой контакт на земля. Для холодной воды. Один провод подключается к контакту 4, а другой к земле. Плата Ардуино при работе не нужна, так как модуль обеспечивает работу и без Ардуино.
Единственный минус этого скетча – это то что при отключении питания все данные не сохраняются и сбрасываются, поэтому надо обеспечить бесперебойное питание. В предыдущем примере про счётчики воды я использовал для хранения и считывания данных память EEPROM. Здесь же мы отказались от Ардуино. Если видео наберёт достаточно просмотров, то я сделаю следующее с сохранением данных на SD карту и тогда можно не волноваться об отключении питания и потерянных данных, а если подключить ещё и модуль времени, то можно провести статистические исследования когда больше всего расходуется вода. Так что когда будет продолжение зависит только от вас.

Источник

Мир микроконтроллеров

Популярное

Умный измеритель электроэнергии на ESP12 и Arduino

Все мы знакомы со счетчиками электроэнергии, которые установлены сейчас в каждой квартире или домохозяйстве. Обычно мы смотрим их показания один раз в месяц когда заполняем квитанции на оплату коммунальных услуг. Но иногда количество потребленной электроэнергии становится для нас неожиданностью – мы обнаруживаем что потребили ее очень много. Поэтому в данной статье мы рассмотрим проект умного измерителя электроэнергии на ESP12 и Arduino, который будет информировать нас по SMS/E-mail когда количество потребленной энергии будет достигать определенного значения (границы). Данный проект относится к так называемой концепции интернета вещей (IoT – Internet of Things).

Рассматриваемый в данном проекте измеритель электроэнергии будет не только передавать вам SMS/Email при наступлении определенных ситуаций, но также с его помощью вы можете контролировать потребление электроэнергии из любой точки земного шара (где есть интернет). Для измерения электроэнергии мы будем использовать датчик тока ACS712.

Для передачи информации по WiFi мы будем использовать модуль ESP8266, а контроль потребления электроэнергии будем осуществлять с помощью приложения для Android.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. ESP12/NodeMCU (устройство управления многосторонней связью) (купить на AliExpress).
  3. ACS712-30Amp Current sensor (датчик тока) (купить на AliExpress).
  4. Любой потребитель электроэнергии переменного тока.
  5. Male-Female Wires (соединительные провода папа-мама).

Принцип работы датчика тока ACS712

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

Этот датчик построен на использовании эффекта Холла, открытым ученым Эдвином Холлом. В соответствии с данным эффектом когда проводник с током помещается в магнитное поле на его концах формируется напряжение, перпендикулярное направлению протекания тока и направлению действующего магнитного поля. Измерять это напряжение мы будем в милливольтах и будем называть его напряжением Холла. Величина этого напряжения будет пропорциональна величине протекающего через проводник тока.

Основным достоинством датчика тока ACS712 является то, что он может измерять как переменный (AC), так и постоянный ток (DC) и он также обеспечивает изоляцию между нагрузкой и измерительным устройством (в нашем случае это будет плата Arduino. Как показано на следующем рисунке, датчик тока ACS712 имеет три контакта – Vcc (питающее напряжение), Vout (выход) и Ground (земля).

Слева на рисунке показаны два контакта, которые подсоединяются к тому месту, где необходимо измерить ток. Датчик работает от напряжения +5V – его необходимо подать на контакт Vcc датчика. Контакт Ground датчика необходимо подсоединить к земле схемы. Если сила измеряемого тока равна нулю, то на выходном контакте датчика напряжение равно 2500mV, если протекающий ток положителен, то напряжение на выходе датчика будет больше 2500mV, если отрицателен – то меньше 2500mV.

Для считывания напряжения с этого контакта мы будем использовать один из аналоговых входов Arduino – на выходе его АЦП (аналогово-цифровой преобразователь) будет значение 512 когда на входе контакта будет напряжение 2500mV – то есть когда ток не протекает. Это значение будет уменьшаться когда ток будет протекать в обратном (отрицательном) направлении, и увеличиваться когда ток будет протекать в прямом (положительном) направлении. В следующей таблице представлены примеры значений на выходе АЦП аналогового контакта Arduino в зависимости от величины протекающего через датчик тока.

Читайте также:  Альбом цирв с комбинированными счетчиками

Эти значения были рассчитаны на основе даташита на датчик ACS712. Вы их также можете рассчитать по следующим формулам:

Vout Voltage(mV) = (ADC Value/ 1023)*5000
Ток через проводник (A) = (Vout(mv)-2500)/185

Работа схемы

Схема измерителя электроэнергии на основе ESP12 и Arduino представлена на следующем рисунке.

Для модуля ESP12/NodeMCU необходимо сделать следующие соединения:

  • подсоединить контакт Rx ESP12 к контакту Tx платы Arduino;
  • подсоединить контакт Tx ESP12 к контакту Rx платы Arduino.

У NodeMCU (ESP12) нет аналоговых контактов, поэтому для связи с данным модулем мы использовали порт последовательной связи. Но данный модуль работает с напряжениями 3.3 Вольта, поэтому чтобы не повредить его напряжением 5 В с контактов Arduino мы использовали делитель напряжения.

Выходной контакт датчика тока в схеме подключен к аналоговому контакту A0 платы Arduino.

Внешний вид собранной схемы показан на следующем рисунке.

Чтобы осуществлять контроль расходования электроэнергии через интернет мы использовали MQTT брокера, реализованного на платформе AdaFruit IO. Для этого необходимо выполнить следующие действия:

  1. Зарегистрировать себе аккаунт на AdaFruit для хранения и считывания данных потребления электроэнергии.
  2. Создать Applet (прикладную программу) в сервисе IFTTT для формирования сообщений при помощи SMS/Email.
  3. Написать коды программ для Arduino и ESP12 Wi-Fi модуля.

Более подробно все эти процессы описаны далее в статье.

Регистрация аккаунта в AdaFruit

Здесь вам необходимо выполнить следующие шаги:

Шаг 1. Зарегистрировать аккаунт на Adafruit IO или войти в свой аккаунт если вы там уже зарегистрированы.

Шаг 2. Кликните на My account -> Dashboard.

Шаг 3. Кликните на Actions и создайте новую приборную доску (Dashboard).

Шаг 4. Введите имя и название для вашего проекта и нажмите Create (создать).

Шаг 5. Нажмите на Key button (кнопка с изображением ключа – см. рисунок) и запишите ключи, которые предоставит вам этот сервис (см. рисунок). Далее эти ключи будут использоваться в коде программы.

Шаг 6. Кликните на кнопку ‘+’ чтобы создать новый блок и кликните на Gauge (масштаб) чтобы отобразить уровень расходования электроэнергии. Вы можете использовать простое текстовое поле для отображения этой информации.

Шаг 7. Далее введите имя фида (Name of Feed) и нажмите на Create (создать). Затем выберите фид и кликните на Next step (следующий шаг).

Шаг 8. В настройках блока (block settings) введите минимальное (в нашем случае 0) и максимальное значения (в нашем случае 100). В дальнейшем вы можете изменить эти введенные значения.

Шаг 9. Ваш вид для учета электроэнергии (Power feed) успешно создан. Теперь создайте фид для отображения счёта (Bill), нажав на кнопку “+”.

После этого вам необходимо будет установить соединение с AdaFruit IO чтобы передавать SMS/E-mail с использованием сервиса IFTTT.

Создание прикладной программы в IFTTT для передачи SMS/Email

Шаг 1. Зарегистрируйтесь в сервисе IFTTT или войдите туда если у вас уже есть там аккаунт.

Шаг 2. На вкладке My Applets (мои прикладные программы) кликните на New Applet (новая прикладная программа).

Шаг 3. Кликните на +this.

Шаг 4. Найдите AdaFruit и кликните на нее.

Шаг 5. Кликните на «Monitor a feed on AdaFruit IO» (мониторить фид в AdaFruit IO).

Шаг 6. Выберите счет (bill) в качестве фида (Feed), взаимоотношение (Relationship) выберите ‘equal to’ (равно) и введите границу (мы ввели 4) при достижении которой вам будет высылаться уведомление на E-mail. Кликните на Create action (создать действие).

Шаг 7. Кликните на +that. В поиске введите G-mail, кликните потом на ней и залогиньтесь со своими данными в g-mail.

Шаг 8. Кликните на send yourself an email (передать самому себе email).

Шаг 9. Запишите свой subject (тему) и ее описание (body) как показано на рисунке и кликните на create.

Шаг 10. Ваше уведомление создано. Посмотрите его и нажмите на finish (завершить).

С интеграцией нашего проекта в сеть интернет мы закончили, теперь можно переходить к написанию кода программы.

Объяснение кода программы

В нашем проекте мы используем последовательную связь между ESP12 и Arduino. Поэтому нам необходимо написать программу и для Arduino, и для ESP12 (NodeMCU).

Объяснение кода программы для передающей части (для Arduino Uno)

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

Первым делом в программе необходимо подключить данную библиотеку.

Источник