본문 바로가기
Arduino(아두이노) IoT 키트 강좌

Arduino Uno 로 AT-09/HM-10 호환 블루투스 4.0 BLE 모듈을 사용해서 iBeacon 구성해 보기

by 오마이엔지니어 2018. 5. 12.
반응형

Arduino Uno 로 AT-09/HM-10 호환 블루투스 4.0 BLE 모듈을 사용해서 iBeacon 환경을 구성해 보는 프로젝트 입니다

본 테스트는 위 이미지 처럼 스위치가 없는 타입의 AT-09/HM-10 호환 블루투스 4.0 BLE 모듈로는 테스트가 불가능합니다
(스위치가 있는 타입과 없는 타입은 펌웨어가 틀립니다)

iBeacon 이란?

아이비콘 기술을 간단하게 설명 하자면 블루투스 신호를 이용해서 사용자의 스마트폰에

특정 정보 또는 메세지를 전송해주는 기술이라고 보면 됩니다

2013년 Apple사 에서 iOS 7을 출시하면서 갖은 발표회에서 처음으로 아이비콘 기술에 대한 언급을 하였습니다

2013년 이전 부터 아이비콘과 흡사하게 블루투스를 이용하여 사용자의 스마트폰에 특정 정보를 전송해주는 기술은 있었지만,
Apple 사가 아이비콘이란 이름으로 처음 상표등록을 하면서 오늘 날 이와 관련된 모든 기술들을 아이비콘이라고 일컫게 됬습니다
Apple사는 기술의 선두주자에 걸맞게, 현재 미국 내에 있는 250개 이상의 Apple 매장들 내에서 이러한 ‘아이비콘’ 기술을 상용화하고 있으며,
이를 통해 매장에 오는 고객들에게 신제품 소개 또는 환영 메세지 등을 고객들의 스마트폰을 통해 전달하고 있습니다


아이비콘에는 크게 2가지의 뜻이 함축되어 있습니다

먼저 저전력 블루투스 (Bluetooth Low Energy - BLE) 칩셋이 탑재된 일종의 '스마트폰 감지 센서기’ 란 뜻으로 해석할 수 있습니다
이 센서기는 자신만의 일종의 고유 ID인 UUID (사람으로 치자면 주민등록번호와 비슷합니다) 를

지속적으로 블루투스 신호를 통해 발산을 하면서 주변의 스마트폰이 자신(센서기)의 존재를 감지할 수 있도록 돕는 것입니다
많은 사람들은 아이비콘이 단순히 스마트폰에게 정보를 전달을 해주는 기기라고 오해를 하고 있지만,

아이비콘은 자체에서는 UUID 만이 발산 하는 것이고, 스마트폰은 주변에 감지된 UUID정보를 확인해서 서버에 전달을 하는 것 입니다

그럼 서버 내에 해당 UUID와 매칭이 되는 저장된 정보가 스마트폰에게 전달을 하는 구성이 아이비콘입니다
아이비콘이 갖고 있는 두 번째 뜻은, 이러한 블루투스 센서기와 스마트폰이 통신을 하면서 궁극적으로

스마트폰에게 정보를 전송해주는 시스템 구조를 아이비콘이라고 일컫습니다

현재까지는 아이비콘 업계의 회사들은 대부분이 아이비콘을 오프라인 쇼핑 분야에 적용을 하고 있으며,

고객을 위한 ‘스마트 오프라인 쇼핑’이란 컨셉으로 서비스를 완성화시키고 있습니다
이러한 회사들이 준비중인 것들로는,매장 내에 아이비콘 센서기들을 여러 군데 설치함으로써,

방문하는 사용자들에게 매장 내에 관련된 특별한 정보들을 보여주는 것 입니다


AT-09는 정품 HM-10 블루투스 4.0 BLE 모듈의 저가형 호환버전 입니다

TI사의 CC2541 칩을 장착한 제품으로 UART 시리얼을 이용하여 모듈을 쉽게 사용할 수 있으며
5V 로직전압을 지원할수 있게 설계되었습니다 (마스터/슬레이브로 설정 가능합니다)
정품 HM-10 블루투스 모듈과 펌웨어가 다르기 때문에  정품 HM-10 AT 커맨드와 일부 호환되지 않습니다
시리얼 명령 전송시에는 CR+LF 를 포함하여 송신해야 합니다
자세한 내용은 아모스님의 블로그 포스팅 참조

BT4.0-HM-10-Serial_Port_BLE_Module_Master_Slave.pdf

