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

아두이노 블루투스 마스터하기: HC-05 모듈로 스마트폰 & PC 제어 튜토리얼

이 아두이노 블루투스 튜토리얼에서는 HC-05 모듈로 블루투스 통신을 이용해 아두이노를 제어하는 방법을 배웁니다. 아래 비디오를 시청하거나 작성된 튜토리얼을 읽어보세요.

개요

이 튜토리얼은 두 가지 예제로 구성됩니다: 스마트폰으로 아두이노 제어, 노트북/PC로 아두이노 제어. HC-05 블루투스 모듈 설정과 두 아두이노 보드 간 마스터/슬레이브 통신은 다음 튜토리얼에서 다룹니다.

아두이노 블루투스 마스터하기: HC-05 모듈로 스마트폰 & PC 제어 튜토리얼

첫 번째 예제인 스마트폰 제어에 앞서 HC-05 블루투스 모듈을 자세히 살펴보겠습니다. HC-06은 슬레이브만 가능하지만 HC-05는 마스터 설정도 가능해 두 아두이노 보드 간 통신 가능. 여러 버전이 있지만 브레이크아웃 보드형이 연결이 쉬워 추천. HC-05는 블루투스 SPP(시리얼 포트 프로토콜) 모듈로 아두이노와 시리얼 통신으로 통신.

필요한 부품은 아래 사이트에서 구할 수 있습니다:

  • HC-05 블루투스 모듈 …………….
  • 아두이노 보드 ……………………………
  • 브레드보드와 점퍼 와이어 ………

회로도


모듈을 아두이노 보드에 연결하는 방법:

아두이노 블루투스 마스터하기: HC-05 모듈로 스마트폰 & PC 제어 튜토리얼

사용 모듈은 브레이크아웃 보드에 전압 레귤레이터가 있어 3.6~6V 전원 공급 가능. 하지만 데이터 핀 로직 레벨은 3.3V. 아두이노 TX(5V 출력)와 블루투스 모듈 RX(3.3V 입력) 사이는 전압 분배기로 연결해야 모듈 손상 방지. 블루투스 모듈 TX(3.3V)와 아두이노 RX는 직접 연결 가능(아두이노에서 하이 로직으로 인식).

아두이노 블루투스 통신 예제 소스 코드

아두이노 보드와 스마트폰 간 통신용 아두이노 코드 작성. 간단한 LED 온오프 예제로 통신 이해.

#define ledPin 7
int state = 0;
void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  Serial.begin(38400); // 블루투스 모듈 기본 통신 속도
}
void loop() {
  if (Serial.available() > 0) {
    state = Serial.read();
  }
  if (state == '0') {
    digitalWrite(ledPin, LOW);
    Serial.println("LED: OFF");
    state = 0;
  } else if (state == '1') {
    digitalWrite(ledPin, HIGH);
    Serial.println("LED: ON");
    state = 0;
  }
}코드 언어: Arduino (arduino)

설명: LED 연결 핀 정의, 스마트폰 데이터 저장용 변수 정의. setup에서 LED 핀 출력 설정 후 바로 로우. 시리얼 통신 38400 보드레이트 시작(블루투스 모듈 기본값). loop에서 Serial.available()로 시리얼 포트 읽을 데이터 확인, 있으면 Serial.read()로 읽어 "state" 변수 저장. 문자 '0' 수신 시 LED 끄고 "LED: OFF" 문자열 스마트폰으로 전송. "state" 변수 0으로 리셋해 위 코드 한 번만 실행되게. "state" 변수는 정수형이므로 스마트폰에서 오는 문자 '0'은 실제 정수값 48(ASCII '0')이 저장됨. 그래서 if문에서 문자 '0'과 비교. 문자 '1' 수신 시 LED 켜고 "LED: ON" 전송.

코드 업로드 준비됐지만 TX, RX 라인 분리 필요(업로드 시 아두이노가 시리얼 통신 사용하므로 RX(디지털 0), TX(디지털 1) 핀 바쁨). 아두이노의 다른 TX, RX 핀 사용하면 이 단계 생략 가능하지만 SoftwareSerial.h 라이브러리 필요.

