ESP8266 - 블루투스 | ESP8266 - Bluetooth

이 튜토리얼은 ESP8266을 사용하여 Bluetooth HC-05 모듈을 제어하는 방법을 안내합니다. 구체적으로, 우리는 다음을 배울 것입니다:

ESP8266 NodeMCU Bluetooth

이 튜토리얼의 목적은 다음과 같습니다:

이 튜토리얼은 클래식 블루투스(Bluetooth 2.0)에 초점을 맞추고 있습니다. 블루투스 로우 에너지 - BLE (Bluetooth 4.0)에 대한 정보를 찾고 있다면 이 비슷한 튜토리얼을 참고하십시오: ESP8266 - 블루투스 로우 에너지

준비물

1×ESP8266 NodeMCU Amazon
1×Micro USB Cable Amazon
1×HC-05 Bluetooth Module Amazon
1×Jumper Wires Amazon
1×(Optional) 5V Power Adapter for ESP8266 Amazon
1×(Optional) Screw Terminal Expansion Board for ESP8266 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

HC-05 블루투스 모듈에 대하여

HC-05는 시리얼 블루투스 모듈로, 시리얼에서 블루투스로 변환하는 기능을 합니다. 이는 다음 능력을 가지고 있습니다:

  • 시리얼 RX 핀에서 데이터를 수신하고 그것을 블루투스를 통해 페어링된 장치(예: 스마트폰)로 전송합니다.
  • 블루투스로부터(페어링된 장치로부터) 데이터를 수신하고 그것을 시리얼 TX 핀으로 전송합니다.

특히, ESP8266이 스마트폰 앱(Android/iOS)과 통신할 때:

  • HC-05 블루투스 모듈에는 Serial/SoftwareSerial 핀을 통해 연결됩니다.
  • HC-05 블루투스 모듈은 스마트폰 앱과 페어링됩니다.
  • 스마트폰 앱에 데이터를 보내려면, ESP8266은 단순히 Serial/SoftwareSerial로 보냅니다.
  • 스마트폰 앱에서 데이터를 받으려면, ESP8266은 Serial/SoftwareSerial에서 읽습니다.
  • ESP8266에서는 특별한 블루투스 코드가 필요하지 않습니다.

블루투스 HC-05 모듈 핀배열

Bluetooth pinout

HC-05 블루투스 모듈에는 6개의 핀이 있습니다:

  • 활성화/키 핀: 이 핀은 데이터 모드(LOW로 설정)와 명령 모드(높게 설정) 사이를 전환하는 데 사용됩니다. 연결되지 않은 경우 기본적으로 데이터 모드에 있게 됩니다.
  • VCC 핀: 전원 핀, 이것은 공급 전압의 +5V에 연결되어야 합니다.
  • GND 핀: 전원 핀, 이것은 전원원의 GND에 연결되어야 합니다.
  • TX 핀: 직렬 데이터 핀, 이것은 ESP8266의 RX 핀에 연결되어야 합니다. 블루투스를 통해 받은 데이터는 직렬 데이터로 이 핀을 통해 전송됩니다.
  • RX 핀: 직렬 데이터 핀, 이것은 ESP8266의 TX 핀에 연결되어야 합니다. 이 핀에서 받은 데이터는 블루투스로 전송될 것입니다.
  • 상태: 상태 핀은 기판에 있는 LED에 연결되어 있으며, 블루투스가 제대로 작동하는지 확인하기 위해 피드백으로 사용될 수 있습니다.

그럼에도 불구하고 기본 작업을 위해서는 HC-05 블루투스 모듈의 4개 핀만 ESP8266에 연결되어야 합니다.

