아두이노 나노 - BLE | Arduino Nano - BLE

이 튜토리얼은 Arduino Nano를 사용하여 BLE HM-10 모듈을 제어하는 방법을 안내합니다. 자세히 보면, 우리는 다음을 배우게 됩니다:

Arduino Nano BLE

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

이 튜토리얼이 블루투스 저에너지(BLE, 블루투스 4.0)에 중점을 두고 있다는 점을 고려하는 것이 중요합니다. 클래식 블루투스(블루투스 2.0)에 대한 정보가 필요하다면, 비슷한 튜토리얼 아두이노 나노 - 블루투스를 참조해 주세요.

준비물

1×Arduino Nano Amazon
1×USB A to Mini-B USB cable 쿠팡 | Amazon
1×HM-10 Bluetooth Module Amazon
1×Jumper Wires Amazon
1×(Optional) 9V Power Adapter for Arduino Nano Amazon
1×(Recommended) Screw Terminal Expansion Board for Arduino Nano 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

HM-10 블루투스 모듈에 대하여

HM-10은 시리얼에서 블루투스 저에너지로 변환하는 역할을 하는 시리얼 BLE 모듈입니다. 이 모듈은 다음과 같은 기능을 가지고 있습니다:

  • 시리얼 RX 핀에서 데이터를 수신하고 BLE를 통해 스마트폰과 같은 페어링된 디바이스로 전송합니다.
  • BLE에서 (페어링된 디바이스로부터) 데이터를 수신하여 시리얼 TX 핀으로 전송합니다.

아두이노 나노가 스마트폰 앱(Android/iOS)과 통신하는 데 사용될 때 다음과 같은 단계가 진행됩니다:

  • 아두이노 나노는 시리얼/소프트웨어시리얼 핀을 통해 HM-10 블루투스 모듈에 연결됩니다.
  • HM-10 블루투스 모듈은 스마트폰 앱과 페어링됩니다.
  • 아두이노 나노에서 스마트폰 앱으로 데이터는 시리얼/소프트웨어시리얼을 통해 보내집니다.
  • 스마트폰 앱에서 데이터는 아두이노 나노가 시리얼/소프트웨어시리얼에서 읽음으로써 받습니다.
  • 아두이노 나노에서 추가 BLE 코드는 필요하지 않습니다.

BLE HM-10 모듈 핀배열

BLE pinout

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

  • BKR 핀: 이 핀은 모듈의 작동 방식을 제어하는 데 사용됩니다. 초보자는 이 핀을 무시해야 합니다.
  • RX 핀: 이것은 직렬 데이터 핀으로, 아두이노 나노의 TX 핀에 연결되어야 합니다. 이 핀에서 받은 데이터는 블루투스로 전송됩니다.
  • TX 핀: 이것은 직렬 데이터 핀으로, 아두이노 나노의 RX 핀에 연결되어야 합니다. BLE을 통해 받은 데이터는 직렬 데이터로 이 핀으로 전송됩니다.
  • GND 핀: 이것은 전원 핀으로, 전원원의 GND에 연결되어야 합니다.
  • VCC 핀: 이것은 전원 핀으로, 공급 전압의 3.3V에 연결되어야 합니다.
  • STATE 핀: 이 핀은 작동 상태를 나타냅니다.
    • 대기 모드에서 깜박임 - 500ms 펄스 반복;
    • 연결 상태에서 켜짐 - 고수준.

    ※ NOTE THAT:

    • HM-10에 필요한 핀은 VCC, GND, RX, TX의 단 4개뿐입니다.
    • 일부 제조사는 이 네 개의 핀만으로 HM-10을 제작합니다.

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

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

단계를 마치면 기존 Arduino Nano 코드를 변경하거나 Bluetooth 특정 코드를 추가하지 않고도 Arduino IDE의 시리얼 모니터를 사용하는 것처럼 Arduino Nano에서 데이터를 송수신할 수 있게 됩니다.

선연결

Arduino Nano BLE wiring diagram

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

배선 테이블. 배선용 테이블입니다.

Arduino Nano Pins HM-10 Bluetooth Pins
RX (Pin 0) TX
TX (Pin 1) RX
5V VCC
GND GND
BKR (NOT connected)
STATE (NOT connected)

