?>

Hard Copy World

HCW

Communication module

Home > Info >

Communication module

Bluetooth Low Energy 모듈 (iBeacon)

페이지 정보

작성자 최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일14-10-05 00:59 조회33,507회 댓글14건

본문

주목!!! 저전력 블루투스인 BLE 모듈의 기초와 활용에 대한 오프라인 강의가 진행중입니다. BLE 모듈을 이용한 통신, 비컨 및 웨어러블 장치 만들기의 기본을 실습을 통해 배우실 수 있습니다. 오프라인 워크샵 페이지에서 확인하세요!! 

 

 

1. BLE (Bluetooth Low Energy) 모듈

BLE(Bluetooth Low Energy) 모듈은 저전력으로 동작하는 블루투스 모듈입니다. 굳이 가격이 비싼 이 모듈을 HC-06 대체용으로 사용할 이유는 별로 없지만 IoT, 웨어러블 프로젝트를 계획하고 계신다면 저전력 때문에라도 BLE 모듈을 이용하셔야겠습니다. 이 모듈은 master/slave 로 설정해서 사용할 수 있고 전원만 넣어주면 별도의 MCU 없이 데이터 통신과 간단한 동작이 가능합니다. 칩은 TI - CC2540 을 사용합니다.

BLE 모듈은 iOS/Android 를 지원하지만 안드로이드는 v4.3(젤리빈) 이상에서만 지원됩니다.

제가 테스트 한 제품은 아래 링크에 있는 제품입니다. (아마도 HM-10 으로 판매되는 제품과 호환 모듈인듯 합니다)

http://www.ebay.com/itm/231189452585?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

ble_12

• BT Version: Bluetooth Specification V4.0 BLE
• Send and receive no bytes limit
• Working frequency: 2.4GHz ISM band
• Modulation method: GFSK(Gaussian Frequency Shift Keying)
• RF Power: 0.01mw-5mw, can modify through AT
Command AT+POWE
• Speed: Asynchronous: 6K Bytes, Synchronous: 6K Bytes
• Security: Authentication and encryption
• Service: Central & Peripheral UUID FFE0,FFE1
• Power: +3.3VDC 50mA
• Open space have 100 Meters with iphone4s
• Power: In sleep mode 400uA~1.5mA, Active mode 8.5mA.
• Working temperature:–5 ~ +65 Centigrade
• Dimension: 26.9mm x 13mm x 2.2mm

 

2. AT command

BLE 모듈은 AT 커맨드를 통해 다양한 설정과 제어가 가능합니다. MCU, PC 혹은 전용 앱과 무선으로 연결해서 AT 커맨드 실행이 가능합니다. AT 커맨드는 AT+XXX 형태로 string을 전송하면 됩니다. (대문자만 사용!!) 그러면 BLE 모듈에서 OK+XXX string 형태로 해당되는 응답을 줍니다. 모듈은 출고될 때 아래와 같이 default setting을 가지고 있습니다.

Name: HMSoft; Baud: 9600N81; Pin code: 000000; Peripheral Role; transmit mode

 

초기 세팅이 transmit mode 입니다. BLE 모듈은 아래와 같이 3가지 모드를 가지고 있습니다.

On Transmit version: 모듈이 다른 기기와 연결되지 않았을 경우만 UART 를 통해 AT Command 설정이 가능
On Remote version: 모듈이 다른 기기와 연결되지 않았을 경우 UART 를 통해 AT Command 설정이 가능, 연결되었을 경우는 연결된 기기에서 AT Command 설정 가능
On PIO collection version: Only accept AT Command from UART interface when Bluetooth device is not connected with remote device. (이 부분이 좀 이상하네요. transmit 모드와 차이가 없는데...)

 

일반 AT Command

테스트 커맨드 : AT ==> OK (or OK+LOST)

Advertising interval 쿼리 : AT+ADVI? ==> OK+ Get:[Para] (Para: 0~9 까지 지정된 값을 리턴)

Baud rate 쿼리 : AT+BAUD? ==> OK+Get:0 (Para: 0~8까지 지정된 값을 리턴. 기본은 0 (9600))

Baud rate 설정 : AT+BAUD1 ==> OK+Set:1 (Para: 0~8까지 지정된 값으로 baud rate 설정)

Pin 코드(비번) 설정 : AT+ PASS[para1] ==> OK+Set:[para1] (Para1: 000000~999999, default: 000000)

설정 reset : AT+RENEW ==> OK+RENEW

Master/Slave 모드 변경 : AT+ROLE[para1] ==> OK+Set:[para1] (Para1: 0, 1 , 0: Peripheral, 1: Central, Default: 0)

 

iBeacon AT Command

