반응형
📌 프로젝트 목표
가정용 전자제품의 소비 전력을 측정하고, 설정한 기준 이상일 경우 자동으로 전원을 차단하거나 스마트폰으로 원격 제어가 가능한 스마트 콘센트를 만든다.
✅ 준비물 목록
구분부품명설명
🧠 | 아두이노 UNO / Nano | 메인 제어용 |
⚡ | 릴레이 모듈 (1채널) | 전원을 차단/공급 |
🔌 | ACS712 전류 센서 (5A 또는 20A) | 전류 측정 |
🌐 | ESP8266 또는 ESP32 | Wi-Fi 통신 (원격 제어용) |
🔋 | 5V 파워 서플라이 | 아두이노와 릴레이 전원 |
📱 | Blynk / Node-RED 앱 | 스마트폰 제어용 |
🛠 | 콘센트 + AC 코드 + 플러그 | 실제 전력 제어 |
🧰 | 브레드보드 / 점퍼선 / 납땜도구 등 | 조립용 도구 |
🧩 회로 구성
- ACS712 전류 센서 연결
- Vcc → 아두이노 5V
- GND → GND
- OUT → A0 (아날로그 입력)
- 릴레이 모듈 연결
- Vcc → 5V
- GND → GND
- IN → D2 (디지털 출력)
- 릴레이의 스위치 단자 → AC 전원선 중 하나를 끊어서 연결
- ESP8266/ESP32 통신 모듈
- 시리얼 통신 (TX/RX) 또는 내장 Wi-Fi (ESP32 사용 시 별도 모듈 불필요)
- 아두이노와 Blynk 앱 or HTTP/MQTT로 연결
💡 주의: AC 전원선을 다룰 땐 절연과 안전에 특히 유의!
🧠 아두이노 코드 예시 (전류 측정 + 릴레이 제어)
#define RELAY_PIN 2
#define CURRENT_SENSOR A0
float voltage, current;
const float voltageOffset = 2.5;
const float sensitivity = 0.185; // ACS712-5A 기준 (V/A)
const float cutoffCurrent = 1.5; // 기준 전류 (A)
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // 릴레이 OFF 상태
}
void loop() {
int sensorValue = analogRead(CURRENT_SENSOR);
voltage = sensorValue * (5.0 / 1023.0);
current = abs((voltage - voltageOffset) / sensitivity);
Serial.print("Current: ");
Serial.print(current);
Serial.println(" A");
if (current > cutoffCurrent) {
digitalWrite(RELAY_PIN, LOW); // 릴레이 ON (전기 차단)
} else {
digitalWrite(RELAY_PIN, HIGH); // 릴레이 OFF (전기 공급)
}
delay(500);
}
#define CURRENT_SENSOR A0
float voltage, current;
const float voltageOffset = 2.5;
const float sensitivity = 0.185; // ACS712-5A 기준 (V/A)
const float cutoffCurrent = 1.5; // 기준 전류 (A)
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // 릴레이 OFF 상태
}
void loop() {
int sensorValue = analogRead(CURRENT_SENSOR);
voltage = sensorValue * (5.0 / 1023.0);
current = abs((voltage - voltageOffset) / sensitivity);
Serial.print("Current: ");
Serial.print(current);
Serial.println(" A");
if (current > cutoffCurrent) {
digitalWrite(RELAY_PIN, LOW); // 릴레이 ON (전기 차단)
} else {
digitalWrite(RELAY_PIN, HIGH); // 릴레이 OFF (전기 공급)
}
delay(500);
}
📱 스마트폰 제어 연결 (옵션)
▶️ Blynk 연동 방법 (ESP8266 기준)
- Blynk 앱에서 프로젝트 생성
- 버튼 위젯 → D2 릴레이 제어
- 아두이노 코드에 Blynk 라이브러리 추가
- Blynk.begin(auth, ssid, pass); 로 Wi-Fi 설정
- Blynk와 릴레이 제어 코드 통합
▶️ Node-RED 연동 (ESP32 HTTP 서버 방식)
- ESP32에서 HTTP API 만들기 (/relay/on, /relay/off)
- Node-RED에서 대시보드 생성
- 버튼으로 HTTP 요청 전송
- PC/모바일로 콘센트 제어 가능
📊 전력 측정 결과 보기
전류 측정값을 Blynk나 시리얼 모니터로 실시간 확인할 수 있고,
더 발전시키면 SD카드 로그 저장, 클라우드 업로드 (ThingSpeak, Firebase) 도 가능하다.
⚠️ 안전 주의사항
- AC 전원과 직접 연결되는 작업은 감전 위험이 있으므로, 반드시 절연 케이스를 사용하고 주의할 것
- 릴레이는 정격 전류/전압에 맞는 모델 사용
- 콘센트 제작 시 절연 테이프, 케이블 타이, 전선 커넥터 필수 사용
✨ 확장 아이디어
- 자동 전원 차단 타이머 (예: 10분 지나면 꺼짐)
- 정해진 시간대에만 작동
- 누적 전기 사용량 로깅
- AI 기반 학습 (사용 패턴 분석 후 자동 제어)
반응형
'개발이야기' 카테고리의 다른 글
FTP 서버를 로컬 드라이브처럼! RaiDrive 사용법 총정리 (0) | 2025.04.24 |
---|---|
MCP3202를 아두이노로 사용하는 방법 (전압 측정) (0) | 2025.04.07 |
AI로 돈 버는 현실적인 부업 방법 (2025년 최신) (2) | 2025.04.04 |
ChatGPT로 돈 버는 현실적인 7가지 방법 (4) | 2025.04.04 |
인버터 회로란 - Power Chip (0) | 2025.03.31 |