Найти в Дзене

Собираем бюджетный измеритель мощности на ESP32 и WiFi-IoT

Уже целый год работает самодельный измеритель мощности на ESP32 и PZEM04T v3.0 с прошивкой WiFi-IoT. Суть его довольно проста - ESP читает данные с PZEM и отсылает их на мой сервер через TCP/IP и на Народный Мониторинг. После этого можно настроить себе оповещения в случае достижения параметрами каких-либо значений и отслеживать данные электропитания в реальном времени. Можно просмотреть статистику и контролировать энергопотребление. Далее постараюсь максимально подробно со всеми нюансами описать процесс изготовления и настройки такого устройства. Стоимость отдельных компонентов для сборки устройства около 2000 рублей, если заказывать с Aliexpress. Время пайки, прошивки и сборки устройства в зависимости от опыта составляет от часа до 1 дня. Необходим некоторый опыт пайки и знакомство со всякими вспомогательными инструментами=). Дополнительно на таком приборе можно настроить BLE HUB и считывать данные с нескольких беспроводных датчиков. Что умеет измерять PZEM04T v3.0? По сути все пара
Оглавление

Уже целый год работает самодельный измеритель мощности на ESP32 и PZEM04T v3.0 с прошивкой WiFi-IoT. Суть его довольно проста - ESP читает данные с PZEM и отсылает их на мой сервер через TCP/IP и на Народный Мониторинг. После этого можно настроить себе оповещения в случае достижения параметрами каких-либо значений и отслеживать данные электропитания в реальном времени. Можно просмотреть статистику и контролировать энергопотребление.

Далее постараюсь максимально подробно со всеми нюансами описать процесс изготовления и настройки такого устройства. Стоимость отдельных компонентов для сборки устройства около 2000 рублей, если заказывать с Aliexpress. Время пайки, прошивки и сборки устройства в зависимости от опыта составляет от часа до 1 дня. Необходим некоторый опыт пайки и знакомство со всякими вспомогательными инструментами=).

Дополнительно на таком приборе можно настроить BLE HUB и считывать данные с нескольких беспроводных датчиков.

Что умеет измерять PZEM04T v3.0?

По сути все параметры, которые контролирует и обычный счётчик электропитания:

Так выглядит вывод данных на веб странице микроконтроллера.
Так выглядит вывод данных на веб странице микроконтроллера.

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

Комплектующие

Из чего будем собирать:

Комплектуха=)
Комплектуха=)

Слева направо:

  1. ESP32, конкретная плата не важна (брал тут).
  2. PZEM 04T v3.0, мануал именно про эту версию, так как есть и другие (брал тут).
  3. Модельная плата (где брал не помню).
  4. Черная фигня, без которой не работает - это импульсный БП с 220В на 5В, 3 Вт, классная штука (где брал уже нет, но нашёл другой вариант).
  5. Трансформатор тока, обычно идут в комплекте с PZEM, для удобства монтажа можно взять трансформатор, который состоит из двух половинок (но он несколько дороже). Через трансформатор пропускается проводник, на котором измеряется переменный ток. Максимальный измеряемый ток 100А.
  6. Монтажная коробка не меньше 100 х 100 х 50 мм (ищем в Леруа, например).

После того как комплектующие приедут или мы за ними съездим, можно начать всё паять.

Сборка

Прежде чем подключать PZEM 004T к ESP32 нам надо скорректировать номинал резисторов логики.

В чате люди говорили, что на ESP8266 у них работало всё и без корректировки, у меня ESP32 отказалась видеть #PZEM без понижения номинала резисторов.

В результате нам надо тем или иным способом понизить номинал резисторов R8 и R4 в 2 раза, с 1кОм до 470 - 500 Ом. Для этого можно, либо припаять место них нужный резистор, либо на уже существующий сверху запаять резистор такого же номинала.

Исходная плата PZEM 004T, отметил интересующие нас резисторы маркером, что бы при пайке не перепутать.
Исходная плата PZEM 004T, отметил интересующие нас резисторы маркером, что бы при пайке не перепутать.

