Traduit de Türkçe par IA ·
La plupart de ces prises ont un HLW8012 ou son clone BL0937, 8 pattes, et les broches que tu décris correspondent exactement. J’ai utilisé les mêmes modules à puce dans des armoires de pompes à eau de la mairie, et voici comment ça fonctionne :
- CF (ta broche 5) : sortie d’impulsions dont la fréquence est proportionnelle à la puissance active.
- CF1 (broche 4) : selon la broche SEL, une impulsion proportionnelle soit au courant, soit à la tension.
- SEL (broche 6) : broche de sélection allant de la carte logique vers la puce. Sur HLW8012, SEL=1 correspond au courant, sur BL0937 c’est l’inverse, et si on les confond, les valeurs deviennent absurdes.
C’est facile à lire : relie les deux broches à une interruption et compte les impulsions sur une fenêtre de 1 seconde. Pour la puissance, en gros :
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;
Trouve la valeur de powerFactor avec une charge connue : branche un radiateur de 100 W ou une ampoule à incandescence, puis divise les impulsions comptées par la puissance réelle. Pour la tension, fais la même chose en changeant SEL et en utilisant CF1.
Sécurité : lorsque tu charges le code, débranche la prise du secteur, programme l’ESP32-C3 via USB, puis débranche-la et rebranche-la. Brancher au secteur pendant que l’USB est connecté revient à relier ton ordinateur au secteur. Fais la calibration en suivant les logs via le Wi-Fi.
Envoie à Hermetry un compteur energy_wh qui augmente, avec power_w ; récupérer la consommation quotidienne à partir du compteur ensuite est beaucoup plus propre.
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.

