RisalDash RisalDash

مشروع · طاقة · مراقبة

شاهد كلّ واط يحرقه منزلك

فاتورة الكهرباء تخبرك كم استهلكت؛ العدّاد الحيّ يخبرك متى وعلى ماذا. PZEM-004T V3 مع ملقط CT بسعة 100 A يقيس المنزل كلّه — الجهد والتيّار والقدرة والكيلوواط·ساعة المتراكمة — وESP32 يحوّلها إلى لوحة بعدّاد تكلفة جارٍ تتفقّده من الأريكة. بلا سحابة ولا اشتراك — بياناتك تبقى في البيت.

مشروعطاقةPZEM-004Tملقط CTESP32
مشروع مراقب طاقة منزليّ بـ ESP32: PZEM-004T وملقط CT وكيلوواط·ساعة والتكلفة

كيف يقيس

PZEM-004T واجهة قياس كاملة: يعيّن جهد الشبكة مباشرةً، والتيّار عبر ملقط CT المنفصم (اقبضه حول سلك الفاز — دون قطع الأسلاك)، ويحسب القدرة الحقيقيّة على متنه، ويسلّم ESP أرقامًا نظيفة عبر UART. متحكّمك لا يلمس إشارة تناظريّة خطرة — يسأل فقط عن V وA وW وkWh.

PZEM-004T موصّل بـ ESP32 عبر UART: 5V وGND وTX إلى RX2 وRX إلى TX2
أربعة أسلاك على جانب الجهد المنخفض: 5V وGND وTX→RX2 وRX→TX2. مبنيّ في BoardLab.

⚠ قواعد جانب الكهرباء

جانب القياس في PZEM يتّصل بـتيّار متردّد حيّ — فاحترمه: كلّ شيء داخل علبة توصيلات مغلقة، ودخل AC عبر منصهر 1 A، وكلّ الأرضيّات مشتركة، وسهم ملقط CT (‏S1→S2) مع اتجاه التيّار. اقطع القاطع قبل لمس أيّ شيء هناك. وإن لم يكن عمل الكهرباء اختصاصك فالكهربائيّ يوصّل العلبة في عشر دقائق — الجزء الممتع كلّه على جانب الجهد المنخفض.

اللوحة — التعرفة تدخل والتكلفة تخرج

إعداد pzem004t يتمدّد إلى الأدوات الصحيحة بنفسه؛ أداة number تحمل تعرفتك، والتكلفة عمليّة ضرب واحدة. الكود أدناه يعمل بلا كهرباء إطلاقًا — RisalFakePower يدير حملًا منزليًّا واقعيًّا فتبني العدّاد كلّه على مكتبك:

#include <RisalUI.h>
#include <RisalFake.h>               // fake household load — test with no mains at all

RisalUI dash("Energy");
RisalFakePower meter;
float volts = 230, amps = 0, watts = 0, kwh = 0, pf = 0.9f, freq = 50, cost = 0;
int tariff = 12;                     // cents per kWh — tune it live

void setup() {
  dash.layout("Live", RICON_FLASH);
  dash.sensor("pzem004t", &volts, &amps, &watts, &kwh);  // V gauge · A · W chart · kWh
  dash.metric("Power factor", &pf);
  dash.stat("Cost", &cost, "$").decimals(2);
  dash.number("Tariff c/kWh", &tariff, 1, 100, 1);
  dash.beginAP("RisalDash-Power", "12345678");
}

void loop() {
  dash.update();
  meter.update();                    // appliances switch on/off, kWh accumulates
  volts = meter.voltage(); amps = meter.current(); watts = meter.power();
  kwh = meter.energy(); pf = meter.powerFactor();
  cost = kwh * tariff / 100.0f;
}

حين تُوصَّل العلبة بدّل الوهميّ بالقارئ الحقيقيّ — المتغيّرات نفسها واللوحة لا تتغيّر:

// The real reader — PZEM-004T V3 on Serial2 (library: mandulaj/PZEM-004T-v30).
#include <PZEM004Tv30.h>
PZEM004Tv30 pzem(Serial2, 16, 17);   // RX2, TX2

float v = pzem.voltage();
if (!isnan(v)) {                     // NaN = no reading — keep the last good value
  volts = v;
  amps  = pzem.current();
  watts = pzem.power();
  kwh   = pzem.energy();
  pf    = pzem.pf();
}

النصفان متوفّران كمثالين في المكتبة: examples/04_Templates/PowerMeter (العدّاد) وEnergyMonitor (كيلوواط·ساعة + تكلفة + قاطع). انشر إلى MQTT فيظهر تلقائيًّا في لوحة طاقة Home Assistant.

قائمة المكوّنات

القطعةالدور~التكلفة
ESP32 (أو ESP8266)الدماغ + Wi-Fi + اللوحة$3–5
PZEM-004T V3 + CT بسعة 100 Aالعدّاد نفسه$8–12
HLK-PM01 (AC→5 V)يغذّي ESP من العلبة نفسها$2–3
منصهر 1 A + حاملحماية الدخل$1
علبة توصيلات + جلنداتتُبقي الأصابع بعيدة عن الكهرباء$3–5
LCD 16x2 I²C (اختياريّ)قراءة محلّيّة على العلبة$2

أقلّ من 25 دولارًا كاملة — النظائر التجاريّة بتطبيقاتها تبدأ بأضعاف ذلك، وفوق هذا لوحةَ هذا العدّاد يقدّمها الشريحة بنفسها.

ابنِ العدّاد كلّه واضبطه على حمل وهميّ — ووصِّل العلبة حين تجهز.