아두이노 윤과 알렉사로 LED 조명 제어하기 - 스마트 홈 튜토리얼
부품 및 소모품
| 부품 |
수량 |
| 아두이노 윤 (Arduino Yun) |
1 |
| 아마존 알렉사 아마존 에코 |
1 |
| LED (일반) |
1 |
| 마이크로 SD 카드 |
1 |
앱 및 온라인 서비스
- AWS IoT
- AWS Lambda
- 알렉사 스킬 키트 (ASK)
프로젝트 개요
동기
알렉사가 탑재된 스마트 미러를 만든 이후, 집 안의 다양한 하드웨어와 홈 오토메이션 기기를 연결하는 방법을 계속 찾아왔습니다. 알렉사 스마트 홈 API가 커스텀 기기를 직접 제어할 수 있게 되었다는 소식을 듣고 시도해보기로 했습니다.
이 프로젝트는 알렉사 스마트 홈 v3 스킬을 아두이노 윤 보드에 연결하는 것을 목표로 합니다. 알렉사 스마트 홈 스킬(v3), AWS 람다 함수, AWS IoT 사물, 그리고 IoT 사물을 구독하는 아두이노 윤이 핵심 구성 요소입니다.
단계별 구현 가이드
1단계: 스마트 홈 스킬 및 람다 함수 생성
알렉사 개발자 콘솔에서 스마트 홈 스킬을 생성하고, AWS 람다 함수를 만든 뒤 둘을 연결합니다. LWA(Login with Amazon) 과정을 거쳐 클라이언트 ID와 시크릿을 스킬 설정에 사용해야 합니다. 이 단계에서 알렉사 대시보드에 로그인하여 새 스마트 홈 기기(이 시점에서는 람다 함수 응답만)를 발견할 수 있다면 순조로운 시작입니다.
2단계: IoT 사물(Thing) 생성
AWS IoT 콘솔에서 사물을 생성합니다. '사물 섀도우(Thing Shadow)'를 사용할 예정인데, 이는 사물의 상태 사본과 원하는 변경 사항을 저장합니다. 아두이노는 이 섀도우의 변경 사항('델타')을 발행하는 알림 피드를 구독합니다. 사물 생성 후 보안 탭에서 공개 키, 개인 키, 인증서를 다운로드하고 '활성화'를 눌러 루트 CA 키도 저장합니다. 이 인증서들은 아두이노가 IoT 섀도우에 인증하는 데 쓰입니다.
섀도우 탭에서 편집을 눌러 다음 속성을 추가하세요:
{ "reported": { "light": "on" } }
3단계: 람다 함수를 IoT 사물에 연결
람다 코드를 업데이트하여 사물 섀도우를 갱신하도록 만듭니다. 람다 함수의 IAM 역할에 AWSIoTFullAccess 권한이 있는지 확인하세요. 람다 테스트 탭에서 TurnOn과 TurnOff 디렉티브로 테스트하여 사물 섀도우의 원하는 상태가 올바르게 변경되는지 확인합니다.
4단계: 아두이노 윤 설정
아두이노 윤 하드웨어를 설정합니다. 윈도우 사용자는 SD 카드 포맷 시 FAT32를 사용해야 합니다(예약: exFAT 미지원). 이더넷 연결 후 와이파이 설정도 가능합니다. SSH 접속이 되고 df -h로 SD 카드 마운트가 확인되면 성공입니다. 아두이노 IDE에서 Blink 예제가 돌아가는지도 확인하세요.
5단계: 윤을 AWS IoT에 연결 (SDK 설치)
AWS 아두이노 IoT SDK를 설치하고, ShadowThing 예제 스케치를 실행하여 사물 섀도우 델타를 모니터링합니다. aws_iot_config.h 파일에 엔드포인트와 인증서/키 이름을 입력하세요. 시리얼 모니터에서 연결 성공 메시지와 섀도우 변경 알림이 오는지 확인합니다.
6단계: 섀도우 변경 사항 처리 및 최종 테스트
제공된 스케치 코드를 업로드합니다. 이 코드는 light 키의 변경을 감지하여 'on'이면 LED 핀들을 HIGH로, 'off'면 LOW로 설정합니다. 온보드 LED(핀 13)도 포함되어 있어 별도 LED 없이도 테스트 가능합니다. 알렉사에게 "전등 켜줘", "전등 꺼줘" 명령으로 작동하는지 확인하세요.
7단계: 축하하기!
여기까지 오셨다면 축하드립니다! 이제 음성 명령으로 아두이노를 제어할 수 있습니다. IoT의 세계가 여러분 앞에 열렸습니다.
코드
람다 함수(Python)와 아두이노 스케치(.ino, .h)는 GitHub Gist에서 확인하세요.
회로도
회로도 이미지는 Schematics 섹션을 참조하세요.