본문 바로가기
Hardware/MCU(Arduino,ESP8266)

ESP8266-01 모듈로 Blynk 시작하기 - 원격으로 LED 켜고 끄기

by lovey25 2020. 8. 18.
반응형

Blynk라는 솔루션을 아시나요? 엄청 편리하고 디자인도 이쁘고 거기다가 무료(일부만)라서 많이들 사용하실텐데요. 아두이노, ESP8266 등 컨트롤러를 컴퓨터와 유선으로 혹은 BT, WIFI를 이용해서 무선으로도 연결해서 IOT 프로젝트를 구현해볼 수 있는 그런 서비스입니다.

 

Blynk

Join the most popular IoT platform to connect your devices to the cloud, design apps to control them, and manage your deployed products at scale

blynk.io

오픈소스 기반의 라이브러리와 다양한 예제가 제공되고 핸드폰용 어플도 매우 직관적으로 사용할 수 있도록 잘 만들어져 있어서 처음 시작해도 손가락 몇번만 까딱하면 IOT 스위치정도는 간단히 만들 수 있습니다. 아두이노를 처음 접했을 때 만큼 신선한 충격이었습니다.

Blynk 앱을 깔고 한번 간단하게 시작해 보겠습니다. 참고로 전 안드로이드를 사용중인데 아이폰 어플도 있어요. 스토어에서 Blynk를 검색해서 앱을 설치해줍니다. 그리고 무료니까 부담없이 계정도 만들고 로그인합니다.

ESP8266 standalone

ESP8266칩셋 보드에 직접 Blynk를 컨트롤하는 코드를 올려서 ESP8366보드만 가지고 Blynk에 접속하는 방법입니다. 하드웨어에 대한 세팅은 이전 포스팅에서 자세히 다루었기 때문에 이번글에서는 생략하고 소프트웨어 부분만 언급하도록 하겠습니다.
(블로그 어디서든지 "ESP8266"을 누르시면 ESP8266관련 포스팅을 확인하실 수 있습니다.)

Blynk앱에서 새로운 프로젝트를 시작해서 해당 프로젝트의 토큰값을 생성합니다. "New Project"로 시작을 하면 사용하는 보드의 종류와 접속 방법을 선택하라고 합니다. 저는 EPS01모듈을 사용하기 때문에 EPS8266을 선택하고 접속방법은 WIFI를 선택해줍니다.

그러면 계정 가입을 할때 등록했던 이메일로 토큰이 발송되었다는 메시지가 나오는데요.

즉시 다음과 같이 토큰 안내 이메일을 받을 수 있습니다. 도착 토큰값은 후에 코딩을 할 때 필요하니 일단 보관해 둡니다.

라이브러리 설치

이제 펌웨어 부분을 진행 해보겠습니다. Blynk 서비스를 사용하기 위해서는 라이브러리가 필요합니다. IDE에서 라이브러리 검색창에 "Blynk"를 검색해서 라이브러리를 설치해 줍니다.

PlatformIO에서 "Blynk" 라이브러리 검색

위의 사진은 PlatformIO IDE에서 라이브러리를 검색한 모습입니다.

저는 지금까지 Visual Stduio 확장 프로그램인 Visual Micro(VM)를 IDE로 사용했었습니다. VM가 유료로 전환되어서 지금은 1년 라이센스를 구매해서 사용중이지만 앞으로 계속 구매를 해야한다는 점이 부담이 되어 앞으로는 되도록이면 PlatformIO IDE를 사용하고자 합니다. 참고해주세요. 

더보기

Visual Micro

Arduino IDE

펌웨어 코딩

라이브러리가 설치되었으니 이제 펌웨어를올려보겠습니다.

Blynk가 좋은점은 사용하기 정말 편리하고 다양한 예제가 보기좋게 준비되어 있어서 저처럼 전문지식이 없는 사람도 쉽게 시작할 수 있다는 겁니다. 아래 링크는 예제를 모아둔 페이지인데요. 여기서 필요한 예제를 찾아서 가져오겠습니다.

 

Blynk Example Browser

Board: Connection: Full list of supported hardware is here Auth Token (optional): Example: WARNING! Some sketches may contain errors. Please check your code carefully and ⚠ report a problem

examples.blynk.cc

앞서 Blynk앱에서 만들어준 프로젝트와 동일하게 보드는 "ESP8266"을 선택해주고 연결방법을 "ESP8266 WiFi"로 선택해줍니다. 그리고 맨아래 Example항목에서 가장 간단한 예제인 "Blynk Blink"를 선택해서 오른쪽에 나오는 소스코드를 복사합니다.

아래 코드가 복사해온 예제코드인데요. 여기서 3가지만 수정하고 바로 업로드 해주면 되겠습니다.

