산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노와 안드로이드 블루투스 연동: 무선 프로젝트 제작 가이드

부품 및 소모품

부품 수량
아두이노 우노 (Arduino UNO) 1
HC-06 블루투스 모듈 1
LED (범용) 1

앱 및 온라인 서비스

프로젝트 개요

블루투스(BT)는 오늘날 가장 널리 사용되는 근거리 무선 통신 기술입니다. 스마트폰, 스피커, 카메라 등 다양한 기기가 '파란 불빛'으로 연결되는 모습을 일상에서 흔히 볼 수 있습니다.

IoT 및 자동화 분야에서는 블루투스 기술을 활용한 모바일 원격 제어가 매우 일반적입니다. 이는 두 가지 핵심 요소 덕분입니다:

본 튜토리얼에서는 모바일 기기를 통해 아두이노의 출력을 제어하여 로봇을 움직이거나 가정의 조명을 켜는 등 다양한 응용 아이디어를 다룹니다.

1단계: 블루투스 모듈과 아두이노 연결

시중에는 '마스터-슬레이브' 방식의 BT 3.0 모듈(HC-05)과 '슬레이브' 전용 모듈(HC-06)이 흔합니다. 최근에는 BT 4.0/BLE(Bluetooth Low Energy) 방식인 HC-08, HC-10도 등장했습니다. BLE 모듈만 아이폰과 연결 가능하며, 애플은 BT 3.0을 지원하지 않습니다.

본 프로젝트에서는 대중적이고 저렴한 HC-06을 사용합니다. HC-06은 5V로 구동되어 아두이노 우노와 직접 연결하기 쉽습니다. Tx/Rx 핀도 전압 분배기 없이 우노에 직결 가능합니다(ESP8266과 달리).

일반적으로 HC-06은 아두이노의 0번(Rx), 1번(Tx) 핀('시리얼 0')에 연결하지만, 프로그램 업로드 시 USB 포트와 충돌하므로 모듈을 분리해야 하는 번거로움이 있습니다. 이를 피하려면 SoftwareSerial 라이브러리를 이용해 10번(Rx), 11번(Tx) 핀으로 소프트웨어 시리얼 포트를 구성하면 편리합니다.

2단계: HC-06 테스트 및 설정

HC-06을 테스트하고 AT 명령어로 설정하는 간단한 코드입니다.

#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11); // RX, TX
String command = "";

void setup() {
  Serial.begin(9600);
  Serial.println("AT 명령어 입력");
  BT.begin(9600); // HC-06 기본 보드레이트
}

void loop() {
  if (BT.available()) {
    while (BT.available()) {
      delay(10);
      char c = BT.read();
      command += c;
    }
    Serial.println(command);
    command = "";
  }
  if (Serial.available()) {
    delay(10);
    BT.write(Serial.read());
  }
}

업로드 후 시리얼 모니터로 기본 테스트를 진행합니다:

3단계: 안드로이드 기기 연동

구글 플레이 스토어에는 다양한 블루투스 제어 앱이 있습니다. 본 튜토리얼에서는 필자가 MIT 앱 인벤터 2로 제작한 'MJRoBot BT Digital Analog Voice Control' 앱을 사용합니다. 이 앱은 버튼/음성으로 디지털 명령과 아날로그 명령(PWM 제어용 0~255 값)을 전송합니다.

  1. 앱 다운로드 및 설치
  2. 안드로이드 설정 → 블루투스에서 HC-06 검색 및 페어링 (PIN: 1234 또는 변경한 값)
  3. 앱 실행 → 모듈 선택 → CONNECTED 표시 확인
  4. 앱 버튼 테스트: 시리얼 모니터에 dev1on dev1off dev2on dev2off... 등 수신 데이터 확인

4단계: 아두이노 출력 제어 (LED 제어)

앱의 버튼과 슬라이더로 LED 4개의 ON/OFF 및 밝기(PWM)를 제어하는 회로입니다.

연결 구성

장치 명령 LED 색상 아두이노 핀 비고
Device 1 dev1on / dev1off 빨강 3 (PWM) PWM 핀(~ 표시) 사용
Device 2 dev2on / dev2off 노랑 5 (PWM)
Device 3 dev3on / dev3off 초록 6 (PWM)
Device 4 dev4on / dev4off 파랑 9 (PWM)

슬라이더 제어 시 문자 접두사 + PWM 값(0~255) 형식으로 전송:

5단계: 음성 명령으로 IoT 기기 제어

안드로이드의 음성 인식 기능을 활용해 "TV 켜기" 같은 음성 명령을 텍스트로 변환해 아두이노로 전송합니다. 아두이노 코드에서 수신 문자열을 파싱하여 해당 동작(예: 녹색 LED 점등 = TV 릴레이 제어)을 수행합니다. 구글 음성 인식 결과와 코드 내 문자열이 정확히 일치해야 하므로, 자국어(한국어 등)로 짧고 명확한 명령어를 등록하는 것이 좋습니다.

MIT 앱 인벤터 2용 .aia 소스 파일을 제공하므로 직접 수정·확장 가능합니다.

6단계: 결론

블루투스, 안드로이드, 아두이노의 조합으로 '사물'을 제어하는 무한한 가능성을 확인할 수 있었습니다. 이 튜토리얼이 전자공학, 로봇공학, IoT 입문자에게 도움이 되길 바랍니다. 더 많은 프로젝트는 MJRoBot.org에서 확인하세요.

남반구에서 인사드립니다! 다음 튜토리얼에서 뵙겠습니다. 감사합니다. — 마르셀로

소스 코드

코드 1: HC-06 테스트용 기본 스케치

#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11);
String command = "";

void setup() {
  Serial.begin(9600);
  Serial.println("Type AT commands");
  BT.begin(9600);
}

void loop() {
  if (BT.available()) {
    while (BT.available()) {
      delay(10);
      char c = BT.read();
      command += c;
    }
    Serial.println(command);
    command = "";
  }
  if (Serial.available()) {
    delay(10);
    BT.write(Serial.read());
  }
}

코드 2: LED 제어 메인 스케치 (파일명: FA44NBUIL8LGGAY.ino)

전체 코드는 원문 첨부 파일을 참조하세요. 버튼 명령(dev1on 등)과 슬라이더 명령(r/128 등)을 파싱하여 해당 핀에 digitalWrite/analogWrite로 제어하는 구조입니다.

코드 3: 앱에서 전송되는 샘플 데이터

dev1on dev1off dev2on dev2off dev3on dev3off dev4on dev4off

제조공정

  1. 블루투스 제어 라즈베리 파이 로봇 만들기 - 오디오 피드백 포함
  2. 아두이노 우노로 Atmel AT89 시리즈 손쉽게 프로그래밍하기 - 단계별 가이드
  3. 아두이노, 1Sheeld, IR 제어로 만능 안드로이드 리모컨 만들기
  4. 라즈베리파이 모터 쉴드로 만드는 안드로이드 제어 원격 주행 로봇
  5. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  6. 구글 어시스턴트와 블루투스로 음성 제어하는 홈 IoT: 아두이노 우노와 4채널 릴레이
  7. 아두이노 우노 & WiFi 실드로 웹에서 실시간 온도 모니터링 - 시리얼 통신 활용
  8. 인텔 퀴리(Arduino 101) 기반 모션 감지 조명 시스템
  9. 와이파이/이더넷으로 iOS·안드로이드 앱에서 아두이노 LED 제어하기
  10. 아두이노 우노, 릴레이, 안드로이드 앱으로 전구 원격 제어하기