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 دولارًا كاملة — النظائر التجاريّة بتطبيقاتها تبدأ بأضعاف ذلك، وفوق هذا لوحةَ هذا العدّاد يقدّمها الشريحة بنفسها.

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