/* Comment this out to disable prints and save space */
#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[] = "YourAuthToken";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";

void setup()
{
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth, ssid, pass);
  // 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);
}

void loop()
{
  Blynk.run();
  // You can inject your own code or combine it with other sketches.
  // Check other examples on how to communicate with Blynk. Remember
  // to avoid delay() function!
}

10행: 프로젝트를 생성하고 이메일로 받은 토큰값을 넣어줍니다.

14행: ESP01모듈이 접속해야할 SSID를 넣어줍니다.

15행: 14행에서 지정한 SSID에 설정되어 있는 보안 비밀번호를 넣어줍니다.

너무도 간단하게 복사 붙여넣기 만으로 펌웨어가 완성되었습니다. ^^

Blynk 클라이언트 프로젝트 설정

빈프로젝트의 편집화면에서 우측 상단에 있는 "+"버튼을 눌러서 새로운 위젯을 추가해줍니다. 간단히 버튼을 하나 추가해서 ESP01모듈에 있는 내장 LED를 켜고끄는 기능을 구현해 보겠습니다. 여러 위젯중에서 첫번째에 있는 "Button"을 선택해 줍니다. 그러면 프로젝트에 "OFF"라고 표시된 버튼이 생성되는데요. 생성된 버튼을 눌러서 버튼의 기능을 만들어 줍니다.

위의 가장 오른쪽의 사진이 버튼 기능을 설정하는 화면입니다.

ESP01 모듈에 있는 LED를 조작할꺼니까 Builtin LED가 연결된 핀번호를 확인해야 합니다. 왜냐하면 모듈마다 핀번호가 달랐습니다. 제가 가지고 있는 EPS01 모듈 2개는 서로 핀번호가 달랐습니다. 테스터기로 도통검사를 해서 LED가 연결된 핀번호를 확인하고 아니면 0,1,2,3 4개중에 하나니까 하나씩 다 넣어보면 되겠습니다. ㅎ

저는 GPIO1과 연결된 모듈을 사용하기 때문에 "OUTPUT"항목에서 "Digital, GP1"을 선택했습니다. 그리고 오른쪽에는 ON 혹은 OFF 상태에서 해당 핀에 어떤 값을 보낼지를 지정하는건데요. 디지털 핀이기 때문에 0과 1을 각각 넣어줍니다.

Mode는 지금 만들고 있는 버튼의 타입을 선택하는 옵션인데요 푸시버튼처럼 누르고 있는 동작에서만 동작하는 버튼을 만들수도 있고 스위치 처럼 터치를 할때마다 상태가 토글되는 버튼을 만들 수도 있습니다. 버튼을 누를때 마다 LED가 켜고 꺼지는 동작이 반복되도록 하기위해서 스위치 모드를 선택했습니다. 그리고 나머지는 손대지 않아도 됩니다.

자 이제 모든 준비가 끝났습니다.

테스트

앞에서 준비한 펌웨어를 ESP01모듈에 업로드 해 줍니다. 

참고로 다음 설정은 Platformio에서 제가 사용한 platformio.ini 파일의 설정입니다.

[common]
lib_deps = ${common.lib_deps}

[env:esp8266]
platform = espressif8266
board = esp01_1m
framework = arduino

업로드 모드에서 펌웨어 업로드가 완료되었다면 ESP01을 동작모드로 전환해서 리셋해줍니다. 정상적으로 Blynk코드가 실행된다면 다음과 같은 메시지를 시리얼 모니터로 확인할 수 있습니다.

이제 앱으로 돌아가서 원격 클라이언트를 실행해 줍니다.

프로젝트 화면의 오른쪽 위 삼격형 모양의 실행 버튼을 눌러서 프로젝트를 실행합니다. 

실행이 되고나서 ESP01모듈과 연결이 되면 오른쪽 그림과 같이 연결 상태를 확인할 수 있습니다. 이제 버튼을 눌러보면 누를때마다 LED가 켜고 꺼지는 것을 알 수 있습니다.

(특이한건 LED가 High 상태일때는 꺼지고 Low상태에서 켜지는 반대의 로직으로 동작하는데 왜 그런건지는 잘 모르겠네요.)

ESP01모듈과 Blynk 를 이용해서 원격으로 LED를 켜고 끄는 간단한 예제를 실습해 봤는데요. Blynk를 무료로 쓸때 사용할 수 있는 위젯의 수에 제한이 있고 여러명이 쓸수 없다는 단점이 있지만 Blynk가 심각하리만치 간단하고도 쉽게 IoT 프로젝트를 구현할 수 있는 솔루션이라는건 분명하기 때문에 자칫하다가는 유료결제의 유혹에 넘어갈수있기 때문에 주의(?)가 필요합니다. ^^;

반응형

댓글