관련: HC-05 블루투스 모듈 두 개 마스터/슬레이브 페어링 설정 | AT 명령어

스마트폰을 HC-05 블루투스 모듈과 아두이노에 연결

스마트폰 블루투스 활성화 → HC-05 모듈 검색.

아두이노 블루투스 마스터하기: HC-05 모듈로 스마트폰 & PC 제어 튜토리얼

기기 페어링, HC-05 기본 비밀번호 1234. 페어링 후 아두이노 제어용 앱 필요. 플레이 스토어에 많은 앱이 있지만, 이 튜토리얼에서는 MIT 앱 인벤터로 직접 만든 커스텀 앱 사용. MIT 앱 인벤터는 안드로이드 앱 제작에 훌륭하고 쉬운 도구이며, 다음 튜토리얼에서 직접 커스텀 앱 만드는 단계별 가이드 제공.

아두이노 블루투스 마스터하기: HC-05 모듈로 스마트폰 & PC 제어 튜토리얼

이 예제용 앱 다운로드:

아두이노 블루투스 마스터하기: HC-05 모듈로 스마트폰 & PC 제어 튜토리얼

Arduino Bluetooth Tutorial Example Android App

1 file(s) 1.38 MB Download

연결 버튼으로 스마트폰과 블루투스 모듈 연결, 버튼 아래 상태 텍스트로 연결 성공 여부 표시. "Turn ON", "Turn OFF" 버튼으로 LED 제어. 버튼 위 텍스트는 버튼 누를 때 아두이노가 스마트폰으로 다시 보내는 문자열.

노트북/PC로 블루투스 통신해 아두이노 제어

노트북/PC로 블루투스 제어하는 방법. 먼저 노트북 블루투스 설정에서 HC-05 모듈과 페어링. '1234' 비밀번호로 페어링.

아두이노 블루투스 마스터하기: HC-05 모듈로 스마트폰 & PC 제어 튜토리얼

페어링 후 노트북 장치 관리자 > 포트(COM & LPT)에서 "Standard Serial over Bluetooth link" 두 개 등장. 여기서 시리얼 포트 COM 포트 번호 확인.

아두이노 블루투스 마스터하기: HC-05 모듈로 스마트폰 & PC 제어 튜토리얼

이전과 같은 LED 온오프 예제, 같은 아두이노 코드 사용.

Processing IDE 소스 코드

Processing IDE로 아두이노 제어 프로그램 작성. 소스 코드:

import processing.serial.*;
Serial myPort;
String ledStatus = "LED: OFF";
void setup() {
  size(450, 500);
  myPort = new Serial(this, "COM5", 38400); // 시리얼 통신 시작
  myPort.bufferUntil('\n'); // 시리얼 포트 데이터 읽을 끝 문자: '\n' (New Line)
}
void serialEvent(Serial myPort) {
  // 시리얼 포트 읽을 데이터 있는지 확인
  ledStatus = myPort.readStringUntil('\n'); // 아두이노에서 보낸 문자열("LED: OFF/ON") 읽어 "ledStatus" 변수에 저장
}
void draw() {
  background(237, 240, 241);
  fill(20, 160, 133); // 녹색
  stroke(33);
  strokeWeight(1);
  rect(50, 100, 150, 50, 10); // Turn ON 버튼
  rect(250, 100, 150, 50, 10); // Turn OFF 버튼
  fill(255);
  textSize(32);
  text("Turn ON", 60, 135);
  text("Turn OFF", 255, 135);
  textSize(24);
  fill(33);
  text("Status:", 180, 200);
  textSize(30);
  textSize(16);
  text("Program made by Dejan Nedelkovski,\n www.HowToMechatronics.com", 80, 320);
  text(ledStatus, 155, 240); // 아두이노에서 온 문자열 출력
  // "Turn ON" 버튼 눌림
  if (mousePressed && mouseX > 50 && mouseX < 200 && mouseY > 100 && mouseY < 150) {
    myPort.write('1'); // 문자 '1' 전송 → LED 켜짐
    // 버튼 눌림 시 빨간색 하이라이트
    stroke(255, 0, 0);
    strokeWeight(2);
    noFill();
    rect(50, 100, 150, 50, 10);
  }
  // "Turn OFF" 버튼 눌림
  if (mousePressed && mouseX > 250 && mouseX < 400 && mouseY > 100 && mouseY < 150) {
    myPort.write('0'); // 문자 '0' 전송 → LED 끔
    stroke(255, 0, 0);
    strokeWeight(2);
    noFill();
    rect(250, 100, 150, 50, 10);
  }
}코드 언어: Arduino (arduino)