DX-BT05-A 4.0 AT Commands (Chinese).pdf

DX-BT05-A 4.0 basis specs (Chinese).pdf


HM-10 의 모든 AT 커맨드를 완벽하게 사용하고 싶다면 정품 HM-10 블루투스 모듈을 사용하는것이 좋겠습니다




<AT-09/HM-10 호환 블루투스 4.0 BLE 모듈 이미지>

 

AT-09는 블루투스 4.0 BLE 모듈 이므로 이를 지원하는 안드로이드 앱 등을 사용해야 합니다

페어링시 기본 이름은 BT05 이며 비밀번호 설정은 AT+TYPE=0 (비밀번호 없음) 으로 설정되어 있습니다
AT+TYPE=2 (비밀번호 페어링) 으로 설정되어 있거나 설정을 바꾼 경우 기본 비밀번호는 000000 입니다
AT-09 는 비밀번호가 6자리 입니다

 

사용된 부품

Arduino Uno R3 (Italy)
AT-09/HM-10 호환 블루투스 4.0 BLE 모듈 (IBeacon)

점퍼케이블(숫놈/암놈)

구성 배선도


사용된 예제소스

AT-09 데이터 주고 받기.txt


주의사항

첨부된 예제 코드를 아두이노 우노에 업로드 할 때 AT-09 블루투스 모듈은 아두이노 우노와 연결이 안 되어 있는

상태에서 업로드를 마친 후 아두이노 우노와 연결 하도록 합니다, 에러나 업로드가 안되는 경우가 있습니다

이점 주의 하도록 합시다


기본적으로 AT-09 블루투스 모듈은 전원이 인가되면 빨간색 전원LED가 지속적으로 깜박입니다

하지만 어플과 연결해서 페어링에 성공하면 LED는 점등되어 멈추게 됩니다

(전원LED가 들어오지 않는다면 모듈의 문제이거나 모듈의 LED에 문제일수 있습니다)
 

프로젝트를 위해서는 블루투스 BLE 안드로이드 어플이 필요합니다 (하단 링크를 클릭해 다운 받으세요) 
블루투스 모듈을 제어하기 위해서 "iBeacon Scanner" 어플을 다운 받습니다
https://play.google.com/store/apps/details?id=kr.co.ixsoft.ibeacon.scanner


구글계정 로그인을 하면 무선으로 본인소유의 안드로이드 폰을 검색해서 간편하게 핸드폰에 어플 설치를 해줍니다

안된다면 안드로이드폰 구글 플레이스토어 에서 'iBeacon Scanner' 로 검색해서 설치 하도록 합니다

  

AT 커맨드 명령어로 iBeacon 활성화 시키기
아두이노에 위 첨부된 스케치를 업로드 해 주고 배선도를 참조해서 배선한 후에 아두이노 IDE의 시리얼 모니터를 실행시킵니다

입력창에 AT 를 입력해 주고 OK 가 나오면 성공입니다 이때 보드레이트는 9600 Both NL & CR 로 설정되어 있는지 확인합시다

입력창에 AT+VERSION 을 입력해서 펌웨어 버전을 확인해 줍니다 (펌웨어 버전이 위와 틀리다면 동일하게 진행되지 않을 수 있습니다)


입력창에 AT+IBEA 를 입력해서 iBeacon 사용 유무를 확인해 봅니다

포스팅 상단에 첨부된 AT 커맨드 명령어 PDF 파일을 확인해 보면 알수 있듯이
+IBEA=0 (미사용)

+IBEA=1 (사용)

입니다

위 첨부된 이미지에서 확인할수 있듯이 +IBEA=0 으로 미사용 상태입니다 (일단은 미사용 상태로 놔둡니다)

iBeacon 의 UUID (고유ID) 는 기본적으로 74278BDA-B644-4520-8F0C-720EAF059935 이런 형태로 구성 됩니다
iBeacon 의 UUID 첫번째 라인을 확인해 보기 위해서 입력창에 AT+IBE0 을 입력해 줍니다
+IBE0=74278BDA  확인할 수 있습니다

iBeacon 의 UUID 두번째 라인을 확인해 보기 위해서 입력창에 AT+IBE1 을 입력해 줍니다
+IBE1=B6444520 을 확할 수 있습니다


iBeacon 의 UUID 세번째 라인을 확인해 보기 위해서 입력창에 AT+IBE2 을 입력해 줍니다
+IBE2=8F0C720E 을 확할 수 있습니다

