342

Wi-Fi энергомонитор на PZEM-004t и ESP-12F

Доброго времени суток!

Давно хотел сделать измерение потребления электричества в квартире. Подумывал о разных приспособах, но все они как-то не вызывали доверия.

Датчики вроде ACS712 как-то не вызывали доверия (уж слишком хлипкими выглядели),  SCT-013-000 казались громоздкими.

И совершенно случайно мне попалась на глаза замечательная вещь - PZEM-004T:

Wi-Fi энергомонитор на PZEM-004t и ESP-12F Arduino, Wi-Fi, Thingspeak, Pzem-004t, OLED, SSD, Esp8266, Ds18b20, Длиннопост

(Кстати, есть версия с индикацией, подробнее обо всём на буржуйском сайте ).

Возможности модуля (подробнее можно посмотреть в даташите ):

Измеряемое напряжение: 60 - 280 В переменки;

Ток: до 100 А / 22 кВт;

Частота: 45-65 Гц;

По запросу может выдавать значение напряжения (В), тока (А), активную мощность (Вт), потребленную энергию (Вт*час). Еще можно выставлять сигнализацию на определенную мощность (в кВт), но, похоже, это касается только разновидности с экраном.

Киловатт-часы хранятся до 99 999 Вт*ч, потом идёт сброс в 0.

Есть кнопка сброса значения Вт*ч, ее нужно подержать 5 сек. В этот момент модуль не отвечает по TTL.

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

Wi-Fi энергомонитор на PZEM-004t и ESP-12F Arduino, Wi-Fi, Thingspeak, Pzem-004t, OLED, SSD, Esp8266, Ds18b20, Длиннопост
А вот с управлением всё несколько печальнее.

Для получения данных нужно выставить адрес командой в порт "B4 C0 A8 01 01 00 1E", где B4 - собственно команда, C0 A8 01 01 это адрес 192.168.1.1, 00 просто плейсхолдер (используется только при задании значения мощности сигнализации), Е1 - контрольная сумма.

Для получения значения напряжения нужно отправить команду "B0 C0 A8 01 01 00 1A", где В1 - команда, потом опять адрес и контрольная сумма.

Нам придет ответ вида R = A0 00 E6 02 00 00 88, где А0 - метка ответа, Е6 - старший разряд (230 Вольт), 02 - младший (2 Вольта), 88 - контрольная сумма. Напряжение тут R[2]  + R[3] = 232 В.

Подробнее в даташите.

Использовал вот эту  библиотеку.

Добавляем энергомер в скетч:

#include "pzem-004t.h"

PZEM_004T pzem(10,11); // для общения используется SoftwareSerial, т.е. в случае ESP-12F можно использовать пины 0-5 и 12-15


void setup()

{

while(!pzem.setAddress(192,168,1,1)); // инициализируем. С любым адресом, лишь бы они отличались, если PZEM-ок несколько.

}

void loop()

{

float V = pzem.getVoltage(); //меряем напряжение

if (V > 0) Serial.println("V = " + (String)V + " Volts"); // значение "-1" это ошибка получения данных

delay(1000);

}

TTL-логика у PZEM-004T 5 В, вполне можно спалить порт ESP-шки, поэтому я, не выпендриваясь, сделал делитель напряжений на резисторах (рассчитать можно здесь):

Wi-Fi энергомонитор на PZEM-004t и ESP-12F Arduino, Wi-Fi, Thingspeak, Pzem-004t, OLED, SSD, Esp8266, Ds18b20, Длиннопост

Кстати, у меня PZEM  +5В не давал, пришлось использовать отдельный БП на 5 В (для PZEM) и понижать до 3.3 В (для ESP) с помощью AMS -1117-3.3 и пары кондёров.

Для удобства решил еще добавить OLED-дисплей SSD1306 разрешением 128 х 64 с I2C:

Wi-Fi энергомонитор на PZEM-004t и ESP-12F Arduino, Wi-Fi, Thingspeak, Pzem-004t, OLED, SSD, Esp8266, Ds18b20, Длиннопост

