블루투스 hc 05를 아두이노에 연결합니다. Arduino 수업: 인형용 스마트폰으로 장치를 제어합니다. Bluetooth 터미널을 사용하여 스마트폰에서 연결

컴퓨터용 블루투스 휘슬: http://ali.pub/2jfj3y

먼저 블루투스가 무엇인지 알아 보겠습니다.

블루투스(영어 단어 blue - 파란색 및 치아 - 치아에서 유래; /bluːtuːθ/로 발음), 블루투스- 무선 개인 영역 네트워크 제조 사양 ( 무선 개인 영역 네트워크, WPAN). 블루투스는 다음과 같은 장치 간 정보 교환을 가능하게 합니다. 개인용 컴퓨터(데스크탑, 포켓, 노트북), 휴대폰단거리 통신을 위해 안정적이고 무료이며 보편적으로 사용 가능한 무선 주파수를 사용하는 프린터, 디지털 카메라, 마우스, 키보드, 조이스틱, 헤드폰, 헤드셋. Bluetooth를 사용하면 이러한 장치가 서로 최대 10m 반경 내에 있을 때(범위는 장애물과 간섭에 따라 크게 다름) 서로 다른 방에서도 통신할 수 있습니다.

이제 블루투스가 네트워크를 구축하고 장치 간 데이터를 교환하는 데 사용된다는 것을 알았으므로 이를 사용하여 CNC(CNC) 기계와 컴퓨터 또는 휴대폰이나 태블릿과 노트북을 연결해 보겠습니다.

Arduino 플랫폼의 grbl 펌웨어를 사용하여 CNC를 제어하므로 Arduino에 적합한 블루투스 모듈, 즉 HC-06 블루투스 모듈을 기계에 연결하겠습니다.

Bluetooth 모듈을 Arduino에 연결하기 전에 Bluetooth 모듈과 Arduino가 COM 포트의 속도와 동일한 속도로 작동하는지 확인해야 합니다.

grbl 0.8 펌웨어를 사용하는 경우 아무것도 변경할 필요가 없지만 grbl 0.9 이상인 경우 Arduino COM 포트의 속도는 115200이 되고 모듈의 기본 속도는 9600이 됩니다.

그래서 블루투스 모듈 자체의 포트 속도를 변경해야 합니다.

Bluetooth 모듈을 구성하려면 특별한 방법이 있습니다. AT 명령, 필요한 모듈 매개변수를 설정할 수 있습니다.

AT 명령을 사용하면 COM 포트의 속도를 변경하거나 이름을 변경할 수 있습니다. 블루투스 장치또는 페어링을 위한 PIN 코드를 확인하거나 변경하세요.

AT 명령을 입력하기 위해 Bluetooth 모듈을 컴퓨터에 연결하려면 FTDI 프로그래머가 필요합니다(기사 시작 부분의 링크). 여기서는 연결도가 불필요하다고 생각합니다. gnd를 gnd에, 5v를 5v에, rx를 tx에, tx를 rx에 연결해야 합니다.

연결 후 AT 명령을 입력하고 모듈을 프로그래밍하려면 HMComAssistant 프로그램이 필요합니다. 다운로드: https://yadi.sk/d/eVzPmnh63Wab5R

자, 여기서는 Bluetooth 모듈의 설정을 변경하기 위한 몇 가지 AT 명령을 제공하겠습니다.

AT 명령 모듈 응답 코멘트
좋아요 일반적으로 작업을 수행하기 전에 통신을 테스트하는 데 사용되며 이 명령은 먼저 통신을 테스트하는 데 사용됩니다.
AT+BAUD1 OK 또는 OK1200 데이터 전송 속도를 1200보드로 설정합니다.
AT+BAUD2 OK 또는 OK2400 전송 속도를 2400 전송 속도로 설정합니다.
AT+BAUD3 OK 또는 OK4800 전송 속도를 4800보드로 설정합니다.
AT+BAUD4 OK 또는 OK9600 전송 속도를 9600 전송 속도로 설정합니다.
AT+BAUD5 OK 또는 OK19200 전송 속도를 19200 전송 속도로 설정합니다.
AT+BAUD6 OK 또는 OK38400 전송 속도를 38400 전송 속도로 설정합니다.
AT+BAUD7 OK 또는 OK57600 전송 속도를 57600 전송 속도로 설정합니다.
AT+BAUD8 OK 또는 OK115200 전송 속도를 115200 전송 속도로 설정합니다.
AT+BAUD9 OK 또는 OK230400 전송 속도를 230400 전송 속도로 설정합니다.
AT+바우다 OK 또는 OK460800 전송 속도를 460800 전송 속도로 설정합니다.
AT+BAUDB OK 또는 OK921600 전송 속도를 921600 전송 속도로 설정합니다.
AT+BAUDC OK 또는 OK1382400 전송 속도를 1382400 전송 속도로 설정합니다.
AT+이름 +NAME=테스트 현재 모듈 이름을 반환합니다.
AT+NAMEiarduino_BLU +NAME=테스트 OK 새 모듈 이름 "test"를 설정합니다.
AT+핀 +핀=000000 현재 비밀번호를 반환합니다. 이 경우 비밀번호는 "000000"입니다.
AT+PIN123456 +PIN=123456 확인 새 비밀번호를 설정하세요. 이 경우 비밀번호는 "123456"입니다.
AT+버전 +버전=펌웨어 V3.0.6, 블루투스 V4.0 LE 펌웨어 버전을 반환합니다. 이 경우 비밀번호는 "Firmware V3.0.6,Bluetooth V4.0 LE"입니다.
AT+리셋 +재설정 확인
AT+도움말 ——– 사용 가능한 모든 AT 명령 목록을 반환합니다.

