Уже целый год работает самодельный измеритель мощности на ESP32 и PZEM04T v3.0 с прошивкой WiFi-IoT. Суть его довольно проста - ESP читает данные с PZEM и отсылает их на мой сервер через TCP/IP и на Народный Мониторинг. После этого можно настроить себе оповещения в случае достижения параметрами каких-либо значений и отслеживать данные электропитания в реальном времени. Можно просмотреть статистику и контролировать энергопотребление.
Далее постараюсь максимально подробно со всеми нюансами описать процесс изготовления и настройки такого устройства. Стоимость отдельных компонентов для сборки устройства около 2000 рублей, если заказывать с Aliexpress. Время пайки, прошивки и сборки устройства в зависимости от опыта составляет от часа до 1 дня. Необходим некоторый опыт пайки и знакомство со всякими вспомогательными инструментами=).
Дополнительно на таком приборе можно настроить BLE HUB и считывать данные с нескольких беспроводных датчиков.
Что умеет измерять PZEM04T v3.0?
По сути все параметры, которые контролирует и обычный счётчик электропитания:
Собрав данные, мы можем их отправить куда нам захочется и потом с ними работать, но в начале давайте посмотрим как нам собрать сам прибор.
Комплектующие
Из чего будем собирать:
Слева направо:
- Модельная плата (где брал не помню).
- Черная фигня, без которой не работает - это импульсный БП с 220В на 5В, 3 Вт, классная штука (где брал уже нет, но нашёл другой вариант).
- Трансформатор тока, обычно идут в комплекте с PZEM, для удобства монтажа можно взять трансформатор, который состоит из двух половинок (но он несколько дороже). Через трансформатор пропускается проводник, на котором измеряется переменный ток. Максимальный измеряемый ток 100А.
- Монтажная коробка не меньше 100 х 100 х 50 мм (ищем в Леруа, например).
После того как комплектующие приедут или мы за ними съездим, можно начать всё паять.
Сборка
Прежде чем подключать PZEM 004T к ESP32 нам надо скорректировать номинал резисторов логики.
В чате люди говорили, что на ESP8266 у них работало всё и без корректировки, у меня ESP32 отказалась видеть #PZEM без понижения номинала резисторов.
В результате нам надо тем или иным способом понизить номинал резисторов R8 и R4 в 2 раза, с 1кОм до 470 - 500 Ом. Для этого можно, либо припаять место них нужный резистор, либо на уже существующий сверху запаять резистор такого же номинала.
На изображении ниже уже результат моих "ковыряний", на данный момент ещё не научился паять элементы 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 отвечает за сбор данных с PZEM 004T.
3. Из блока "Системные" - 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:
Если в процессе манипуляций смартфон решает, что он самый умный и отключается от точки доступа без доступа в интернет, то подключаем его обратно.
Отключаем перемычку между 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 питание, если схема собрана правильно, то ничего страшного не произойдёт, а лишь на плате засветится светодиод.
После этого подаём питание на ESP32 и настраиваем #ModBus.
Настраиваем ModBus
Наиболее подробно для всех вариантов настройка описана на сайте прошивки.
Нас интересует настройка для PZEM04T, для этого нам понадобится в полях во вкладке интерфейса ESP32 ModBus установить ряд значений:
В поле Mask указываем маску для считывания данных: r1d1,r2d3,r2d1,r2,r1d1,rd2
Нажимаем кнопочку "Set" и на главной странице должны появиться данные:
Если данные с PZEM получены, то можно заканчивать сборку устройства, поставить ему блок питания, собрать всё в корпус и установить в щиток для сбора данных.
Установка блока питания
Блок питания устанавливаем на отдельный фрагмент макетки, которую затем припаиваем к нескольким выводам Dev-kit ESP32:
Соединяем выводы 5В и землю БП с Vin и землёй ESP32. А входные линии БП с входными линиями PZEM04T.
Сверху у меня получилось вот так:
После этого полученную конструкцию можно спрятать в монтажную коробку:
Теперь нам надо настроить сервис для отправки данных.
Отправка данных
Для этого я буду использовать Народный Мониторинг:
Для передачи данных мы уже ранее добавили эту опцию в прошивку устройства, теперь нам достаточно просто поставить во вкладке Servers нужную галочку:
Переходим на сайт проекта, регистрируемся или авторизуемся.
И в верхней части карты, выбираем вкладку Датчики, Зарегистрировать мой прибор:
В открывшееся окно вводим MAC прибора, полученный со вкладки Servers ESP32.
Для чего полученное устройство?
1. Установив его в квартире или на даче появляется возможность отслеживать практически в реальном времени своё энергопотребление. Можно выяснить, какие потребители стоит отключать или какие электрооборудование уже неисправно.
2. При настройке триггеров на пониженное и повышенное напряжение, можно вовремя предотвратить поломку оборудования, особенно на даче или в частном доме.
3. Можно просмотреть историю своего энергопотребления, что позволит его оптимизировать и сэкономить деньги.
А если совместить данный прибор с беспроводными датчиками Xiaomi, то можно организовать полноценную систему мониторинга своего дома, а как это сделать, я уже описал тут.
#умный дом #esp32 #iot #narodmon #Народный Мониторинг #diy #сделай сам #измеритель мощности