※ NOTE THAT:

아두이노 나노 코드는 Serial 객체를 Serial1, Serial2 또는 SoftwareSerial(사용 가능한 경우)과 같은 대안으로 대체하여 다른 핀을 사용할 수 있습니다.

블루투스 프로그래밍 방법

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

아두이노 나노가 스마트폰의 블루투스 앱으로 데이터를 전송합니다

아두이노 나노 보드에서 스마트폰의 블루투스 애플리케이션으로 데이터를 보내기 위해, 다음과 같은 아두이노 나노 코드를 사용할 수 있습니다. 이 예제는 아두이노 나노에서 스마트폰 앱으로 매 초마다 “Arduino here, command me!”라는 메시지를 전송하는 방법을 보여줍니다.

/* * 이 Arduino Nano 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-ble */ void setup() { Serial.begin(9600); } void loop() { Serial.println("Arduino here, command me!"); delay(1000); }

사용 방법

사용 가능한 장치를 검색하고 HM-10 모듈을 선택하세요.

아두이노 나노 보드와 스마트폰 사이에 BLE를 사용하여 연결을 설정하기 위해 코드를 사용하는 방법은 다음과 같습니다:

  • 스마트폰에 블루투스 시리얼 모니터 앱을 다운로드하고 설치하세요.
  • 배선도에 따라 HM-10 블루투스 모듈을 아두이노 나노 보드에 연결하세요.
  • 아두이노 IDE를 열고, 제공된 코드를 복사하여 아두이노 나노 보드에 업로드하세요. 코드를 업로드하는 데 어려움을 겪는 경우, 블루투스 모듈의 TX 및 RX 핀을 분리한 후 코드를 업로드하고, 그 다음 RX/TX 핀을 다시 연결하세요.
  • 아두이노 IDE에서 시리얼 모니터를 실행하세요.
  • 스마트폰에서 블루투스 시리얼 모니터 앱을 열고 BLE 모드로 전환하세요.
  • 사용 가능한 기기를 검색하고 HM-10 모듈을 선택하세요.
Bluetooth Serial Monitor App

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

Bluetooth Serial Monitor pairing

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

Bluetooth Serial Monitor App

아두이노 IDE의 시리얼 모니터에 표시된 출력을 살펴보세요.

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

필요한 단계를 수행하고 코드를 실행하면, 아두이노 IDE의 시리얼 모니터와 안드로이드 애플리케이션에 표시된 데이터가 같음을 볼 수 있습니다.

블루투스 앱이 아두이노 나노로 데이터를 보냅니다

아래 코드는 다음 작업을 수행합니다:

  • 블루투스 앱에서 아두이노 나노 보드로 데이터 전송하기
  • 아두이노 나노 보드가 들어오는 데이터를 읽은 다음, 블루투스 기기로 응답을 다시 보내기
/* * 이 Arduino Nano 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-ble */ // NOTE: 다른 핀에 블루투스 모듈을 연결한 경우 Serial을 다른 Serial/Software Serial로 변경하세요 void setup() { Serial.begin(9600); } void loop() { Serial.println(F("Arduino here, command me!")); if (Serial.available()) { // 데이터가 들어오는 경우 String command = Serial.readStringUntil('\n'); // 개행 문자를 만날 때까지 문자열 읽기 if (command == "LED OFF") { Serial.println("LED is turned OFF"); // 스마트폰 앱에 동작 보고 // TODO: 여기서 LED 제어 } else if (command == "LED ON") { Serial.println("LED is turned ON"); // 스마트폰 앱에 동작 보고 // TODO: 여기서 LED 제어 } } delay(500); }

사용 방법

아두이노 나노와 안드로이드 앱을 함께 사용하기 위한 방법은 다음과 같습니다:

  • Arduino IDE를 실행하고 제공된 코드를 복사하세요.
  • Upload 버튼을 클릭해서 코드를 Arduino Nano 보드로 전송하세요.
  • Arduino IDE에서 시리얼 모니터를 엽니다.
  • 앞서 주어진 예시의 지시사항을 따라 Android 앱을 시작하고 HM-10 블루투스 모듈과 페어링하세요.
  • 연결 후, Android 앱에서 "LED ON" 또는 "LED OFF"를 입력하고 "SEND" 버튼을 누르세요.