Библиотеку брал отсюда.

Если ESP его не видит, попробуйте поменять местами SDA и SCL или прогнать I2C device scanner, иногда заявленный адрес не соответствует фактическому.

Умеет даже в скролл и прогрессбар.

Команды, в принципе, в комментариях не нуждаются

display.init();

display.setTextAlignment(TEXT_ALIGN_LEFT);

display.setFont(ArialMT_Plain_16);

Шрифт любого размера можно сделать тут и добавить в "...\Arduino\libraries\esp8266-oled-ssd1306-master\src\OLEDDisplayFonts.h"

Лично у меня шрифт 50 размера для удобства чтения издалека.

На экран выводится потребление в Вт (999) или в кВт (1.8к), в зависимости от текущей нагрузки.

Чтобы не "гуляли" ноги, заодно приделал термометр Dallas DS18B20.

Ну и куда же, естественно, без IoT?)

Данные с энергомера будем выгружать в https://thingspeak.com/. Как с ним работать, я уже как-то  писал.

Все устройство поместилось в корпус на DIN-рейку на две позиции (или как оно называется?).

В тестовом варианте выглядело всё вот так:

Wi-Fi энергомонитор на PZEM-004t и ESP-12F Arduino, Wi-Fi, Thingspeak, Pzem-004t, OLED, SSD, Esp8266, Ds18b20, Длиннопост

ТТ висит на фазе удлинителя где-то за границами фото.

Полная съема выглядит так (да, мне всё еще лень рисовать нормальные схемы. Надеюсь, ничего не забыл)

Wi-Fi энергомонитор на PZEM-004t и ESP-12F Arduino, Wi-Fi, Thingspeak, Pzem-004t, OLED, SSD, Esp8266, Ds18b20, Длиннопост

Традиционным методом ЛУТ сделана (не без косяков) плата (размеры примерно 30*58 мм, с вырезами под болты корпуса)

Слишком тонкая дорожка слева-снизу почти сразу оторвалась.

Wi-Fi энергомонитор на PZEM-004t и ESP-12F Arduino, Wi-Fi, Thingspeak, Pzem-004t, OLED, SSD, Esp8266, Ds18b20, Длиннопост

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

Wi-Fi энергомонитор на PZEM-004t и ESP-12F Arduino, Wi-Fi, Thingspeak, Pzem-004t, OLED, SSD, Esp8266, Ds18b20, Длиннопост

Готовое устройство на рейке выглядит так (включен комп + свет)

Wi-Fi энергомонитор на PZEM-004t и ESP-12F Arduino, Wi-Fi, Thingspeak, Pzem-004t, OLED, SSD, Esp8266, Ds18b20, Длиннопост

Тут еще добавился чайник (на котором написано 2 кВт).

Wi-Fi энергомонитор на PZEM-004t и ESP-12F Arduino, Wi-Fi, Thingspeak, Pzem-004t, OLED, SSD, Esp8266, Ds18b20, Длиннопост

Засёк также:

Комп (i3, 1060, 2 HDD, 20" TFT-моник) - 89 Вт в без нагрузки, 130 Вт в WoT / Dota 2

Комп в спящем режиме - 10 Вт;

Четыре 5 Вт LED лампы Е14 - 22 Вт;

Пылесос в холостую - 1,37 кВт (мощность 350 Вт / 1800 МАХ);

Комп на ночь выключается из розетки, ночью в темноте потребление около 12 - 15 Вт (не морозящий холодильник, роутер, может, зарядное).


В течении дня напряжение меняется примерно так (данные отсылаются каждые 5 минут). Можно заодно отслеживать качество напряжения в доме.

Wi-Fi энергомонитор на PZEM-004t и ESP-12F Arduino, Wi-Fi, Thingspeak, Pzem-004t, OLED, SSD, Esp8266, Ds18b20, Длиннопост

Скетч, фотки и библиотеки в гугл-диске

Вроде бы ничего не забыл.

Если что, спрашивайте ;)

Спасибо за внимание!

Много ли интересных статей вы встречаете ежедневно?

