아두이노 IoT 클라우드와 아마존 알렉사 연동: 단계별 가이드
부품 및 소모품
| 부품 |
수량 |
| 아두이노 MKR WiFi 1010 |
1 |
| 아두이노 MKR ENV 쉴드 |
1 |
| 브레드보드 |
1 |
| 고휘도 백색 LED |
1 |
| 점퍼 와이어 |
1 |
| RGB LED 공통 캐소드 |
1 |
| 220Ω 저항 |
1 |
앱 및 온라인 서비스
- 아두이노 웹 에디터
- 아두이노 IoT 클라우드
- 아두이노 아마존 알렉사 공식 스킬
프로젝트 소개
소개: 시작하기
이 튜토리얼에서는 아두이노 IoT 클라우드를 사용합니다. IoT 클라우드가 처음이라면 먼저 이 입문 프로젝트를 참고해 지원 보드 설정, IoT 클라우드 사물(Thing)과 속성(Property) 생성, 온보딩 과정을 익히시기 바랍니다.
1부: 아두이노 IoT 클라우드
메인 IoT 클라우드 페이지에서 새 사물(Thing)을 만들고 의미 있는 이름을 붙이세요. 사용할 보드를 선택합니다. 보드가 안 보인다면 장치 섹션의 장치 추가 버튼 클릭 후 시작되는 절차를 놓쳤을 수 있습니다.
완료되면 사물에 세 가지 속성을 추가합니다. 처음 두 개는 램프를, 마지막은 온도를 나타냅니다.
- ColoredLight 타입: RGB 조명 제어 가능, 밝기와 색상 조절. 읽기/쓰기(ReadAndWrite)로 설정해 알렉사로 제어 가능하게 합니다.
- DimmedLight 타입: 위와 유사하지만 밝기만 제어 가능.
- 온도 속성: 읽기 전용(ReadOnly)으로 설정(값만 알면 되므로). 타입은 온도 센서 (섭씨) 사용, 화씨 선호 시 변경 가능.
이 시점에서 대시보드 뷰는 다음과 같아야 합니다:
속성 추가 시 스마트 홈 섹션에 나열된 타입만 사용하세요. 그렇지 않으면 알렉사와 호환되지 않습니다.
사물 편집 뷰에서 스케치 편집 버튼을 클릭해 웹 에디터로 이동하세요.
2부: 아두이노 웹 에디터
웹 에디터에서 자동 생성된 스케치에 코드를 추가합니다.
환경 데이터(온도, 원하면 조도, 습도, 기압도 추가 가능)를 읽기 위해 Arduino_MKRENV 라이브러리를 스케치 상단에 임포트합니다:
#include
보드 핀 상수를 정의해 코드 가독성을 높입니다:
#define PIN_MEETING_ROOM 5
#define PIN_LOUNGE_AREA_R 2
#define PIN_LOUNGE_AREA_B 3
#define PIN_LOUNGE_AREA_G 4
setup 함수에서 아두이노 MKR ENV 쉴드를 초기화합니다:
if (!ENV.begin()) {
Serial.println("Failed to initialize MKR ENV shield!");
while (1);
}
쉴드가 없으면 스케치 실행을 차단합니다.
pinMode를 OUTPUT으로 지정할 필요 없습니다. analogWrite()로 백색 LED 강도나 RGB LED 개별 색상 강도를 설정할 것이기 때문입니다.
loop 함수에서 매초 온도를 읽습니다:
temperature = ENV.readTemperature();
delay(1000);
이제 콜백 함수를 구현합니다. 속성 값이 IoT 클라우드에서 변경될 때마다 실행됩니다.
onMeetingRoomChange와 onLoungeAreaChange를 구현해야 합니다:
void onMeetingRoomChange() {
uint8_t brightness = map(meetingRoom.getBrightness(), 0, 100, 0, 255);
if (meetingRoom.getSwitch()) {
Serial.println(brightness);
analogWrite(PIN_MEETING_ROOM, brightness);
} else {
analogWrite(PIN_MEETING_ROOM, LOW);
}
}
위 코드에서는 클라우드에서 밝기 값을 읽어 매핑한 후, 조명 스위치가 켜져 있는지 확인합니다. 켜져 있으면 읽은 brightness로 조명을 켜고, 아니면 끕니다.
다른 콜백도 원리는 같습니다:
void onLoungeAreaChange() {
uint8_t r, g, b;
loungeArea.getValue().getRGB(r, g, b);
if (loungeArea.getSwitch()) {
Serial.println("R:" + String(r) + " G:" + String(g) + " B:" + String(b));
analogWrite(PIN_LOUNGE_AREA_R, r);
analogWrite(PIN_LOUNGE_AREA_B, b);
analogWrite(PIN_LOUNGE_AREA_G, g);
} else {
Serial.println("Lamp Off");
analogWrite(PIN_LOUNGE_AREA_R, 0);
analogWrite(PIN_LOUNGE_AREA_B, 0);
analogWrite(PIN_LOUNGE_AREA_G, 0);
}
}
차이점은 밝기 하나 대신 RGB 색상의 세 구성요소가 있다는 점입니다. 알렉사 앱에서 사용자 지정 색상을 이름으로 정의하면 빨강, 초록, 파랑 양을 일일이 말할 필요 없습니다.
3부: 아마존 알렉사 스킬 설정
애플 앱스토어나 구글 플레이스토어에서 아마존 알렉사 앱을 다운로드하세요. 설치 후 기존 계정으로 로그인하거나 새로 만드세요.
이제 아두이노 알렉사 스킬 설치 단계를 이미지 순서대로 따라해보세요.
4부: 아마존 알렉사 기기 설정
잠시 기다리면 기기가 발견됩니다.
기기 선택을 누르면 사용 가능한 모든 기기 목록이 나옵니다(아두이노 IoT 클라우드에서 속성 이름대로 명명됨).
기기 하나를 선택해 기기 설정을 누르세요. 원하면 그룹에 추가해 기기를 더 쉽게 제어하고 정리할 수 있습니다. 아니면 건너뛰세요.
제어하고 싶은 모든 기기에 대해 설정 과정을 반복하세요.
최종 기기 뷰는 이렇게 보여야 합니다:
이제 "알렉사, 사무실 온도 어때?"나 "알렉사, 회의실 불 켜줘" 같은 말을 할 수 있습니다.
알렉사와 IoT 클라우드로 즐거운 시간 보내세요! 질문이나 직접 만든 프로젝트가 있으면 아래 댓글로 알려주세요.
아두이노 팀
코드
아두이노
(웹 에디터에서 자동 생성된 스케치에 위 콜백 함수들을 추가하세요.)
회로도