번개애비의 라이프스톼일
ESP32에서 SCT013를 이용하여 전력을 측정하여 WIFI로 데이터보내기 본문
10K옴 2개와 10uF 캐피스터 1개를 사용하여 회로 구성을 하면된다.
참고로 LED는 사용하지 않는다.
10K옴과 10uF는 GND에 연결하고 다른단은 SCT013 3극 잭에서 가장 안쪽에 위치한 잭에 연결해준다.
나머지 10K옴은 5V에 연결해주면 된다.
SCT013 3극 잭에서 가운데 핀은 사용하지 않는다.
SCT013 3극 잭에서 가장 바깥쪽 잭은 ESP32에서 33핀에 연결해주면 된다.
이글을 참고하면 좋을듯 하다.
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);
}
'IT' 카테고리의 다른 글
Windows 환경에서 MySQL 데이터베이스를 데이터베이스별로 자동으로 백업하기 (0) | 2020.12.30 |
---|---|
Kimsq 1버전대 파일첨부 오류 수정 [플래시파일업로드 문제점 해결] (6) | 2020.09.11 |
파이썬에서 *.npy 확장자의 데이터내용을 text로 저장하기 (0) | 2020.05.29 |
ESP32와 수위센서를 이용하여 수분 측정하기 (0) | 2020.02.17 |
ESP32에 RFID를 연결한뒤 UID를 서버로 전송하기 (Wifi이용) (0) | 2020.02.14 |
Comments