iBeacon switch 쿼리 : AT+IBEA? ==> OK+Get:[para1] (Para: 0 또는 1 리턴, 0 - iBeacon off, 1 - iBeacon on)

iBeacon switch 설정 : AT+IBEA[para1] ==> OK+Set:[para1] (Para: 0 또는 1 리턴, 0 - iBeacon off, 1 - iBeacon on)

iBeacon service mode 전환 : AT+BUSHU ==> OK+BUSHU

iBeacon service  mode 설정 전에 iBeacon switch on 설정을 먼저 해줘야 합니다!! iBeacon UUID (고유ID) 74278BDA-B644-4520-8F0C-720EAF059935 로 설정됩니다.

iBeacon UUID 변경 : UUID 는 총 16 바이트입니다. 이걸 4바이트씩 끊어서 설정할 수 있습니다. 따라서 UUID 설정하는 AT 커맨드가 4가지입니다. 설정할 때 16진수를 표시하는 8자리 string으로 합니다.

AT+IBE0[para1] ==> OK+Set:[para1] (Para1: 0x00000001 ~ 0xfffffffe, default: 74278BDA)

AT+IBE012345678 : 이렇게 전송하면 iBeacon UUID 에서 붉은색으로 표시한 값이 “12345678”로 변경됨. 이하 동일.

AT+IBE1[para1] ==> OK+Set:[para1]

AT+IBE2[para1] ==> OK+Set:[para1]

AT+IBE3[para1] ==> OK+Set:[para1]

iBeacon Major version 변경 : AT+MARJ[para1] ==> OK+Set:[para1] (Para1:  0x0001~0xFFFE, Default: 0x FFE0)

AT+MARJ0x0102 ==> OK+Set:0x0102

iBeacon Minor version 변경 : AT+MEAS[para1] OK+Set:[para1] (Para1:  0x0001~0xFFFE, Default: 0x FFE1)

iBeacon Measured power 변경 : AT+MEAS[para1] ==> OK+Set:[para1] (Para1:  0x0001~0xFFFE, Default: 0x FFE1)

 

이상은 자주 사용되는 AT 커맨드만 예시한 것입니다.  이 외에도 AT Command를 이용해서 PIO 제어(핀 제어)를 하거나 데이터 전송을 자동으로 하는 등 훨씬 다양한 작업이 가능하므로 상세 내용은 아래 링크를 참고하세요.

http://www.tinyosshop.com/datasheet/Tinysine%20Serial%20Bluetooth4%20user%20manual.pdf

 

3. iBeacon 설정 방법

이제 모듈을 iBeacon 기기로 바꾸는 방법을 보겠습니다. 이 과정을 위해서는 모듈에 AT command 를 사용해서 동작방식을 바꿔줘야 합니다. PC, 폰에서 전용 앱을 사용하거나(이 경우 판매자가 해당 앱 다운로드 제공) 아두이노를 이용할 수 있습니다. 여기서는 아두이노를 이용해서 설정을 바꿔보겠습니다.

아두이노는 PC와 연결된 상태에서(USB serial 로) D2, D3 핀을 이용해서 블루투스 모듈과 연결합니다. 그리고 블루투스 모듈과의 통신은 SoftwareSerial을 사용합니다.

연결방법 : (아두이노 -> BLE 모듈D2 -> TX,  D3 -> RX,  5V -> VCC,  GND -> GND

그리고 아두이노에 아래 소스코드를 올립니다.

#include 

SoftwareSerial mySerial(2, 3); // RX, TX

void setup()  
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
}

void loop() // run over and over
{
  // Receive from bluetooth and send it to PC
  if (mySerial.available())
    Serial.write(mySerial.read());

  // Receive from PC and send it to bluetooth
  if (Serial.available())
    mySerial.write(Serial.read());
}

소스를 보시면 아시겠지만 간단한 에코 시스템 만드는겁니다. USB를 통해 PC에서 받은 데이터를 BLE 모듈로 보내주고, BLE에서 받은 데이터는 PC로 보내주는 코드입니다. 이 코드를 컴파일해서 올리고 [아두이노 IDE -> 도구 -> 시리얼 모니터] 를 실행하면 시리얼 모니터에 입력하는 값이 BLE로 전송되고 BLE에서 전송받은 데이터가 아래에 표시됩니다. 시리얼 모니터를 이용해서 AT Command를 전송하면 BLE 모듈을 설정할 수 있습니다.

비컨이 정상적으로 설정되었는지 테스트 하기 위해서는 iBeacon 스캐너 앱이 필요합니다. 하드카피월드에서 제작한 아래 앱 다운로드 받고 사용하시면 됩니다.

Auto Beacon 매뉴얼앱 다운로드 

