라즈베리 파이 블루투스

이 튜토리얼은 Raspberry Pi를 사용하여 Bluetooth HC-05 모듈을 제어하는 방법을 안내합니다. 자세히 배울 내용은 다음과 같습니다:

라즈베리 파이 블루투스

이 튜토리얼의 목적:

이 튜토리얼은 클래식 블루투스(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 Screw Terminal Block Shield

배선 연결표. 배선 차트. 배선 링크 차트.

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 라이브러리가 설치되어 있는지 확인하세요. 그렇지 않은 경우 다음 명령어를 사용하여 설치하세요:
sudo apt-get update sudo apt-get install python3-rpi.gpio
pip install pyserial
  • Python 스크립트 파일 bluetooth_send.py.py을 생성하고 다음 코드를 추가하세요:
# 이 Raspberry Pi 코드는 newbiely.kr 에서 개발되었습니다 # 이 Raspberry Pi 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. # 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: # https://newbiely.kr/tutorials/raspberry-pi/raspberry-pi-bluetooth import serial from time import sleep # Define serial port for communication bluetooth = serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) # Main program try: while True: bluetooth.write(b"Raspberry Pi here, command me!\n") sleep(1) except KeyboardInterrupt: pass finally: bluetooth.close()
  • 파일을 저장하고 터미널에서 다음 명령을 실행하여 Python 스크립트를 실행하십시오:
python3 bluetooth_send.py

스크립트는 터미널에서 Ctrl + C를 누를 때까지 무한 루프로 계속 실행됩니다.

  • 스마트폰에 Bluetooth Serial Monitor App을 설치합니다.
  • 배선도에 따라 HC-05 Bluetooth 모듈을 Raspberry Pi에 연결합니다.
  • 스마트폰에서 Bluetooth Serial Monitor App을 열고 클래식 블루투스 모드를 선택합니다.
블루투스 시리얼 모니터 앱
  • HC-05 블루투스 모듈에 연결하세요.
블루투스 시리얼 모니터 페어링
  • 안드로이드 앱에서 결과를 확인하세요.
블루투스 시리얼 모니터 앱
  • 터미널에서 결과를 확인하세요.
PuTTY - Raspberry Pi
Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me!

블루투스 앱이 데이터 Raspberry Pi로 전송

다음 코드:

  • Bluetooth 앱이 데이터를 Raspberry Pi로 전송할 수 있도록 허용합니다.
  • Raspberry Pi가 데이터를 읽고 Bluetooth 앱에 응답을 보낼 수 있도록 합니다.

Detailed Instructions

  • bluetooth_send_receive.py라는 Python 스크립트 파일을 만들고 다음 코드를 추가하세요.
# 이 Raspberry Pi 코드는 newbiely.kr 에서 개발되었습니다 # 이 Raspberry Pi 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. # 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: # https://newbiely.kr/tutorials/raspberry-pi/raspberry-pi-bluetooth import serial from time import sleep # Define serial port for Bluetooth communication bluetooth = serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) # Main program try: bluetooth.flushInput() # Clear any existing data in the input buffer while True: bluetooth.write(b"Raspberry Pi here, command me!\n") if bluetooth.inWaiting() > 0: command = bluetooth.readline().decode('utf-8').strip() # Read until newline character if command == "LED OFF": print("LED is turned OFF") # Report action to console # TODO: Control your LED here elif command == "LED ON": print("LED is turned ON") # Report action to console # TODO: Control your LED here # Add a delay to avoid excessive looping sleep(0.5) except KeyboardInterrupt: pass finally: bluetooth.close()
  • 파일을 저장하고 터미널에서 다음 명령어를 실행하여 Python 스크립트를 실행하세요:
python3 bluetooth_send_receive.py
  • 안드로이드 앱을 이전과 같이 HC-05 블루투스 모듈에 연결하세요.
  • 연결되면 안드로이드 앱에서 "LED ON" 또는 "LED OFF"를 입력하고 "SEND" 버튼을 누르세요.
블루투스 시리얼 모니터 앱
  • 라즈베리 파이는 데이터를 수신하고 응답을 시리얼 포트에 출력합니다.
  • 이 응답은 블루투스 앱으로 전송됩니다.
  • 결과는 안드로이드 앱에서 확인할 수 있습니다.
블루투스 시리얼 모니터 앱
  • 터미널에서 출력을 확인하세요.
PuTTY - Raspberry Pi
Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! LED ON LED is turned ON Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! LED OFF LED is turned OFF Raspberry Pi here, command me! Raspberry Pi here, command me!

당신은 Android 앱에 표시된 정보가 동일하다는 것을 관찰할 것입니다.

라즈베리 파이 코드 - 스마트폰 앱으로 블루투스를 통해 LED 제어

Raspberry Pi controls LED via Bluetooth 튜토리얼을 참조하세요.

라즈베리 파이 코드 - 블루투스를 통한 스마트폰 앱으로 서보 모터 제어

Raspberry Pi를 통해 블루투스로 서보 모터 제어하기 튜토리얼을 참조하세요.