설명: Serial 라이브러리 포함, 시리얼 객체 생성으로 시리얼 통신 활성화, LED 상태용 문자열 변수 정의. setup에서 프로그램 윈도우 크기 설정, 시리얼 통신 시작. COM 포트 번호는 장치 관리자에서 확인한 두 개 중 하나 시도. 다음 줄은 시리얼 포트 버퍼링 정의, 우리 경우 새 줄(\n)까지. 아두이노가 println()으로 "LED: OFF" 또는 "LED: ON" 전송 시마다 새 줄 생성. serialEvent()로 시리얼 포트 읽을 데이터 확인, 있으면 readStringUntil()로 아두이노에서 보낸 데이터 읽기(우리 경우 "LED: OFF" 또는 "LED: ON").

메인 draw() 함수(계속 반복)에서 모든 그래픽과 기능 구현. 배경색, 채우기 색, 선 굵기/색 설정, rect()로 버튼 두 개 그리기. text()로 모든 텍스트 출력, 아두이노에서 온 ledStatus 문자열 포함. 버튼 기능 구현: 첫 번째 if문으로 "Turn ON" 버튼 영역 제한, 버튼 누르면 문자 '1' 시리얼 포트로 전송 → LED 켜짐. 다음 네 줄은 버튼 눌림 시 빨간색 하이라이트. "Turn OFF" 버튼도 동일.

아두이노 블루투스 마스터하기: HC-05 모듈로 스마트폰 & PC 제어 튜토리얼

프로그램 준비 완료. 실행 버튼 클릭하면 노트북과 아두이노 간 블루투스 통신 자동 활성화. HC-05 모듈 2초마다 깜빡임(연결 표시), 노트북으로 LED 제어 가능.

이 튜토리얼은 여기까지지만, 다음 튜토리얼에서 HC-05 블루투스 모듈 설정과 두 아두이노 보드 간 마스터/슬레이브 블루투스 통신 방법 다룰 예정.

궁금한 점은 댓글로 남겨주시고, 제 아두이노 프로젝트 모음도 확인해 보세요.


제조공정

  1. 아두이노 RFID 도어락 만들기 – 단계별 완벽 가이드
  2. JX 웨이브 제너레이터 – OLED 디스플레이를 탑재한 아두이노 호환 DDS 오실레이터
  3. u-blox LEA-6H GPS 모듈: 아두이노 & 파이썬 연동 가이드
  4. 아두이노, 윈도우 IoT, 애저 클라우드 기반 고급 낙상 감지 시스템
  5. 아두이노 우노와 블루투스로 RC카 원격 제어하기: 단계별 가이드
  6. 아두이노 나노 지문 센서 프로젝트 – 단계별 튜토리얼
  7. 아두라디오 알람 시계: 아두이노 기반 DIY FM 라디오 & 알람 시스템
  8. 아두이노 나노 기반 블루투스 스마트 커피 메이커 - 온도 모니터링 및 자동 추출
  9. 라즈베리 파이 3 & 아두이노 노트북 직접 만들기: 단계별 가이드
  10. Arduino Due 망원경 제어 키트: TFT, GPS, RTC, 센서, 블루투스, 조이스틱 풀세트