На изображении ниже уже результат моих "ковыряний", на данный момент ещё не научился паять элементы SMD, но что-то хоть и криво вышло: R8 заменил на 470 Ом, R4 сделал бутерброд из двух 1кОм резисторов.

Безумное творчество
Безумное творчество

После этого превращаем модуль ESP32 и PZEM в единое целое, для этого используем фрагмент макетки, он идеально подошёл для подобных операций.

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

Соединяем тем или иным способом землю PZEM с землёй ESP32, 5 В PZEM c 3,3 В ESP32 и интерфейсные пины отдельно:
PZEM RX c 21 пин ESP32
PZEM TX c 22 пин ESP32

Напоминаю, что для работы с UART интерфейсами нам необходимо два провода, один из них RX, то есть Read Data, данные получает, второй - TX, то есть Transmit Data, передает данные .

Именно по этой причине необходимо соединять выводы разных устройств RX-TX и TX-RX. Передающий соединяем с получающим, а получающий с передающим.
Превратили их в одно устройство, Франкенштейн растёт!
Превратили их в одно устройство, Франкенштейн растёт!

Прошивка ESP32

На следующем этапе осуществим прошивку и первичную проверку, что бы если что-то будет работать не так как надо или что-то окажется неисправным, не терять лишнее время.

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

Для управления МК, сбора данных и передачи показаний будем использовать прошивку wifi-iot, очень быстро и легко настроить устройство, но периодически бывают баги, которые, впрочем, достаточно оперативно правятся разработчиком.

Прошивка требует покупки лицензии, то есть часть опций в ней платные. Лицензия уже много лет стоит 110 рублей и дает возможность неограниченное количество раз использовать любое количество опций и в любой конфигурации на ОДНОМ микроконтроллере (ESP32 или ESP8266).

