아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
부품 및 소모품
| 아두이노 우노 |
1개 |
| HC-05 블루투스 모듈 |
1개 |
| 1kΩ 저항 |
1개 |
| 수-수 점퍼 와이어 |
8개 |
| 5mm 적색 LED |
1개 |
앱 및 온라인 서비스
프로젝트 개요
블루투스 연결 원리
로봇 키트에 포함된 HC-05 모듈을 활용해 스마트폰 앱으로 LED를 제어합니다. MIT App Inventor는 블록 기반 비주얼 프로그래밍으로 코딩 지식 없이도 앱 제작이 가능합니다.
동작 흐름
- 스마트폰 앱에서 버튼 터치
- 블루투스로 '1'(ON) 또는 '0'(OFF) 문자 전송
- 아두이노 HC-05가 수신 → 시리얼 통신으로 아두이노 전달
- 아두이노가 문자 수신 시 LED ON/OFF
회로도 및 배선
HC-05 → 아두이노
| HC-05 RX |
→ 아두이노 TX (핀 1) *분압 회로 권장 |
| HC-05 TX |
→ 아두이노 RX (핀 0) |
| HC-05 GND |
→ 아두이노 GND |
| HC-05 VCC |
→ 아두이노 5V (브레이크아웃 보드 내장 레귤레이터 있음) |
분압 회로(권장): HC-05 RX 핀은 3.3V 로직이므로 아두이노 5V TX 신호를 1kΩ+2kΩ 저항 분압으로 3.3V 레벨로 낮춰 연결. 브레이크아웃 보드 사용 시 생략 가능하지만 안전 위해 권장.
LED 연결
- LED 애노드(긴 다리) → 220Ω 저항 → 아두이노 핀 5
- LED 캐소드(짧은 다리) → GND
중요: 코드 업로드 시 TX/RX 핀(0, 1번)에 아무것도 연결하지 마세요. 업로드 완료 후 연결.
MIT App Inventor 앱 제작
디자이너 화면 구성요소
- ListPicker (이름: Bluetooth) - 주변 블루투스 기기 목록 표시/선택
- Button 2개 (ON / OFF)
- BluetoothClient (비가시 컴포넌트) - 블루투스 통신 처리
블록 코딩 로직
- ListPicker.BeforePicking: `BluetoothClient.AddressesAndNames`를 Elements로 설정 → 기기 목록 표시
- ListPicker.AfterPicking: `BluetoothClient.Connect(Selection)` → 선택한 기기 연결
- Button_ON.Click: `BluetoothClient.SendText("1")`
- Button_OFF.Click: `BluetoothClient.SendText("0")`
앱 설치 방법
- 스마트폰에 MIT AI2 Companion 앱 설치
- App Inventor 메뉴 → Connect → AI Companion
- QR 코드 스캔 또는 코드 입력으로 임시 설치
- 앱 실행 → ListPicker 터치 → HC-05 선택 (비번: 1234 또는 0000) → ON/OFF 버튼 테스트
아두이노 코드
/* HC-05 블루투스로 LED 제어 - by MukeshArvindh */
const int LED = 5; // LED 핀
char switchState; // 수신 문자 저장용 (char 필수! int 아님)
void setup() {
Serial.begin(9600); // HC-05 기본 보드레이트 9600
pinMode(LED, OUTPUT);
}
void loop() {
while (Serial.available() > 0) {
switchState = Serial.read(); // 문자 읽기 ('1' 또는 '0')
Serial.print(switchState); // 시리얼 모니터 확인용
Serial.println();
delay(15);
if (switchState == '1') {
digitalWrite(LED, HIGH); // LED ON
} else if (switchState == '0') {
digitalWrite(LED, LOW); // LED OFF
}
}
}
회로도
첨부 이미지 2장 참조 (기본 연결도 + 분압 회로도)
확장 아이디어
이 원리를 응용하면 블루투스 로봇, 스마트홈 제어, 무선 센서 네트워크 등 다양한 프로젝트로 확장 가능합니다. 핵심은 "앱에서 문자 전송 → 아두이노에서 문자 수신 후 액션" 패턴입니다.