- Bluetooth 통신에 필요한 패키지 설치 :
- Bluetooth를 통해 장치를 Raspberry Pi와 페어링 :
- 회로도 :
- Android 앱 BlueTerm으로 LED 제어 :
- 프로그래밍 설명 :
Raspberry Pi는 인터넷을 통한 무선 통신의 원활한 기능으로 인해 IoT 프로젝트에 매우 인기가 있습니다. Raspberry Pi 3에는 Wi-Fi 및 Bluetooth가 내장되어 있으며 Bluetooth는 매우 인기있는 무선 통신 프로토콜입니다. 그래서 오늘은 블루투스를 사용하는 안드로이드 앱을 통해 라즈베리 파이 GPIO 핀 을 제어 할 것 입니다.
여기에서는 블루투스가 내장되지 않은 Raspberry 2 Pi Model B를 사용하고 있으므로 간단한 USB 블루투스 동글을 사용하고 있습니다. 그 외에도 GPIO 제어를 시연하기 위해 저항 (220R)과 LED 만 있으면됩니다. 여기에서는 무선 통신을 위해 RFCOMM Bluetooth 프로토콜을 사용합니다.
Python에서 Bluetooth 프로그래밍 은 소켓 프로그래밍 모델을 따르며 Bluetooth 장치 간의 통신은 RFCOMM 소켓을 통해 수행됩니다. RFCOMM (Radio Frequency Communication)은 에뮬레이트 된 RS-232 직렬 포트를 제공하고 직렬 포트 에뮬레이션이라고도하는 Bluetooth 프로토콜입니다. Bluetooth 직렬 포트 프로필은이 프로토콜을 기반으로합니다. RFCOMM은 광범위한 지원과 공개적으로 사용 가능한 API로 인해 Bluetooth 애플리케이션에서 매우 인기가 있습니다. L2CAP 프로토콜에 바인딩됩니다.
또한 이전 프로젝트 인 Raspberry Pi를 사용하는 음성 제어 LED에서 Bluetooth 모듈 HC-06을 사용했습니다. 또한 좋은 IoT 프로젝트와 함께 이전 Raspberry Pi 프로젝트를 확인하십시오.
Bluetooth 통신에 필요한 패키지 설치:
시작하기 전에 Raspberry Pi에서 Bluetooth 통신 을 설정하기 위한 일부 소프트웨어를 설치해야합니다. Raspberry Pi와 함께 준비된 Raspbian Jessie에 설치된 메모리 카드가 있어야합니다. Raspbian OS를 설치하고 Raspberry Pi를 시작하려면이 문서를 확인하십시오. 이제 먼저 아래 명령을 사용하여 Raspbian을 업데이트해야합니다.
sudo apt-get 업데이트 sudo apt-get 업그레이드
그런 다음 몇 가지 Bluetooth 관련 패키지를 설치해야합니다.
sudo apt-get 설치 블루투스 blueman bluez
그런 다음 Raspberry Pi를 재부팅합니다.
sudo 재부팅
BlueZ 는 오픈 소스 프로젝트이자 공식 Linux Bluetooth 프로토콜 스택입니다. 모든 핵심 Bluetooth 프로토콜을 지원하며 이제 공식 Linux 커널의 일부가됩니다.
Blueman 은 Bluetooth 장치를 관리하고 제어 할 수있는 데스크탑 인터페이스를 제공합니다.
마지막으로 Python 언어를 사용하여 RFCOMM을 통해 데이터를 보내고받을 수 있도록 Bluetooth 통신을위한 Python 라이브러리 가 필요 합니다.
sudo apt-get install python-bluetooth
Raspberry Pi 용 GPIO 지원 라이브러리도 설치합니다.
sudo apt-get install python-rpi.gpio
이제 Raspberry Pi에서 Bluetooth 통신에 필요한 패키지를 설치했습니다.
Bluetooth를 통해 장치를 Raspberry Pi와 페어링:
휴대폰과 같은 Bluetooth 장치를 Raspberry Pi와 페어링하는 것은 매우 쉽습니다. 여기에서 Android 스마트 폰을 Raspberry Pi와 페어링했습니다. 이전에 Pi에 BlueZ를 설치했는데, 이는 Bluetooth 장치를 관리하기 위해 "bluetoothctl" 이라는 명령 줄 유틸리티를 제공 합니다. 그러나 그 전에 USB Bluetooth 동글을 Raspberry Pi에 연결하고 아래 명령을 사용하여 감지 여부를 확인하십시오.
lsusb
이제 아래 명령으로 bluetoothctl 유틸리티를 엽니 다.
sudo bluetoothctl
'help' 를 입력하여 bluetoothctl 유틸리티 의 모든 명령을 확인할 수 있습니다. 지금은 주어진 순서대로 아래 명령을 입력해야합니다.
# 전원 켜기 # 에이전트 켜기 # 검색 가능 # # 페어링 가능 # 스캔 켜기
마지막 명령 "스캔 켜기" 후에 목록에 Bluetooth 장치 (휴대폰)가 표시됩니다. 모바일에서 Bluetooth가 켜져 있고 근처 장치에서 볼 수 있는지 확인하십시오. 그런 다음 장치의 MAC 주소를 복사하고 주어진 명령을 사용하여 페어링합니다.
쌍
그런 다음 터미널 콘솔에 암호 또는 핀을 입력하라는 메시지가 표시되고 거기에 암호를 입력하고 Enter 키를 누릅니다. 그런 다음 메시지가 표시 될 때 휴대폰에 동일한 암호를 입력하면 이제 Raspberry Pi와 성공적으로 페어링됩니다. 우리는 또한 마지막에 주어진 비디오 에서이 전체 과정을 설명했습니다.
앞서 말했듯이 데스크톱 인터페이스를 사용 하여 휴대폰을 페어링 할 수도 있습니다. Blueman을 설치하면 아래와 같이 Raspberry Pi 데스크탑의 오른쪽에 Bluetooth 아이콘이 표시되어 쉽게 페어링 할 수 있습니다.
회로도:
회로도는 매우 간단합니다. 220 Ohm의 저항으로 LED를 Raspberry Pi의 PIN 40 (GPIO 21)에 연결했습니다.
Android 앱 BlueTerm으로 LED 제어:
이제 휴대폰을 페어링 한 후 Bluetooth 직렬 어댑터를 사용하여 Raspberry Pi와 통신하기위한 Android 앱 을 설치해야합니다. 앞서 언급 했듯이 RFCOMM / SPP 프로토콜은 Bluetooth를 통한 직렬 통신을 에뮬레이트 하므로이 프로토콜을 지원하는 BlueTerm App 을 여기에 설치했습니다.
RFCOMM 소켓을 통한 통신을 지원하는 다른 Bluetooth 터미널 앱을 사용할 수도 있습니다.
이제 BlueTerm 앱을 다운로드하고 설치 한 후 터미널에서 아래 주어진 Python 프로그램 을 실행 하고 BlueTerm 앱에서 페어링 된 라즈베리 피 장치를 동시에 연결합니다.
성공적으로 연결되면 아래와 같이 앱의 오른쪽 상단에 connected: raspberrypi 가 표시됩니다.
이제 BlueTerm 앱에서 '1'또는 '0'을 입력하여 GPIO 핀을 각각 HIGH 및 LOW 로 설정하면이 핀에 연결된 LED를 켜고 끌 수 있습니다. 프로그램을 종료하려면 'q'를 누르십시오. Google 보이스 타이핑 키보드 를 사용하여 보이스로 GPIO를 제어 할 수 있습니다. 마지막에 주어진 비디오에서 전체 데모를 확인하십시오.
블루투스를 통해 Android 앱을 사용하여 GPIO 핀을 무선으로 제어 할 수있는 방법 입니다. 또한 Arduino에서 Bluetooth를 사용하는 방법도 확인하십시오.
프로그래밍 설명:
Android 앱으로 Raspberry Pi GPIO 를 제어 하기위한 Python 프로그램 은 매우 간단하고 자명합니다. Bluetooth RFCOMM 통신과 관련된 코드에 대해 조금만 배울 필요가 있습니다. 먼저 Python 언어로 Bluetooth를 제어 할 수있는 Bluetooth 소켓 라이브러리를 가져와야합니다. 이전 섹션에서 동일한 라이브러리를 설치했습니다.
블루투스 가져 오기
다음은 Bluetooth 통신을 담당하는 코드입니다.
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print ""에서 수락 된 연결, 주소 1 동안: 데이터 = client_socket.recv (1024)
여기서 우리는 그것들을 한 줄씩 이해할 수 있습니다.
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): 블루투스 RFCOMM 통신을위한 소켓 생성.
server_socket.bind (("", port): -서버가 ''호스트의 스크립트를 port에 바인딩합니다.
server_socket.listen (1) : 서버는 한 번에 하나의 연결을 허용하도록 수신합니다.
client_socket, address = server_socket.accept () : 서버는 클라이언트의 연결 요청을 수락하고 mac 주소를 변수 주소에 할당합니다 . client_socket 은 클라이언트의 소켓입니다.
data = client_socket.recv (1024): 클라이언트 소켓 client_socket을 통해 데이터를 수신 하고 변수 data에 할당합니다. 한 번에 최대 1024 자까지 수신 할 수 있습니다.
마지막으로 모든 프로그래밍이 끝나면 아래 코드를 사용하여 클라이언트와 서버 연결을 닫습니다.
client_socket.close () server_socket.close ()
다른 모든 코드는 쉽고 자명합니다. 아래의 전체 코드를 확인하십시오. 이 프로젝트를 수정하면 릴레이를 사용하여 가전 제품을 제어하거나 안드로이드 폰을 통해 로봇 자동차를 제어 할 수있는 등 무선으로 다른 많은 것을 제어하는 데 사용할 수 있습니다.