Если что это не реклама, а один из примеров конструкторов, есть ещё espHome, espeasy и другие. Особенность wifi-iot в том, что для начала работы с прошивкой не нужно особенных специальных знаний, большая часть параметров настраиваются на самом МК, а достаточно большое количество документации и активное сообщество в телеграм помогут с решением распространенных проблем. (Опять звучит как реклама=(((, ну и ладно)

Выбор опций

В конфигураторе прошивки нам нужно будет выбрать следующие опции:

1. Из блока "Сервисы" - narodmon.ru

Эта опция позволит нам отправлять данные на сервер Народного Мониторинга. Создавать триггеры и отслеживать энергопотребление.

2. Из блока "Железо" - ModBus master, потребуются настройки в шестеренке слева от названия опции:

Параметры опции ModBus master, ставим как на картинке
Параметры опции ModBus master, ставим как на картинке

Опция ModBus master отвечает за сбор данных с PZEM 004T.

3. Из блока "Системные" - Safe GPIO, настройки ставим как на картинке:

Параметры опции Safe GPIO
Параметры опции Safe GPIO

Опция Safe GPIO позволит нам выделить отдельный пин для перевода устройства в Safe-mode, необходимый для его предварительной настройки или в случает каких-то проблем.
Для включения в таком режиме Safe-mode достаточно будет соединить вывод GPIO15 с выводом земли и перезагрузить МК.

Прошивка

После настройки всех опций не забываем сохранить профиль прошивки и компилируем его:

Результат компиляции
Результат компиляции

После этого скачиваем все 3 файла, кладем в отдельную папочку (рекомендую), что бы не потерять прошивку. Может пригодиться на будущее.

После этого рекомендую используя esptools прошить микроконтроллер.

Более подробная информация, с описанием возможных проблем и их решений выложена в ВИКИ wifi-iot.

Настройка устройства

Подключение к Wi-Fi

После прошивки замыкаем GPIO15 (D15) на GND, можно воспользоваться джампером, так как они находятся рядом.

Ищем со смартфона точку доступа с названием WIFI-IOT, подключаемся к ней. Через браузер переходим на 192.168.4.1 - это веб интерфейс ESP32.

Во вкладке интерфейса Main указываем свои данные для подключения к точке доступа Wi-Fi. После этого на вкладке Main смотрим IP-адрес ESP32:

Вкладка настроек Main
Вкладка настроек Main

Если в процессе манипуляций смартфон решает, что он самый умный и отключается от точки доступа без доступа в интернет, то подключаем его обратно.

Отключаем перемычку между GPIO15 и GND, перезапускаем ESP32 (питанием или кнопкой на плате).

Заходим уже с компьютера или также с телефона по IP, который увидели во вкладке Main. И продолжаем настраивать устройство.

IP адрес ESP можно узнать следующими методами:

1. Используя программу сходную с IP Scanner.

2. Зайти в веб интерфейс роутера и в разделе DHCP (DHCP Clients) или клиенты посмотреть список подключенных устройств с их IP адресами.

Включение Pro mode

Переводим прошивку в платный Pro Mode. Для этого на сайте wifi-iot покупаем лицензию и генерируем ключ, на основе данных, полученных с вкладки Pro Mode.

Тестирование и настройка ModBus

Для дальнейшего тестирования и настройки устройства нам понадобится подать на него высокое напряжение (220В), иначе PZEM не будет отвечать на запросы ESP.

СОБЛЮДАТЬ ОСТОРОЖНОСТЬ 220В!!!
Подключаем в клеммы PZEM04T питание
Подключаем в клеммы PZEM04T питание

Подключаем в клеммы PZEM04T питание, если схема собрана правильно, то ничего страшного не произойдёт, а лишь на плате засветится светодиод.

После этого подаём питание на ESP32 и настраиваем #ModBus.

Настраиваем ModBus

Наиболее подробно для всех вариантов настройка описана на сайте прошивки.

Нас интересует настройка для PZEM04T, для этого нам понадобится в полях во вкладке интерфейса ESP32 ModBus установить ряд значений:

Настройка опции ModBus
Настройка опции ModBus

В поле Mask указываем маску для считывания данных: r1d1,r2d3,r2d1,r2,r1d1,rd2

Нажимаем кнопочку "Set" и на главной странице должны появиться данные:

MB - это метрики, полученные с ModBus
MB - это метрики, полученные с ModBus

Если данные с PZEM получены, то можно заканчивать сборку устройства, поставить ему блок питания, собрать всё в корпус и установить в щиток для сбора данных.

Установка блока питания

Блок питания устанавливаем на отдельный фрагмент макетки, которую затем припаиваем к нескольким выводам Dev-kit ESP32:

Установка БП, вид снизу
Установка БП, вид снизу

Соединяем выводы 5В и землю БП с Vin и землёй ESP32. А входные линии БП с входными линиями PZEM04T.

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

Установка БП, вид сверху
Установка БП, вид сверху

После этого полученную конструкцию можно спрятать в монтажную коробку:

Устройство в монтажной коробке, подготовлено к работе
Устройство в монтажной коробке, подготовлено к работе

Теперь нам надо настроить сервис для отправки данных.

Отправка данных

Для этого я буду использовать Народный Мониторинг:

Для передачи данных мы уже ранее добавили эту опцию в прошивку устройства, теперь нам достаточно просто поставить во вкладке Servers нужную галочку:

Включение опции Народного Мониторинга
Включение опции Народного Мониторинга

Переходим на сайт проекта, регистрируемся или авторизуемся.

И в верхней части карты, выбираем вкладку Датчики, Зарегистрировать мой прибор:

Регистрация прибора
Регистрация прибора

В открывшееся окно вводим MAC прибора, полученный со вкладки Servers ESP32.

Для чего полученное устройство?

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

График мощности от времени. По этому подключению периодически срабатывает обогреватель.
График мощности от времени. По этому подключению периодически срабатывает обогреватель.

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

Триггеры, при напряжении выше 260В и ниже 190В придёт оповещение на почту, push, sms или telegram.
Триггеры, при напряжении выше 260В и ниже 190В придёт оповещение на почту, push, sms или telegram.

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

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

Экономный мониторинг частного дома без пайки и проводов
Werox's IoT5 января 2022

#умный дом #esp32 #iot #narodmon #Народный Мониторинг #diy #сделай сам #измеритель мощности