iBeacon 의 UUID 네번째 라인을 확인해 보기 위해서 입력창에 AT+IBE3 을 입력해 줍니다
+IBE3=AF059935 을 확할 수 있습니다

iBeacon 의 UUID 를 확인해 보았습니다 UUID 도 라인 별로 변경이 가능합니다
첫번째 라인을 변경을 하고 싶다면 AT+IBE0XXXXXXXX 이런 식으로 입력해서 변경해 주면 됩니다


UUID 확인이 끝났으므로 이제 iBeacon 을 사용으로 바꾸어 보겠습니다

입력창에 AT+IBEA1 을 입력해 주고 +IBEA=1 OK 가 나오면 성공입니다

여기서 주의해야 할 점은 AT+IBEA1 을 입력해서 IBeacon 을 활성화 시킨 다음 블루투스 모듈의 전원을 제거했다가
다시 재인가해 주고 테스트를 진행해야 IBeacon 이 정상적으로 비콘 스캔 어플에 스캔이 된다는 것 입니다 ~ 이점 꼭 주의 하세요!


설치한 iBeacon Scanner 안드로이드 어플을 실행시킵니다

어플을 실행하면 자동으로 근처의 활성화 된 iBeacon 을 스캔하고 위 이미지 처럼

UUID 와 블루투스 모듈과의 거리, MAC 주소, 네임 BT05 등등의 iBeacon 정보를 표시해 줍니다
UUID 가 아두이노 IDE 시리얼 모니터로 AT 명령어를 입력해서 확인한 UUID 와 동일한 것을 확인할 수 있습니다

스마트폰을 들고 블루투스 모듈로 부터 이동하면 거리가 변하는것을 확인할 수 있습니다
RADAR 버튼을 눌러서 화면을 변경하면

이렇게 블루투스 모듈로 부터 떨어진 위치를 확인할 수 있습니다, 위치를 이동해 가면서 위치가 변하는것을 확인해 봅시다

프로젝트 동영상


위 어플로 IBeacon 스캔이 안되는 경우 다른 어플로도 테스트 가능합니다 (하단 링크를 클릭해 다운 받으세요) 
블루투스 모듈을 제어하기 위해서 "iBeacon & Eddystone Scanner" 어플을 다운 받습니다
https://play.google.com/store/apps/details?id=de.flurp.beaconscanner.app


프로젝트 동영상


*펌웨어 버전이 BLE 4.2 이며, 스마트폰 블루투스 관리자에 등록도 안되고, HMBLE 어플로도 페어링이 안되는 경우 대처법*

먼저 포스팅 상단의 AT-09 데이터 주고 받기 예제를 업로드 한 후 배선도 참고 후 배선 후 시리얼 모니터를 실행 합니다

입력창에 AT+DEFAULT 를 입력해서 팩토리 초기화를 해줍니다, 팩토리 초기화가 되면 기본 비밀번호 없음 페어링이 되지만
혹시 모르니
입력창에 AT+TYPE을 입력해서 AT+TYPE=0 (비밀번호 없음 페어링으로 잘 되어있는지 확인해 줍니다)



Serial Bluetooth Terminal 어플을 실행해 줍니다

어플 실행후 왼쪽 메뉴를 클릭합니다

왼쪽의 메뉴에서 디바이스 메뉴를 클릭해 줍니다

AT-09 는 BLE 모듈 이므로 상단메뉴에서 BLUETOOTH LE 메뉴를 선택하고 바로 위쪽 SCAN 을 눌러 장치를 스캔합니다


BT05가 스캔된것을 확인할 수 있습니다

BT05를 눌러서 페어링 해 줍니다

페어링이 성공하면 Connected 메시지가 나옵니다 (AT+TYPE=0 세팅이므로 비밀번호 입력 없이 페어링 됩니다)

콘솔창에 메세지를 입력해서 AT-09 와 아두이노가 연결 된 PC의 시리얼 모니터로 데이터 전송이 되는지 확인해 주면 됩니다

구글 플레이 스토어에서 Serial Bluetooth Terminal 앱을 다운로드 해서 설치해 줍니다
https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal

자세한 앱 사용방법은 아래 링크의 포스팅을 확인해 주세요
http://blog.daum.net/rockjjy99/2657



DX-BT05-A 4.0 basis specs (Chinese).pdf
0.28MB
BT4.0-HM-10-Serial_Port_BLE_Module_Master_Slave.pdf
0.32MB
AT-09 데이터 주고 받기.txt
0.0MB
DX-BT05-A 4.0 AT Commands (Chinese).pdf
0.16MB
반응형

댓글