본문 바로가기
아두이노 응용

[아두이노/Blynk] 스마트폰 앱으로 인터넷을 통해 Arduino를 제어해보자

by 작동미학 2019. 8. 7.
반응형

Blynk스마트폰 앱을 Arduino(ESP8266지원 보드)와 통신 및 제어하는 응용 프로젝트를 수행한다

 

▶ 이 가이드를 따라하면

- 스마트폰 앱을 통해 Arduino를 제어할 수 있다.

 

▶ 부품 설명 및 회로 구성

Blynk Arduino IoT 활용 보드에서 스마트폰을 제어하게 해주는 서비스이다. 다양한 방법으로 스마트폰 앱을 간단히 자작하고, 이를 통해 Arduino 등을 제어할 수 있게 해준다. 사실은 Arduino외에도 RaspberryPiIntel Edison등 많은 보드를 제어할 수 있다. Blynk를 위한 스마트폰 앱은 Android, iOS모두 지원한다.

개념은 간단하다 Blynk 자체 서버를 경유해서 스마트폰 앱과 Arduino(여기서는 WiFi가 되는 버전을 상정한다)가 인터넷을 통해 통신할 수 있도록 해준다. 기존 소개했던 예제 (https://bbangpan.tistory.com/94) 가 스마트폰 브라우저를 통해 동일 WiFi AP하에서 직접 통신했던것과는 완전히 달리, 인터넷만 되면 장소에 구애받지 않고 사용할 수 있다. Blynk서버를 경유하는 장점이다. 개인은 이러한 경유 서버를 24시간 운영할 수 없기 때문에 가움에 단비 처럼 고맙게 사용할 수 있다.

사실 더 자세히 보면 WiFi 말고도 USB등 다양한 통신 방법을 제공하는데 여기서는 WiFi만 가정해보자. 기존에 소개했던 Arduino호환 WeMos D1 WiFi 보드 (https://bbangpan.tistory.com/93) 를 사용해서 blink를 스마트폰으로 제어하도록 간단히 구성해보자.

WeMos D1 WiFi -> Blynk서버 -> 스마트폰 Blynk앱을 통해 내가 가진 Arduino 보드와 스마트폰 앱이 서로 정보를 주고받고 제어할 수 있게 가능하다.

 

일단 Blynk 앱을 설치한다. 앱스토어/Play스토어에서 각각 검색하여 다운로드 하고 간단히 이메일주소와 암호를 통해 가입한 후 Project를 생성하자. 나만의 제어 프로그램을 만들 수 있는데, 서버에 저장되므로 계정/암호만 알면 어느 기기에서든 사용할 수 있다.

Blynk  사이트, Android/iOS 각기 앱스토에서 검색해 다운받은 후 회원 가입하자
앱 다운로드 / 가입 후 실제 버튼 셋팅 화면중 일부

가입을 해서 신규 프로젝트(New Project)를 생성하면 auth key라는 것을 준다. 나중에 Arduino 프로그램에 넣어야 하므로 잘 받아서 기록해 두자.

메일로 도착한  Auth Token. Project 생성하면 메일로 온다

Arduino를 위한 라이브러리와 툴을 다운받자. https://github.com/blynkkk/blynk-library/releases/download/v0.6.1/Blynk_Release_v0.6.1.zip 주소에 접속해서 받아 압축을 풀면 libraries tool 나오는데, 각기 Arduino 개발툴 설치 폴더 밑에 libraries tool 폴더 밑에 동일하게 복사하자. 혼돈스럽다면 https://github.com/blynkkk/blynk-library/releases/tag/v0.6.1 세부 참고하면 된다.  이제 개발툴을 다루기 전에 Arduino 호환보드의 LED 점등(blink 예시) 해보기 위해 Blynk 앱을 구성해보자.

2개의 버튼을 만든다. 앱에서 Project 만든 화면을 터치하면 다양한 제어 아이콘을 선택할 있는데, 상단의 버튼을 터치하자. 그러면 해당 버튼이 어느 데이터핀이나 가상핀을 제어할지 선택할 있다.

여기서는 V5라는 가상 핀을 선택하고 SWITCH 선택해보자. SWITCH 토글이 되면서 ON/OFF 바꿀 있는 버튼유형이다. 적절히 눌러보면 감이 잡힌다. 하단 그림에서는 13번핀(GP13) 제어도 하나 넣었는데 사용하지 않으면 만들지 않아도 좋다. 가상 핀은 Blynk에서 제공하는 개념으로 나중에 Arduino에서 코드를 통해 제어할 수 있다.

화면을   터치하고   버튼을   선택하면   세부   설정이   가능하다 .  위처럼   설정한다

 

나중에 Arduino에서 준비가 되면, 윗 첫번째 앱화면 오른쪽 상단의 삼각형 Play버튼을 누르면 서버를 경유해 통신할 준비가 된다. 버튼을 누르면서 제어 확인을 할 수 있게 된다.

일단 여기서는 Arduino쪽을 셋팅해보자. 참고로 위 버튼 배치를 할 때 터치 & 드래그로 버튼 위치를 바꿀 수 있다. 터치 할 때 조금 오래 누르고 있어야 화면상 위치를 움직일 수 있다.

자 이제 Arduino로 넘어가보자. Blynk라이브러리가 잘 설치되었다면 아래 예시가 보여야 한다. 여기서 NodeMCU를 선택한다.

예시에 보면 authkey

Blynk 의 예시에서 NodeMCU예시 선택
메일로 받았던 authkey와 WiFi AP의 SSID/암호를 자신에 맞게 넣자>
개발툴의 시리얼 모니터를 실행하면 이렇게 보여야 정상이다 . Serial  속도는 필자는  115200 로 바꿔서 컴파일한 경우

이제 비로소 준비가 되었다. 위 소스를 살짝만 고쳐서 V5가 활성화 될 때 blink가 작동하면서 Serial10을 출력하게 해보자. 보드에 있는 LED가 깜빡이며 시리얼모니터에는 01이 반복출력되는 것을 볼 수 있는 것이 정상이다. 물론 Blynk앱에서 해당 프로젝트가 Play버튼을 눌러 활성화 시킨후 버튼을 실제 눌러 주어야 그렇게 작동한다.

 

#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[] = "XXXXX자신에 맞게셋팅XXXXX";

 

// Your WiFi credentials.

// Set password to "" for open networks.

char ssid[] = "XXXXX자신에 맞게셋팅XXXXX";

char pass[] = "XXXXX자신에 맞게셋팅XXXXX";

 

void setup()

{

  // Debug console

  Serial.begin(115200);  //115200으로 맞추고 시리얼 모니터 실행시에도 115200으로 했다.

 

  Blynk.begin(auth, ssid, pass);

  pinMode(LED_BUILTIN, OUTPUT);

  // You can also specify server:

  //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80);

  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);

}

 

BLYNK_WRITE(V5) {

  int pinValue = param.asInt();

  Serial.println(pinValue);

  if(pinValue == 1) {

    digitalWrite(LED_BUILTIN, HIGH);

  } else {

    digitalWrite(LED_BUILTIN, LOW);

  }

}

void loop()

{

  Blynk.run();

}

 

상기 예시를 잘 보면 V5가 활성화 되어 pinValue1의 값을 가질 때 LED를 켜고 0을 가질때는 LED를 끄게 수정되었다는 것을 알 수 있다. 응용하면 다양하게 명령을 내릴 수가 있고 컴파일 한 후 Blynk앱에서 버튼을 눌러보면 잘 작동하는 것을 알 수 있다. 물론 Arduino WeMos D1 WiFi WiFi통신을 통해 Blynk서버에 잘 접속하고 있어야 한다.

기타 다양한 기능도 많은데(Arduino에서 읽은 값을 전송한다던가 등) 이 부분은 좀더 연구가 필요하다. 여기서는 간단한 제어만 보자. 그리고 상기 소스는 ESP8266을 지원하는 거의 모든 보드에서 사용이 가능하므로 NodeMCU에서도 작동한다.

 

▶ 구매 가이드

Arduino WeMos D1 WiFi  : https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20190807054415&SearchText=D1+WiFi+arduino&switch_new_app=y ($3)

 

강의 키워드

Blynk, 블링크, ESP8266, NodeMCU, LED, 버튼, WiFi AP, 인터넷, IoT, 스마트폰 제어, 스마트폰 앱, 아두이노

반응형