COM 포트의 속도를 변경하고 페어링을 위한 PIN 코드를 설정한 후. (페어링을 위한 기본 핀 코드는 “1234”입니다. 모듈을 Arduino에 연결해 보겠습니다.

그리고 CNC Shield v 3.0을 사용하기 때문에. 이에 대한 연결 다이어그램도 제공하겠습니다.

나는 나만의 다이어그램을 만들지 않고 하나의 기사에서 가져옵니다. 그 창조자가 나를 용서하길 바랍니다.

다이어그램은 확실히 그다지 매끄럽지는 않지만 제 생각에는 꽤 이해할 수 있습니다.

그렇다면 회로에 저항이 사용되는 이유는 무엇입니까? Arduino에는 5V 논리가 있습니다. 이는 Arduino가 모든 출력에 5V의 전압을 보내는 것을 의미합니다. 그러나 모듈에는 LEVEL 3.3v가 표시되어 있습니다. 이는 Bluetooth에 3.3V가 필요하지만 5V는 필요하지 않음을 의미합니다. 따라서 전압을 낮추고 블루투스 모듈의 고장을 방지하기 위해 저항을 연결합니다.

하지만 저항 없이 직접 사용하기로 결정했습니다. 모듈이 얼마나 오래 지속되는지 살펴보고 일종의 충돌 테스트를 수행하겠습니다.

휴대폰이나 태블릿에서 CNC(CNC) 기계를 제어하기 위해 저는 "Grbl 컨트롤러" 프로그램을 사용했는데, 이 프로그램은 무료이며 매우 다기능입니다. 아래 영상에서는 이 프로그램으로 기계를 제어하는 ​​방법을 간략하게 보여드렸습니다.

하지만 컴퓨터에서 연결하면 뉘앙스가 있습니다. 모듈과 연결을 페어링할 때 두 가지 새로운 COM포트. 나에게는 COM6과 COM7입니다. 따라서 그 중 하나는 데이터를 보내는 데 사용되고 다른 하나는 수신하는 데 사용됩니다. 그러므로 겁먹을 필요 없이 그냥 연결을 시도해 보고, 아무 일도 일어나지 않으면 다른 연결을 시도해보세요.

하지만 명확하지 않은 부분이 있으면 영상에서 명확하게 보여드렸습니다.

프로젝트에서 전화 기기를 통한 원격 제어나 데이터 전송이 필요한 경우가 매우 많습니다.

Bluetooth를 통한 가장 널리 사용되고 널리 사용되는 데이터 교환 방법 중 하나 .

오늘 우리는 볼 것입니다 간단한 예블루투스 연결하는 방법 모듈을 Arduino에 추가하고 구성 리모콘전화에서.

우리는 다음이 필요합니다:

  • MALE-MAMA 와이어 세트
  • HC-06 블루투스

블루투스 연결 Arduino 마이크로컨트롤러에 대한 모듈은 MALE-MAMALE 배선을 사용하는 것이 가장 편리합니다.

아두이노 블루투스
핀 1(TX) RXD
핀 0(RX) TXD
접지 접지
5V VCC

조심하세요 연결이 필요해요 텍사스 -> RXD ,RX -> TXD .

이제 프로그램의 테스트 코드를 작성해야 합니다.

스케치를 로드할 때 Bluetooth 모듈을 Arduino 마이크로컨트롤러에서 분리해야 합니다. 그렇지 않으면 블루투스 연결로 인해 스케치가 기록되지 않습니다. 모듈은 USB와 동일한 RX 및 TX 포트를 통해 통신합니다.

내부 가치; 정수 LED = 13; void setup() ( Serial.begin(9600); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); ) void loop() ( if (Serial.available()) ( val = Serial.read(); / / 문자가 "1"일 때 LED를 켠다 if (val == "1") ( digitalWrite(LED, HIGH); ) // 문자가 "0"일 때 LED를 끈다 if (val == "0") ( 디지털쓰기(LED, LOW ); ) ) )

스케치가 녹음된 후 블루투스 모듈이 Arduino에 연결되면 다음 단계로 넘어갈 수 있습니다.

휴대폰에 블루투스 연결하기

Arduino의 전원으로 USB가 아닌 외부 9V 전원 공급 장치를 사용하는 것이 좋습니다.

  1. 휴대전화에서 블루투스를 켜고 새 기기를 찾아보세요.
  2. 장애 목록에서 " HC-06" 그리고 그것에 연결하세요.
  3. 전화기에서 PIN 코드를 묻습니다. "를 입력해야 합니다. 1234 " 또는 " 0000 "
  4. 만세. 장치가 연결되었습니다.

이제 블루투스 터미널을 휴대폰에 다운로드해야 합니다. 안드로이드 플랫폼의 예를 살펴보겠습니다.



다양한 Bluetooth 터미널을 설치할 수 있습니다. 일반적으로 디자인만 다르며 기능은 변경되지 않습니다. iOS 제품용 단말기도 찾을 수 있습니다.

터미널을 설치한 후 실행하고 Bluetooth 모듈 HC-06을 선택하여 연결합니다.

이제 프로젝트를 실제로 시도해 볼 시간입니다. 터미널에 숫자 "0"을 쓰고 보냅니다. 아두이노 보드의 13번 핀 옆에 있는 LED L이 꺼져야 합니다. 이제 터미널을 통해 숫자 "1"을 보내면 L LED가 켜집니다.

작업 시연:


숙제:

  • 예를 들어 "G"와 같은 동일한 명령을 사용하여 LED가 켜지고 꺼지도록 스케치를 변경합니다.
  • 스케치를 완성하고 블루투스를 통해 들어오는 텍스트 데이터를 디지털 데이터로 변환하고 블루투스를 통해 들어오는 0~254의 특정 밝기로 PWM을 사용하여 이량체를 구현하고 LED를 켜는 방법을 교육합니다.

오늘 우리는 다음을 통한 저렴한 무선 데이터 전송 모듈에 대해 알아 보겠습니다. 블루투스.

블루투스많은 장치 간에 데이터를 무선으로 전송할 수 있는 무선 개인 영역 네트워크에 대한 산업 사양입니다.

우리 모듈은 HC-05. 이것은 유사한 모듈 HC-03 - HC-09 제품군의 대표자 중 하나입니다.

이 모듈을 사용하면 Bluetooth 프로토콜이 일반적으로 작동하는 방식, 해당 필드 및 기타 세부 사항에 대해 생각하지 않고도 무선으로 데이터를 전송할 수 있습니다. 이러한 모듈은 올바른 설정코드를 작성하는 프로그래머가 유선 UART 인터페이스로 작업하는 것처럼 알고리즘을 작성하는 방식으로 데이터 전송을 제공합니다. 따라서 코드 작성이 최대한 편리해지며 이것이 바로 이 모듈 라인이 초보 프로그래머들 사이에서 엄청난 인기를 얻은 이유입니다.

그러니 너도 나도 뒤처지지 말고 조금이라도 쉬어가자. 네트워크 프로토콜그런 모듈을 공부하세요. 공개 채팅뿐만 아니라 개인적인 요청도 많았기 때문에 그러한 모듈을 우회하거나 이를 사용하여 강의를 작성하지 않았습니다.

모듈에는 다음과 같은 주요 특징이 있습니다.

  • 블루투스 칩 - BC417143생산 CSR 기업,
  • 데이터 전송 프로토콜 - 블루투스 2.0+EDR,
  • 클래스 2는 최대 반경 10m 이내의 데이터 전송에 해당하며,
  • 직렬 포트 프로필 지원( SPP)는 이 프로필을 지원하는 모든 장치와의 호환성을 보장합니다.
  • 8MB 용량의 비휘발성 플래시 메모리,
  • 2.4 - 2.4835 MHz 주파수의 무선 채널,
  • USB 호스트 1.1/2.0 인터페이스,
  • 조정 가능한 전송 속도를 갖춘 UART 인터페이스.

또한 이러한 특성과 함께 모듈에 다리가 많이 탑재되어 있어 더 넓은 범위에서 사용할 수 있다는 점도 주목할 만합니다. 모듈 핀아웃 다이어그램을 살펴 보겠습니다.

여기에 GPIO, SPI, USB, PCM 핀이 표시됩니다.

사실, 지금은 유용한 데이터를 전송할 뿐만 아니라 모듈을 구성하는 데 도움이 되는 USART 인터페이스로만 작업할 것입니다.

먼저 이 작업을 수행할 것입니다. 왜냐하면 모듈이 동일한 유형(4개나 있습니다!)이기 때문에 HC-05 모듈이 다른 보드에 납땜되고 6개의 접점만 바깥쪽으로 라우팅됩니다. 이것이 내가 모든 것을 가지고 있는 방법입니다(위쪽 보기 및 아래쪽 보기)

다리의 용도는 보드 하단에 표시되어 있으며 모듈을 연결할 때 알 수 있습니다.

둘째, 모든 펌웨어에서 이 작업을 허용하는 것은 아니기 때문에 나머지 수많은 연락처에 대해서는 작업하지 않을 것입니다.

일반적으로 선택은 HC-05에 떨어졌습니다. 이 모듈마스터 및 슬레이브 작동 모두에 대해 완벽하게 구성 가능합니다.

모듈은 AT 명령을 사용하여 데이터에 대한 추가 작업을 위해 구성되었습니다. 내 생각에 우리 모두는 이러한 명령이 무엇인지 어느 정도 익숙하다고 생각하며 Wi-Fi 모듈을 작업하면서 조금 알게 되었습니다. 물론 이러한 명령은 장치마다 다르므로 페이지 하단에 전체 명령 목록이 포함된 문서를 첨부하겠습니다. 또한 이러한 명령에 대한 설명이 러시아어로 번역되어 있는 리소스를 인터넷에서 쉽게 찾을 수 있으며 해당 명령의 사용 예도 있습니다. 여기서는 명령의 완전한 번역에 참여하지 않고 사용해야 할 명령만 연구하겠습니다. 지금은 목록이 그렇게 넓지는 않지만 나중에 이 모듈로 두 번 이상 돌아가서 이 모듈에 대한 지식의 지평을 넓힐 것입니다. 그동안 우리는 모듈에 대해 간략히 살펴보겠습니다. 물론, 우리는 그것 없이는 아니고 직장에서 그것을 시도해 볼 것입니다.

지금은 모듈을 TTL-USB 어댑터에 연결한 후 PC에 연결하겠습니다.

다음 다이어그램에 따라 연결하겠습니다.

TTL-USB 어댑터 모듈 HC-05

VCC VCC

접지 접지

TXD RXD

RXD TXD

실제로는 다음과 같이 보일 것입니다

어댑터를 컴퓨터에 연결해 보겠습니다. 이 유형의 어댑터로 작업하는 방법은 말씀드리지 않겠습니다. 우리는 이미 항상 어댑터를 사용하고 있습니다. 터미널 프로그램을 시작하겠습니다. CoolTerm 프로그램을 사용하겠습니다. 키보드에서 데이터를 전송하는 데 더 유연한 설정이 있고 명령을 입력하려면 전송 중 각 줄이 라인 피드와 캐리지 리턴 코드로 끝나도록 해야 합니다.

프로그램 설정으로 이동하여 먼저 포트를 구성해 보겠습니다.

이 속도 38400은 모듈이 AT 명령을 수신할 때 정확히 이 속도로 작동하기 때문에 선택되었습니다.

이제 왼쪽에 있는 항목을 선택하세요. 받다거기에 있는 버튼 하나를 전환하고 다른 버튼을 켜세요.

첫 번째 버튼은 라인 피드 및 캐리지 리턴 문자로 전송된 명령을 종료하기 위한 것이고, 두 번째 버튼은 수신 터미널 창에 입력한 후 입력된 명령을 볼 수도 있도록 하기 위한 것입니다.

설정을 저장하고 연결을 시도해 보겠습니다. 모든 것이 성공하면 이제 모듈이 데이터 전송 모드에 있으므로 연결을 끊고 아직 구성되지 않은 경우 주소나 설정조차 알지 못할 가능성이 높습니다. 모듈 찾기 정보 이 모드이는 파란색 LED가 빠르게 깜박이는 것으로 표시되므로 어떻게든 모듈을 AT 명령을 전송하는 상태로 만들어야 합니다.

이를 위해 이제 USB 포트에서 어댑터를 분리하고 와이어를 HC-05 모듈의 다리에 연결합니다. 열쇠. 어떤 사람들에게는 다른 이름이 있을 수도 있지만 혼동하지 않으셔도 될 것 같습니다. 전선을 이렇게 연결해 볼까요?

이 와이어를 전원 양극(VCC 다리 포함)에 연결해 보겠습니다.

그리고 접점을 해제하지 않고 어댑터를 연결하십시오. USB 포트컴퓨터에 연결하고 잠시 후(1~2초 안에) 와이어를 제거하여 VCC 접점에서 KEY 접점을 분리합니다. 모듈은 AT 명령 수신 모드로 전환해야 하며, 이는 LED의 매우 느린 깜박임 속도로 표시됩니다.

터미널 프로그램으로 가서 포트에 연결하고 명령을 보내 보겠습니다. , 모듈은 우리에게 응답해야 합니다. "좋아요"

모듈이 응답했는데 이는 모든 것이 정확하다는 것을 의미합니다.

누군가가 설정한 내용과 혼동되지 않도록 다음 명령을 입력하여 모든 설정을 수집해 보겠습니다. AT+ORGL". 설정을 다음 매개변수로 재설정해야 합니다.

  • 장치 유형: 0
  • 문의코드 : 0x009e8b33
  • 모듈 작업 모드: 슬레이브 모드
  • 연결 모드: 지정된 Bluetooth 장치에 연결
  • 직렬 매개변수: 전송 속도: 38400비트/초; 정지 비트: 1비트; 패리티 비트: 없음.
  • 비밀번호: “1234”
  • 장치 이름: “H-C-2010-06-01”

설정만 즉시 적용되지는 않습니다. 모듈을 다시 로드해야 합니다. " 명령을 입력하면 편리합니다. AT+리셋"에 대한 응답으로 모듈은 재부팅되고 데이터 전송 모드로 돌아가며 지금은 명령을 수신할 수 없습니다. 이를 수락하기 위해 위와 동일한 작업을 수행하여 모듈이 다시 AT 명령 수신 모드로 전환됩니다. 다른 방법도 있지만 지금은 사용하지 않겠습니다.

이제 모듈의 일부 매개변수를 확인해 보겠습니다.

펌웨어 버전을 확인하려면 " AT+버전?", 모듈은 다음과 같이 응답해야 합니다.

펌웨어가 이 버전보다 낮지 않으면 해당 펌웨어가 포함된 이 모듈이 마스터 모드에서 작동할 수 있음을 확신할 수 있습니다.

“명령을 사용하여 장치 주소를 찾으십시오. AT+ADDR?«

이 주소를 사용하여 마스터 장치에서 장치를 식별합니다. 우리는 가장 일반적인 스마트폰을 마스터 장치로 사용할 것이지만 그것은 조금 나중에 나올 것입니다. 우리는 여전히 팀들과 잘 플레이해야 합니다.

또한 " 명령을 사용하여 장치 이름을 요청해 보겠습니다. AT+이름?“저를 포함한 많은 모듈이 KEY 레그에 높은 레벨이 있는 경우, 즉 와이어가 연결된 경우에만 응답합니다. 그걸하자

이 이름도 별로 편리하지 않으므로 변경해 보도록 하겠습니다. 이렇게 하려면 "AT+NAME: Desired_name" 명령을 입력합니다. 이 명령은 KEY 핀의 하이 레벨 없이 입력할 수 있습니다.

이름이 변경되었는지 확인합시다. KEY 레그의 높은 레벨을 잊지 마세요.

이름이 잘 적용되었습니다.

"라는 명령으로 비밀번호를 확인해 보겠습니다. AT+PSWD?«

이름과 마찬가지로 비밀번호도 변경할 수 있습니다.

이제 " 명령을 사용하여 장치 유형(슬레이브 또는 마스터)을 알아냅니다. AT+ 역할?«

0은 노예를 의미합니다. 유형은 언제든지 변경될 수도 있습니다. 하지만 지금은 이 장치를 슬레이브로 사용할 것이기 때문에 이것이 필요하지 않습니다.

" 명령을 사용하여 페어링된 장치를 재설정합니다. AT+RMAAD«

이제 " 명령을 사용하여 USART 인터페이스 설정을 알아 보겠습니다. AT+UART?«

이 설정은 38400kbps, 1 정지 비트 및 패리티 없음을 의미합니다.

이 테이블에는 다음이 포함되어 있습니다. 가능한 옵션 USART 설정

예를 들어 " 명령을 사용하여 전송 속도를 변경해 보겠습니다. AT+UART=115200,0,0«

모듈이 재부팅된 후에는 이러한 설정만 적용되며 데이터 전송 모드에만 관련됩니다. AT 명령을 모듈에 전송하는 모드의 경우 동일한 설정이 38400의 속도로 유지됩니다.

"라는 명령을 사용하여 모듈을 다시 로드해 보겠습니다. AT+리셋", 그 후에 모듈은 데이터 전송 모드로 전환됩니다.

터미널 프로그램에서 포트를 다음과 같이 구성해 보겠습니다. 주어진 속도그리고 그 사람과 연결

모드가 동일하지 않기 때문에 모듈이 응답하지 않는 명령을 입력해 보겠습니다.

그러나 절망하지 말자. 모듈에 명령을 보내기 위해 모듈을 이 모드에 둘 필요는 없다는 것이 밝혀졌습니다. 데이터 모드에서 AT 명령 전송 지원을 활성화할 수 있습니다. 짧은 시간(1초 미만이면 충분) 동안 모듈 양극 버스의 KEY 접점에 연결된 와이어를 만지면 모듈이 AT 명령 지원 모드로 전환됩니다. 사실, LED 깜박임의 특성으로는 이를 판단할 수 없으며 LED도 마찬가지로 빠르게 깜박입니다. 또한 we 명령 지원 모드에서는 마스터 장치가 우리에게 연결할 수 없습니다. 그러나 그럼에도 불구하고 우리는 끊임없이 전선을 제거할 필요는 없습니다. USB 커넥터터미널 프로그램에서 포트를 재구성하십시오. 이것은 이미 좋습니다. 이를 수행하고 명령 수신 모드에서와 같이 모듈도 명령을 수락하는지 확인하십시오.

이 지원을 제거하고 모듈을 연결할 수 있으려면 " 명령을 사용하여 재부팅하면 됩니다. AT+리셋". 그걸하자

엄청난! 우리는 이미 뭔가를 알고 있습니다. 기본적으로 마스터 모드에서 데이터를 전송하도록 모듈을 구성했습니다.

이제 우리가 갖고 있는 스마트폰이 마스터 기기 역할을 하게 될 것입니다. 블루투스용 터미널 프로그램만 있으면 안드로이드를 사용하는 사람이라면 누구나 그렇게 할 것입니다. 나는 이것을 설치했다. 나는 그것이 편안하다고 느꼈다.

첫째, 무료이며 사전에 연결을 생성할 필요가 없으며 사전에 저장한 문자열이 포함된 여러 개의 버튼도 있습니다.

프로그램을 다운로드하여 설치하고 실행해 보겠습니다. SCAN 버튼을 누르면 발견된 장치 목록에 모듈이 나타납니다.

선택하자 이 기기비밀번호(“1234”)를 입력하고 “확인” 버튼을 클릭하여 동의해야 하는 쌍 생성 대화 상자로 이동합니다.

관리에 대해 생각해 본 적이 있습니까? 전자 기기스마트폰을 사용하시나요? 동의하세요. 스마트폰으로 로봇이나 다른 장치를 제어하는 ​​것은 매우 멋질 것입니다. 초보자와 초보자를 위해 Bluetooth를 통해 Arduino를 사용하여 스마트폰을 제어하는 ​​방법에 대한 간단한 강의를 제공합니다. 이 수업을 마친 후 Arduino에 대해 더 잘 알고 싶다면 관련 책을 찾아보세요.

1단계. 우리에게 필요한 것

장치

모듈 - 블루투스 모듈 HC 05/06
보드 - 아두이노
발광 다이오드(LED)
저항기 - 220Ω
안드로이드 기기

소프트웨어

아두이노 IDE
Android Studio(아래에서 Android 애플리케이션을 찾을 수 있으므로 실제로는 필요하지 않음)

2단계. 작동 방식

일반적으로 우리는 이 단계를 마지막에 수행하지만, 우리가 달성해야 할 것이 무엇인지 이해하려면 이 중간 단계의 결과를 살펴보십시오. 아래에 단계별 비디오 튜토리얼도 게시되어 있습니다.

3단계. 회로 조립을 시작합니다.

튜토리얼의 회로는 너무 간단하고 작기 때문에 몇 가지 연결만 하면 됩니다.

Arduino 핀___________블루투스 모듈 핀
RX(핀 0)_____________TX
TX(핀 1)_____________RX
5V____________VCC
GND_________GND

LED의 음극을 Arduino의 GND에 연결하고 양극을 220 Ohm - 1 kOhm의 저항을 통해 핀 13에 연결합니다. 일반적으로 아래 그림에서는 모든 것이 매우 명확합니다.

RX-RX 및 TX-TX Bluetooth 출력을 Arduino 출력에 연결하지 마십시오. 데이터를 수신할 수 없습니다. 여기서 TX는 전송을 의미하고 RX는 수신을 의미합니다.

4단계: Arduino에 프로그램 업로드

이제 프로그램을 작성하여 Arduino에 업로드해야 합니다. 아직 방법을 모른다면 책을 다운로드하세요. 아래 코드는 Arduino에 로드하는 데 필요한 코드입니다.

/* Bluetooth 기본: LED ON OFF * Coder - Mayoogh Girish * 웹사이트 - http://bit.do/Avishkar * 앱 다운로드: https://github.com/Mayoogh/Arduino-Bluetooth-Basic * 이 프로그램을 사용하면 블루투스 모듈을 사용하여 Arduino의 핀 13에 있는 LED를 제어하려면 */ char data = 0; //수신된 데이터를 저장하기 위한 변수 void setup() ( Serial.begin(9600); //직렬 데이터 전송을 위한 보드(baud)를 설정 pinMode(13, OUTPUT); //디지털 핀 13을 출력 핀으로 설정 ) void loop() ( if(Serial.available() > 0) // 데이터를 받았을 때만 데이터를 보냅니다: ( data = Serial.read(); //들어오는 데이터를 읽어 변수 데이터에 저장합니다. Serial.print(data); // 직렬 모니터의 데이터 내부 값 인쇄 Serial.print("\n"); //새 줄 if(data == "1") // 데이터 값이 1인지 확인 digitalWrite(13, HIGH); // 값이 1이면 LED가 켜집니다. else if(data == "0") // 데이터의 값이 0인지 확인합니다. digitalWrite(13, LOW); //값이 0이면 LED가 꺼집니다. ) )

5단계. 프로세스 작동 방식

HC 05/06 모듈은 직렬 통신 채널을 통해 작동합니다. 안드로이드 앱은 특정 키를 누르면 순차적으로 블루투스 모듈에 데이터를 보냅니다. 상대방의 블루투스는 데이터를 받아 블루투스 모듈의 TX 연결(Arduino RX 연결)을 통해 아두이노로 전송합니다.

Arduino에 로드된 코드는 수신된 데이터를 확인하고 비교합니다. "1"이 수신되면 LED가 켜지고 "0"이 수신되면 꺼집니다. 직렬 포트 모니터를 열고 수신된 데이터를 관찰합니다.

6단계. Android 기기용 애플리케이션

이 튜토리얼에서는 Android 장치용 애플리케이션 생성에 대해서는 다루지 않습니다. GitHub에서 애플리케이션을 다운로드할 수 있습니다.

응용 프로그램을 사용하는 방법?

블루투스를 통해 연결한 후에는 스마트폰을 사용하여 멀리서 LED를 제어할 애플리케이션을 다운로드하고 설치해야 합니다. Amazon.com에서 애플리케이션을 무료로 다운로드할 수 있습니다. 스마트폰을 Bluetooth 모듈 HC 05/06에 연결합니다.

  1. HC 05/0 모듈 켜기
  2. 장치를 찾고 있습니다
  3. 기본 비밀번호 "1234" 또는 "0000"(0 4개)을 입력하여 HC 05/06에 연결합니다.

그런 다음 스마트폰에 애플리케이션을 설치합니다. 열어보자. 장치 선택 - 목록에서 Bluetooth 모듈을 선택합니다(HC 05/06). 연결에 성공한 후 ON 버튼을 누르면 LED가 켜지고, OFF 버튼을 누르면 LED가 꺼집니다. 그런 다음 "연결 끊기" 버튼을 클릭하여 Bluetooth 모듈에서 연결을 끊을 수 있습니다.

아두이노와 블루투스 모듈을 연결하는 방법에 대한 입문자와 초보자를 위한 가이드였습니다. 이 프로젝트는 스마트폰 제어, 제어 로봇 등을 통한 홈 자동화 등을 통해 개선되고 더 높은 수준으로 발전할 수 있습니다.

Bluetooth 모듈 HC-05 검토

Arduino 컨트롤러는 무선 통신을 지원하지 않으며 종종 이는 단순히 필요한 경우도 있습니다. 예를 들어, 리모콘 Arduino의 로봇은 기상 관측소에서 Arudino로 데이터를 인터넷이나 홈 서버, 여러 장치가 서로 통신합니다. 여기에는 장치 개발자를 돕기 위해 다양한 기술을 구성하기 위한 많은 외부 모듈이 있습니다. 무선 통신: WiFi 모듈, GSM/GPRS, IR, Bluetooth, 다양한 주파수 범위에서 작동하기 위한 무선 모듈.

Bluetooth 기술은 직접적인 가시선 없이 서로 근접해 있는 두 장치 간에 데이터를 전송하는 데 사용됩니다. Bluetooth 기술은 광대역 간섭에 대한 우수한 저항력을 제공하므로 동일한 위치에 있는 여러 장치가 서로 간섭하지 않고 동시에 통신할 수 있습니다. 매우 넓음 이 기술휴대폰, 태블릿, 노트북에 사용됩니다.

다음 중 하나 최고의 솔루션 Arduino 장치와 태블릿, 노트북 또는 기타 Bluetooth 장치 간의 양방향 Bluetooth 통신을 구성하기 위해 - 마스터(Bluetooth 장치 검색 및 통신 시작) 및 슬레이브(슬레이브 장치)로 작동할 수 있는 Bluetooth 모듈 HC-05 ).

HC05 모듈의 기술적 특성

  • 블루투스 칩: HC-05(BC417143)
  • 무선 주파수 범위: 2.4 - 2.48GHz
  • 송신 전력: 0.25~2.5mW
  • 감도: -80dBm
  • 공급 전압: 3.3~5V
  • 전류 소비: 50mA
  • 범위: 최대 10미터
  • 인터페이스: 직렬 포트
  • 모드: 마스터, 슬레이브
  • 보관 온도: –40…85 °C
  • 작동 온도 범위: –25…75 °C
  • 크기: 27 x 13 x 2.2mm

연결

센서에는 6개의 2.54mm 표준 핀이 있습니다.

  • VCC - (전원 공급 장치 3.6 – 6V);
  • GND - (접지).
  • TXD, RXD - UART 인터페이스;
  • STATE - 상태 표시기;
  • KEY - 프로그래밍 모드 진입을 위한 접점입니다.

모듈은 다음을 통해 AT 명령을 전송하여 프로그래밍 모드로 구성됩니다. 직렬 포트. 프로그래밍 모드로 들어가려면 KEY 접점에 하이 레벨 신호를 인가해야 합니다. 일부 모듈에는 KEY 핀이 없고 대신 EN 핀이 있습니다.

  • EN - 모듈을 켜거나 끕니다.


이 경우 프로그래밍 모드로 들어가려면 핀 34에 하이 레벨 신호를 적용해야 합니다.


모듈 k의 경우 아두이노 보드우리는 측면의 직렬 포트를 사용할 것입니다 아두이노 소프트웨어 UART. 그림의 연결 다이어그램:


다음과 같은 결과를 얻어야 합니다.


Bluetooth HC05 모듈 프로그래밍

모듈은 직렬 포트를 통해 AT 명령을 전송하여 프로그래밍 모드로 구성됩니다. 그림 5의 연결도에 따라 HC05 모듈을 Arduino 보드에 연결해 보겠습니다. 모듈의 KEY 핀(또는 보드의 34번 핀)에 3.3V를 인가합니다. Arduino IDE 직렬 포트 모니터에서 AT 명령을 보냅니다. 목록 1의 스케치를 Arduino에 업로드해 보겠습니다. Arduino SoftwareSerial 라이브러리가 필요합니다. 프로그래밍 모드에서 UART 모듈의 속도는 38400보드이지만 다를 수 있으므로 이 경우 선택해야 합니다.

포함하다 SoftwareSerial mySerial(2, 3); // rx 및 tx 핀을 각각 지정합니다. void setup() ( pinMode(2,INPUT); pinMode(3,OUTPUT); Serial.begin(9600); mySerial.begin(38400); Serial.println("start prg" ) ; ) void loop() ( if (mySerial.available()) ( char c = mySerial.read(); // 소프트웨어 포트에서 읽기 Serial.print(c); // 하드웨어 포트에 쓰기 ) if ( Serial .available()) ( char c = Serial.read(); // 하드웨어 포트에서 읽기 mySerial.write(c); // 소프트웨어 포트에 쓰기 ) )

스케치를 다운로드한 후 Arduino IDE 직렬 포트 모니터를 열고 AT 명령 보내기를 시작합니다.


기본 AT 명령 목록:

  • AT - 테스트 명령.

매개변수가 없습니다.

모듈 응답: OK

  • AT+버전? - 모듈 펌웨어 버전을 얻으십시오.

매개변수가 없습니다.

모듈 응답: +버전:

어디 블루투스 모듈 펌웨어 버전.

  • AT+RESET - 설정을 재설정합니다.

매개변수가 없습니다.

모듈 응답: OK

  • AT+ORGL - 사용자 정의 모듈 설정을 지정합니다.

매개변수가 없습니다.

모듈 응답: OK

  • AT+ADDR? - 모듈 주소를 얻으십시오.

매개변수가 없습니다.

모듈 응답: +ADDR:

어디 Bluetooth 모듈 주소 NAP: UAP: LAP.

  • AT+이름? - 모듈 이름을 얻으십시오.

매개변수가 없습니다.

모듈 응답: +NAME:

어디 블루투스 모듈 이름.

  • AT+이름= 새로운 모듈 이름을 설정합니다.

매개변수: 블루투스 모듈 이름.

모듈 응답: +NAME:

확인(또는 실패)

  • AT+PSWD? - 블루투스 모듈에 접근하기 위한 PIN 코드를 받으세요.

매개변수가 없습니다.

모듈 응답: + PSWD:

어디 핀. 기본값은 1234입니다.

  • AT+PSWD= Bluetooth 모듈의 액세스 코드를 설정합니다.

매개변수: 모듈 액세스 코드.

모듈 응답: OK(또는 FAIL)

  • AT+클래스= Bluetooth 모듈의 작동 모드를 설정합니다.

매개변수: 수업. 모듈 문서는 가능한 값을 제공하지 않습니다. 이 매개변수. 기본적으로 0으로 설정되어 있습니다. 마스터 모드에서 모듈을 사용하려는 경우 값을 변경할 필요가 없습니다. 모듈을 슬레이브 모드에서 사용하고 매개변수 값이 0인 경우 작동 중인 장치에는 보이지 않습니다. 안드로이드 시스템. 가시성을 위해서는 매개변수 값을 7936으로 설정해야 합니다.

모듈 응답: OK

  • AT+클래스? - 모듈 클래스를 가져옵니다.

매개변수가 없습니다.

모듈 응답: +CLASS:

어디 모듈 클래스.

  • AT+IAC - GIAC(일반 조회 액세스 코드) 요청에 대한 액세스 코드를 가져옵니다.

연결 설정 프로세스에 사용되는 서로 다른 물리적 통신 채널은 서로 다른 채널 액세스 코드를 갖습니다. 폴링 채널에서는 전용 채널을 제외하고 모든 장치에 동일한 일반 쿼리 액세스 코드가 사용됩니다.

매개변수가 없습니다.

모듈 응답: + IAC:

어디 액세스 코드를 요청하세요.

  • AT+IAC= 요청 액세스 코드를 설정합니다.

매개변수: 액세스 코드를 요청하세요. 기본값은 9e8b33입니다.

모듈 응답: OK(또는 FAIL)

  • AT+역할? - 모듈의 작동 모드를 가져옵니다.

매개변수가 없습니다.

모듈 응답: +ROLE:

어디 블루투스 모듈 작동 모드:

  • 0 - 노예. 이 모드에서는 다른 마스터가 모듈에 연결할 수 있습니다.
  • 1 - 마스터. 이 모드에서는 모듈 자체가 모든 Bluetooth 장치에 연결할 수 있습니다.
  • 2 - 슬레이브 루프. 모듈은 전송된 모든 바이트를 다시 보냅니다.
  • AT+역할= Bluetooth 모듈의 작동 모드를 설정합니다.

매개변수: 블루투스 모듈 작동 모드:

  • 0 - 노예;
  • 1 - 마스터;
  • 2 - 노예 -

모듈 응답: OK

  • AT+UART= ,,직렬 포트용 모듈을 설치합니다.

옵션:

  • 정지 비트:
  • 0 - 아니오;
  • 1 - 예;
  • 패리티 비트:
  • 0 - 아니오;
  • 1 - 예.

모듈 응답: OK(또는 FAIL).

  • AT+UART? - 모듈 교환 매개변수를 얻습니다.

매개변수가 없습니다.

모듈 응답: +UART: ,,

  • 전송 속도(9600,19200,38400,57600,115200);
  • 정지 비트;
  • 패리티 비트.
  • AT+CMODE= 블루투스 모듈 연결 모드를 설정합니다.

매개변수:

  • 2 - 슬레이브 루프 모드.

모듈 응답: OK

  • AT+CMODE? - 모듈 연결 모드를 가져옵니다.

매개변수가 없습니다.

모듈 응답: +CMODE:

어디 블루투스 모듈 연결 모드:

  • 0 - 모듈은 AT+BIND 명령으로 지정된 Bluetooth 장치에만 연결할 수 있습니다.
  • 1 - 모듈은 모든 Bluetooth 장치에 연결할 수 있습니다.
  • 2 - 슬레이브 루프 모드.
  • AT+INQM= ,,블루투스 기기 검색을 요청하는 옵션을 설정합니다.

옵션:

  • :
  • 0 - 표준 요청 모드;
  • 1 - RSSI 모드에서 요청합니다.
  • 요청에 응답하는 최대 장치 수
  • 대기 시간 초과(1~48: 1.28초~61.44초).

모듈 응답: OK(또는 FAIL).

  • AT+INQM? - 블루투스 장치 검색을 요청하기 위한 매개변수를 가져옵니다.

매개변수가 없습니다.

모듈 응답: +UART: ,,

  • AT+INQ - Bluetooth 장치 검색을 시작합니다.

매개변수가 없습니다.

모듈의 응답은 발견된 장치 목록입니다.

  • AT+바인드= Bluetooth 모듈을 다른 모듈에 연결합니다.

모듈 응답: OK(또는 FAIL).

  • AT+바인드? - Bluetooth 모듈과 연결된 장치의 주소를 가져옵니다.

매개변수가 없습니다.

모듈 응답: Bluetooth 모듈과 연결된 장치의 주소입니다.

  • AT+FSAD=

    모듈 응답: OK(또는 FAIL).

    • AT+RMSAD=

      모듈 응답: OK(또는 FAIL).

      • AT+RMAAD - Bluetooth 모듈에 대해 승인된 장치 목록을 지웁니다.

      모듈 응답: OK(또는 FAIL).

      • AT+LINK= Bluetooth 장치에 연결합니다.

      매개변수: 블루투스 장치 주소.

      모듈 응답: OK(또는 FAIL).

      AT 명령의 전체 목록을 찾을 수 있습니다.

      사용예

      Android 기기(휴대전화, 스마트폰, 태블릿)의 Arduino에 연결된 DHT11 센서로부터 공기 습도 및 온도 데이터를 수신하는 예를 생각해 보겠습니다. Arduino는 10초마다 DHT11 센서로부터 데이터를 수신하고 HC05 모듈을 통해 Android 장치로 보냅니다.

      다음 부분이 필요합니다.

      • 아두이노 보드
      • 프로토타이핑 보드
      • DHT11 센서
      • 블루투스 모듈 HC05
      • 연결 전선
      • Android 휴대전화 또는 태블릿

      그림에 표시된 회로를 조립해 보겠습니다.


      우리는 다음을 얻습니다:


      Arduino 보드에 스케치를 업로드해 보겠습니다(아래 참조). DHT11 센서로부터 습도 및 온도 데이터를 수신하고 Android 장치의 HC05 모듈을 통해 직렬 포트(하드웨어)로 데이터를 출력합니다.

      H" // 상수 #define DHTPIN 8 // DATA 접점 연결용 핀 #define DHTTYPE DHT11 // 센서 DHT 11 #define INTERVAL_GET_DATA 2000 // 측정 간격, ms // DHT 객체의 인스턴스 생성 DHT dht(DHTPIN, DHTTYPE); // 측정 간격에 대한 변수 unsigned long millis_int1=0; int pos=0; // SoftwareSerial.h 라이브러리 포함 #include SoftwareSerial mySerial(2, 3); // rx 및 tx 핀을 각각 지정 void setup() ( Serial.begin(9600); // 직렬 포트 시작 mySerial.begin(9600); dht.begin(); // DHT 시작 Serial.println("start prg " ); ) void loop() ( if(millis()-millis_int1 >= INTERVAL_GET_DATA) ( pos=1-pos; if(pos==0) ​​​​( // DHT11에서 습도 데이터 가져오기 inthumidity = dht.readHumidity (); // 직렬 포트 모니터로 출력 Serial.print("humidity=");Serial.println(humidity); mySerial.print("H=");mySerial.println(humidity); ) else ( // DHT11에서 습도 데이터 가져오기 int temp = dht.readTemperature(); // 직렬 포트 모니터로 출력 Serial.print("온도=");Serial.println(temp); mySerial.print("T=");mySerial .println(temp) ; ) // 계산 간격 시작 millis_int1=millis(); ) )

      HC05 블루투스 모듈을 통해 Arduino에서 보낸 데이터가 Android 기기에서 수신되는지 확인해 보겠습니다. 안드로이드 기기에 블루투스 터미널 프로그램을 설치해 보겠습니다. 프로그램에서 HC05 모듈과의 연결을 설정합니다.


      그리고 HC05 모듈을 통해 Arduino에서 오는 데이터 수신을 관찰합니다.


      그리고 Arduino IDE 직렬 포트 모니터에 데이터를 출력합니다.


      자주 묻는 질문(FAQ)

      1. AT 명령에 대한 모듈의 응답이 없습니다.
      • 모듈이 올바르게 연결되었는지 확인하십시오.
      • 모듈의 KEY 핀(또는 핀 34)과 3.3V의 연결을 확인하세요.
      • 직렬 포트의 설정을 확인하십시오(속도 38400 보드, 모듈의 경우일 수 있음). 다른 제조업체끄다).
      2. Android 기기를 블루투스 모듈에 연결할 수 없습니다.HC05
      • 모듈과 전원 공급 장치의 연결을 확인하십시오. 모듈의 LED가 빠르게 깜박여야 합니다(네트워크 검색).
      • 모듈의 KEY 핀(또는 핀 34)이 3.3V에서 연결 해제되었는지 확인하세요.
      • AT 명령(AT+ROLE=0)을 사용하여 슬레이브 역할을 설정합니다.
      3. 데이터는 다음으로 전송되지 않습니다.안드로이드 기기
      • HC05 블루투스 모듈이 Arduino 보드에 제대로 연결되어 있는지 확인하세요.
      • 전송 속도 아두이노 데이터 HC05는 AT+UART AT 명령을 사용하여 설정된 것과 일치해야 합니다.