ESP8266 - BLE | ESP8266 - BLE

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

ESP8266 NodeMCU BLE

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

이 튜토리얼은 특히 블루투스 저에너지(BLE, 또는 블루투스 4.0)에 대한 것임을 알아두는 것이 중요합니다. 클래식 블루투스(블루투스 2.0)에 대한 정보가 필요하다면, 비슷한 튜토리얼 ESP8266 - 블루투스를 참조하십시오.

준비물

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

HM-10 블루투스 모듈 정보

HM-10은 시리얼에서 블루투스 저에너지 어댑터로 작동하는 시리얼 BLE 모듈입니다. 다음과 같은 작업을 수행합니다:

  • 시리얼 RX 핀에서 데이터를 가져와 BLE를 통해 스마트폰과 같은 연결된 장치에 보냅니다.
  • BLE에서 데이터를 수신하여(페어링된 장치에서) 시리얼 TX 핀으로 전송합니다.

ESP8266이 스마트폰 앱(Android/iOS)과 통신하는 경우, 다음과 같은 단계가 진행됩니다:

  • ESP8266과 HM-10 Bluetooth 모듈 간에 시리얼/소프트웨어시리얼 핀을 통해 연결이 설정됩니다.
  • HM-10 Bluetooth 모듈이 스마트폰 앱과 페어링됩니다.
  • ESP8266에서 스마트폰 앱으로 데이터를 보내려면 시리얼/소프트웨어시리얼로 데이터를 전송합니다.
  • 스마트폰 앱에서 ESP8266으로 데이터를 수신하려면 시리얼/소프트웨어시리얼에서 데이터를 읽습니다.
  • ESP8266에 추가적인 BLE 코드가 필요하지 않습니다.

BLE HM-10 모듈 핀배열

BLE pinout

HM-10 BLE 모듈에는 6개의 핀이 있습니다:

  • BKR 핀은 모듈의 동작을 제어하는 데 사용됩니다. 만약 초보자라면 이 핀은 무시해도 됩니다.
  • RX 핀은 시리얼 데이터 핀이며 ESP8266의 TX 핀에 연결되어야 합니다. 이 핀에서 받은 데이터는 Bluetooth로 보내질 것입니다.
  • TX 핀은 시리얼 데이터 핀이며 ESP8266의 RX 핀에 연결되어야 합니다. BLE을 통해 받은 데이터는 시리얼 데이터로서 이 핀을 통해 전송될 것입니다.
  • GND 핀은 전력 핀이며 전원 소스의 GND에 연결되어야 합니다.
  • VCC 핀은 전력 핀이며 공급 전압의 3.3V에 연결되어야 합니다.
  • STATE 핀은 작동 상태를 나타냅니다:
    • 대기 모드에서 깜박임 - 500ms 펄스를 반복합니다;
    • 연결 상태에서 켜짐 - 고수준에서 있을 것입니다.

    ※ NOTE THAT:

    • HM-10에는 VCC, GND, RX, TX 네 개의 핀만 필요합니다.
    • 일부 HM-10 제조사는 이 네 개의 핀만으로 제조합니다.

블루투스 시리얼 모니터 앱에 대하여

블루투스 시리얼 모니터 앱을 사용하려면 먼저 ESP8266을 HM-10 블루투스 모듈에 연결해야 합니다. 그 다음, 스마트폰에 앱을 다운로드하고 설치하세요. 마지막으로, 앱을 열고 HM-10 블루투스 모듈에 연결하세요.

이 단계들을 모두 마치면, 아두이노 IDE의 시리얼 모니터를 사용하는 것처럼 ESP8266에서 데이터를 송수신할 수 있게 됩니다. 이를 위해 ESP8266 코드를 변경하거나 블루투스 관련 코드를 추가할 필요가 없습니다.

선연결

ESP8266 NodeMCU BLE wiring diagram

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

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

배선 테이블은 다양한 구성 요소 간의 연결을 표시하는 차트 유형입니다. 배선 테이블은 여러 구성 요소 간의 연결을 보여주는 차트입니다.

ESP8266 Pins HM-10 Bluetooth Pins
Pin D7 TX
Pin D6 RX
5V VCC
GND GND
BKR (NOT connected)
STATE (NOT connected)

※ NOTE THAT:

ESP8266 코드는 Serial 객체 대신 Serial1, Serial2 또는 SoftwareSerial(사용 가능한 경우)과 같은 대체 옵션으로 다른 핀을 사용하도록 수정될 수 있습니다.

블루투스 프로그래밍 방법

블루투스에 특별한 프로그래밍이 필요하지 않으며, 시리얼 프로그래밍만 필요합니다.

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

