Blynk스마트폰 앱을 Arduino(ESP8266지원 보드)와 통신 및 제어하는 응용 프로젝트를 수행한다
▶ 이 가이드를 따라하면
- 스마트폰 앱을 통해 Arduino를 제어할 수 있다.
▶ 부품 설명 및 회로 구성
Blynk는 Arduino 및 IoT 활용 보드에서 스마트폰을 제어하게 해주는 서비스이다. 다양한 방법으로 스마트폰 앱을 간단히 자작하고, 이를 통해 Arduino 등을 제어할 수 있게 해준다. 사실은 Arduino외에도 RaspberryPi나 Intel 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를 생성하자. 나만의 제어 프로그램을 만들 수 있는데, 서버에 저장되므로 계정/암호만 알면 어느 기기에서든 사용할 수 있다.
가입을 해서 신규 프로젝트(New Project)를 생성하면 auth key라는 것을 준다. 나중에 Arduino 프로그램에 넣어야 하므로 잘 받아서 기록해 두자.
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와
이제 비로소 준비가 되었다. 위 소스를 살짝만 고쳐서 V5가 활성화 될 때 blink가 작동하면서 Serial에 1과 0을 출력하게 해보자. 보드에 있는 LED가 깜빡이며 시리얼모니터에는 0과 1이 반복출력되는 것을 볼 수 있는 것이 정상이다. 물론 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가 활성화 되어 pinValue가 1의 값을 가질 때 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, 스마트폰 제어, 스마트폰 앱, 아두이노
'아두이노 응용' 카테고리의 다른 글
[아두이노] cds sensor와 servo motor로 t-rex game 스페이스키 자동으로 누르게하기 (0) | 2020.04.09 |
---|---|
[아두이노/초음파센서/숫자LED] Arduino 초음파 센서와 TM1637 4 digit 거리 표시기 (0) | 2019.08.04 |
[아두이노/WiFi/서보모터] Arduino WeMos D1 WiFi (ESP8266) 호환 보드와 휴대폰 브라우저를 통한 서보 모터 구동 (6) | 2019.08.04 |
[응용/접근 감지 전등] 초음파 센서를 통해 전등을 켜보자 (0) | 2016.04.19 |
[응용/전자기장검출] 전자기장 감지기(EMF detector)를 만들어보자 (2) | 2015.11.11 |
[프로젝트] HM-10모듈과 수은전지+배터리 홀더로 만드는 초소형 iBeacon (10) | 2015.07.17 |
[프로젝트] 전자시계 / 실시간 시계 모듈(RTC breakout/DS1307 or DS3231)과 4 digits 디스플레이로 구현하자 (0) | 2015.04.17 |
[프로젝트] 간단한 단거리 무선 통신(433/315Mhz)으로 구현하는 실내외 원격 온습도계 디스플레이 프로젝트 (2) | 2015.02.09 |