HC-05 블루투스 모듈에는 두 개의 통합 구성 요소가 있습니다:

  • 모듈의 상태를 나타내는 LED:
    • 2초마다 한 번 깜박임은 모듈이 명령 모드에 진입했음을 의미합니다
    • 빠르게 깜박이는 것은 데이터 모드에서 연결을 기다리고 있음을 나타냅니다
    • 초당 두 번 깜박임은 데이터 모드에서의 연결이 성공했음을 의미합니다
  • 작동 모드(데이터 또는 명령 모드)를 선택하기 위해 Key/Enable 핀을 제어할 수 있는 버튼

작동 원리

HC-05 블루투스 모듈에는 두 가지 작동 모드가 있습니다:

  • 페어링된 기기와 데이터를 교환하기 위해 사용되는 데이터 모드
  • 매개 변수를 구성하기 위해 사용되는 명령 모드

다행히도 HC-05 블루투스 모듈은 기본 설정을 사용하여 어떠한 구성도 필요로 하지 않고 ESP8266과 작동할 수 있습니다.

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 Serial Monitor 앱은 Arduino IDE의 시리얼 모니터를 닮은 사용자 인터페이스를 가진 모바일 애플리케이션입니다. 이를 통해 ESP8266 코드 내의 블루투스 모듈을 위한 특별한 코드 없이도 Bluetooth를 통해 ESP8266과 통신할 수 있습니다. 이를 위해서는 다음 단계를 따라야 합니다:

  • ESP8266을 HC-05 블루투스 모듈에 연결합니다.
  • 스마트폰에 블루투스 시리얼 모니터 앱을 설치합니다.
  • 앱을 열고 HC-05 블루투스 모듈과 페어링합니다.

이제 Arduino IDE의 시리얼 모니터를 사용하듯이 ESP8266에서 데이터를 송수신 할 수 있습니다. 기존의 ESP8266 코드를 변경하거나 새로운 ESP8266 코드에 블루투스 코드를 추가할 필요가 없습니다.

선연결

ESP8266 NodeMCU Bluetooth wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP8266의 핀 배치ESP8266 및 다른 구성 요소에 전원을 공급하는 방법에 대해 더 많이 보십시오.

Table of Wiring: 배선 테이블

Wiring Chart: 배선 차트

Chart of Wiring: 배선 차트

ESP8266 Pins HC-05 Bluetooth Pins
Pin D7 TX
Pin D6 RX
5V VCC
GND GND
Enable/Key (NOT connected)
State (NOT connected)

※ NOTE THAT:

ESP8266 코드에서 Serial 객체를 Serial1, Serial2 또는 사용 가능한 경우 SoftwareSerial과 같은 다른 것으로 변경하여 다른 ESP8266 핀을 사용할 수 있습니다.

블루투스를 위한 프로그래밍 방법

블루투스에 특화된 프로그래밍은 필요하지 않습니다. 우리는 그저 시리얼 코드를 활용하면 됩니다.

ESP8266이 스마트폰의 블루투스 앱으로 데이터를 전송합니다.

ESP8266에서 스마트폰의 블루투스 앱으로 데이터를 전송하기 위해서는 아래의 코드를 아두이노에 사용해야 합니다:

이 경우, ESP8266이 스마트폰의 Bluetooth 앱에 1초 간격으로 “ESP8266 여기 있음, 명령을 내려주세요!”를 전송하도록 할 것입니다.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #define SOFT_RX D7 // ESP8266 핀이 블루투스 모듈의 TX에 연결됨 #define SOFT_TX D6 // ESP8266 핀이 블루투스 모듈의 RX에 연결됨 SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); } void loop() { Serial.println("ESP8266 here, command me!"); bluetooth.println("ESP8266 here, command me!"); delay(1000); }

사용 방법

