번개애비의 라이프스톼일

ESP32에서 SCT013를 이용하여 전력을 측정하여 WIFI로 데이터보내기 본문

IT

ESP32에서 SCT013를 이용하여 전력을 측정하여 WIFI로 데이터보내기

번개애비 2020. 6. 5. 13:56

10K옴 2개와 10uF 캐피스터 1개를 사용하여 회로 구성을 하면된다.

참고로 LED는 사용하지 않는다.

10K옴과 10uF는 GND에 연결하고 다른단은 SCT013 3극 잭에서 가장 안쪽에 위치한 잭에 연결해준다.

나머지 10K옴은 5V에 연결해주면 된다.

SCT013 3극 잭에서 가운데 핀은 사용하지 않는다.

SCT013 3극 잭에서 가장 바깥쪽 잭은 ESP32에서 33핀에 연결해주면 된다.

 

이글을 참고하면 좋을듯 하다.

https://m.blog.naver.com/PostView.nhn?blogId=antplustech&logNo=221170248546&proxyReferer=https:%2F%2Fwww.google.com%2F

 

SCT013 AC 전류 센서 사용하기

오늘은 아두이노로 AC 전류 센서를 이용해서 전자 기기가 켜졌는지 꺼졌는지 확인하는 프로그램을 작성해...

blog.naver.com

 

ESP32에서 중요한점은 SCT013 전력센서를 사용하기 위해서는 필히 ADC를 사용해야 하지만,

WIFI를 사용할 경우 ESP32에서 ADC2에 해당되는 핀들은 사용할 수 없으며,

오로지 ADC1에 해당되는 핀만 사용할 수 있다.

 

더불어, Wifi를 연결하고 있는동안에는 ESP32에서 제공되는 ADC의 문제인진 몰라도 Analog 신호가 특정주기에 맞추어 오르락 내리락하는현상이 발생되기 때문에 필자는 Wifi를 연결하는 함수를 실행하기 직전에 Analog를 통해 전력을 측정하고 Wifi을 연결하고 POST로 데이터를 쏴주고 다시 종료하는 Loop로 해결하였다.

 

#include "EmonLib.h"
#include <WiFi.h>
#include <HTTPClient.h>
const char * ssid = "COREBIZ_WIFI";
const char * password = "core1070";
const char * target_url = "http://221.158.196.89/test/esp32_power.php";
EnergyMonitor emon1; 

void setup() {
  Serial.begin(115200);
  emon1.current(33, 111.1);
}
void loop() {
  double Irms = emon1.calcIrms(1480);
  double watts = Irms*230.0;
  //Wifi Start
  Serial.println("Wifi_connect_start");  
  WiFi.begin(ssid, password);
  while(WiFi.status()!= WL_CONNECTED){
    delay(50);
    Serial.print(".");  
  }
  Serial.println(" ");
  String _postdata = "watts=";
  _postdata = _postdata + watts;
  if(WiFi.status() == WL_CONNECTED){
    HTTPClient http;
    http.begin(target_url);
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    int httpResponseCode = http.POST(_postdata);
    String response = http.getString();
    Serial.println(_postdata);
    Serial.println(response);
    http.end();
  }
  WiFi.disconnect();
  //Wifi End

  delay(100);
}
Comments