Traducido del Türkçe por IA ·
La mayoría de estos enchufes llevan un HLW8012 o su clon BL0937, 8 patas, y los pines que describes coinciden exactamente. Yo usé los mismos módulos con este chip en los paneles de las bombas de agua del ayuntamiento, y así funciona:
- CF (tu pin 5): salida de pulsos cuya frecuencia es proporcional a la potencia activa.
- CF1 (pin 4): según el pin SEL, un pulso proporcional a la corriente o a la tensión.
- SEL (pin 6): pin de selección que va de la placa lógica al chip. En el HLW8012, SEL=1 es corriente; en el BL0937 es al revés, y si los confundes, los valores salen absurdos.
Es fácil de leer: conecta los dos pines a una interrupción y cuenta los pulsos en una ventana de 1 segundo. Para la potencia, a grandes rasgos:
volatile uint32_t cfPulses = 0;
void IRAM_ATTR onCF() { cfPulses++; }
// setup:
attachInterrupt(digitalPinToInterrupt(PIN_CF), onCF, RISING);
// every second:
noInterrupts(); uint32_t n = cfPulses; cfPulses = 0; interrupts();
float power_w = n * powerFactor; // kalibrasyonla bulunacak
energy_wh += power_w / 3600.0;
Encuentra el valor de powerFactor con una carga conocida: conecta un calentador de 100 W o una bombilla incandescente y divide los pulsos contados entre la potencia real. Para la tensión, haz lo mismo cambiando SEL y usando CF1.
Seguridad: al cargar el código, desenchufa la toma de la red, programa el ESP32-C3 por USB, luego desconéctalo y vuelve a enchufarlo. Conectar a la red con el USB conectado equivale a conectar tu ordenador a la red. Haz la calibración viendo el log por Wi-Fi.
Envía a Hermetry un contador energy_wh que crezca, junto con power_w; obtener después el consumo diario a partir del contador es mucho más limpio.
Bu prizlerin çoğunda HLW8012 ya da onun kopyası BL0937 var, 8 bacak ve tarif ettiğin pinler tam uyuyor. Ben belediyede su pompası panolarında aynı entegreli modüller kullandım, şöyle çalışıyor:
- CF (senin 5. pin): frekansı aktif güçle orantılı darbe çıkışı.
- CF1 (4. pin): SEL pinine göre ya akım ya gerilimle orantılı darbe.
- SEL (6. pin): lojik karttan entegreye giden seçim pini. HLW8012’de SEL=1 akım, BL0937’de tersi, bunu karıştırınca değerler saçma çıkıyor.
Okuması kolay: iki pini kesmeye bağla, 1 saniyelik pencerede darbe say. Güç için kabaca:
volatile uint32_t cfPulses = 0;
void IRAM_ATTR onCF() { cfPulses++; }
// setup:
attachInterrupt(digitalPinToInterrupt(PIN_CF), onCF, RISING);
// her saniye:
noInterrupts(); uint32_t n = cfPulses; cfPulses = 0; interrupts();
float power_w = n * powerFactor; // kalibrasyonla bulunacak
energy_wh += power_w / 3600.0;
powerFactor değerini bilinen bir yükle bul: 100 W’lık bir ısıtıcı ya da akkor ampul tak, sayılan darbeyi gerçek güce böl. Gerilim için de aynısını SEL’i değiştirip CF1’den yap.
Güvenlik: kodu yüklerken prizi şebekeden çek, ESP32-C3’ü USB ile programla, sonra kapat ve tak. USB bağlıyken şebekeye takmak, bilgisayarını şebekeye bağlamak demek. Kalibrasyonu da Wi-Fi üzerinden log izleyerek yap.
Hermetry’ye power_w ile birlikte artan bir energy_wh sayacı gönder, sonradan günlük tüketimi sayaçtan almak çok daha temiz oluyor.