Откройте главную страницу Пикабу и наслаждайтесь

Найдены дубликаты

+4

А зачем комп из розетки вырубать?

раскрыть ветку 11
-1

Потребление ~100 Вт; в сутки - 2.4 кВт*ч, в месяц - 72 кВт*ч.


Деньги-то не лишние...

раскрыть ветку 10
+4

Раз считаете копейки тогда не так, а так 10Вт*24ч*30дней=7.2 кВт(около 40 рублей),

это если он будет выключенный все это время.

Тогда и телевизор выключайте он в дежурке ватт 5 берет, и телефоны на работе заряжайте. И в холодильнике можно температуру на 1 поставить чтоб не так сильно холодил. Думаю рублей 100 с экономите.

раскрыть ветку 2
+4

Это в выключенном состоянии он 100 Вт жрёт?

раскрыть ветку 4
0
Наверное родительский комментатор имел в виду, зачем выключать из розетки будучи выключенным, я тоже не понял. Но 100 Вт будучи выключенным он каким макаром будет потреблять? Если ТС говорит, что даже в спящем всего 10 Вт, что и логично.
раскрыть ветку 1
+2

22 кВт для такого разъема не многовато? Он же расплавится в момент.

раскрыть ветку 7
+2

Ток измеряется не через шунт, а через трансформатор тока (колечко, через которое продевается фаза или ноль).

AC используется только для измерения напряжения.


Так что всё ok :)

+1

Ток меряется трансформатором тока. Каюсь, фото не само информативное

Иллюстрация к комментарию
раскрыть ветку 5
+1

А, догнал, спасибо.

+1

Ах, собака, опередил) Я картинку искал) Кабель пропускается через датчик

Иллюстрация к комментарию
0

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

раскрыть ветку 2
+3

Есть кнопка сброса значения Вт*ч, ее нужно подержать 5 сек. В этот момент модуль не отвечает по TTL.

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

TTL-логика у PZEM-004T 5 В, вполне можно спалить порт ESP-шки, поэтому я, не выпендриваясь, сделал делитель напряжений на резисторах

Вот это вообще непонятно зачем. Логика у PZEM не имеет собственного питания. Питания идёт от контроллера. Рассчитана она на 5В, для 3.3В ESP достаточно просто поменять на PZEM R17 с 1кОм на 500 Ом.


Кстати, у меня PZEM +5В не давал, пришлось использовать отдельный БП на 5 В (для PZEM) и понижать до 3.3 В (для ESP) с помощью AMS -1117-3.3 и пары кондёров.

5В будут только когда PZEM подключена к источнику тока и токовый трансформатор подключён к PZEM. Питать её отдельно не надо. Вы таким образом связали гальванически датчик и ESP. А там специально сделана гальваническая развязка разъёма TTL. Вы рискуете получить бабах.


Сам недавно делал мониторинг на PZEM. Только делал на 3 фазы, чип Ардуино нано, а вывод информации через блинк. И сделал программный сброс показаний.

Вот можно на мой проект глянуть. https://github.com/dodther/Energomonitor

раскрыть ветку 13
-1

upd. если убрать питание пзем, его не видит есп.

раскрыть ветку 11
+1

А на TTL подаешь питание?

раскрыть ветку 10
-1
На 99% уверен, что напряжения пзем не выдавал, но обязательно проверю, когда будет возможность.
Про ресет подумывал, но не стал заморачиваться. Посчитал , что проще будет обрабатывать показания на серваке.
Про R17 знаю, но решил не трогать плату пзем, хотя впоследствии пришлось выпаивать некоторые элементы, сверлить отверстия под крепления и припаивать обратно.
+1

Дай бох тебе здоровья, валяются эти ESP несколько штук, будет куда руки шаловливые приложить... (если лень удастся побороть)

0

сколько стоит это всё?

раскрыть ветку 2
+1

PZEM-004t - $ 6,21

ESP-12F - $ 1,8

SSD1306 (OLED) - $ 2,4

