라즈베리 파이 블루투스
이 튜토리얼은 Raspberry Pi를 사용하여 Bluetooth HC-05 모듈을 제어하는 방법을 안내합니다. 자세히 배울 내용은 다음과 같습니다:
- Raspberry Pi에서 Bluetooth를 활용하는 과정
- Bluetooth를 통해 Raspberry Pi에서 스마트폰 애플리케이션으로 데이터 전송
- Bluetooth를 통해 스마트폰 앱에서 Raspberry Pi로 데이터 수신
- Bluetooth로 스마트폰 앱에서 Raspberry Pi를 제어하기
이 튜토리얼의 목적:
- Raspberry Pi가 스마트폰 앱과 데이터를 교환하는 방법을 보여주기 위하여
- HC-05 블루투스 모듈의 사용을 시연하기 위해서
- Android에서 Bluetooth Serial Monitor 앱을 사용하는 방법을 설명하기 위하여
- 스마트폰 앱으로 LED와 서보 모터를 제어하는 방법을 설명하기 위해서
이 튜토리얼은 클래식 블루투스(Bluetooth 2.0) 사용에 관한 것입니다. 블루투스 저에너지 - BLE(Bluetooth 4.0)를 찾고 계신다면, 이와 유사한 튜토리얼을 참조하세요: 라즈베리 파이 - 블루투스 저에너지
Hardware Preparation
1 | × | Raspberry Pi 4 Model B | Amazon | |
1 | × | HC-05 Bluetooth Module | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (추천) Screw Terminal Block Shield for Raspberry Pi | 쿠팡 | Amazon | |
1 | × | (추천) USB-C Power Cable with On/Off Switch for Raspberry Pi 4B | Amazon | |
1 | × | (추천) Plastic Case and Cooling Fan for Raspberry Pi 4B | Amazon | |
1 | × | (추천) HDMI Touch Screen Monitor for Raspberry Pi | Amazon |
HC-05 블루투스 모듈에 대하여
HC-05는 직렬 블루투스 모듈로, 직렬을 블루투스로 변환하는 기능을 합니다. 이 모듈은 다음과 같은 기능을 가지고 있습니다:
- 시리얼 RX 핀에서 데이터를 수신하고 블루투스를 통해 페어링된 장치(예: 스마트폰)로 전송합니다.
- 블루투스(페어링된 장치에서)로부터 데이터를 수신하고 이를 시리얼 TX 핀으로 보냅니다.
특히, Raspberry Pi가 스마트폰 앱(Android/iOS)과 통신하기 위해:
- 라즈베리 파이는 시리얼 핀을 통해 HC-05 블루투스 모듈에 연결됩니다.
- HC-05 블루투스 모듈은 스마트폰 앱과 페어링됩니다.
- 라즈베리 파이는 데이터를 시리얼로 전송함으로써 스마트폰 앱에 데이터를 보냅니다.
- 라즈베리 파이는 시리얼에서 데이터를 읽음으로써 스마트폰 앱으로부터 데이터를 받습니다.
- 라즈베리 파이에서는 특별한 블루투스 코드가 필요하지 않습니다.
블루투스 HC-05 모듈 핀 배열
HC-05 블루투스 모듈에는 6개의 핀이 있습니다:
- Enable/Key 핀: 이 핀은 데이터 모드(LOW로 설정)와 명령 모드(HIGH로 설정) 사이를 전환하는 데 사용됩니다. 연결이 안 되어 있으면 기본적으로 데이터 모드입니다.
- VCC 핀: 전원 핀으로, 공급 전압의 +5V에 연결해야 합니다.
- GND 핀: 전원 핀으로, 전원 공급 장치의 GND에 연결해야 합니다.
- TX 핀: 직렬 데이터 핀으로, Raspberry Pi의 RX 핀에 연결해야 합니다. Bluetooth를 통해 수신된 데이터는 이 핀으로 직렬 데이터로 전송됩니다.
- RX 핀: 직렬 데이터 핀으로, Raspberry Pi의 TX 핀에 연결해야 합니다. 이 핀에서 수신된 데이터는 Bluetooth로 전송됩니다.
- State: 상태 핀은 보드에 있는 LED에 연결되어 있으며 Bluetooth가 제대로 작동하는지 여부를 확인하는 피드백으로 사용할 수 있습니다.
그럼에도 불구하고, 기본적인 운영을 위해서는 HC-05 블루투스 모듈의 4개 핀만 라즈베리 파이에 연결하면 됩니다.
HC-05 블루투스 모듈에는 두 가지 내장 요소가 포함되어 있습니다:
- LED: 모듈의 상태를 나타냅니다.
- 2초에 한 번 깜박임: 모듈이 명령 모드에 진입했음을 나타냅니다.
- 반복 깜박임: 데이터 모드에서 연결을 기다리고 있음을 의미합니다.
- 초당 두 번 깜박임: 데이터 모드에서 성공적인 연결을 나타냅니다.
- 버튼: 키/활성화 핀을 제어하여 작동 모드(데이터 또는 명령 모드)를 선택하는 데 사용됩니다.
작동 방식
HC-05 블루투스 모듈은 두 가지 작동 모드를 가지고 있습니다:
- 페어링된 장치와 데이터를 교환하는 데 사용되는 데이터 모드
- 매개 변수를 구성하는 데 사용되는 명령 모드
다행히도 HC-05 블루투스 모듈은 기본 설정을 사용하여 라즈베리 파이와 별도의 구성 없이 작동할 수 있습니다.
HC-05 기본 설정
Default Bluetooth Name | “HC-05” |
---|---|
Default Password | 1234 or 0000 |
Default Communication | Slave |
Default Mode | Data Mode |
Default Data Mode Baud Rate | 9600, 8, N, 1 |
Default Command Mode Baud Rate | 38400, 8, N, 1 |
Bluetooth 시리얼 모니터 앱 소개
블루투스 시리얼 모니터 앱은 라즈베리 파이 코드에서 블루투스 모듈에 대한 추가 코드 없이 블루투스 통해 라즈베리 파이와 통신할 수 있게 합니다. 사용하기 위해서는 다음 단계를 따라야 합니다:
- 라즈베리 파이를 HC-05 블루투스 모듈에 연결
- 스마트폰에 Bluetooth Serial Monitor App 설치
- 앱을 열고 HC-05 블루투스 모듈과 페어링
이제 라즈베리 파이에서 데이터를 송수신할 수 있습니다.
Wiring Diagram
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
배선 구성을 간단하고 체계적으로 만들기 위해, Raspberry Pi용 스크루 터미널 블록 실드 사용을 권장합니다. 이 실드는 아래와 같이 더욱 안정적이고 관리하기 쉬운 연결을 제공합니다:
배선 연결표. 배선 차트. 배선 링크 차트.
Raspberry Pi Pins | HC-05 Bluetooth Pins |
---|---|
RX (GPIO15) | TX |
TX (GPIO14) | RX |
5V | VCC |
GND | GND |
Enable/Key (NOT connected) | |
State (NOT connected) |
라즈베리 파이가 스마트폰의 블루투스 앱으로 데이터를 전송합니다.
스마트폰의 Bluetooth 앱으로 Raspberry Pi에서 데이터를 전송하려면 다음의 Raspberry Pi 코드를 사용해야 합니다:
이 예제에서는 Raspberry Pi가 스마트폰의 Bluetooth 앱에 매초마다 “Raspberry Pi here, command me!”를 보낼 것입니다.
Detailed Instructions
- 라즈비안 또는 다른 Raspberry Pi 호환 운영 체제가 Pi에 설치되어 있는지 확인하세요.
- Raspberry Pi가 PC와 동일한 로컬 네트워크에 연결되어 있는지 확인하세요.
- 라이브러리를 설치해야 하는 경우 Raspberry Pi가 인터넷에 연결되어 있는지 확인하세요.
- Raspberry Pi를 처음 사용하는 경우, Raspberry Pi 설정 방법을 참조하세요.
- Linux 및 macOS의 기본 SSH 클라이언트 또는 Windows의 PuTTY를 사용하여 SSH를 통해 PC를 Raspberry Pi에 연결하세요. PC를 Raspberry Pi에 SSH로 연결하는 방법을 참조하세요.
- RPi.GPIO 라이브러리가 설치되어 있는지 확인하세요. 그렇지 않은 경우 다음 명령어를 사용하여 설치하세요:
- Raspberry Pi에서 직렬 인터페이스를 활성화하려면 Raspberry Pi - 직렬 인터페이스 활성화 방법의 지침을 따르세요.
- 블루투스 모듈과의 통신을 위해 pyserial 라이브러리를 설치하세요:
- Python 스크립트 파일 bluetooth_send.py.py을 생성하고 다음 코드를 추가하세요:
- 파일을 저장하고 터미널에서 다음 명령을 실행하여 Python 스크립트를 실행하십시오:
스크립트는 터미널에서 Ctrl + C를 누를 때까지 무한 루프로 계속 실행됩니다.
- 스마트폰에 Bluetooth Serial Monitor App을 설치합니다.
- 배선도에 따라 HC-05 Bluetooth 모듈을 Raspberry Pi에 연결합니다.
- 스마트폰에서 Bluetooth Serial Monitor App을 열고 클래식 블루투스 모드를 선택합니다.
- HC-05 블루투스 모듈에 연결하세요.
- 안드로이드 앱에서 결과를 확인하세요.
- 터미널에서 결과를 확인하세요.
블루투스 앱이 데이터 Raspberry Pi로 전송
다음 코드:
- Bluetooth 앱이 데이터를 Raspberry Pi로 전송할 수 있도록 허용합니다.
- Raspberry Pi가 데이터를 읽고 Bluetooth 앱에 응답을 보낼 수 있도록 합니다.
Detailed Instructions
- bluetooth_send_receive.py라는 Python 스크립트 파일을 만들고 다음 코드를 추가하세요.
- 파일을 저장하고 터미널에서 다음 명령어를 실행하여 Python 스크립트를 실행하세요:
- 안드로이드 앱을 이전과 같이 HC-05 블루투스 모듈에 연결하세요.
- 연결되면 안드로이드 앱에서 "LED ON" 또는 "LED OFF"를 입력하고 "SEND" 버튼을 누르세요.
- 라즈베리 파이는 데이터를 수신하고 응답을 시리얼 포트에 출력합니다.
- 이 응답은 블루투스 앱으로 전송됩니다.
- 결과는 안드로이드 앱에서 확인할 수 있습니다.
- 터미널에서 출력을 확인하세요.
당신은 Android 앱에 표시된 정보가 동일하다는 것을 관찰할 것입니다.
라즈베리 파이 코드 - 스마트폰 앱으로 블루투스를 통해 LED 제어
Raspberry Pi controls LED via Bluetooth 튜토리얼을 참조하세요.
라즈베리 파이 코드 - 블루투스를 통한 스마트폰 앱으로 서보 모터 제어
Raspberry Pi를 통해 블루투스로 서보 모터 제어하기 튜토리얼을 참조하세요.