구글 어시스턴트(Google Assistant)로 아두이노 LED 제어
프로젝트/스마트 홈

구글 어시스턴트(Google Assistant)로 아두이노 LED 제어

반응형


구글 어시스턴트(Google Assistant)는 구글이 2016년에 발표한 새로운 인공지능 비서 서비스다. 이제 대부분의 스마트폰에서 지원하는 이 서비스는 그 활용분야가 매우 다양한데, 집안의 가전제품을 구글 어시스턴트로 제어하는 것이 그 대표적인 예이다.

물론 전용 제품을 구매해야만 가능한 이야기 이지만 esp8266과 Blynk, IFTTT를 이용해서 이 기능을 비슷하게 구현해 보았다. 아래는 작동 영상이다.


 

휴대폰에 내장된 구글 어시스턴트를 이용해도 되지만 필자는 미국 여행중 구매해둔 (구글 본사에서 직접 구매) 인공지능 스피커 Google home mini를 이용했다. 영상에서도 보이듯 특정 명령어로 LED를 제어할 수 있다.



제작하는 방법은 매우 간단하다. 우선 Wemos d1 mini와 LED를 아래와 같이 연결한다.

 


그리고 아래 코드를 업로드 한다. Blynk를 사용해본적이 있다면 익숙한 WiFi 기본 예제이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#define BLYNK_PRINT Serial
 
 
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
 
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "********";
 
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "********";
char pass[] = "********";
 
void setup()
{
  // Debug console
  Serial.begin(9600);
 
  Blynk.begin(auth, ssid, pass);
}
 
void loop()
{
  Blynk.run();
}
cs


이제 Blynk에서 버튼 하나를 만든다. 버튼의 상태는 아래를 참고하자



이제 버튼을 누를때 마다 LED가 제어될 것이다. 이제 이 Blynk를 구글 어시스턴트와 연동하는 일만 남았다. 우선 아래 사이트에 접속한다. 


https://ifttt.com/discover

IFTTT는 'IF THIS, THEN THAT'의 약자로 인터넷과 컴퓨터 그리고 여러 가지 IT 기기들을 연동시켜주는 서비스이다. 예들 들어 '페이스북'과 '드롭박스'를 연동하여 페이스북에 새 글을 올리면 자동으로 드롭박스에 사진이 저장되는 것과 같은 일들을 할 수 있다. 물론 IFTTT에 구글 어시스턴트가 있지만(그 와 관련된 재미난 프로젝트들이 많다.) Blynk는 아쉽게도 없다. 하지만 약간의 꼼수를 부려 Blynk를 연동시킬 수 있다.


우선 IFTTT에 회원가입을 한다. 회원가입은 연동할 구글계정으로 하자



그 다음 My Applets 클릭



다음으로 New Applet 클릭 (필자의 경우 미리 만들어둔 Applet가 있다.)



이제 위와 같은 화면에서 하늘색의 this를 클릭한 후 구글 어시스턴트를 찾아 클릭한다.



찾았다면 trigger창이 나오는데 첫번째 Say a simple phrase를 클릭한다.



그러면 위와같은 화면이 나온는데, 구글 어시스턴트에서 수행할 명령어를 입력하는 부분이다. 위의 사진을 참고해서 입맛대로 만들어 보자 (참고로 한국어는 불가능하다, 한글입력은 가능하지만 구글 어시스턴트가 인식을 못하는 것 같다.) Optional은 말 그대로 옵션이니까 일단은 넘어가도 좋다. 이제 Create trigger를 누르자.



이제 that을 눌러 Webhooks를 검색해 찾는다.



클릭할게 하나밖에 없으니 Make a web request 를 클릭



좀 전이랑 비슷한 화면이 나온다. 이제 아까전에 말했던 Blynk를 위한 꼼수를 부려야하는데, 서버 상에서 Blynk가 응답을 받을때 "http://188.166.206.43/Blynk 토큰/update/사용할 디지털 핀" 이러한 구조로 작동된다. 그러면 A 부분에 http://188.166.206.43/Blynk 토큰/update/D0를 입력하면 버튼을 누르는 것과 같은 효과를 낸다는 것이다. 이때 Blynk 토큰은 각자의 것을 이용하면 되고 D0는 아두이노 기준으로 하기 때문에 D3가 아닌 D0로 입력한 것이다.

이제 B부분에 Body는 ["1"]을 입력하자. (버튼을 누르면 켜지면서 1을 반환하기 때문) 나머지는 위의 사진대로 입력하면 된다. 이제 Create action을 누른다.



이제 적어도 LED를 켤수있는 상태가 만들어졌다. 이제 끄는 trigger를 생성해야 하는데 같은 방법으로 만들면 된다. 다만 B의 Body 부분에 ["1"]가 아닌 ["0"]을 입력하면 된다. 성공했다면 위와 비슷한 2개의 trigger가 생성된다.


이제 완성됬다. 휴대폰이나 구글 어시스턴트가 가능한 스피커등을 준비한 뒤 (계정은 위의 trigger를 만든 구글 계정과 일치해야한다.) 저장한 명령어를 말해보자. 그러면 처음의 영상과 같이 LED가 제어될 것이다. 다만 휴대폰의 경우 기본 설정이 한국어 이므로 영어로 바꾸면 좀 더 수월하게 인식한다. 


이 예제는 구글 어시스턴트와 아두이노를 연동하는 아주 기본적인 예제이다. IFTTT에는 이 뿐만 아니라 아주 다양한 기능이 있기 때문에 그 응용 방향은 매우 많다.


반응형
    # 테스트용