블루투스 통신을 통한 아두이노 제어 with Blynk

aa3e07eb62056a0bbdbfa858f72c4e8d_1526639 

 

보통 개발 보드로 구현한 하드웨어와 Blynk를 사용하기 위해서는 단순히 위와 같은 과정으로 진행합니다. 

Blynk앱에서 위젯을 셋팅한 후 아두이노 스케치용 Blynk library 설치 후 소스를 업로드하면 바로 실행됩니다. 

 

먼저 아두이노와 Bluetooth 통신을 활용하여 Blynk를 다뤄보도록 하겠습니다. 

블루투스 통신을 통한 앱을 제작하기 위해서는 블루투스 스캔부터 페어링까지 모든 프로그래밍을 거쳐야 하지만 

Blynk를 이용하면 위젯 하나로 끝나게 됩니다. 

 

 

가장 기본적인 것 부터, 블링크의 버튼 위젯으로 LED On/Off를 제어해보겠습니다. 

 

#준비물: 아두이노 우노, LED, 220Ω 저항, HC-06 블루투스 모듈, 브레드보드, 점퍼케이블 

 

여기서 사용할 블루투스 모듈은 HC-06으로 아두이노에서 블루투스 2.0 통신을 바로 사용할 수 있도록 제작된 모듈입니다. 

각종 휴대기기, HC-06 마스터 등과 무선 블루투스 시리얼 통신을 가능하게 해줍니다. 

3.3V, 5V 에서 작동하며 10미터 안팎의 무선통신이 가능합니다. 

모듈에 부착된 LED를 통하여 전원연결, 페어링(연결) 상태를 확인할 수 있습니다. 

참고로 아이폰(iOS)에서는 SPP(Serial Port Profile) 프로파일 통신방식을 공식적으로 지원하고 있지 않기때문에 아이폰으로 사용하려면 RN-42 또는 BLE 모듈을 사용해야합니다. (BLE는 iPhone 4S 이상에서 지원함) 

 

 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526641
 

LED는 220Ω 저항과 함께 (+)극을 아두이노 13번 핀에, (-)극을 아두이노 GND에 연결합니다.

HC-06은 아래 핀 배치도와 같이 배선해줍니다.

 

[핀 배치]

<HC-06> ---- <Arduino>

Vcc ---- 5V

GND ---- GND

TX(데이터 송신) ---- 2번핀(D2)

RX(데이터 수신) ---- 3번핀(D3)

 

 

Blynk 앱에서 새 프로젝트를 생성 후 UI 셋팅을 해보도록 하겠습니다. 

 

 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526642

 

위와 같이 계정 생성 후 첫 화면에서

'+ New Projct'를 선택합니다.


aa3e07eb62056a0bbdbfa858f72c4e8d_1526642

 

프로젝트 이름과 사용할 디바이스를 선택해줍니다. 


aa3e07eb62056a0bbdbfa858f72c4e8d_1526642

 

프로젝트 이름을 'HC-06'이라고 작성하고 DEVICE를 'Arduino UNO'로 선택합니다.

 


aa3e07eb62056a0bbdbfa858f72c4e8d_1526642

 

DEVICE를 설정하고나면 CONNECTION TYPE을 선택하는 항목이 생기는데 여기서는 Bluetooth를 선택해줍니다. 

 


aa3e07eb62056a0bbdbfa858f72c4e8d_1526642

 

이렇게 프로젝트 설정이 모두 끝났다면 하단의 'Create'버튼을 눌러줍니다. 

 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526642

 

해당 프로젝트에 대한 인증 토큰에 대한 정보가 계정의 e-mail주소로 보내졌다는 팝업이 뜹니다. 

OK를 누르고 e-mail에 들어가서 인증 토큰번호를 확인합니다. 

개인 인증토큰은 아두이노 프로그래밍할때 기입해야하는 중요한 정보이므로 복사를 해서 메모를 해두는 것이 좋습니다.
 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526642
 

생성한 프로젝트의 대시보드에서 우측 상단메뉴 '+' 를 클릭해줍니다.

 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526642

 

사용하고자 하는 위젯을 선택하는 항목입니다. 

 여기에서 Button 위젯과 Bluetooth 위젯을 선택해줍니다.

 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526642
 

 

대시보드에서 Button 위젯을 클릭해주면 Button 위젯의

사용 조건을 셋팅하는 화면이 나옵니다.

 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526642
 

