본문 바로가기
모두의 앱 인벤터

[앱 인벤터] 블루투스로 아두이노 LED 제어하기

by 로니킴 2024. 8. 10.


MIT 앱인벤터를 사용하여 아두이노 보드에 연결된 LED를 블루투스를 통해 스마트폰 앱으로 제어하는 방법을 자세히 설명합니다. 초보자도 쉽게 따라할 수 있도록 단계별로 작성되었습니다. 프로젝트 이름을 [BluetoothTest]로 설정하여 진행합니다. 

 

목차

     

     

     


    초보자를 위한 앱 인벤트 블루투스 제어하기

     

    MIT 앱인벤터를 사용해 스마트폰으로 아두이노 보드에 연결된 LED를 블루투스로 제어하는 방법을 설명합니다. 초보자도 쉽게 따라할 수 있도록 단계별로 작성되었습니다.

    먼저, 앱인벤터 웹사이트에서 프로젝트를 생성하고, UI 요소를 추가하여 블루투스 연결 버튼과 LED 제어 버튼을 설정합니다. 이후 블록 모드에서 버튼 클릭 시 블루투스 연결, 해제, LED 제어 동작을 정의합니다. 완성된 앱은 APK 파일로 빌드하여 스마트폰에 설치할 수 있으며, 아두이노 IDE를 사용해 LED 제어 코드를 작성하고 업로드합니다. 최종적으로, 스마트폰 앱과 아두이노를 연결해 LED 제어가 제대로 이루어지는지 확인합니다.

     


     

    1. 앱인벤터 실행하기

    MIT 앱인벤터 웹사이트에 접속하여 구글 계정으로 로그인한 후, "새 프로젝트 시작" 메뉴에서 [BluetoothTest]라는 이름의 새 프로젝트를 생성합니다.

     

    1. 앱인벤터 웹사이트 접속: 
       웹 브라우저를 열고 [MIT 앱인벤터](http://ai2.appinventor.mit.edu/)에 접속합니다. 이 플랫폼은 시각적인 블록 프로그래밍 인터페이스를 제공하여 복잡한 코딩 없이도 앱을 만들 수 있습니다.

    2. 로그인 및 새 프로젝트 시작:  
      구글 계정으로 로그인한 후, 화면 상단의 "프로젝트" 메뉴에서 "새 프로젝트 시작"을 선택합니다. 프로젝트 이름을 [BluetoothTest]로 설정하여 새 프로젝트를 생성합니다.


     

    2. 앱인벤터 '디자이너'에서 버튼 및 레이블 추가하기

    디자이너 모드에서 앱의 UI를 설계하고, 블루투스 연결과 해제, 연결 상태 표시, LED 제어를 위한 버튼과 레이블을 추가한 후, 필요시 레이아웃을 정리합니다.


    1. 디자이너 모드로 이동:  
       프로젝트가 생성되면 디자이너 화면으로 자동 이동합니다. 여기서 앱의 UI(사용자 인터페이스)를 설계합니다.

     

    2. UI 요소 추가:  

    • 블루투스 연결: 팔레트의 "사용자 인터페이스"에서 "버튼"을 끌어와 중앙에 놓고, 텍스트를 "연결"로 설정합니다. 이 버튼은 블루투스 연결을 시작하는 역할을 합니다. 또 다른 버튼을 추가하여 텍스트를 "해제"로 설정합니다. 이 버튼은 블루투스 연결을 해제하는 역할을 합니다.
    • 연결 상태 표시: "레이블"을 추가하고 텍스트를 "연결 상태: 연결되지 않음"으로 설정합니다.
    • LED 제어: 두 개의 버튼을 추가하여 각각 "LED ON"과 "LED OFF"로 설정합니다. "레이블"을 추가하여 텍스트를 "LED 상태: OFF"로 설정합니다.

    3. 레이아웃 구성: 

      필요하다면 "Layout" 탭에서 "HorizontalArrangement"를 사용하여 버튼을 수평으로 배치해 UI를 깔끔하게 정리할 수 있습니다.

     

     


     

    3. 앱인벤터 타이머, 시계, 알림 추가하기

    블루투스 연결을 관리하는 "BluetoothClient"를 추가하고, 사용자 알림과 주기적 타이머 기능을 위해 "Notifier"와 "Clock"을 추가합니다.

     

    1. 블루투스 클라이언트 추가:  
       "팔레트 - 연결"에서 "BluetoothClient"를 선택해 화면에 추가합니다. 이 컴포넌트는 보이지 않는 상태로 존재하며, 블루투스 연결을 관리합니다.

    2. 알림 및 시계 추가:  
      "사용자 인터페이스"에서 "Notifier"를 추가해 사용자에게 알림을 제공할 수 있게 합니다. "센서"에서 "Clock"을 추가하여 주기적인 타이머 기능을 설정할 수 있습니다.


     

    4. 블루투스 연결/해제 블록 코딩하기

    블록 모드에서 연결 버튼 클릭 시 블루투스 장치와 연결하고 상태를 업데이트하며, 해제 버튼 클릭 시 연결을 해제하고, 시계 타이머를 사용해 주기적으로 연결 상태를 확인하여 알림을 제공합니다.

     

    1. 블록 모드로 이동:  
        화면 상단의 "블록" 탭을 클릭해 블록 모드로 이동합니다. 여기서 앱의 동작을 정의할 수 있습니다.

     

    2. 연결 버튼 클릭 시:  

    • "When Button.Connect.Click" 블록을 사용해 연결 버튼 클릭 시 동작을 정의합니다.
    •  "BluetoothClient.Connect" 블록을 사용해 사용자가 선택한 블루투스 장치(HC-06 모듈)와 연결합니다. 연결이 성공하면 "Label.ConnectionStatus.Text"를 "연결됨"으로 업데이트합니다.
    • 연결 실패 시 "Notifier.ShowAlert"를 사용해 실패 알림을 표시합니다.

    3. 해제 버튼 클릭 시:

        - "When Button.Disconnect.Click" 블록을 사용해 해제 버튼 클릭 시 연결을 해제하고 상태를 업데이트합니다.

     

    4. 시계 타이머 작동 시:  
       - "Clock.Timer" 블록을 사용해 주기적으로 블루투스 연결 상태를 확인하고, 연결이 끊어졌을 경우 이를 사용자에게 알립니다.

     


     

    5. LED ON/OFF 버튼 블록 코딩하기

    LED ON 버튼 클릭 시 '1' 값을 블루투스를 통해 아두이노로 전송하여 LED를 켜고 상태를 "ON"으로 업데이트하며, LED OFF 버튼 클릭 시 '0' 값을 전송하여 LED를 끄고 상태를 "OFF"로 업데이트합니다.

     

    1. LED ON 버튼 클릭 시:  

    • "When Button.LEDOn.Click" 블록을 사용해 버튼이 클릭되면 "BluetoothClient.SendText"를 통해 아두이노로 '1' 값을 전송합니다.
    • 이 값을 수신한 아두이노는 LED를 켜고, "Label.LEDStatus.Text"를 "ON"으로 업데이트합니다.

    2. LED OFF 버튼 클릭 시:  

       - "When Button.LEDOff.Click" 블록을 사용해 '0' 값을 전송해 LED를 끄고, "Label.LEDStatus.Text"를 "OFF"로 업데이트합니다.

     


     

    6. 앱 인벤터 빌드

    블록 코딩이 완료되면 "빌드" 메뉴에서 "APK 파일 빌드"를 선택하고, 제공된 QR 코드를 통해 APK 파일을 다운로드하여 스마트폰에 설치합니다.

     

    1. 앱 빌드하기:  
       블록 코딩이 완료되면, 화면 상단의 "빌드" 메뉴를 클릭해 "APK 파일 빌드"를 선택합니다. 이 파일을 스마트폰에 설치해 앱을 실행할 수 있습니다.

     

    2. APK 파일 다운로드 및 설치:  
       빌드가 완료되면 제공된 QR 코드를 사용해 APK 파일을 다운로드하고 설치합니다.


     

    7. 아두이노 설정 및 코드 업로드

    아두이노 IDE를 설치한 후, 블루투스 모듈을 통해 LED를 제어하는 코드를 작성하여 업로드하며, 업로드 시 충돌을 방지하기 위해 HC-06 모듈의 RX, TX 핀을 분리하고, 업로드 후 다시 연결하여 보드를 재부팅합니다.

     

     

    1. 아두이노 IDE 설치 및 실행:

       아두이노 IDE를 [공식 웹사이트](https://www.arduino.cc/en/software)에서 다운로드해 설치합니다.

     

    2. 블루투스 코드 작성 및 업로드:     

    • 아두이노 IDE에서 새 스케치를 열고, 아래 코드를 작성합니다. 코드는 HC-06 블루투스 모듈을 통해 LED를 제어하는 내용을 포함합니다.
    • 업로드하기 전에 HC-06 모듈의 RX, TX 핀을 분리해야 합니다. 이 핀들은 아두이노와 컴퓨터 간의 직렬 통신에 사용되기 때문에 업로드 과정에서 연결되어 있으면 충돌이 발생할 수 있습니다.
    • 업로드가 완료되면 핀을 다시 연결하고 보드를 재부팅합니다.

    ArduinobluetoothTest.ino
    0.00MB

    #include <SoftwareSerial.h>
    
    // 소프트웨어 시리얼 핀 정의
    SoftwareSerial bluetooth(2, 3); // RX, TX
    
    // LED 핀 정의
    const int LED_PIN = 13;
    
    void setup() {
      Serial.begin(9600);  // 하드웨어 시리얼 통신 초기화 (속도: 9600bps)
      bluetooth.begin(9600);  // 소프트웨어 시리얼 통신 초기화 (속도: 9600bps)
      pinMode(LED_PIN, OUTPUT);  // LED 핀을 출력 모드로 설정
      digitalWrite(LED_PIN, LOW);  // 초기 상태에서 LED를 끔
    }
    
    void loop() {
      if (bluetooth.available()) {  // 블루투스 모듈로부터 데이터가 있는지 확인
        char receivedChar = bluetooth.read();  // 수신된 데이터를 읽음
        Serial.print("수신: ");  // 디버깅을 위해 수신된 문자를 시리얼 모니터에 출력
        Serial.println(receivedChar);
        
        if (receivedChar == '1') {  // 수신된 문자가 '1'이면
          digitalWrite(LED_PIN, HIGH);  // LED 켬
          Serial.println("LED ON");
        } else if (receivedChar == '0') {  // 수신된 문자가 '0'이면
          digitalWrite(LED_PIN, LOW);  // LED 끔
          Serial.println("LED OFF");
        }
      }
    }

     

     

     


     

     

     8. 동작 확인

    스마트폰에서 앱을 실행해 HC-06 모듈과 블루투스 연결을 시도한 후, "LED ON"과 "LED OFF" 버튼으로 LED 제어를 확인하고, 문제가 발생할 경우 아두이노 코드, 앱인벤터 블록, 블루투스 모듈의 연결 상태를 점검합니다.

     

    1. 스마트폰 앱 실행 및 블루투스 연결:  

    • 스마트폰에서 앱을 실행하고 "연결" 버튼을 눌러 HC-06 모듈과 블루투스 연결을 시도합니다.

     

    • 연결이 성공하면 "LED ON" 버튼을 눌러 LED가 켜지는지 확인하고, "LED OFF" 버튼으로 끄는 것을 확인합니다.

     

     

    2. 문제 해결:  
       - 연결이 되지 않거나 LED가 제어되지 않는 경우, 아두이노 코드와 앱인벤터 블록을 다시 확인합니다. 블루투스 모듈의 전원이 켜져 있는지, HC-06 모듈이 올바르게 연결되었는지 점검합니다.


     

    9. 마무리 

     

    이제 앱인벤터로 만든 [BluetoothTest] 앱을 통해 스마트폰으로 아두이노 LED를 블루투스로 제어할 수 있습니다. 각 단계를 차근차근 따라가며 성공적인 프로젝트를 완성해보세요!

     

     

     

    반응형


    댓글