Arduino IDE에서 ESP8266을 시작하려면 다음 단계를 따르세요:

  • ESP8266을 Arduino IDE에서 설정하는 방법에 대한 자세한 내용은 ESP8266 환경 설정 방법 튜토리얼을 확인하세요.
  • 다이어그램에 표시된 대로 구성 요소를 연결하세요.
  • ESP8266 보드를 USB 케이블을 사용하여 컴퓨터에 연결하세요.
  • 컴퓨터에서 Arduino IDE를 열세요.
  • 올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E Module))와 해당 COM 포트를 선택하세요.
  • Bluetooth Serial Monitor 앱을 스마트폰에 설치하세요. 연결도에 따라 HC-05 Bluetooth 모듈을 ESP8266에 연결하세요. 코드를 복사하고 Arduino IDE로 열어주세요. Arduino IDE에서 Upload 버튼을 클릭하여 ESP8266에 코드를 업로드하세요. 코드를 업로드하지 못하면 Bluetooth 모듈의 TX 및 RX 핀을 분리한 후 코드를 업로드하고 다시 RX/TX 핀을 연결하세요. Arduino IDE에서 시리얼 모니터를 엽니다. 스마트폰에서 Bluetooth Serial Monitor 앱을 열고 클래식 Bluetooth 모드를 선택하세요.
Bluetooth Serial Monitor App

HC-05 블루투스 모듈과 연결하세요.

Bluetooth Serial Monitor pairing

안드로이드 앱에서 결과를 확인하세요.

Bluetooth Serial Monitor App

ESP8266 통합 개발 환경의 시리얼 모니터에서 결과를 확인하세요.

COM6
Send
ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

아두이노 IDE의 시리얼 모니터와 안드로이드 앱에 표시된 정보가 같다는 것을 관찰할 수 있습니다.

블루투스 앱이 ESP8266으로 데이터 전송

다음 코드가 가능하게 합니다:

  • 블루투스 앱에서 ESP8266으로 데이터 전송
  • ESP8266에 의한 데이터 읽기 및 블루투스 앱으로 응답 보내기
/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #define SOFT_RX D7 // 블루투스 모듈의 TX에 연결된 ESP8266 핀 #define SOFT_TX D6 // 블루투스 모듈의 RX에 연결된 ESP8266 핀 SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); } void loop() { bluetooth.println(F("ESP8266 here, command me!")); if (bluetooth.available()) { // 데이터가 수신되면 String command = bluetooth.readStringUntil('\n'); // 개행 문자를 만날 때까지 문자열 읽기 if (command == "LED OFF") { bluetooth.println("LED is turned OFF"); // 스마트폰 앱에 작업 보고 // TODO: 여기서 LED 제어 } else if (command == "LED ON") { bluetooth.println("LED is turned ON"); // 스마트폰 앱에 작업 보고 // TODO: 여기서 LED 제어 } } delay(500); }

사용 방법

다이어그램에 표시된 대로 구성 요소를 연결하세요.

ESP8266 보드를 USB 케이블을 사용하여 컴퓨터에 연결하세요.

컴퓨터에서 Arduino IDE를 엽니다.

올바른 ESP8266 보드를 선택하세요, 예를 들면 (예: NodeMCU 1.0 (ESP-12E 모듈))와 해당 COM 포트를 선택하세요.

코드를 복사하고 Arduino IDE로 엽니다.

Arduino IDE에서 업로드 버튼을 클릭하여 코드를 컴파일하고 ESP8266에 업로드하세요.

Arduino IDE에서 시리얼 모니터를 엽니다.

이전 예제에서 했던 것처럼 HC-05 블루투스 모듈에 Android 앱을 연결하세요.

연결되면, Android 앱에서 "LED ON" 또는 "LED OFF"를 타이핑하고 "SEND" 버튼을 누르세요.

Bluetooth Serial Monitor App

ESP8266이 데이터를 수신하고 응답을 시리얼 포트에 출력합니다. 이 데이터는 그 다음 블루투스 앱으로 전송되며, 결과는 안드로이드 앱에서 볼 수 있습니다.

Bluetooth Serial Monitor App

ESP8266 통합 개발 환경의 시리얼 모니터 창에서 결과를 확인하세요.

COM6
Send
ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! LED ON LED is turned ON ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! LED OFF LED is turned OFF ESP8266 here, command me! ESP8266 here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

