본문 바로가기

아두이노

아두이노 나노 스마트폰과 HM-10 연동하기 1 - 초기 설정

반응형

 

스마트폰과 HM-10 연동하기 1

 

가장 먼저 할 일이 블루투스 4.0 BLE HM-10 모듈에 대해 아는 일이다. 

 

블루투스 4.0 BLE HM-10 모듈 이미지를 참고하고 자세한 작동법은 데이터북을 참고하거나 잘 설명해 놓은 링크를 참고한다.

 

HM-10 모듈에 대한 자세한 설명 링크 - [블루투스4.0BLE]HM-10 Module 사용법(AT 커맨드 포함) http://blog.naver.com/xisaturn/220712028679

 

연결도를 참고한다. 여기서 HM-10의 RX, TX 핀은 소프트웨어 씨리얼을 사용하므로 아두이노의 7번과 8번 핀을 연결한다. 소스코드에 번호가 나오니 참고한다.

 

 

코딩 예제 : 아래 코드를 아두이노 스케치에 입력후 업로드 합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <SoftwareSerial.h>
#define BT_RX 7
#define BT_TX 8
 
SoftwareSerial HM10(BT_RX,BT_TX);  // RX핀(7번)은 HM10의 TX에 연결 
                                   // TX핀(8번)은 HM10의 RX에 연결  
void setup() {  
  Serial.begin(9600);
  HM10.begin(9600);
}
void loop() {
  if (HM10.available()) {
    Serial.write(HM10.read());
  }
  if (Serial.available()) {
    HM10.write(Serial.read());
  }
}
 

 

 

연결 상태를 확인하고 AT 명령어를 사용하여 HM-10 정보를 확인하고 이름 설정

 

- ‘코딩 예제’를 아두이노에 업로드까지 마친 후 시리얼 모니터를 띄워 다음과 같은 AT명령어를 입력하면 HM-10과 아두이노가 정상적으로 연결되었는지 확인할 수 있다. 또한 AT명령어로 HM-10의 이름을 변경할 수 있으며, 스마트폰과 페어링 할 때 유용하도록 이름을 변경한다.

 

  AT : 응답가능여부확인

  결과 : OK

 

 AT_NAME? 이름 조회하기 

결과 : OK+NAME:HMSoft

 

  AT+NAMExxx : 이름 변경

  결과 : OK+Set: xxxx

 

  AT+ADDR? : 블루투스 모듈 주소 읽어오기

  결과 : OK+ADDR:XXXXXXXXXXXX

 

 비밀번호(pin code) 확인  AT+PASS?
결과: OK+Get:000000
비밀번호(pin code) 설정  AT+PASSxxxxxx
⇒ OK+Set:xxxxxx
[Para] is Pin Code, 000000~999999

 

Default: 000000

반드시 하나 더 해주어야 한다. 스마트 폰으로 페어링을 하면 등록거절 되는데 이때 

"HM-10 모듈에 시리얼로 연결해서 AT+TYPE3" 라고 입력해서 세팅하면 연결 가능해 집니다. 디바이스를 찾아서 페이링 PIN 넘어 초기에 "000000" (0이 6개) 넣어주면 페어링 완료!

 

AT+TYPE3 전송

 

결과 : OK+Set:3  ---> 이렇게 해도 페어링이 안되거나 스마트폰에서 블루투스 장치에 등록을 해도 앱에서 안보이는 분???? 

전원을 껏다가 다시 켠다. 리셋 필요. 

 
모듈 Bond 모드 확인/설정
- AT+TYPE?
⇒OK+Get:[para] None
- AT+TYPE[para]
⇒OK+Set:[para]
[para]: 0~3
0: Not need PIN Code
1: Pair not need PIN
2: Pair with PIN
3: Pair and bond
Default: 0

※ 주의 사항 :  시리얼 모니터로 'AT' 를 입력하면 결과값으로 'OK'를 리턴 해야 하지만 제조사마다 옵션 설정이 다르기 때문에 이를 설정해주지 않으면 'OK'를 리턴받지 못하는 경우도 있다. 따라서 옵션 설정에 유의하여 사용하셔야 합니다. 여기서는  'Both NL & CR'로 설정합니다.

 

시리얼 모니터 결과는 아래 씨리얼 모니터 결과 화면을 참고한다.

 

 

 

글 참고 사이트

 

1. 아두이노 블루투스 4.0 BLE HM-10 모듈 / Arduino Bluetooth 4.0 BLE Module https://m.blog.naver.com/eduino/220903237343

 

2. HM-10 블루투스 테스트(2) https://hnydiy.tistory.com/4

 

3. [블루투스 4.0 Hm-10 cc2541] 아두이노 우노 R3 연결 http://blog.whoborn.net/%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4-4-0-hm-10-cc2541-%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8-%EC%9A%B0%EB%85%B8-r3-%EC%97%B0%EA%B2%B0/

 

4. [블루투스4.0BLE]HM-10 Module 사용법(AT 커맨드 포함) http://blog.naver.com/xisaturn/220712028679

 

참고로 윗 부분의 코드를 아래 소스코드와 같이 수정하여 커스터마이징하여 사용할 수 있도록 수정하여 사용하면 된다. 참고하세요.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <SoftwareSerial.h>
 
/**
 *  RX_PIN은 HC 모듈의 TX 핀과 연결될 핀
 *  TX_PIN은 HC 모듈의 RX 핀과 연결될 핀
 */
#define RX_PIN 3
#define TX_PIN 2
#define SERIAL_BAUD 9600
#define HC_BAUD 9600
 
SoftwareSerial HCSerial(RX_PIN, TX_PIN);
 
void setup() {
  Serial.begin(SERIAL_BAUD);
  HCSerial.begin(HC_BAUD);
}
 
void loop() {
  if(HCSerial.available()) {
    // HC 모듈로부터 데이터가 들어온 경우 수행 루틴
    HCFunction();
  }
  if(Serial.available()) {
    // 시리얼 모니터로부터 데이터가 들어온 경우 수행 루틴
    SerialFunction();
  }
}
 
void HCFunction() {
  /** 
   * Init routine
   * HC 모듈로부터 들어온 데이터를 시리얼 모니터로 출력 
   * 커스터마이징할 함수 영역
   */
  Serial.write(HCSerial.read());
}
 
void SerialFunction() {
  /**
   * Init routine
   * 시리얼 모니터로부터 들어온 데이터를 HC 모듈로 출력
   * 커스터마이징할 함수 영역
   */
  HCSerial.write(Serial.read());
}

 

반응형