이 튜토리얼에서는 Bluetooth 모듈 (HC-06)을 인터페이스하여 무선으로 PIC 프로젝트를 만드는 방법을 배웁니다 . 이전 튜토리얼에서 우리는 이미 PIC 마이크로 컨트롤러에서 USART 모듈을 사용하는 방법을 배웠고 PIC와 컴퓨터 간의 통신을 설정했습니다. 완전 초보자라면 여기에서 MPLAB 및 XC8 학습, LED 인터페이스, LCD, 타이머 사용, ADC, PWM 등 처음부터 시작한 모든 PIC 자습서를 확인하십시오.
여기에서는 널리 사용되는 Bluetooth 모듈 HC-06을 사용했습니다. 이 모듈을 사용하여 PIC MCU에서 무선으로 정보를 수신하고 모바일 애플리케이션 또는 컴퓨터로 전송할 수 있습니다. PIC와 HC-06 간의 통신은 PIC 마이크로 컨트롤러에있는 USART 모듈을 사용하여 설정됩니다. HC-05를 사용할 수도 있습니다. 다시 동일한 비동기 8 비트 모드에서 작동하지만 이번에는 Bluetooth 모듈에서 작동하도록 코드를 약간 수정합니다. 따라서 사전에 UART 튜토리얼을 배우는 것은이 프로젝트의 추가 이점입니다.
이 튜토리얼에서는 스마트 폰에서 on 또는 off 명령을 전송하여 LED를 토글합니다. 블루투스를 통해 데이터를 송수신 할 수있는 블루투스 터미널 이라는 Android 애플리케이션을 사용합니다. 앱에서 문자 '1'을 보내면 PIC 보드에서 표시등이 켜지고 표시등이 켜졌다는 확인 메시지가 전화로 다시 전송됩니다. 마찬가지로 전화에서 '0'을 전송하여 끌 수 있습니다. 이렇게하면 UART 튜토리얼과 비슷하지만 이제는 무선으로 PIC 보드의 LED 조명을 제어 할 수 있습니다. 전체 프로그램과 자세한 비디오 는이 튜토리얼의 끝에 제공됩니다.
설정을위한 기본 블록 다이어그램은 다음과 같습니다.
요구 사항:
하드웨어:
- PIC16F877A 성능 보드
- HC-05 또는 HC-06 블루투스 모듈
- 컴퓨터 (프로그래밍 용)
- 휴대폰
- PICkit 3 프로그래머
소프트웨어:
- MPLABX
- 블루투스 단말기 (모바일 애플리케이션)
블루투스 모듈 HC-06:
Bluetooth는 다음 두 가지 모드에서 작동 할 수 있습니다.
- 명령 모드
- 작동 모드
명령 모드 에서는 Bluetooth 신호의 이름, 암호, 작동 전송 속도 등과 같은 Bluetooth 속성을 구성 할 수 있습니다. 작동 모드 는 PIC 마이크로 컨트롤러간에 데이터를 보내고받을 수있는 것입니다. 그리고 블루투스 모듈. 따라서이 튜토리얼에서는 작동 모드 만 사용합니다. 명령 모드는 기본 설정으로 유지됩니다. 장치 이름은 HC-05 (HC-06 사용 중)이고 암호는 0000 또는 1234이며 가장 중요한 것은 모든 Bluetooth 모듈의 기본 전송 속도가 9600입니다.
모듈은 5V 전원에서 작동하고 신호 핀은 3.3V에서 작동하므로 모듈 자체에 3.3V 레귤레이터가 있습니다. 따라서 우리는 그것에 대해 걱정할 필요가 없습니다. 6 개의 핀 중 4 개만 작동 모드에서 사용됩니다. 핀 연결 테이블은 아래와 같습니다.
S. 아니 |
HC-05 / HC-06에있는 핀 |
MCU의 핀 이름 |
PIC의 핀 번호 |
1 |
Vcc |
Vdd |
31 번째 핀 |
2 |
Vcc |
Gnd |
32 ND 핀 |
삼 |
Tx |
RC6 / Tx / CK |
25 번째 핀 |
4 |
Rx |
RC7 / Rx / DT |
26 번째 핀 |
5 |
상태 |
체크 안함 |
체크 안함 |
6 |
EN (활성화) |
체크 안함 |
체크 안함 |
다른 마이크로 컨트롤러와 Bluetooth 모듈 HC-05에 대해 자세히 알아 보려면 다른 프로젝트를 확인하십시오.
- Arduino를 사용한 Bluetooth 제어 장난감 자동차
- 8051을 사용하는 Bluetooth 제어 홈 자동화 시스템
- Raspberry Pi를 사용한 음성 제어 조명
- Arduino 및 프로세싱을 사용하는 스마트 폰 제어 FM 라디오
- G-Sensor와 Arduino를 이용한 휴대폰 제어 로봇 자동차
블루투스 통신을위한 PIC 마이크로 컨트롤러 프로그래밍:
모든 모듈 (ADC, Timer, PWM)과 마찬가지로 Bluetooth 모듈도 초기화해야합니다. 초기화는 UART 초기화와 비슷하지만 Bluetooth가 PIC16F877A MCU에서 완벽하게 작동하려면 몇 가지 변경이 필요합니다. 구성 비트를 정의하고 Bluetooth 초기화 기능부터 시작하겠습니다.
블루투스 초기화:
시장에 나와있는 거의 모든 Bluetooth 모듈은 9600의 전송 속도로 작동합니다. 전송 속도를 작동하는 Bluetooth 모듈의 전송 속도와 동일하게 설정하는 것이 매우 중요합니다. 여기서는 20Mhz 클럭 주파수에서 작동하므로 SPBRG = 129를 전송 속도로 9600. 따라서 위의 초기화는 9600 전송 속도로 작동하는 Bluetooth 모듈에서만 작동합니다. 고속 전송 속도 비트 BRGH를 활성화하는 것도 필수입니다. 이것은 정확한 전송 속도를 설정하는 데 도움이됩니다.
// ****** USART를 사용하여 Bluetooth 초기화 ******** // void Initialize_Bluetooth () {// RX 및 TX의 핀 설정 // TRISC6 = 1; TRISC7 = 1; // 데이터 시트 (pg114)의 조회 테이블을 사용하여 전송 속도 설정 // BRGH = 1; // Bluetooth와 함께 항상 고속 전송 속도를 사용합니다. 그렇지 않으면 작동하지 않습니다. SPBRG = 129; // Asyc를 켭니다. 직렬 포트 // SYNC = 0; SPEN = 1; // 8 비트 수신 및 전송 설정 RX9 = 0; TX9 = 0; // 송수신 활성화 // TXEN = 1; CREN = 1; // 글로벌 및 ph를 활성화합니다. 인터럽트 // GIE = 1; PEIE = 1; // Tx에 대한 인터럽트를 활성화합니다. 및 Rx.// RCIE = 1; TXIE = 1; } // ___________ BT가 초기화 됨 _____________ //
다른 전송 속도로 작동하는 BT 모듈이있는 경우 아래 조회 표를 참조하여 SPBRG에 대한 값을 찾을 수 있습니다.
블루투스로 데이터로드:
함수가 초기화되면 프로그램에 블루투스에서 데이터를 보내고받는 세 가지 함수가 있습니다. UART와 달리 데이터를 전송하거나 수신하기 전에 고려해야 할 사항이 거의 없습니다. Bluetooth 모듈에는 내부에 전송 및 수신 버퍼가 있으며 전송 된 데이터는 Tx 버퍼에 저장됩니다. 이 데이터는 캐리지 리턴이 모듈로 전송되지 않는 한 브로드 캐스트 (방송 중 전송)되지 않습니다. 따라서 데이터를 전송하려면 BT의 Rx 버퍼를로드 한 다음 캐리지 리턴을 사용하여 브로드 캐스트해야합니다.
위의 작업은 다음 기능을 사용하여 쉽게 수행 할 수 있습니다. 아래 함수는 Rx 버퍼에 하나의 문자 만로드 해야 할 때 사용할 수 있습니다. TXREG 레지스터에 데이터를로드하고 while 루프를 사용하여 TXIF 및 TRMT 플래그를 확인하여 처리 될 때까지 기다립니다.
// Bluetooth Rx를로드하는 기능입니다. 1 개의 문자를 가진 버퍼.// void BT_load_char (char byte) {TXREG = byte; while (! TXIF); while (! TRMT); } // 함수 끝 //
아래 기능은 블루투스 모듈 의 Rx 버퍼 에 문자열 을 로드하는 데 사용됩니다. 문자열은 문자로 분할되고 각 문자는 BT_load_char () 함수로 전송됩니다.
// Bluetooth Rx를로드하는 기능. 문자열이있는 버퍼 // void BT_load_string (char * string) {while (* string) BT_load_char (* string ++); } // 함수 끝 /
블루투스를 통해 데이터 브로드 캐스트:
지금까지 정보를 HC-05 모듈의 Rx 버퍼로 전송했습니다. 이제이 함수를 사용하여 데이터를 무선으로 브로드 캐스트하도록 지시해야합니다.
// RX에서 데이터를 브로드 캐스트하는 기능. buffer // void broadcast_BT () {TXREG = 13; __delay_ms (500); } // 함수 끝 //
이 함수에서 값 13을 TXREG 레지스터로 보냅니다. 이 값 13은 캐리지에 해당하는 십진수 일뿐입니다 (ASCII 차트 참조). 그런 다음 브로드 캐스터가 시작하기 위해 약간의 지연이 생성됩니다.
블루투스에서 데이터 읽기:
UART와 유사하게 아래 기능은 Bluetooth에서 데이터를 읽는 데 사용됩니다.
// BT의 Rx.buffer에서 문자를 가져 오는 함수 // char BT_get_char (void) {if (OERR) // 오버런 오류 확인 {CREN = 0; CREN = 1; // CREN 재설정} if (RCIF == 1) // 사용자가 문자를 보낸 경우 문자 반환 (ASCII 값) {while (! RCIF); 반환 RCREG; } else // 사용자가 메시지를 보내지 않은 경우 return 0 return 0; } // 함수 끝 /
사용자가 데이터를 보낸 경우이 함수는 변수에 저장하고 처리 할 수있는 특정 데이터를 반환합니다. 사용자가 아무것도 보내지 않은 경우 함수는 0을 반환합니다.
주요 기능:
위에서 설명한 모든 기능 또는 주요 기능을 사용했습니다. 우리는 몇 가지 소개 메시지를 보낸 다음 사용자가 Perf 보드의 RB3 핀에 연결된 RED LED 조명을 토글하는 값을 보낼 때까지 기다립니다.
void main (void) {// 범위 변수 선언 // int get_value; // 변수 선언 끝 // // I / O 선언 // TRISB3 = 0; // I / O 선언 끝 // Initialize_Bluetooth (); // 블루투스가 작동 할 준비가되게합니다. // 전원을 켤 때 몇 가지 소개 메시지를 표시합니다.// BT_load_string ("Bluetooth Initialized and Ready"); broadcast_BT (); BT_load_string ("LED를 켜려면 1을 누르십시오"); broadcast_BT (); BT_load_string ("LED를 끄려면 0을 누르십시오"); broadcast_BT (); // 메시지 끝 // while (1) // 무한 롭 {get_value = BT_get_char (); // 문자를 읽습니다. BT를 통해 수신 // '0'을 수신하는 경우 // if (get_value == '0') {RB3 = 0; BT_load_string ("LED 꺼짐"); broadcast_BT (); } // '1'을받는 경우 // if (get_value == '1') {RB3 = 1; BT_load_string ("LED 켜짐"); broadcast_BT ();}}}
아래 코드 섹션에서 전체 프로그램 을 확인하십시오.
회로도 및 하드웨어 설정:
이 프로젝트의 회로 연결은 매우 간단 합니다. 아래 회로도에 표시된 것처럼 Bluetooth 모듈의 전원을 켜고 Tx를 PIC 의 26 번째 핀에 연결 하고 Rx를 PIC의 25 번째 핀에 연결하기 만하면 됩니다.
이제 하드웨어로 진행하겠습니다. 연결이 완료되면 다음과 같이 보일 것입니다.
Bluetooth 모바일 애플리케이션을 사용하여 LED 제어:
이제 Android 애플리케이션을 준비하겠습니다. App Store에서 Bluetooth Terminal 이라는 응용 프로그램을 다운로드 하거나이 링크를 사용하십시오. 애플리케이션이 다운로드되고 설치되면 처음부터 사용하고있는 PIC 성능 보드를 켭니다. Bluetooth 모듈의 작은 LED 표시등이 깜박이면 전원이 켜져 있고 연결을 설정할 전화를 적극적으로 찾고 있음을 나타냅니다.
이제 휴대폰의 Bluetooth 설정으로 이동하여 새 Bluetooth 장치를 검색하면 모듈에 따라 이름 HC-05 또는 HC-06을 볼 수 있습니다. HC-06을 사용하고 있으므로 전화기에 다음 디스플레이가 표시됩니다. 그런 다음 페어링을 시도하면 암호를 묻습니다. 비밀번호를 1234 (일부는 0000 일 수 있음)로 입력하고 아래와 같이 확인을 클릭합니다.
페어링이 성공하면 방금 설치 한 Bluetooth 터미널 응용 프로그램을 엽니 다. 설정 옵션으로 이동하여 아래와 같이 "장치 연결 – 보안" 을 선택 합니다. 그러면 페어링 된 모든 장치가 아래와 같이 나열되는 팝업 상자가 열립니다. HC-05 또는 HC-06 모듈을 선택합니다.
연결이 설정되면 지금까지 깜박이던 Bluetooth 모듈의 표시등이 일정하게 유지되어 모바일에 성공적으로 연결되었음을 나타냅니다. 그리고 아래와 같이 프로그램에서 소개 메시지를 받아야합니다.
이제 '1'을 눌러 LED 조명을 켜고 '0'을 눌러 조명을 끕니다. 완전한 작업은 비디오에 표시됩니다. 모바일 화면은 아래와 같이 표시됩니다.
그래서 우리는 Bluetooth 모듈을 PIC 마이크로 컨트롤러에 인터페이스하는 방법을 배웠습니다. 이제이를 통해 무선 프로젝트를 시도 할 수 있습니다. Bluetooth를 사용하는 많은 프로젝트가 있습니다. 시도해 보거나 자신의 아이디어를 생각해 내고 댓글 섹션에서 공유 할 수 있습니다. 또한 Bluetooth 터미널 앱 및 Arduino를 사용한 스마트 폰 제어 홈 자동화 및 Arduino를 사용한 스마트 폰 제어 디지털 코드 잠금과 같은 HC-05로 이전 프로젝트를 확인하십시오.
이 튜토리얼이 도움이 되었기를 바랍니다! 어딘가에 막혔다면 친절하게 댓글 섹션을 사용하십시오.