Button의 이름을 'LED'로, PIN은 Digital의 'D13'으로, MDOE는 'SWITCH'로 설정해줍니다.

PIN을 D13으로 설정한 이유는 아두이노 우노의 디지털 13번 핀의 LED를 제어하기 위함입니다.

MODE에서의 PUSH는 손으로 버튼을 누르고 있는 동안에만 상태가 바뀌는(LOW → HIGH) 동작 모드이며,

SWITCH는 한 번씩 누를 때마다 상태가 반전되는 동작 모드입니다.

 

모든 설정이 완료되었다면 아두이노 스케치로 넘어가보겠습니다.

 

Blynk 라이브러리에 기본적으로 저장되어있는 예제를 통해 테스트를 해보도록 하겠습니다. 

 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526643
 

[파일] → [예제] → [Blynk] → [Boards_USB_Serial] → [Arduino_SoftwareSerial] 순서로 클릭합니다. 

 

#define BLYNK_PRINT Serial //시리얼 모니터 활성화

#include <BlynkSimpleStream.h>

#include <SoftwareSerial.h>

 

char auth[] = "***************************************"; //나의 인증 토큰 입력

 

SoftwareSerial SwSerial(2, 3); // RX, TX, 블루투스 통신 객체 생성

 

void setup()

{

Serial.begin(9600); //시리얼포트를 열고, 전송속도를 9600bps로 사용 

SwSerial.begin(9600); //블루투스 시리얼을 개방하고, 전송속도를 9600bps로 사용

Blynk.begin(SwSerial, auth); //Blynk.begin(). 아두이노가 Blynk Cloud에 연결.

}

 

void loop()

{

Blynk.run(); //All the Blynk Magic happens here

}

위는 예제 코드를 간략한 설명과 함께 정리한 코드입니다. 

 

char auth[] = "YourAuthToken";에서 YourAuthToken글자를 지우고 이메일에서 확인한 인증코드를 복사해서 붙여넣기 해줍니다. 

위 코드에서 보이는 것처럼 아두이노가 Blynk Cloud Server에 연결하고 서버를 통해 동작되는 것을 알 수 있습니다. (Blynk.run();) 

즉, 클라우드에 존재하는 블링크 서버가 개별 네트워크에 존재하는 사용자(블링크 앱)와 디바이스를 중개해 주는 역할을 합니다. 

[툴] 메뉴에서 '보드'와 '포트'설정이 제대로 되었는지 확인 후 아두이노에 업로드해줍니다.

 

 

이제 블링크로 실행해보겠습니다. 

 

스마트폰에서 블루투스 기능을 활성화 하고 블루투스 디바이스를 검색해 HC-06에 해당하는 목록을 선택해줍니다. 

 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526644

 

대시보드 상의 위젯을 Drag & Drop으로 재배치했습니다.

블루투스 위젯을 클릭해줍니다.

 


aa3e07eb62056a0bbdbfa858f72c4e8d_1526644
 

블루투스 위젯의 사용 조건을 셋팅하는 화면이 나옵니다. 

'Connect Bluetooth device'를 클릭하여 HC-06의 블루투스 이름을 선택한 후 OK를 누릅니다. 

연결이 되었다면 '#블루투스이름 connected'가 확인됩니다.

(제가 사용한 HC-06 모듈의 이름을 HJKim으로 변경했습니다. 변경하지 않아도 무방합니다.)

 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526644
 

 

화면에서 실행 버튼(▷)을 누르면 프로그램 실행상태가 되고 버튼 모양이 □ 형태로 변합니다. 

 

 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526644
 

 

실행 상태에서 버튼 위젯을 누르면 13번 핀의 LED가 켜지고 버튼위젯을 다시 한 번 더 누르면 LED가 꺼지는 동작을 확인할 수 있습니다. 

 

https://youtu.be/_0VQ5Me2_Mw 

위 링크를 통해 동작 시연 영상을 확인할 수 있습니다. 

 

aa3e07eb62056a0bbdbfa858f72c4e8d_1526644


참고로 실행 버튼(▷)을 눌렀으나 실행 버튼 옆의 형태에 '붉은색 1'이 보인다면 통신이 연결이 되지 않았다는 상태 표시이므로 연결 상태를 다시 확인하고 수정해야 합니다. 

 

 

 

 

 

>블링크 관련 키트 보러가기<

http://mechasolution.com/shop/goods/goods_view.php?goodsno=575406&category=048 

메카리워즈 Image Map


모바일 버전으로 보기