[아두이노 강좌] 27. 무선으로 LED 제어하기 / 아두이노와 안드로이드폰 블루투스 통신 / 앱인벤터 프로그래밍

8495a8810bae33cf24fc5f62064deb13_1462958
 

 

8495a8810bae33cf24fc5f62064deb13_1462958 개요

 

블루투스 통신을 통해 아두이노에 연결된 LED를 안드로이드 폰(무선)으로 조작해보도록 

합시다. (아이폰은 지원되지 않아요.)

  

8495a8810bae33cf24fc5f62064deb13_1462958


8495a8810bae33cf24fc5f62064deb13_1462958 블루투스 모듈 HC-06

 

보통 안드로이드 폰은 블루투스와 와이파이 무선 통신을 지원하지만, 아두이노 우노 보드는

블루투스를 지원하지 않습니다. 그렇기 때문에 아두이노에 HC-06이라는 블루투스 통신

모듈을 연결하여, 블루투스 기능을 사용할 수 있게 만들어줍시다.


 

8495a8810bae33cf24fc5f62064deb13_1462959

      그림1. 블루투스 모듈 HC-06

 

 

8495a8810bae33cf24fc5f62064deb13_1462959

 


8495a8810bae33cf24fc5f62064deb13_1462959 무선으로 LED 제어하기

 

프로젝트 내용은 다음과 같습니다.


아두이노에 LED를 연결해두고, 안드로이드폰에서 ~라는 데이터를 보내오면 LED가 연결된

디지털 핀으로 신호를 보낸다. 이러한 조건을 갖추기 위해서는 아두이노에 회로를 연결하고,

위와 같은 프로그램을 업로드 시켜둬야하며, 안드로이드폰에서는 신호를 보낼 수 있는 앱을

실행시킬 수 있어야합니다. 한단계씩 진행해보도록 합시다.


43a90244ad374d1133a62b9c25070d17_1463455 회로도 연결 

43a90244ad374d1133a62b9c25070d17_1463456

블루투스 모듈 HC-06은 전원(VCC,GND)핀과 데이터 송수신핀(TX,RX)으로 구성됩니다.

아두이노의 5v와 GND핀을 연결하여 전원을 입력해줄 수 있으며, 아두이노의 0번(RX)에 

블루투스 TX를, 아두이노의 1번(TX)에 블루투스 RX를 연결하여 데이터를 송수신할 수 

있습니다. 예제 진행을 위해 LED를 추가로 연결해줍니다.




43a90244ad374d1133a62b9c25070d17_1463456

3개의 LED를 각각의 디지털 핀에 연결해줍니다. 블루투스 모듈이 연결된 디지털0번과 1번

(TX, RX)핀의 경우 아두이노 USB단자와 연결되어있기 때문에 블루투스 모듈, USB단자가 

동시에 사용될 경우, 코드 업로드시 오류가 발생할 수 있습니다. 이 경우 블루투스 모듈을 

잠시 뺀 후, 코드 업로드를 진행하고 블루투스 모듈을 다시 연결해주세요.

 

43a90244ad374d1133a62b9c25070d17_1463456

43a90244ad374d1133a62b9c25070d17_1463456 아두이노 프로그램 코드 (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번을 끈다.

      }

   }

}


43a90244ad374d1133a62b9c25070d17_1463456


43a90244ad374d1133a62b9c25070d17_1463456 프로그램 해석

message라는 변수를 선언하고 수신 받은 데이터를 message안에 저장합니다. 그리고

switch(case)함수를 사용하여 각 데이터별 출력 값을 설정합니다.


이제 아두이노에 데이터 0~5를 보내줄 외부기기 (앱+안드로이드)를 제작하여 아두이노의

LED를 제어해보도록 합시다.

 

43a90244ad374d1133a62b9c25070d17_1463457

43a90244ad374d1133a62b9c25070d17_1463457 관련함수 정리 

 

■ Serial.available()

