안드로이드 앱과 IoT로 구현하는 스마트 홈 자동화
부품 및 소모품
| 부품 | 수량 |
| 아두이노 윤 (Arduino Yun) | 1 |
| 아두이노 메가 2560 (Arduino Mega 2560) | 1 |
| 아두이노 우노 (Arduino UNO) | 1 |
| 서보 모터 | 1 |
| Adafruit 표준 LCD 16x2 화이트 온 블루 | 2 |
| 숫자 키패드 | 1 |
| 부저 | 1 |
| DHT11 온습도 센서 (4핀) | 1 |
| LED (Generic) | 5 |
| 팬 모듈 | 1 |
| 푸시버튼 스위치 12mm | 1 |
| 화염 센서 | 1 |
| Logitech C270 HD 웹캠 | 1 |
| 릴레이 (Generic) | 1 |
| 전구 | 1 |
| 브레드보드 (Generic) | 1 |
| 점퍼 와이어 (Generic) | 1 |
| SD 카드 | 1 |
| HC-05 블루투스 모듈 | 1 |
| RFID 리더 (Generic) | 1 |
필요한 도구 및 기계
앱 및 온라인 서비스
- Blynk
- Temboo
- 아두이노 IDE
- PuTTY
- Arduino Meet Robot 애플리케이션
프로젝트 소개
영상
진행하기 전에 프로젝트 영상을 시청하여 작동 방식과 핵심 기능을 파악하시기 바랍니다.
요약
최근 몇 년간 스마트 홈은 뜨거운 화제가 되었습니다. 많은 이들이 자신만의 스마트 홈 아키텍처를 제안했지만, 대부분 기기 간 통합이 부족하고 보안 문제도 있었습니다. 사용되는 통신 기술로는 블루투스, GSM, 지그비 등이 있으며 각각 장단점이 있습니다. 졸업 작품으로 통합된 스마트 홈 아키텍처를 구현해 사용자 친화적 모바일 앱으로 모니터링 및 제어하고, 모든 시스템을 상호 연결하며, 일정 범위 내 음성 제어도 가능하게 했습니다. 주요 특징:
- 숫자 키패드와 RFID를 이용한 2단계 보안 시스템으로 침입자 접근 차단
- 침입 시 사진 온라인 업로드, 원격 영상 감시(로컬 서버에 영상 업로드, 웹 브라우저로 확인)
- DHT11, 화염 센서, MQ3, MQ135 등 각종 센서 판독값을 안드로이드 앱으로 모니터링
- LED, 서보 모터 등 기기 제어
- 사용자 설정에 따른 기기 자동 스케줄링
- 사용자 접근 시 온수기, 커피 머신 등 사전 준비
- 음성 명령으로 기기 제어
사전 지식
- C 프로그래밍 익숙
- 아두이노 IDE 사용 및 보드 업로드 익숙
단계별 지침
1단계: 전체 시스템 배선
아래 회로도대로 연결하세요. 연결할 게 많으니 인내심을 갖고 신중하게 작업하세요. 골판지 등으로 집 모형을 만들어 실제 홈 오토메이션 느낌을 내보세요. PIR 모션 센서는 민감하므로 단단히 고정해 오작동을 방지하세요.
RFID 연결:
- MOSI → 핀 51
- MISO → 핀 50
- SCK → 핀 52
- SS/SDA → 핀 9
- RST → 핀 8
메가 핀 20을 윤 핀 2에, 메가 핀 21을 윤 핀 3에 연결해 I2C 통신 구성.
2단계: Temboo 계정 생성 및 Dropbox API 설정
Temboo(https://temboo.com/)에 가입하고 첫 앱을 생성하세요. 계정명, 키 등 정보를 저장해두세요. Temboo Python SDK(https://temboo.com/python)를 다운로드해 SD 카드 루트에 temboo 폴더명으로 압축 해제하세요.
Dropbox 계정 생성(https://www.dropbox.com/home) 후 개발자 앱 생성(https://www.dropbox.com/developers/apps):
- Create app → Dropbox API 직접 사용
- 데이터 유형: Files and datastores (사진 업로드용)
- 앱 생성 완료 후 App key, App secret 기록
- Permission type: App folder (전용 폴더만 접근)
- Temboo의 InitializeOAuth(https://temboo.com/library/Library/Dropbox/OAuth/InitializeOAuth/)에서 App key/secret 입력 → 콜백 ID, 임시 토큰 생성 → Dropbox 링크 방문해 인증
- FinalizeOAuth(https://temboo.com/library/Library/Dropbox/OAuth/FinalizeOAuth/)에서 최종 Token key/secret 획득
3단계: 아두이노 윤 드라이버 설치
PuTTY로 윤에 SSH 접속(IP 주소, 사용자 root, 기본 비밀번호 arduino). 다음 명령으로 패키지 설치:
opkg update
opkg install kmod-video-uvc
opkg install python-openssl
opkg install fswebcam
4단계: 실시간 영상 감시
윤에 추가 패키지 설치:
wget https://www.custommobileapps.com.au/downloads/mjpgstreamer.ipk
opkg install mjpgstreamer.ipk
mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640x480 -f 25" -o "output_http.so -p 8080 -w /www/webcam" &
브라우저에서 https://yourarduinoyunipaddress.local:8080/stream.html로 접속해 스트림 확인.
5단계: Twilio 계정 설정으로 문자 메시지 발송
Twilio(https://www.twilio.com/) 가입 후 Account SID, Auth Token 기록. 무료 번호 구매 및 수신자 번호 인증. Temboo의 SendSMS Choreo(https://temboo.com/library/Library/Twilio/SMSMessages/SendSMS/)에 자격 증명 입력 후 프로필 저장. 아두이노 윤 코드 208줄의 프로필 이름을 본인 것으로 변경.
6단계: Blynk 계정 설정 및 앱 구성
Blynk 앱 설치(https://play.google.com/store/apps/details?id=cc.blynk). 새 프로젝트 생성, 하드웨어 모델: Arduino Yun. Auth Token은 이메일로 발송됨. 위젯 구성:
Home 탭: LCD(V1), Value Display(화재 센서, V11, 0-1023, 1초), Level H(화재 레벨, V12, 0-1023, Push), Notification(일반)
HVAC 탭: LCD(V3), Slider(팬, D9, 0-255), Value Display×2(방1/방2 온도, V2/V6, 0-50, 1초), History Graph(V9/V8)
Monitoring 탭: Labeled Value×2(방1/방2 습도, V5/V7, 0-100, 1초), Graph×2(V10/V9, 0-100, 1초), History Graph(V10/V7)
Control 탭: LCD(V4), Value Display×2(V19/V20, 0-1023, 1초), Labeled Value(V21, 0-1023, 1초), Slider(메인 조명, 0-255, 100ms), Time Input(V31, 시작/중지/요일/타임존 허용), GPS Track(V29, 진입 시 트리거, 반경 조절 가능)
음성 제어
AMR_VOICE 앱 설치 후 HC-05와 블루투스 페어링. 아두이노 우노에 음성 제어 코드 업로드. 앱에서 'Connect Robot' 클릭 후 음성 아이콘을 눌러 코드에 정의된 명령어 말하기.
문제 발생 시 댓글로 문의 바랍니다. 기본적인 아두이노, C, 리눅스 지식은 있다고 가정하고 상세하지 않은 부분도 있습니다.
참고: 모든 문서와 코드를 공개 깃허브 저장소로 이전했습니다. 소스코드, 회로도, 아키텍처 참조자료 다운로드: https://github.com/akib-islam/Android-App-Based-Home-Automation-System-Using-IOT. 기여나 새 기능 추가는 풀 리퀘스트, 이슈는 이슈 트래커에 등록해 주세요.
코드
깃허브 저장소에서 다운로드: https://github.com/akib-islam/Android-App-Based-Home-Automation-System-Using-IOT
회로도
깃허브 저장소에서 다운로드: https://github.com/akib-islam/Android-App-Based-Home-Automation-System-Using-IOT