오늘날의 세계에서 Bluetooth는 매우 대중화되었으며 휴대폰, 노트북 및 자동차 인포테인먼트 시스템과 같은 거의 모든 장치는 무선 통신에 Bluetooth를 사용합니다. 블루투스는 데이터 전송뿐만 아니라 다른 블루투스 장치를 무선으로 제어하는데도 사용됩니다. 예를 들어 블루투스 헤드셋을 사용하면 휴대 전화에서 무선으로 노래를들을 수 있고 자동차 오디오 시스템을 사용하여 휴대 전화에서 노래를 재생할 수 있습니다.
Bluetooth는 2.4GHz 주파수에서 작동하는 무선 기술입니다. 정상적인 Bluetooth 신호는 반경 10 미터 범위 내에 있습니다. Bluetooth는 통신 범위가 제한된 경우 임베디드 프로젝트에서 가장 일반적으로 사용되는 무선 기술입니다. Bluetooth는 저전력 소비와 저비용 작동의 이점을 추가했습니다. 일반적으로 블루투스 애플리케이션을 사용하여 마이크로 컨트롤러와 스마트 폰을 연결하는 데 사용됩니다.
Bluetooth 모듈과 Arduino, 8051, PIC 등과 같은 다른 마이크로 컨트롤러와의 인터페이스를 살펴 보았습니다. 이제이 자습서 에서는 HC-05 Bluetooth 모듈을 STM32F103C8과 인터페이스하고 Android 모바일을 사용하여 LED를 켜고 끕니다.
필요한 재료
- STM32F103C8
- 블루투스 모듈 (HC-05)
- LED
- 안드로이드 모바일
- 브레드 보드
- 전선 연결
소프트웨어:
- 블루투스 터미널 (Android 애플리케이션)
블루투스 모듈 (HC-05)
임베디드 프로젝트에서 주로 사용되는 블루투스 모듈입니다. 범위가 100m 미만인 직렬 통신을 사용하고 5V (최소 3.3V)에서 작동하는 직렬 Bluetooth 모듈입니다. 두 개의 마이크로 컨트롤러를 무선으로 연결하고 휴대폰 및 노트북과도 연결할 수 있습니다. 많은 안드로이드 응용 프로그램을 사용할 수 있으므로 무선 Bluetooth 제어 프로젝트를 만드는 데 매우 유용합니다.
USART 통신을 사용하며 USART 통신 프로토콜이있는 마이크로 컨트롤러와 인터페이스 할 수 있습니다.
통합 안테나가 있습니다. 예를 들어 PC (MASTER)에서 슬레이브 (모든 MCU)로 데이터를 전송해야 할 때 (마스터에서 슬레이브로) 하나의 장치에서만 유용한 AT 명령 모드에서 변경할 수있는 마스터 / 슬레이브 구성이 있습니다. 마스터는 다른 장치에 연결할 수 있으며 슬레이브는 마스터가 아닌 다른 연결에 연결하지 않습니다.
작동 모드
그것은이 두 명령 모드 및 데이터 모드 AT 모드.
Bluetooth가 켜지면 데이터 모드 기본값으로 들어갑니다. 이 모드는 데이터 전송에 사용할 수 있습니다. 전원을 켤 때 AT 명령 모드 로 들어가려면 모듈에있는 버튼을 눌러 마스터 / 슬레이브 구성과 같은 모듈의 기본 설정을 변경해야합니다.
블루투스 모듈의 핀
- EN 핀 (ENABLE)-이 핀은 데이터 모드 또는 AT 명령 모드를 설정하는 데 사용됩니다. 기본적으로 데이터 모드입니다. 전원을 켤 때 버튼을 누르면 AT 명령 모드로 이동합니다.
- + 5V 핀-모듈에 전원을 공급하는 데 사용됩니다.
- GND 핀-모듈의 접지에 사용됩니다.
- TX 핀-MCU의 RX 핀에 연결되는 핀
- RX 핀-이 핀은 MCU의 TX 핀에 연결됩니다.
- STATE-이 핀은 모듈의 상태를 나타냅니다. 표시에 대해서는 아래를 참조하십시오.
LED 표시
- Bluetooth 모듈의 상태를 제공하는 LED (빨간색) 표시기가 있습니다.
- Bluetooth 모듈이 장치에 연결되어 있지 않으면 신호가 낮아지고 빨간색 LED가 계속 깜박이 면서 모듈 이 PAIRED가 아님 을 나타냅니다.
- Bluetooth 모듈이 장치에 연결되면 신호가 HIGH가되고 빨간색 LED가 깜박이며 모듈 이 PAIRED 임을 나타냅니다.
다른 마이크로 컨트롤러와 Bluetooth 모듈 HC-05에 대해 자세히 알아 보려면 다른 프로젝트를 확인하십시오.
- Arduino를 사용한 Bluetooth 제어 장난감 자동차
- 8051을 사용하는 Bluetooth 제어 홈 자동화 시스템
- Raspberry Pi를 사용한 음성 제어 조명
- Arduino 및 프로세싱을 사용하는 스마트 폰 제어 FM 라디오
- G-Sensor와 Arduino를 이용한 휴대폰 제어 로봇 자동차
- Bluetooth 모듈 HC-06과 PIC 마이크로 컨트롤러의 인터페이스
STM32 USART 포트
STM32F103C8 (BLUE PILL) USART 직렬 통신 포트는 아래 핀아웃 이미지에 나와 있습니다. 이들은 (PA9-TX1, PA10-RX1, PA2-TX2, PA3- RX2, PB10-TX3, PB11-RX3)를 갖는 파란색입니다. 3 개의 통신 채널이 있습니다.
회로도 및 연결
Bluetooth 모듈과 STM32를 연결하기위한 회로 연결은 다음과 같습니다.
STM32F103C8과 블루투스 모듈 (HC-05) 연결
- STM32F103C8의 TX 핀 (PA9)은 Bluetooth 모듈의 RX 핀에 연결됩니다.
- STM32F103C8의 RX 핀 (PA10)은 Bluetooth 모듈의 TX 핀에 연결됩니다.
- Bluetooth 모듈의 VCC (+ 5V) 핀은 STM32F103C8의 5V 핀에 연결됩니다.
- Bluetooth 모듈의 GND 핀은 STM32F103C8의 GND 핀에 연결됩니다.
기타 연결
- STM32 (Blue Pill)의 (PA0) 핀은 직렬 저항을 통해 LED의 양극 핀에 연결됩니다. 여기에 사용되는 LED는 혼합 색상입니다.
- 지도 된 다른 핀은 STM32의 GND에 연결됩니다.
STM32F103C8 프로그래밍
Bluetooth와 STM32의 인터페이스는 arduino와 동일하며 STM32에서의 프로그래밍은 Arduino IDE와 동일합니다. Arduino IDE를 사용하여 USB로 STM32를 프로그래밍하려면이 튜토리얼을 참조하십시오.
이미 말했듯이이 프로젝트에서는 (HC-05) Bluetooth 모듈을 STM32F103C8과 인터페이스하고 Android Smart Phone with Bluetooth Terminal android 애플리케이션을 사용하여 LED를 켜고 끕니다.
참고: 코드를 STM32F103C8에 업로드하는 동안 RX 및 TX 핀을 제거해야합니다.
이 프로젝트의 전체 코드 는 데모 비디오 와 함께이 튜토리얼의 끝에 제공됩니다.
이 프로젝트의 코딩은 매우 간단합니다. 동일한 Arduino 코드를 사용할 수 있지만 핀만 변경해야합니다. STM32F103C8에는 세 세트의 USART 핀이 있으므로 Bluetooth 모듈을 연결하는 데 사용한 올바른 핀을 지정해야합니다.
1. 먼저 다음과 같이 int 데이터 유형을 사용하여 각 핀 번호로 핀 이름을 지정해야 합니다.
const int 핀아웃 = PA0;
2. 다음으로 안드로이드 모바일에서 시리얼 데이터를 저장할 변수가 필요합니다. 데이터는 다음과 같이 문자 또는 정수일 수 있습니다.
문자 입력 데이터 = 0;
3. 다음으로 void setup ()에서 9600의 전송 속도를 제공하여 STM32 Blue Pill과 Bluetooth 모듈 간의 직렬 통신을 시작해야합니다.
Serial1.begin (9600);
여기서는 HC-05를 STM32의 TX1과 RX1에 연결 했기 때문에 Serial1을 사용했습니다.
Serial2 또는 Serial3을 사용할 수도 있지만 이에 따라 핀을 연결해야합니다.
4. 인트로 메시지는 직렬 데이터로 serial1, 즉 Bluetooth 모듈 HC05로 전송됩니다. 이 모듈은 또한 안드로이드 모바일의 블루투스 터미널 앱으로 데이터를 전송합니다. 그래서 우리는 아래 진술을 사용합니다
Serial1.print ("CIRCUIT DIGEST \ n"); Serial1.print ("BLUETOOTH WITH STM32 \ n");
5. 다음으로 핀 모드 (PA0) 를 출력 으로 설정해야 합니다.이 핀에 연결 했으므로
pinMode (핀아웃, OUTPUT);
6. 다음으로 void 루프 ()에서 다음 데이터를 실행하여 직렬 데이터를 읽고 이에 따라 LED를 켜고 끕니다.
void loop () { If (Serial1.available ()> 0) { inputdata = Serial1.read (); if (inputdata == '1') { digitalWrite (pinout, HIGH); Serial1.print ("LED 켜짐 \ n"); } else if (inputdata == '0') { digitalWrite (pinout, LOW); Serial1.print ("LED 꺼짐 \ n"); } } }
여기에 우리가 사용하는 경우 로 Serial0 포트는 블루투스 모듈이 문을 사용하는 이유로부터받은 데이터가있을 때 문이 코드는 실행하기 때문에 Serial1.available ()> 0 . 그렇지 않으면 들어 가지 않으면 직렬 통신을 시작할 때까지 기다립니다. 이제 수신 된 데이터를 변수 inputdata = Serial1.read ()에 저장합니다. 그런 다음 블루투스 단말 앱에서 보낸 값을 확인합니다. 따라서 값이 1이면 LED를 ON으로하고 digitalWrite (pinout, HIGH) 문에 의해 핀 (PA0)을 HIGH로 만들고, 값이 0이면 LED를 OFF하고 (PA0) 핀을 LOW로 만듭니다.
블루투스 모듈을 안드로이드 폰과 연결하는 단계
1 단계: Arduino IDE에서 STM32로 코드를 업로드하고 회로에 전원을 공급 한 후 모바일에서 Bluetooth를 엽니 다. 코드를 업로드하는 동안 RX 및 TX 핀을 제거해야합니다.
2 단계:- 사용 가능한 장치에서 HC-05를 선택하고 암호를 1234로 입력합니다.
3 단계: 페어링 후 블루투스 터미널 앱을 열고 장치 연결을 선택하고 아래와 같이 HC-05를 선택합니다.
4 단계: HC-05 Bluetooth 모듈과 연결 한 후 단자 1 또는 0에 값을 입력하여 LED를 켜고 끕니다. 또한 LED가 켜짐 또는 꺼짐이라는 메시지를 받게됩니다.