시리얼 통신으로 수신된 읽지 않은 상태의 데이터 수를 반환합니다.

반환 값

수신된 읽지 않은 상태의 데이터 수를 반환합니다. 없을 경우 0을 반환

 

■ Serial.read()

수신 데이터 중 하나의 데이터를 반환합니다. (저장된 순서대로)

반환 값

읽지 않은 상태의 데이터 중 가장 먼저 저장된 데이터를 반환


■ switch/case문 (조건 선택문)

1일땐 ~ 하고, 2일땐 ~하고 3일땐 ~하고.. 와 같은 명령어가 성립됩니다.

 

 

43a90244ad374d1133a62b9c25070d17_1463457

 

 

43a90244ad374d1133a62b9c25070d17_1463457 앱 인벤터 프로그래밍


43a90244ad374d1133a62b9c25070d17_1463458


43a90244ad374d1133a62b9c25070d17_1463458
팔레트에서 스크린으로 버튼을 6개 추가하면 스크린, 컴포넌트에 버튼 6개가 추가됩니다.

컴포넌트에 표시되는 목록을 클릭한 후 속성을 이용하면 클릭한 버튼의 크기나 이름 등의 

속성을 수정해줄 수 있습니다.

 

 

43a90244ad374d1133a62b9c25070d17_1463458
팔레트 - 사용자 인터페이스 - 목록 선택을 추가합니다.

팔레트 - 연결 - 블루투스 클라이언트1을 추가합니다.

추가한 '목록선택'의 텍스트를 '블루투스 연결'로 변경해줍니다.

 

 

 

43a90244ad374d1133a62b9c25070d17_1463458
'블록'을 클릭하여 내부 프로그래밍을 진행합니다. 

(추가한 디자인들에 기능을 넣어줄 수 있습니다.)

 

 

43a90244ad374d1133a62b9c25070d17_1463458




43a90244ad374d1133a62b9c25070d17_1463458


43a90244ad374d1133a62b9c25070d17_1463458



제작된 앱은 두가지 방법으로 다운로드 받을 수 있습니다. 우리는 QR코드 추출 방식을 통해 

안드로이드로 제작된 앱을 다운로드 받도록 합시다.

43a90244ad374d1133a62b9c25070d17_1463458

 

 

QR코드로 앱을 다운로드 받기 위해서는 안드로이 폰에 바코드 리더기 앱이 설치되어 있어야 합니다. 

다운로드 앱에서 '바코드'를 검색하여 무료 설치한 후 사진과 같이 QR코드를 읽어 앱을 다운로드 

받도록 합니다.

 43a90244ad374d1133a62b9c25070d17_1463458 

 

 

43a90244ad374d1133a62b9c25070d17_1463458

 

  

결과 확인하기

 

아래 과정을 통해 안드로이드 폰으로 아두이노에 연결된 LED를 제어해봅시다.

 

1. 아두이노에 소스 코드를 업로드해줍니다.

2. 안드로이폰의 블루투스 기능을 활성화 시킵니다.

3. 주변기기를 탐색한 후 HC-06을 페어링(연결)해줍니다. PIN번호는 1234

4. 안드로이드폰에 다운로드 받은 앱을 실행합니다.

5. 블루투스 연결을 누른 후 페어링 했던 블루투스 기기를 연결하빈다.

6. 버튼 1~6을 눌러 아두이노로 데이터를 보내고, LED의 변화를 관찰합니다.

 

 

 

f9a0e505b5756f06246939084c038895_1621232

 

링크바로가기: https://smartstore.naver.com/mechasolution_com/products/2855891646

 

 

메카리워즈 Image Map

주렁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2016-10-01 (토) 20:47 7년전
코드가 이상하지 않나요?
주소
     
     
홍예브 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2016-10-14 (금) 09:42 7년전
case문에서 디지털 출력을 복붙 하고 수정을 못한것 같네요 ㅠㅠ
주소

모바일 버전으로 보기