[아두이노 강좌] 27. 무선으로 LED 제어하기 / 아두이노와 안드로이드폰 블루투스 통신 / 앱인벤터 프로그래밍
블루투스 통신을 통해 아두이노에 연결된 LED를 안드로이드 폰(무선)으로 조작해보도록 합시다. (아이폰은 지원되지 않아요.)
![]()
보통 안드로이드 폰은 블루투스와 와이파이 무선 통신을 지원하지만, 아두이노 우노 보드는 블루투스를 지원하지 않습니다. 그렇기 때문에 아두이노에 HC-06이라는 블루투스 통신 모듈을 연결하여, 블루투스 기능을 사용할 수 있게 만들어줍시다.
![]() 그림1. 블루투스 모듈 HC-06
![]()
프로젝트 내용은 다음과 같습니다. 아두이노에 LED를 연결해두고, 안드로이드폰에서 ~라는 데이터를 보내오면 LED가 연결된 디지털 핀으로 신호를 보낸다. 이러한 조건을 갖추기 위해서는 아두이노에 회로를 연결하고, 위와 같은 프로그램을 업로드 시켜둬야하며, 안드로이드폰에서는 신호를 보낼 수 있는 앱을 실행시킬 수 있어야합니다. 한단계씩 진행해보도록 합시다.
블루투스 모듈 HC-06은 전원(VCC,GND)핀과 데이터 송수신핀(TX,RX)으로 구성됩니다. 아두이노의 5v와 GND핀을 연결하여 전원을 입력해줄 수 있으며, 아두이노의 0번(RX)에 블루투스 TX를, 아두이노의 1번(TX)에 블루투스 RX를 연결하여 데이터를 송수신할 수 있습니다. 예제 진행을 위해 LED를 추가로 연결해줍니다.
(TX, RX)핀의 경우 아두이노 USB단자와 연결되어있기 때문에 블루투스 모듈, USB단자가 동시에 사용될 경우, 코드 업로드시 오류가 발생할 수 있습니다. 이 경우 블루투스 모듈을 잠시 뺀 후, 코드 업로드를 진행하고 블루투스 모듈을 다시 연결해주세요.
![]() ![]()
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
![]()
![]() |