블루투스 HC05 셋팅하기

블루투스를 바로 구매해서 사용할 수는 없습니다. 아무리 적어도 이 블루투스가 어떤 통신속도로 움직이는지 확인은 필요합니다. 사실 거의 대부분 HC05 제품은 통신속도 38400으로 셋팅이 되어 있기는 합니다만 그래도 이 부분을 알고 넘어가는 것이 좋습니다. 왜냐하면 일부 제품들은 다른 값으로 셋팅되어 있기도 하기 때문이지요.

아래 방법대로 해 보시고, BAUDRATE 가 몇인지 확인해 보시고, 우리의 최종 코드에 그 BAUDRATE 숫자를 입력해 줘야 합니다.

블루투스를 아두이노에 연결하기

블루투스를 셋팅하기 위해서는 블루투스와 아두이노를 연결할 필요가 있습니다. PC 로 바로 연결하는 방법도 있기는 있습니다만 그 방법을 사용하기 위해서는 다른 장비가 또 필요합니다. 우리는 아두이노를 잘 활용해서 블루투스를 셋팅할 수 있습니다. 다만 아두이노의 소스를 약간 바꿀 필요가 있습니다.

블루트스 셋팅용 아두이노 소스 코드

코드가 계속 업데이트 될 수 있습니다. 최신 코드는 다음 링크에서 받을 수 있습니다.
https://github.com/happythingsmaker/Bluetooth_Baud_Finder/blob/master/Bluetooth_Baud_Finder.ino

/*********************************************************
    BLUETOOTH BAUD FINDER
    This is an Arduino Code for Modifying Bluetooth Setting such as HC05, HM10

    There are many version of Bluetooth Modules
    Everytime I tried to set up bluetooth, I had to select various baudrate settings.

    This code finds baudrate of Bluetooth and set
    the Software Serial Communication based on the baudrate which was found

    You can start to set up with AT command without boring works

    Written by Eunchan Park (박은찬)
    BSD license, all text above must be included in any redistribution
**********************************************************/
#include <SoftwareSerial.h>
#define PIN_NUMBER_SW_SERIAL_TX     2
#define PIN_NUMBER_SW_SERIAL_RX     3

SoftwareSerial BTSerial(PIN_NUMBER_SW_SERIAL_RX, PIN_NUMBER_SW_SERIAL_TX);
void setup() {
    Serial.begin(9600);
    long tempBaud = checkBaudRate();
//    long tempBaud = 38400;
    BTSerial.begin(tempBaud );
    Serial.begin(tempBaud );
}

void loop() {

    if (Serial.available()) {
        BTSerial.write(Serial.read());
    }

    BTSerial.listen();
    if (BTSerial.available()) {
        Serial.write(BTSerial.read());
    }
}

long checkBaudRate() {

    long baud[18] = {300, 1200, 2400, 4800, 9600, 19200, 38400,
                     57600, 74880, 115200, 230400, 250000, 500000,
                     1000000, 23400, 460800, 921600, 1382400
                    };
    Serial.println("http://HappyThingsMaker.com");
    int repeatCount = 10;
    while (repeatCount --) {
        for (int i = 0; i < 18 ; i ++) {
            Serial.print("TESTING BAUD : ");
            Serial.println(baud[i]);
            BTSerial.begin(baud[i]);

            BTSerial.write("AT\r\n");
            BTSerial.listen();
            int innerCount = 0;
            while (1) {
                while (BTSerial.available()) {
                    Serial.println("Received something");
                    Serial.print("FOUND BAUD : ");
                    Serial.println(baud[i]);
                    Serial.print("YOU NEED TO CHANGE TERMINAL BAUD RATE AS : ");
                    Serial.println(baud[i]);
                    Serial.println("WITH <CR> & <NL>");
                    delay(100);
                    return baud[i];
                }
                delay(1);
                if (innerCount ++ > 100) {
                    break;
                }
            }

            //some bluetooth don't react when they receive  <CR> & <NL>
            //in this case, we need to send only AT
            BTSerial.write("AT");

            BTSerial.listen();
            innerCount = 0;
            while (1) {
                while (BTSerial.available()) {
                    Serial.println("Received something");
                    Serial.print("FOUND BAUD : ");
                    Serial.println(baud[i]);
                    Serial.print("YOU NEED TO CHANGE TERMINAL BAUD RATE AS : ");
                    Serial.println(baud[i]);
                    Serial.println("WITHOUT <CR> & <NL>");
                    delay(100);
                    return baud[i];
                }
                delay(1);
                if (innerCount ++ > 100) {
                    break;
                }
            }
        }
    }
}

이대로 복사해서 붙여 넣으시고, 아두이노에 업로드 하시면 됩니다.

혹시라도 아두이노에 업로드 하는 방법이 가물가물하시다면 아두이노로 모터를 구동시켜보기 를 참고하시길 바랍니다.

아두이노와 블루투스 연결하기

우리의 아두이노는 아두이노 나노입니다. 그리고 우리의 아두이노 나노는 아두이노 나노 쉴드에 꽂혀 있습니다. 쉴드에 어디 부분과 연결하면 되는지 사진과 회로도(첨부예정)로 알아보겠습니다.

아두이노 블루투스 배선 색깔
V (VCC) (5v) VCC (5V) 빨간색 추천
G (Ground) (0v) GND 검정색 추천
2 RXD (RX) 아무거나
3 TXD (TX) 아무거나
V (VCC) (5V) EN 아무거나

위처럼 연결하시면 됩니다.

블루투스 껐다 켜기(버튼을 누르고 있으면서)

블루투스를 껐다가 켜야 합니다. 블루투스에 붙어있는 버튼을 누르면서 전원을 켜게 되면 새로운 모드로 진입합니다. 바로 셋팅모드인거지요. 자, 그럼 어떻게하냐구요? 블루투스의 작은 버튼을 누르면서 아두이노의 USB 전원을 꽂으면 됩니다.

최근에 실험해 본 결과, 일부 블루투스는 전원을 뽑지 않고서도 버튼만 눌러도 세팅모드에 진입 가능했습니다.

블루투스 셋팅하기 (혹은 확인하기)

PC 와 연결 후, 아두이노의 시리얼모니터를 실행합니다.(단축키 Ctrl + Shift + M) 실행 후 BaudRate 를 9600 으로 맞추고, Both NL & CR 로 셋팅을 합니다.

이 상태로 기다리고 있으면 자동으로 블루투스의 속도를 찾을 것입니다.

한 번 찾으면 OK란 신호와 함께 셋팅할 수 있는 모드로 들어갑니다. 셋팅은 좀 더 복잡하기 떄문에 다음 장에서 충분히 설명을 하겠습니다.

만약 38400에서 저렇게 FOUND BAUD : 38400 이라고 표시되었다면, 추가 세팅 없이 바로 최종 코드로 넘어가셔도 무방합니다.

만약 이렇게 해서 BaudRate를 찾을 수 없을 수도 있습니다. 정말 절망에 빠질 수 있는 상황이지요. 당황하지 마시고 블루투스 안드로이드 어플리케이션을 이용해서 찾아낼 수도 있습니다. 설명 페이지를 참고하세요


이 곳을 참고했습니다.

http://www.instructables.com/id/Modify-The-HC-05-Bluetooth-Module-Defaults-Using-A/

results matching ""

    No results matching ""