Питание (тут есть вопросы, см. #comment_130675153), разобранное зарядное 5В 1А - $ 1

Рассыпуха, плата еще $ 2-2,5 примерно.

Корпус $ 1,5

Итого около $ 15


ESP были старые, 512 Кб памяти, поэтому ОТА прикрутить не удалось. Если убрать термометр, хватит и ESP-01 (версия с 4мб тоже есть)

раскрыть ветку 1
0

По поводу корпуса. Называется он D2MG.

0
Ни хрена не понял.. спасибо))
0
А готовое устройство как и где к сети подключено?
раскрыть ветку 2
-1

Ноль c общего, фаза и тт на ней сразу после реле напряжения

раскрыть ветку 1
0
👍 норм
0

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

0

Только вчера заказал такую пэзэшку ) Хочу повесить на газовый котел и кондиционер. Кстати вопрос. У меня ввод в квартиру сделан тремя проводами, каждый со своего автомата, но фаза одна. Если все три провода через кольцо транса пропустить, считать нормально будет?

раскрыть ветку 5
0
Пропустите ноль, он-то один?
раскрыть ветку 4
0

От автоматов в подъезде входит три трехжильных провода, в каждом ноль, фаза и земля.

раскрыть ветку 3
-1

Есть монитор для pzem под винду http://www.mediafire.com/file/21ee1j3in3rlbw1/PZEM-004T-Read...

-1

Нескромный вопрос.


Чтобы такие вещи знать (и уметь) это нужно на РТФ поступать?

раскрыть ветку 6
0
Терпение, умение гуглить и желание разобраться, этого хватит
раскрыть ветку 3
-1

А курсов никаких и образования точно не требуется?

раскрыть ветку 2
0

Нет, это простенькая поделка, которую осилит даже ардуинщик. А, кстати, это он и делал.

раскрыть ветку 1
0

Мне всё это очень понравилось, только я совсем ничо не понял.

Лойс на всякий случай я всё ж таки поставлю.

-1

Ни слова не сказано зачем датчики температуры, причем сразу три. Алгоритм работы программы. Зачем модуль WIFI как к нему достучаться? Может есть программа на андроиде?

раскрыть ветку 2
-1
Датчик температуры один, внезапно, для измерения температуры. Показатели отправляются в сингспик. Если у вас будет желание, можно поднять хттп сервер на есп и опрашивать его. Хоть каждую секунду. Чаще не получится, любое измерение на пзем занимает 1 сек.
раскрыть ветку 1
-1

Понятно что температуры. Я думаю чаще чем раз в 5 секунд смысла нет вообще. Т.е. у вас модуль WIFI не используется?

-1
Комментарий удален. Причина: данный аккаунт был удалён
раскрыть ветку 4
+1
В роутере-то? как вариант, разобрать, и замкнуть кнопки хард-ресета минуя кнопку, просто железякой?
0

инструкцию на роутер надо читать, как вариант она(кнопка сброса) работает, но надо отключить питание нажать на сброс и не отпуская сброса включить роутер и еще подождать секунд 30 потом только бросить сброс и дождаться когда он загрузится.

раскрыть ветку 2
0
Комментарий удален. Причина: данный аккаунт был удалён
раскрыть ветку 1
-1

UPD: на общей схеме трансформатор тока (красный круг) должен захватывать только один провод (или ноль, или фазу).

раскрыть ветку 4
0
Автор, ты молодец конечно, но по-моему в следующий раз проще купить sonoff pow ... Его и перепрошить под свои нужды можно...
раскрыть ветку 2
+1
Неее, готовое покупать не интересно. Хобби у меня такое, железки ковырять
раскрыть ветку 1
-1

UPD2

Версия 2, с небольшими изменениями https://drive.google.com/file/d/14vg6BOyOGUgwoaBbw1j2J4PYYMd...


- для связи с thingspeak используется их собственная библиотека;

- добавлено OTA;

- питание пзем 3.3В, для чего R15,17 заменены на 470 [Ом];


Программа для чтения данных pzem из-под винды https://yadi.sk/d/1bYP5qlgIjqSUg

Похожие посты
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: