아두이노 나노 - 블루투스 | Arduino Nano - Bluetooth

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

Arduino Nano Bluetooth

이 튜토리얼의 목적:

이 튜토리얼은 클래식 블루투스(블루투스 2.0)에 중점을 둡니다. 블루투스 로우 에너지 - BLE (블루투스 4.0)에 대한 정보가 필요하시다면, 이 비슷한 튜토리얼을 참조해 주세요: 아두이노 나노 - 블루투스 로우 에너지

준비물

1×Arduino Nano Amazon
1×USB A to Mini-B USB cable 쿠팡 | Amazon
1×HC-05 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
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

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

HC-05는 시리얼 블루투스 모듈로 시리얼에서 블루투스로의 변환기 역할을 합니다. 다음과 같은 작업을 수행합니다:

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

구체적으로, 아두이노 나노가 스마트폰 앱(Android/iOS)과 통신하는 것과 관련하여:

  • 아두이노 나노는 시리얼/소프트웨어시리얼 핀을 통해 HC-05 블루투스 모듈에 연결되어 있습니다.
  • HC-05 블루투스 모듈은 스마트폰 앱과 연결됩니다.
  • 아두이노 나노는 시리얼/소프트웨어시리얼로 데이터를 보내서 스마트폰 앱에 데이터를 전송합니다.
  • 아두이노 나노는 시리얼/소프트웨어시리얼로부터 데이터를 읽어 스마트폰 앱에서 데이터를 수신합니다.
  • 아두이노 나노에는 특별한 블루투스 코드가 필요하지 않습니다.

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

Bluetooth pinout

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

  • 사용 가능/키 핀: 이 핀은 데이터 모드(LOW로 설정)와 명령 모드(HIGH로 설정) 사이를 전환하는 데 사용됩니다. 연결되지 않은 경우 기본적으로 데이터 모드에 있습니다.
  • VCC 핀: 전원 핀, 이 핀은 공급 전압의 +5V에 연결해야 합니다.
  • GND 핀: 전원 핀, 이 핀은 전원원의 GND에 연결해야 합니다.
  • TX 핀: 시리얼 데이터 핀, 이 핀은 아두이노 나노의 RX 핀에 연결해야 합니다. 블루투스를 통해 받은 데이터는 시리얼 데이터로 이 핀에 전송됩니다.
  • RX 핀: 시리얼 데이터 핀, 이 핀은 아두이노 나노의 TX 핀에 연결해야 합니다. 이 핀에서 받은 데이터는 블루투스로 전송됩니다.
  • 상태: 상태 핀은 온보드 LED에 연결되어 있으며, 블루투스가 올바르게 작동하는지 확인하기 위한 피드백으로 사용할 수 있습니다.

그럼에도 불구하고, 기본 기능을 수행하기 위해 HC-05 블루투스 모듈의 4개 핀만 아두이노 나노에 연결되어야 합니다.

HC-05 블루투스 모듈에는 또한 두 개의 내장된 구성요소가 있습니다:

모듈의 상태를 나타내는 LED:

  • 2초마다 한 번씩 깜빡임은 모듈이 명령 모드로 들어갔음을 나타냅니다
  • 빠르게 깜빡임은 데이터 모드에서 연결을 기다리고 있음을 나타냅니다
  • 초당 두 번 깜빡임은 데이터 모드에서 연결이 성공적임을 나타냅니다
  • 작동 모드(데이터 또는 명령 모드)를 선택하기 위해 Key/Enable 핀을 제어하는 데 사용할 수 있는 버튼
  • 작동 원리

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

    • 연결된 장치와 데이터를 송수신하는 데 사용되는 데이터 모드
    • 설정을 구성하는 데 사용되는 명령 모드

    다행히도, HC-05 블루투스 모듈은 기본 설정을 사용하여 아무런 구성 없이도 아두이노 나노와 함께 작동할 수 있습니다.

    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 앱은 아두이노 IDE의 시리얼 모니터와 비슷한 사용자 인터페이스를 가진 모바일 애플리케이션입니다. 이 앱은 Bluetooth를 통해 아두이노 나노 장치와 통신합니다. PC의 시리얼 모니터에 연결된 것처럼 아두이노 나노와 상호작용할 수 있으며, 아두이노 나노 코드에 Bluetooth 모듈을 위한 특별한 코드를 추가할 필요가 없습니다. 이를 위해 다음과 같은 단계를 따르십시오:

    • 아두이노 나노를 HC-05 블루투스 모듈에 연결하세요
    • 스마트폰에 블루투스 시리얼 모니터 앱을 설치하세요
    • 앱을 열고 HC-05 블루투스 모듈과 페어링하세요

    이제 Arduino IDE의 시리얼 모니터와 같은 방식으로 Arduino Nano에서 데이터를 보내고 받을 수 있습니다. 기존의 Arduino Nano 코드를 수정하거나 새로운 Arduino Nano 코드에 블루투스 코드를 추가할 필요가 없습니다.

    선연결

    Arduino Nano Bluetooth wiring diagram

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

    Table of Wiring: 배선 표

    Wiring Chart: 배선 차트

    Chart of Wiring: 배선 차트

    Arduino Nano Pins HC-05 Bluetooth Pins
    RX (Pin 0) TX
    TX (Pin 1) RX
    5V VCC
    GND GND
    Enable/Key (NOT connected)
    State (NOT connected)

    ※ NOTE THAT:

    아두이노 나노 코드에서 Serial 객체를 다른 Serial1, Serial2,... 또는 사용 가능한 경우 SoftwareSerial로 변경함으로써 다른 아두이노 나노 핀을 사용할 수 있습니다.

    블루투스 프로그래밍 방법

    블루투스를 위한 특정 코드는 필요 없습니다. 단지 시리얼 코드를 사용하면 됩니다.

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

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

    이 예에서는 아두이노 나노가 매초 스마트폰의 블루투스 앱에 “아두이노 여기, 명령을 내려주세요!”라고 전송하게 됩니다.

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

    사용 방법

    • 스마트폰에 Bluetooth Serial Monitor 앱을 다운로드하고 설치하세요.
    • 배선도에 따라 HC-05 블루투스 모듈을 아두이노 나노에 연결하세요.
    • 아두이노 IDE를 열고, 코드를 복사한 뒤 IDE에 붙여넣으세요.
    • 아두이노 IDE의 Upload 버튼을 클릭해 아두이노 나노에 코드를 업로드하세요. 실패한 경우, 블루투스 모듈의 TX와 RX 핀을 분리한 후 코드를 업로드하고 다시 RX/TX 핀을 연결하세요.
    • 아두이노 IDE에서 시리얼 모니터를 엽니다.
    • 스마트폰에서 Bluetooth Serial Monitor 앱을 열고 클래식 블루투스 모드를 선택하세요.
    Bluetooth Serial Monitor App

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

    Bluetooth Serial Monitor pairing

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

    Bluetooth Serial Monitor App

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

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

    사용 방법

    • 코드를 복사해서 아두이노 IDE에서 열어주세요.
    • 아두이노 IDE에서 Upload 버튼을 클릭하여 코드를 컴파일하고 아두이노 나노로 업로드하세요.
    • 아두이노 IDE에서 시리얼 모니터를 열어주세요.
    • 안드로이드 앱을 시작하고 이전에 했던 것처럼 HC-05 블루투스 모듈과 페어링하세요.
    • 연결되면, 안드로이드 앱에서 "LED ON" 또는 "LED OFF"를 입력하고 "SEND" 버튼을 누르세요.
    Bluetooth Serial Monitor App
    • 아두이노 나노는 데이터를 받아 시리얼 포트에 응답을 출력합니다.
    • 그런 다음 데이터가 블루투스 앱으로 전송됩니다.
    • 결과는 안드로이드 앱에서 확인할 수 있습니다.
    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! 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의 시리얼 모니터와 안드로이드 앱에 표시된 정보가 동일하다는 것을 관찰할 수 있습니다.

    아두이노 나노 코드 - 스마트폰 앱을 통해 블루투스로 LED 제어

    다음 아두이노 나노 예제 코드는 블루투스 시리얼 모니터 앱에서 두 가지 명령어("ON"과 "OFF")를 받아들여 사용하도록 설계되었습니다. 이 명령어들은 내장 LED를 켜고 끄는 데 사용됩니다.

    /* * 이 Arduino Nano 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-bluetooth */ #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가 Bluetooth/BLE을 통해 LED를 제어하는 방법 튜토리얼에서 지시 사항의 더 자세한 설명을 볼 수 있습니다.

    아두이노 나노 코드 - 블루투스를 통해 스마트폰 앱으로 서보 모터 제어

    아래의 아두이노 나노 코드는 . * 각도 값을 받습니다. . * 블루투스 시리얼 모니터 앱으로부터 . * 서보 모터의 각도를 제어하기 위해.

    /* * 이 Arduino Nano 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano/arduino-nano-bluetooth */ #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); } } }

    Arduino Nano가 Bluetooth/BLE를 통해 서보 모터를 제어 튜토리얼에서 지시 사항을 더 자세히 볼 수 있습니다. Arduino Nano가 Bluetooth/BLE를 통해 서보 모터를 제어 튜토리얼에서 지시 사항을 더 철저히 살펴볼 수 있습니다. 지시 사항에 대한 종합적인 검토를 원하시면 Arduino Nano가 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!