[아두이노 강좌] 27. 무선으로 LED 제어하기 / 아두이노와 안드로이드폰 블루투스 통신 / 앱인벤터 프로그래밍
개요
블루투스 통신을 통해 아두이노에 연결된 LED를 안드로이드 폰(무선)으로 조작해보도록 합시다. (아이폰은 지원되지 않아요.)
블루투스 모듈 HC-06
보통 안드로이드 폰은 블루투스와 와이파이 무선 통신을 지원하지만, 아두이노 우노 보드는 블루투스를 지원하지 않습니다. 그렇기 때문에 아두이노에 HC-06이라는 블루투스 통신 모듈을 연결하여, 블루투스 기능을 사용할 수 있게 만들어줍시다.
그림1. 블루투스 모듈 HC-06
무선으로 LED 제어하기
프로젝트 내용은 다음과 같습니다. 아두이노에 LED를 연결해두고, 안드로이드폰에서 ~라는 데이터를 보내오면 LED가 연결된 디지털 핀으로 신호를 보낸다. 이러한 조건을 갖추기 위해서는 아두이노에 회로를 연결하고, 위와 같은 프로그램을 업로드 시켜둬야하며, 안드로이드폰에서는 신호를 보낼 수 있는 앱을 실행시킬 수 있어야합니다. 한단계씩 진행해보도록 합시다. 회로도 연결 블루투스 모듈 HC-06은 전원(VCC,GND)핀과 데이터 송수신핀(TX,RX)으로 구성됩니다. 아두이노의 5v와 GND핀을 연결하여 전원을 입력해줄 수 있으며, 아두이노의 0번(RX)에 블루투스 TX를, 아두이노의 1번(TX)에 블루투스 RX를 연결하여 데이터를 송수신할 수 있습니다. 예제 진행을 위해 LED를 추가로 연결해줍니다.
(TX, RX)핀의 경우 아두이노 USB단자와 연결되어있기 때문에 블루투스 모듈, USB단자가 동시에 사용될 경우, 코드 업로드시 오류가 발생할 수 있습니다. 이 경우 블루투스 모듈을 잠시 뺀 후, 코드 업로드를 진행하고 블루투스 모듈을 다시 연결해주세요.
아두이노 프로그램 코드 (14)
void setup() { Serial.begin(9600); // 시리얼 통신을 시작한다. 속도는9600 pinMode(4, OUTPUT); // 디지털 4번 핀을 출력모드로 설정한다. pinMode(5, OUTPUT); // 디지털 5번 핀을 출력모드로 설정한다. pinMode(6, OUTPUT); // 디지털 6번 핀을 출력모드로 설정한다. } int message; // message라는 변수를 선언한다. void loop() { if(Serial.available()>0) { // 만약 시리얼 통신으로 데이터를 수신받으면 message = Serial.read(); // 변수 message에 수신받은 데이터를 저장 switch(message) { // switch(case)함수의 매개 변수에 사용한다.) case 0: digitalWrite(4, LOW); break; // 데이터 0을 수신받으면 4번을 끈다. case 1: digitalWrite(4, LOW); break; // 데이터 0을 수신받으면 4번을 끈다. case 2: digitalWrite(4, LOW); break; // 데이터 0을 수신받으면 4번을 끈다. case 3: digitalWrite(4, LOW); break; // 데이터 0을 수신받으면 4번을 끈다. case 4: digitalWrite(4, LOW); break; // 데이터 0을 수신받으면 4번을 끈다. case 5: digitalWrite(4, LOW); break; // 데이터 0을 수신받으면 4번을 끈다. } } } 프로그램 해석 message라는 변수를 선언하고 수신 받은 데이터를 message안에 저장합니다. 그리고 switch(case)함수를 사용하여 각 데이터별 출력 값을 설정합니다. 이제 아두이노에 데이터 0~5를 보내줄 외부기기 (앱+안드로이드)를 제작하여 아두이노의 LED를 제어해보도록 합시다.
관련함수 정리
■ Serial.available() 시리얼 통신으로 수신된 읽지 않은 상태의 데이터 수를 반환합니다. 반환 값 수신된 읽지 않은 상태의 데이터 수를 반환합니다. 없을 경우 0을 반환
■ Serial.read() 수신 데이터 중 하나의 데이터를 반환합니다. (저장된 순서대로) 반환 값 읽지 않은 상태의 데이터 중 가장 먼저 저장된 데이터를 반환 ■ switch/case문 (조건 선택문) 1일땐 ~ 하고, 2일땐 ~하고 3일땐 ~하고.. 와 같은 명령어가 성립됩니다.
앱 인벤터 프로그래밍
컴포넌트에 표시되는 목록을 클릭한 후 속성을 이용하면 클릭한 버튼의 크기나 이름 등의 속성을 수정해줄 수 있습니다.
팔레트 - 연결 - 블루투스 클라이언트1을 추가합니다. 추가한 '목록선택'의 텍스트를 '블루투스 연결'로 변경해줍니다.
(추가한 디자인들에 기능을 넣어줄 수 있습니다.)
제작된 앱은 두가지 방법으로 다운로드 받을 수 있습니다. 우리는 QR코드 추출 방식을 통해 안드로이드로 제작된 앱을 다운로드 받도록 합시다.
QR코드로 앱을 다운로드 받기 위해서는 안드로이 폰에 바코드 리더기 앱이 설치되어 있어야 합니다. 다운로드 앱에서 '바코드'를 검색하여 무료 설치한 후 사진과 같이 QR코드를 읽어 앱을 다운로드 받도록 합니다.
결과 확인하기
아래 과정을 통해 안드로이드 폰으로 아두이노에 연결된 LED를 제어해봅시다.
1. 아두이노에 소스 코드를 업로드해줍니다. 2. 안드로이폰의 블루투스 기능을 활성화 시킵니다. 3. 주변기기를 탐색한 후 HC-06을 페어링(연결)해줍니다. PIN번호는 1234 4. 안드로이드폰에 다운로드 받은 앱을 실행합니다. 5. 블루투스 연결을 누른 후 페어링 했던 블루투스 기기를 연결하빈다. 6. 버튼 1~6을 눌러 아두이노로 데이터를 보내고, LED의 변화를 관찰합니다.
링크바로가기: https://smartstore.naver.com/mechasolution_com/products/2855891646
|