아두이노 IDE의 시리얼 모니터와 안드로이드 앱에 표시된 정보가 동일함을 관찍하게 될 것입니다.

ESP8266 코드 - Bluetooth를 통해 스마트폰 앱으로 LED 제어

이 ESP8266 예제 코드는 “ON”“OFF” 두 가지 명령에 응답합니다. 수신되면 이러한 명령은 Bluetooth 시리얼 모니터 앱을 통해 내장 LED를 켜거나 끄는 데 사용됩니다.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #define SOFT_RX D7 // 블루투스 모듈의 TX에 연결된 ESP8266 핀 #define SOFT_TX D6 // 블루투스 모듈의 RX에 연결된 ESP8266 핀 #define LED_PIN 8 SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); pinMode(LED_PIN, OUTPUT); // ESP8266 핀을 디지털 출력 핀으로 설정 } void loop() { if (bluetooth.available()) { // 데이터가 수신된 경우 String command = bluetooth.readStringUntil('\n'); // 줄바꿈 문자를 만날 때까지 문자열 읽기 if (command == "LED OFF") { digitalWrite(LED_PIN, LOW); // LED 끄기 bluetooth.println("LED is turned OFF"); // 스마트폰 앱에 작업 보고 } else if (command == "LED ON") { digitalWrite(LED_PIN, HIGH); // LED 켜기 bluetooth.println("LED is turned ON"); // 스마트폰 앱에 작업 보고 } } }

다음 튜토리얼에서 지침에 대한 보다 자세한 설명을 찾을 수 있습니다: ESP8266이 블루투스/BLE를 통해 LED를 제어.

ESP8266 코드 - 블루투스를 통해 스마트폰 앱으로 서보 모터 제어

아래의 ESP8266 코드는 . * 각도 값을 수신합니다. . * 블루투스 시리얼 모니터 앱에서 . * 서보 모터의 각도를 제어하기 위해.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #include <Servo.h> #define SOFT_RX D7 // ESP8266 핀이 블루투스 모듈의 TX에 연결됩니다 #define SOFT_TX D6 // ESP8266 핀이 블루투스 모듈의 RX에 연결됩니다 SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); Servo servo; // 서보를 제어하기 위한 서보 오브젝트를 생성합니다 int pos = 0; // 서보 위치를 저장하기 위한 변수 void setup() { Serial.begin(9600); bluetooth.begin(9600); servo.attach(11); // 서보 오브젝트에 11번 핀의 서보를 연결합니다 } void loop() { if (bluetooth.available()) { // 데이터가 수신될 경우 int angle = bluetooth.parseInt(); if (angle >= 0 && angle <= 180) { servo.write(angle); // 서보 회전 bluetooth.print("각도로 서보를 회전시켰습니다: ");// 스마트폰 앱에 동작을 보고합니다 bluetooth.println(angle); } else { bluetooth.print("잘못된 각도: ");// 스마트폰 앱에 유효하지 않은 값을 보고합니다 bluetooth.println(angle); } } }

ESP8266이 Bluetooth/BLE을 통해 서보 모터를 제어합니다 튜토리얼에서 지침을 더 자세히 볼 수 있습니다. 지침을 좀 더 철저히 살펴보려면, ESP8266이 Bluetooth/BLE을 통해 서보 모터를 제어합니다 튜토리얼을 확인하세요. 지침을 더 깊이 알아보려면, ESP8266이 Bluetooth/BLE을 통해 서보 모터를 제어합니다 튜토리얼을 참조하십시오. 지침에 대한 보다 종합적인 이해를 얻으려면, ESP8266이 Bluetooth/BLE을 통해 서보 모터를 제어합니다 튜토리얼로 이동하세요.

Bluetooth Serial Monitor 앱이 도움이 되셨다면, Play 스토어에서 5성 평가를 부탁드립니다. 지원해 주셔서 감사합니다!

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

코멘트

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!