BLE 모듈(BL 600)을 사용하여 iBeacon 만들기

5349 단어 iBeacon
4년 만의 블로그라서 까먹었어...
Advent Calendar 21일째 보도입니다.
이번에는 iBeacon(BLE)에서 사용할 수 있는 블루투스 모듈에 대해 설명한다.
iBeacon은 애플이 iOS 7에서 사용하는 접근 위치 정보를 얻는 수단으로 iOS에서 위치 정보를 얻는 서비스로 본다
BLE 지식이 없어도 프로그램을 포장할 수 있습니다.
실제로 iBeacon을 시도하려면 Beacon 신호의 외곽 한쪽을 보내는 것이 필요하다
BLE를 지원하는 아이폰, 아이패드, 맥으로 아이비콘을 만드는 앱이 가장 빠르다.
mac
[iOS7][iBeacon]Mac을 Beacon 터미널로 설정
  http://dev.classmethod.jp/smartphone/iphone/mac-beacon/
iOS
[iOS 7] 새로운 영역 관측 서비스 iBeacon 사용
   http://dev.classmethod.jp/references/ios7-ibeacon-api/
라는 기사를 참고하면 코드를 쓰지 않아도 iBeacon 신호를 보낼 수 있다.
iOS 애플리케이션(estimote 애플리케이션)도 사용할 수 있을 것 같습니다.
한 줄도 안 쓰고 iBeacon에서 놀아요.
   http://geo.hatenablog.com/entry/2013/12/01/074148
하지만 실제로는 다양한 곳에 커서를 설치해 보기 위해 iBeacon 하드웨어를 원하겠죠.
지금 일본에서 살 수 있는 신표는요.
estimote(기술은 orz에 적합하지 않음)http://estimote.com/
개발 키트에서
세계 공학.
  REBLE112WB(Running Electronics) http://konashi.ux-xu.com/
  TI CC2541 Sensor Kit http://www.runele.com/ca1/17/
또 BLE 모듈의 개발 부속품은 블루투스, 레이드에서 나온 것이기 때문에 이것도 사용할 수 있을 것으로 보인다.
그리고 응용 프로그램, Braveridge도 있어요.
앞으로 다양한 곳에서 나올 것으로 보인다.
전자 작업에 능한 사람도 BLE 모듈을 이용하여 자체 제작한 것이 있다.
일본에서 사용하기 위해서는 당연히 기술에 맞는 것을 사용하고 싶은 선택항으로
 BlueGiga BLE112 TI CC2541
 Laird BL600 Nordic nRF51
별로 차이 안 나죠?
마을 물건도 있지만 개인이 구하기 어려워 대상으로 삼지 않는다.
응용 프로그램, Braveridge는 아직 시작하지 않았습니다(앞으로 기대).
이러한 모듈의 특징은 다음과 같습니다.
• @ 1000엔 정도 싸요. 앞으로 500엔 이하일 수도 있어요.
· CPU 코어칩 탑재, 메모리 풍부(8051ARM CoretexM0)
· Basic계 언어로 제어할 수 있음(+AT 지령)→Arduino 감각으로 제어할 수 있음
· GPIO, 아날로그 입력, PWM, I2C, SPI 등 IO가 다채롭다
확실히, 단지 이렇게 하면 대부분의 일을 완성할 수 있다.
iBeacon이라면 기본적으로 이 위에 동전 배터리만 설치하면 된다.
그렇다면 BLE 모듈을 이용해 iBeacon을 만들어야 하는데, 사실 정보상 BLE 112가 많아 다양한 기사를 발견할 수 있다.
BLE112로 iBeacon을 만든 글은 여기 참조해주세요.
  http://www.tij.co.jp/tool/jp/cc2541dk-sensor
  http://jenswilly.dk/2013/09/ibeacons-ready/
BLE 112로 iBeacon을 만들 때.
광고 매개 변수, 모드 설정
  call gap_set_adv_parameters()
  call gap_set_mode()
제안된 데이터 세트(iBeacon 데이터와 일치)
  call gap_set_adv_data(0,,,)
Local 설정Name
  call gap_set_adv_data(1,,,)
이런 느낌으로 아이비콘의 신표가 나올 수도 있다.
정보가 있는 BL 112를 사용하는 방법도 있지만, 이번에는 정보가 적은 Laird사의 BL 600을 사용해 아이비콘을 만들었다.얼마나 M체질인데...
BL 600은 노르딕 세미콘덕터사의 nRF51을 핵심 칩으로, ARM CoretexM0을 핵심으로 256kB flash+16kB RAM의 메모리가 있다.
블루투스를 사용하지 않고 BL 600을 선택한 이유는 핵심 칩이 ARM(BLE 112는 8051)이기 때문이다.o^/
개발판은 Laird사의 BL 600 개발 패키지를 사용했다.
  https://www.evernote.com/shard/s3/sh/a0b8b004-dc12-410c-b3cf- 1aeb8383008f/73fb5a16fe7849622c859b15313cc323
프로그램은 SmartBasic이라는 Basic계 언어로 편성됩니다. (오랜만에 Basic!)
이거 BLE 112랑 똑같네.Basic의 함수는 완전히 다르지만
iBeacon은 BLE의 광고 처리에서만 UUID, major, miner의 데이터를 광고 패키지에 설정하여 보내기 때문에 BL 600에서 광고 관계의 함수를 사용하면 똑같이 iBeacon을 만들 수 있을 것이다.
BLE 광고와 관련된 함수는
BleAdvertStart() 광고 시작 nAdvType,perAddr,nAdvInterval,nAdvTimeout,nFilter Policy
BleAdvertStop() 광고 중단
BleAdvRptInit() advert report의 초기화advRpt$, nFlags AD, nAdvApperance, nMaxDevName
BleScanRptInit() scan report의 초기화
BleAdvRptAddUid16() UUID 정보 16비트 추가
BleAdvRptAddUid128 () UUID 정보 128 비트 추가
BleAdvRptAppendAD() arbitrary AD(Adverting record) 쓰기
BleAdvRpts Commiit() 데이터 제출
네, 이걸 조합하면 되죠.
먼저 광고가 시작되는 BleAdvertStart()를 실행해 봅니다.
BLE 검색 애플리케이션에서 인식되었습니다.
http://www.digikey.jp/product-detail/ja/DVK-BL600-SA/DVK-BL600-SA-ND/3995739
”LARID_PRX "그러니까요.
Local Name과 광고 패키지의 설정은 BleGapSvcInit()로 변경되었습니다.그래, 그래.
발송된 광고 패키지는 UUID 등 식별코드가 필요하기 때문에 설정 함수를 찾아보겠습니다.
BleAdvRptInit(), BleScanRptInit()로 초기화
BleAdvRptAddUid128()에서 서비스의 UUID 설정
BleAdvRptAppendAD()에 레코드 추가
BleAdvRpts Commiit()로 제출
이전의 절차를 이해했지만 iBeacon의 패키지 데이터에 어떻게 맞추어 데이터를 씁니까?
서비스 UUID가 iBeacon에서 사용되지 않은 것 같습니다.
응, 몰라.
샘플을 보고도 몰라요.
아무래도 BLE와 관련된 함수가 너무 복잡한 것 같지 않아요?
Advent Calendar 시간 다 됐나요 orz
그래서 이번에 아이비콘을 이루지 못해서 아쉽다...
계속 조사가 진행되고 있기 때문에 잘 되면 기사에 추가 기재할 것이다.
안드로이드와 iBeacon(일본 안드로이드회 후쿠오카 지부 안드로이드 나이트 12/20LT 자료)

좋은 웹페이지 즐겨찾기