WARAN 홈 오토메이션 키트: 라즈베리파이, 아두이노, 센서 통합 시스템
부품 및 소모품
| Raspberry Pi 2 Model B |
1 |
| Arduino UNO |
1 |
| DHT11 온습도 센서 (4핀) |
2 |
| 토양 수분 센서 |
1 |
| Arduino Pro Mini 5V |
2 |
| 9V 배터리 |
3 |
| 워터 펌프 |
1 (선택) |
| nRF24L01+ 모듈 |
3 |
| nRF24L01+ 소켓 |
1 (선택) |
| NPN 트랜지스터 |
1 (선택) |
| 3.3V 전압 레귤레이터 |
2 |
| 10kΩ 저항 |
2 |
| 10µF 커패시터 |
4 |
| 47µF 커패시터 |
2 |
| 퍼프보드 |
3 |
필요 도구
- 납땜기, 와이어 스트리퍼, 니퍼, 점퍼 와이어
앱 및 온라인 서비스
- Microsoft Windows 10 IoT Core
- Microsoft Azure
- PubNub Publish/Subscribe API
프로젝트 개요
저렴하고 모듈식 홈 오토메이션 시스템을 구축하고자 했습니다. 센서와 디바이스를 큰 변경 없이 계속 추가할 수 있는 구조입니다.
WARAN = Windows IoT + Azure + Raspberry Pi + Arduino + NRF24L01+
단일 허브와 다수 모듈로 구성. 각 모듈은 마이크로컨트롤러 + 센서 조합으로 집 안 여러 위치에서 데이터를 수집해 RF로 허브에 전송. 허브와 모듈 간 모든 통신은 RF로 수행. 윈도우 폰용 동반 앱도 제공.
기술 선택 이유
- Windows IoT: XAML/C#, Visual Studio 경험 활용 (최고의 IDE)
- NRF24L01+: 저렴, 저전력, 강력한 라이브러리 보유
- Windows Azure: 학습 용이, 설정 최소화로 개발 집중 가능
허브 (The Hub)
WARAN의 중앙 제어 센터. RPI2 + Arduino Uno + nRF24L01+로 구성. RPI2는 Windows IoT Core 실행, 유니버설 앱이 제어 센터 역할. 대형 디스플레이(TV/모니터) 연결해 모듈 데이터 확인 및 제어. 키보드/마우스로 모듈 추가/제거.
동작 방식
- 각 모듈은 고유 주소 보유. 허브가 이 주소로 통신
- 컨트롤 센터(유니버설 앱)에서 모듈 등록 (주소 + 이름)
- 등록 후 컨트롤 센터 → 아두이노 우노 (I2C) → nRF24L01+ → 모듈
- 모듈: 센서 읽기 또는 디바이스 제어 → 응답 데이터 전송
- 아두이노 → 컨트롤 센터 (I2C) → 디스플레이 표시 + 클라우드 전송
- 아두이노는 RPI2와 모듈 간 인터페이스 역할만 수행
작동 시나리오 3가지:
- 모듈별 설정 간격마다 자동
- 사용자가 컨트롤 센터 조작 시 (마우스/키보드)
- 클라우드에서 트리거 수신 시 (PubNub 경유)
컨트롤 센터
RPI2에서 실행되는 유니버설 앱. 사용자 인터페이스이자 모듈/클라우드 통신 허브. Azure Mobile Services + PubNub를 백엔드로 사용. 모듈 정보는 로컬 SQLite DB + Azure에 저장. 모바일 앱으로 푸시 알림 전송.
모바일 앱
윈도우 폰 앱 (타 플랫폼 추후 지원). 세계 어디서나 센서 데이터 확인. 중요 알림(가스 누출 등) 푸시 수신. 원격으로 모듈 액션 트리거 가능 (예: 식물 급수 모듈 펌프 작동). 클라우드 경유로 허브 근처 불필요.
모듈 (Modules)
허브와 RF로 데이터 주고받는 컴포넌트 조합. 아두이노 프로 미니 + 센서, 또는 RPI2 + 센서 등 무한 확장 가능. 허브로부터 명령 수신 후 적절히 응답하면 됨.
1. 식물 급수 모듈 (Plant Waterer)
식물 수분 레벨 + 주변 온도 모니터링. 수분 부족 시 모바일 알림. 모바일에서 원격 펌프 작동 가능. 임계값 이하 시 자동 펌프 작동 설정도 가능.
구성: Arduino Pro Mini + DHT11 + 토양 수분계 + nRF24L01+
- 9V 배터리 → Pro Mini RAW 핀 → 내장 레귤레이터로 5V 출력 (DHT11 전원)
- 9V → 3.3V 레귤레이터 → nRF24L01+ 전원
- 수분 센서: 아날로그 A3 핀
- DHT11: 디지털 핀 6
- 펌프 제어: 디지털 핀 5 → 트랜지스터/릴레이
브레드보드 → 퍼프보드로 이관해 소형화.
2. 온도 모니터 모듈 (Temperature Monitor)
방 온도/습도 모니터링. 허브/모바일에서 연동 기기(온도조절기, 에어컨 등) 제어 가능. 데모용으로 LED ON/OFF.
구성: Arduino Pro Mini + DHT11 + nRF24L01+
- 전원 구성은 식물 급수 모듈과 동일
- DHT11: 디지털 핀 5
- 기기 제어: 핀 6 → 트랜지스터/릴레이
알려진 이슈
- 전력: 배터리 수시간 내 방전. ATtiny 프로세서로 교체해 저전력화 예정
- I2C 동시성: RPI2가 아두이노에 동시 2선 요청 시 하나 실패. 재시도 메커니즘 구현 중
- 단방향 통신: 허브가 요청 → 모듈 응답만 가능. 허브 요청 없이 모듈이 데이터 푸시하는 방식 필요
- 범위: 옆 방까지 수신 OK. 더 멀리려면 허브 측 nRF24L01+를 PA+LNA 버전(외장 안테나)으로 교체
- 보안: 개발자 소유 가정하에 인증 미구현. Azure Identity Service로 MS/FB/Google 인증 연동 가능
향후 계획
오픈 플랫폼으로 확장. 허브/모바일 앱 안정화 후 모듈 추가:
- 가스 누출 센서
- 침입 감지기
- 디바이스 컨트롤러 (커피 머신, 조명 등)
- 차고 문 개폐기
- 웨어러블 모듈
- 하드웨어 없는 인터넷 서비스 (날씨, 주식, Azure Logic App)
- 허브 범위 밖에서 인터넷으로 통신하는 모듈 (차량 추적, 반려동물 추적, 만보기 등)
소스 코드, 문서, 배포 가이드: Bitbucket 저장소