준비가 되었으면 아래 순서대로 비컨 설정해보세요.

  1. BLE와 아두이노를 위 설명대로 연결.
  2. 소스코드를 컴파일 및 업로드
  3. 업로드 완료되면 시리얼 모니터 실행 (아두이노 IDE -> 도구 -> 시리얼 모니터)
  4. 아래 붉은 글씨로 적힌 AT command 를 순서대로 입력합니다. 커맨드가 제대로 설정된 경우 OK... 와 같은 응답이 시리얼모니터에 표시됩니다.
  5. 시리얼 모니터에 AT+RENEW 입력 (공장초기화)
  6. AT+RESET (BLE 모듈을 리셋)
  7. AT (OK 응답이 오는지 확인)
  8. AT+MARJ0x1234 (iBeacon의 Major 값을 0x1234 로 설정, 16진수, 원하는 값 넣으셔도 되고 이 과정 생략해도 됨)
  9. AT+MINO0xFA01 (iBeacon의 Minor 값을 oxFA01로 설정, 16진수,원하는 값 넣으셔도 되고 이 과정 생략해도 됨)
  10. AT+ADVI5 (신호송출 간견을 5로 설정. 약 546.25 milliseconds)
  11. AT+NAMEDOPEY (BLE 모듈의 이름을 DOPEY 로 설정, 원하는 값으로 변경하세요)
  12. AT+ADTY3 (non-connectable 상태로 만듬. 절전효과)
  13. AT+IBEA1 (iBeacon 모드로 변경)
  14. AT+DELO2 (iBeacon broadcast 전용 모드로 만듬. 절전효과)
  15. AT+PWRM0 (Auto sleep 활성화. 소비전력이 8 -> 0.18 mAh 로 감소)
  16. AT+RESET (재부팅)
  17. iBeacon scanner 앱을 이용해서 비컨 검색
  18. 고유 UUID (74278BDA-B644-4520-8F0C-720EAF059935) 를 가진 비컨이 검색되는지 확인
  19. 만약 검색되지 않으면 5~16 과정을 다시 실행하고 OK... 응답이 정상적으로 오는지 확인 해보세요.
  20. 중간에 응답에  문제가 있다면 펌웨어 버전 문제일 수도 있습니다. [링크]에 있는 문서 참고하셔서 펌웨어 업데이트를 최신으로 해보세요.

iBeacon 정상적으로 설정되면 Auto Beacon 앱으로 검색했을 때 아래와 같이 default UUID를 가진 비컨이 보입니다.

photo_2014-10-10_18-19-03

UUID(16byte), Major code(2byte), Minor code(2byte)를 이용해서 비컨들 각각을 구분할 수 있습니다. 위에서 HM-10 모듈의 default UUID 값이 74278BDA-B644-4520-8F0C-720EAF059935 로 설정되어 있다고 했는데 이는 iOS AirLocate 를 사용하는 앱과의 호환성을 위해서입니다. 아래 UUID 들이 AirLocate 와 호환성을 가지는 UUID 입니다. 이경우 각각의 비컨의 구분은 Major(카테고리), Minor(기기 고유번호) 코드를 변경하시면 됩니다.

  • E2C56DB5-DFFB-48D2-B060-D0F5A71096E0
  • 5A4BCFCE-174E-4BAC-A814-092E77F6B7E5
  • 74278BDA-B644-4520-8F0C-720EAF059935  (HM-10 Default)
  • 112ebb9d-b8c9-4abd-9eb3-43578bf86a41
  • 22a17b43-552a-4482-865f-597d4c10bacc
  • 33d8e127-4e58-485b-bee7-266526d8ecb2
  • 44f506a4-b778-4c4e-8522-157aac0efabd
  • 552452fe-f374-47c4-bfad-9ea4165e1bd9

제가 사용한 BLE 모듈은 auto sleep 모드에서 평균 0.18mA의 전력을 소비합니다. 알카라인 전지 3개가 1800mAh 라고 가정하면 약 10,000 시간을 버틸 수 있고, 1년이 넘게 사용 가능합니다. 크기를 위해 240mAh CR2032 코인 전지를 사용하면 약 55일을 사용할 수 있습니다. 위에 적은 순서대로 iBeacon 전용 모드로 설정할 경우 소비전력이 좀 더 줄어서 더 오래갈 것으로 예상합니다.

주의!! : BLE(HM-10) 모듈이 auto-sleep 모드로 들어가면 (AT+PWRM0 커맨드와 AT+RESET 커맨드 이후) AT command 에 응답하지 않는 상태가 됩니다. 모듈을 깨우기 위해서는 아무 문자나 80자 이상 입력해서 전송하면 됩니다. 그러면 OK+WAKE 응답이 올겁니다. 그리고 AT+PWRM1 커맨드를 보내서 auto sleep 모드르 끄고 작업하세요. 작업이 끝나면 다시 AT+PWRM0 커맨드로 auto sleep 모드를 활성화 하면 됩니다.

 

 

 

