아두이노 스마트 홈 자동화: 블루투스 제어 회로, 소스코드, DIY 가이드
아두이노 기반 스마트 홈 자동화 시스템 프로젝트
자동화 기술은 가정과 산업 현장에서 사람의 개입을 최소화하며 작업을 더 스마트하게 수행하도록 돕습니다. 최근 스마트폰 보급률이 높아짐에 따라, 블루투스나 Wi-Fi를 이용해 가전제품을 원격 제어하는 홈 오토메이션 수요가 급증하고 있습니다. 본 프로젝트는 아두이노 우노(Arduino UNO)와 HC-05 블루투스 모듈을 활용해 스마트폰 앱으로 조명 등 가전기기를 제어하는 시스템을 구현합니다. 특히 거동이 불편한 분들에게 큰 도움이 될 수 있는 실용적인 프로젝트입니다.
주요 구성 부품
- 아두이노 우노 (Arduino UNO)
- HC-05 블루투스 모듈
- 릴레이 모듈 (5V, 4채널 권장)
- 점퍼 와이어, 전구(또는 LED), 브레드보드
- 스마트폰 앱: 'Bluetooth Terminal HC-05' (플레이스토어 다운로드)
핵심 부품 상세 설명
1. 아두이노 우노 (Arduino UNO)
ATmega328P 마이크로컨트롤러(16MHz 클럭) 탑재 오픈소스 개발 보드입니다. 14개 디지털 I/O 핀(6개 PWM 지원), 6개 아날로그 입력(10비트 ADC), USB 및 DC 잭(7~20V) 전원 입력을 지원합니다. USART(0,1번 핀), I2C(A4, A5), SPI(10~13번 핀) 통신 프로토콜을 내장해 다양한 센서 및 모듈과 연동이 용이합니다. 아두이노 IDE(C/C++ 기반)로 쉽게 프로그래밍 가능하며, setup()(초기화 1회 실행)과 loop()(반복 실행) 구조로 코드가 분리됩니다.
2. HC-05 블루투스 모듈
시리얼 통신(UART) 기반 양방향 무선 통신 모듈로, 마스터/슬레이브 모드 모두 지원합니다. 기본 보드레이트 9600bps, 통신 거리 약 10m(환경 의존). AT 명령어로 이름, 비밀번호, 보드레이트 등 설정 변경 가능합니다.
| 핀 | 설명 |
| EN/KEY | High: AT 명령 모드, Low: 데이터 통신 모드 (기본 Low) |
| VCC | 3.3V ~ 5V 전원 입력 |
| GND | 접지 |
| TXD | 시리얼 데이터 송신 → 아두이노 RX(핀 0) 연결 |
| RXD | 시리얼 데이터 수신 ← 아두이노 TX(핀 1) 연결 |
| STATE | 연결 상태 표시 (연결 시 High) |
주요 AT 명령어: AT(응답 확인), AT+NAME=이름, AT+PSWD=비번, AT+UART=9600,1,0
3. 릴레이 (Relay) - 전자기 스위치
작은 DC 신호(아두이노 출력)로 대용량 AC 부하(전구, 선풍기 등)를 제어하는 전자기 스위치입니다. 코일에 전류가 흐르면 자석이 되어 접점을 전환합니다.
| 단자 | 기능 |
| VCC / GND | 릴레이 구동 전원 (5V) |
| IN (Data) | 아두이노 제어 신호 입력 (High=동작) |
| COM | 공통 단자 (부하 전원 입력) |
| NO | 평시 개방 (릴레이 동작 시 COM과 연결 → 부하 ON) |
| NC | 평시 폐쇄 (릴레이 동작 시 COM과 분리 → 부하 OFF) |
본 프로젝트에서는 NO(평시 개방) 접점을 사용하여 릴레이 동작 시에만 부하가 켜지도록 구성합니다.
회로도 구성 요약
- 아두이노 디지털 핀 8, 9, 10, 11 → 각 릴레이 모듈의 IN 핀 연결
- HC-05 TXD → 아두이노 RX(0), HC-05 RXD → 아두이노 TX(1) (크로스 연결)
- HC-05 VCC/GND → 아두이노 5V/GND, EN/KEY 핀은 GND(데이터 모드)에 연결
- 릴레이 COM 단자에 AC 전원(L선) 연결, NO 단자에 전구 연결 후 중성선(N)과 완결
- 아두이노 USB 또는 DC 잭으로 전원 공급
작동 원리
- 스마트폰 블루투스 켜기 → 'HC-05' 검색 → 페어링 (기본 비번: 0000 또는 1234)
- 'Bluetooth Terminal HC-05' 앱 실행 → 연결 확인
- 앱에서
bulb1 on, bulb2 off 등 명령 전송
- 아두이노가 시리얼 수신 → 문자열 파싱 → 해당 핀 HIGH/LOW 제어 → 릴레이 동작 → 부하 ON/OFF
아두이노 스케치 (전체 코드)
#include <SoftwareSerial.h>
int bulb1 = 8;
int bulb2 = 9;
int bulb3 = 10;
int bulb4 = 11;
SoftwareSerial bt(0, 1); // RX, TX (하드웨어 시리얼 핀 공용 사용 시 주의)
String str;
void setup() {
bt.begin(9600);
Serial.begin(9600);
pinMode(bulb1, OUTPUT);
pinMode(bulb2, OUTPUT);
pinMode(bulb3, OUTPUT);
pinMode(bulb4, OUTPUT);
}
void loop() {
if (bt.available()) {
str = bt.readStringUntil('\n'); // 줄바꿈 기준 수신 권장
str.trim();
Serial.println(str);
// 각 전구 제어 로직 (예: bulb1)
if (str == "bulb1 on") {
digitalWrite(bulb1, HIGH);
Serial.println("Bulb 1 is ON");
} else if (str == "bulb1 off") {
digitalWrite(bulb1, LOW);
Serial.println("Bulb 1 is OFF");
}
// bulb2, bulb3, bulb4도 동일 패턴으로 구현
// ...
}
}
※ 주의: 아두이노 우노의 핀 0, 1은 하드웨어 시리얼(USB 통신)과 공유됩니다. 업로드 시 블루투스 모듈 TX/RX를 분리하거나, SoftwareSerial을 다른 핀(예: 2, 3번)으로 옮겨 사용하는 것이 안정적입니다.
코드 핵심 해설
SoftwareSerial.h: 하드웨어 시리얼 외 추가 시리얼 포트 생성용 라이브러리
bt.begin(9600): 블루투스 통신 보드레이트 설정
bt.readStringUntil('\n'): 문자열 단위 수신으로 오작동 방지
digitalWrite(pin, HIGH/LOW): 릴레이 구동 신호 출력
확장 아이디어
- 음성 인식 모듈 또는 AI 스피커 연동
- 온도/습도 센서 추가로 자동 제어 로직 구현
- Wi-Fi 모듈(ESP8266/ESP32) 교체로 인터넷 원격 제어 구현
- 릴레이 대신 SSR(솔리드 스테이트 릴레이) 사용으로 무소음/고속 스위칭
마무리
아두이노와 블루투스, 릴레이만으로 구현 가능한 기초 홈 오토메이션 시스템을 다뤘습니다. 회도도 구성부터 부품별 상세 사양, 실전 코드까지 제공하므로 초보자도 쉽게 따라 할 수 있습니다. 안전 주의사항(AC 배선 시 감전 방지, 릴레이 정격 확인)을 반드시 준수하며 제작하시기 바랍니다.