Bluetooth Serial Monitor App

아두이노 나노 보드는 데이터를 받아 시리얼 포트에 응답을 출력할 것입니다. 그 후, 이 데이터는 블루투스 앱으로 전송될 것입니다. 마지막으로, 결과는 안드로이드 앱에서 볼 수 있습니다.

Bluetooth Serial Monitor App

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

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

위의 단계를 완료하면, 아두이노 IDE의 시리얼 모니터와 안드로이드 앱에 표시되는 데이터가 일치하는 것을 확인할 수 있을 것입니다.

아두이노 나노 코드 - 스마트폰 앱을 통한 BLE로 LED 제어

다음 아두이노 나노 예제 코드는 블루투스 시리얼 모니터 앱을 통해 얻은 명령어 “ON”“OFF”를 사용하여 통합 LED를 켜고 끄는 데 사용됩니다.

/* * 이 Arduino Nano 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-ble */ #include <SoftwareSerial.h> #define SOFT_RX 4 // 블루투스 모듈의 TX에 연결된 아두이노 나노 핀 #define SOFT_TX 5 // 블루투스 모듈의 RX에 연결된 아두이노 나노 핀 #define LED_PIN 12 // LED에 연결된 아두이노 나노 핀 SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); pinMode(LED_PIN, OUTPUT); // 디지털 핀을 출력으로 설정: } 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"); // 스마트폰 앱에 동작 보고 } } }

다음 링크에서 제공되는 안내서에서 자세한 정보를 확인할 수 있습니다. Arduino Nano가 블루투스/BLE를 통해 LED를 제어하는 방법에 관한 튜토리얼을 참조하세요. 지침에 대한 자세한 내용은 Arduino Nano가 블루투스/BLE를 통해 LED를 제어하는 방법 튜토리얼을 참조하십시오.

아두이노 나노 코드 - 스마트폰 앱을 통해 BLE로 서보 모터 제어

아래의 아두이노 나노 코드는 블루투스 시리얼 모니터 앱에서 각도 값을 받는 데 사용됩니다. 이 각도 값은 서보 모터의 각도를 제어하는 데 사용됩니다.

/* * 이 Arduino Nano 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-ble */ #include <Servo.h> #include <SoftwareSerial.h> #define SOFT_RX 4 // 아두이노 나노의 TX에 연결된 블루투스 모듈 핀 #define SOFT_TX 5 // 아두이노 나노의 RX에 연결된 블루투스 모듈 핀 #define SERVO_PIN 12 // 서보 모터에 연결된 아두이노 나노 핀 SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); Servo servo; // 서보를 제어하기 위한 서보 객체 생성 int pos = 0; // 서보 위치를 저장할 변수 void setup() { Serial.begin(9600); bluetooth.begin(9600); servo.attach(SERVO_PIN); } void loop() { if (bluetooth.available()) { // 데이터가 수신되면 int angle = bluetooth.parseInt(); if (angle >= 0 && angle <= 180) { servo.write(angle); // 서보 회전 bluetooth.print("Rotated servo to angle: ");// 스마트폰 앱에 동작 보고 bluetooth.println(angle); } else { bluetooth.print("Invalid angle: ");// 스마트폰 앱에 유효하지 않은 값 보고 bluetooth.println(angle); } } }

아두이노 나노가 블루투스/BLE를 통해 서보 모터를 제어하는 방법에 대한 자세한 설명은 아두이노 나노가 블루투스/BLE를 통해 서보 모터를 제어하는 방법 튜토리얼에서 확인할 수 있습니다. 지침을 자세히 살펴보려면 아두이노 나노가 블루투스/BLE를 통해 서보 모터를 제어하는 방법 튜토리얼을 확인하십시오. 지침을 더 잘 이해하고 싶으시다면 아두이노 나노가 블루투스/BLE를 통해 서보 모터를 제어하는 방법 튜토리얼을 참조하십시오.

Bluetooth Serial Monitor 앱이 유용하다고 생각되시면, Play Store에서 별 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!