4. BLE - 안드로이드 통신 방법

(예제 및 상세내용 준비중입니다!!)

 

 

BLE 모듈을 이용해서 미아방지 목걸이 만들기

참고 : HM-10 iBeacon howtoHM-10 iBeacon 개조과정HM-1x BLE 지원 홈페이지Biscuit firmware(펌웨어 개조), http://redbearlab.com/blemini/(펌웨어 관련 정보), iBeacon 개론HM-10 DatasheetHM-10 FirmwareUSB Serial adaptersUSB Serial adapters 2USB Serial adapters 3Locate iBeacon for iOS(iBeacon 위치 확인 앱), iBeacon Scanner for Android, 안드로이드 iBeacon 데모소스

펌웨어 업그레이드 및 관련 툴 다운로드 : http://www.jnhuamao.cn/index_en.asp?ID=1

 

주목!!! 저전력 블루투스인 BLE 모듈의 기초와 활용에 대한 오프라인 강의가 진행중입니다. BLE 모듈을 이용한 통신, 비컨 및 웨어러블 장치 만들기의 기본을 실습을 통해 배우실 수 있습니다. 오프라인 워크샵 페이지에서 확인하세요!! 

추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

하드카피님의 댓글

하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

안드로이드에서 iBeacon 용 앱 제작 샘플을 아래에서 구하실 수 있습니다.
https://github.com/Vinayrraj/Android-iBeacon-Demo/tree/master/android-ibeacon-service

하드카피님의 댓글

하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

PC에 블루투스 모듈을 USB로 연결하고 싶으신 경우 :
- FTDI 모듈 드라이버를 PC에 설치
- FTDI 모듈과 블루투스 모듈을 연결. PC와 USB 연결
- 아래링크에서 좌측 PC ComAssistant 메뉴 클릭해서 어플 다운로드 및 실행
  http://www.jnhuamao.cn/index_en.asp?page=2&ID=1
- COM 포트 맞춰주고 Open 버튼 누름... 그리고 위 과정대로 AT 커맨드로 설정

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

HM-10 모듈 자체는 동작전압이 3.3V 입니다. 그런데 위 사진에 있는 모듈처럼 HM-10 모듈이 인터페이스 보드(또는 베이스 보드라고도 부르던데)에 붙어있는 경우는 5V-3.3V 겸용입니다.

유민준님의 댓글

유민준 이름으로 검색 작성일

글정말 유용하게 잘보면서 사용하고있습니다.
BLE 4.O CC2541 인터페이스보드에 있는제품사용중인데요 지금까지 잘쓰다가
핸드폰과 연결이안되서 펌웨어업그레이드하려고 AT+SBLUP 커맨드넣고 프로그램다운받아서하는데
타겟을찾을수없다고 나옵니다.. 그래서 안해야겠다하는데 이제 블루투스가 아예 AT커맨드도 안주고
먹통이되어버렸네요... 이거어떻게해야하나요 빠른답변 부탁드립니다.ㅠㅠㅠ 정말 글감사히 잘보면서 공부하고있습니다.
추가질문하나만 더드리면... 제가만들고자하는게 분실물방지기를 만들려고하는데 블루투스 비콘을사용해서
거리를측정할수있잖아요 일정거리이상 넘어가면 푸쉬알림같이 물건과 떨어졌습니다. 이걸목적으로 하고있는데 비콘모드하면 통상 핸드폰과는 연결이안되잖아요 어플을 항상 키고있어야한다든지.. 어떤방법으로 하는게좋을지 조언부탁드립니다.

하드카피님의 댓글

하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

펌웨어 업글하다 문제가 생겼으면 어떻게든 펌웨어 다시 올리셔야 할 것 같습니다... 아님 Factory reset 하거나 SBLUP 모드 종료하는 AT 커맨드가 있는지 찾아서 먹히나 시도해보세요.
비컨을 항상 인식하려면 앱이 반드시 백그라운드에서 항상 동작해야 합니다.

김준홍님의 댓글

김준홍 이름으로 검색 작성일

안녕하세요 유용한 글 잘 보았습니다.
한가지 궁금한것이 HM-10을 ibeacon으로 사용하고 다시 원래대로 돌리려면
어떻게 해야 할까요?
AT+RENEW 명령으로 공장초기화 하면 될까요?

배준형님의 댓글

배준형 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

안녕하십니까? 현재 HM-10을 사용하고있습니다.
AT 명령어중 MARJ, MINO등 다먹히는데 MEAS? 명령어를 보내도 응답이없네요..
현재버전이 v540이고 MEAS명령어가 추가된건 v519라고 하는데 Measured power 변경하고싶습니다ㅠ