ESP8266 보드에서 스마트폰의 블루투스 앱으로 데이터를 전송하려면 다음 코드를 사용할 수 있습니다. 이 예제는 ESP8266에서 스마트폰 앱으로 매초 “ESP8266 여기 있어, 명령을 내려줘!”라는 메시지를 전송하는 것을 보여줍니다.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-ble */ #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 환경 설정하는 방법 튜토리얼을 확인해보세요.
  • 다이어그램에 표시된 대로 컴포넌트를 연결하세요.
  • USB 케이블을 사용하여 컴퓨터에 ESP8266 보드를 연결하세요.
  • 컴퓨터에서 Arduino IDE를 엽니다.
  • 올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E Module))와 해당 COM 포트를 선택하세요.

ESP8266 보드를 BLE를 통해 스마트폰과 통신하도록 설정하려면 다음 단계를 따라야 합니다:

  • 블루투스 시리얼 모니터 앱을 획득하여 스마트폰에 설치하세요.
  • 연결도에 따라 HM-10 블루투스 모듈을 ESP8266 보드에 연결하세요.
  • 아두이노 IDE를 열고, 위에 주어진 코드를 복사한 뒤 ESP8266 보드에 업로드하세요. 코드를 업로드할 수 없는 경우, 블루투스 모듈의 TX 및 RX 핀을 분리한 다음 코드를 업로드하고 RX/TX 핀을 다시 연결하세요.
  • 아두이노 IDE에서 시리얼 모니터를 실행하세요.
  • 스마트폰에서 블루투스 시리얼 모니터 앱을 열고 BLE 모드를 선택하세요.
Bluetooth Serial Monitor App

스마트폰을 HM-10 블루투스 모듈에 연결하세요.

Bluetooth Serial Monitor pairing

안드로이드 앱의 결과를 조사하십시오.

Bluetooth Serial Monitor App

아두이노 IDE의 시리얼 모니터에 표시된 출력을 검토하십시오.

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-ble */ #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); }

사용 방법

  • 다이어그램에 표시된 대로 구성 요소를 연결하세요.
  • USB 케이블을 사용하여 ESP8266 보드를 컴퓨터에 연결하세요.
  • 컴퓨터에서 아두이노 IDE를 열세요.
  • 올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E 모듈))와 해당 COM 포트를 선택하세요.

다음은 ESP8266과 안드로이드 앱을 사용하여 코드를 사용하는 방법입니다:

  • Arduino IDE를 열고 제공된 코드를 복사하여 시작하세요.
  • Upload 버튼을 클릭하여 코드를 ESP8266 보드로 전송하세요.
  • 이제 Arduino IDE에서 시리얼 모니터를 엽니다.
  • 다음으로, Android 앱을 열고 이전 예제의 지시에 따라 HM-10 블루투스 모듈과 페어링하세요.
  • 마지막으로, Android 앱에서 "LED ON" 또는 "LED OFF"를 입력하고 "SEND" 버튼을 누르세요.
Bluetooth Serial Monitor App

ESP8266 보드가 데이터를 받고, 시리얼 포트에 응답을 출력할 것입니다. 이 응답은 블루투스 앱으로 전송되며, 결과는 안드로이드 앱에서 확인할 수 있습니다.

Bluetooth Serial Monitor App

아두이노 IDE의 시리얼 모니터에 표시된 출력을 검사하십시오.

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 코드 - 스마트폰 앱을 통한 BLE를 이용한 LED 제어

이 ESP8266 예제 코드는 “켜기”“끄기” 명령어를 사용합니다. 이 명령어들은 Bluetooth Serial Monitor 앱을 통해 수신되며 내장 LED를 켜거나 끄는 데 사용됩니다.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-ble */ #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이 Bluetooth/BLE을 통해 LED를 제어 튜토리얼을 방문하면 지침을 더 자세히 살펴볼 수 있습니다. 지침을 더 잘 이해하려면 ESP8266이 Bluetooth/BLE을 통해 LED를 제어 튜토리얼을 확인하세요. 지침을 철저히 검토하려면 ESP8266이 Bluetooth/BLE을 통해 LED를 제어 튜토리얼을 참조하세요.

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

  1. 아래의 ESP8266 코드는 각도 값을 수신하기 위한 목적입니다. 2. 이 값은 Bluetooth Serial Monitor 앱을 통해 전송됩니다. 3. 각도 값은 서보 모터의 각도를 제어하는 데 사용됩니다.
/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-ble */ #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 controls Servo Motor via Bluetooth/BLE 제목의 튜토리얼에서 지침에 대한 추가 정보를 확인할 수 있습니다. 지침에 대해 더 자세히 알아보려면, ESP8266 controls Servo Motor via Bluetooth/BLE 튜토리얼을 참조해 주세요.

블루투스 시리얼 모니터 앱이 유용하다고 생각되시면, 플레이 스토어에서 별 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!