Getting started with Bluetooth Low Energy - 9.2. iBeacon

목록

iBeacon

iBeacon

iBeacon apps use the Core Location framework features of iOS to provide navigation and location-based features to iOS and Android devices indoors, where access to cell tower signals and GPS might not work well or at all.

iBeacon 앱은 iOS의 핵심 위치 프레임워크 기능을 사용하여 셀 타워 신호 및 GPS에 대한 액세스가 잘 작동하지 않거나 전혀 작동하지 않을 수 있는 실내에서 iOS 및 Android 기기에 탐색 및 위치 기반 기능을 제공합니다.

The iBeacon model offers a variety of new possibilities for connecting devices and communicating based on location, including interesting variants in retail settings.

iBeacon 모델은 소매 환경의 흥미로운 변형을 포함하여 장치를 연결하고 위치를 기반으로 통신할 수 있는 다양하고 새로운 가능성을 제공합니다.

For example, permission-based marketing would allow retailers to push special offers and other information to customers (who have the corresponding app on their phones) based on their location in the store.

예를 들어 권한 기반 마케팅을 통해 소매업체는 매장 내 위치를 기반으로 고객 (휴대폰에 해당 앱이 있는)에게 특별 제안 및 기타 정보를 푸시할 수 있습니다.

In a museum, iBeacons could provide self-guided tours, delivering detailed information about nearby exhibits (in the form of text, audio, or video presentations) to visitors.

박물관에서 iBeacon은 셀프 가이드 투어를 제공하여 인근 전시물에 대한 자세한 정보 (텍스트, 오디오 또는 비디오 프리젠테이션 형식)를 방문객에게 전달할 수 있습니다.

A device that implements iBeacon functionality broadcasts (see “Broadcast and Observation” on page 38) BLE advertising packets with the following four values included:

iBeacon 기능을 구현하는 장치는 다음 네 가지 값이 포함된 BLE 광고 패킷을 브로드캐스트합니다 (38페이지의 "브로드캐스트 및 관찰" 참조):

Proximity UUID - A 128-bit value that uniquely identifies one or more beacons as a certain type or from a certain organization.

근접 UUID - 하나 이상의 비콘을 특정 유형 또는 특정 조직에서 고유하게 식별하는 128비트 값입니다.

Major value - An optional 16-bit unsigned integer that can group related beacons that have the same proximity UUID.

Major 값 - 같은 Proximity UUID를 가진 비콘과 관련하여 그룹화할 수 있는 선택적 16비트 unsigned 정수입니다.

Minor value - An optional 16-bit unsigned integer that differentiates beacons with the same proximity UUID and major value.

Minor 값 - 관련 비콘을 그룹화할 수 있는 선택적 16비트 부호 없는 정수입니다. 동일한 근접 UUID를 가집니다.

RSSI value - Programmed into the beacon to facilitate determining distance from the beacon based on signal strength.

RSSI 값 - 신호 강도에 따라 비콘으로부터의 거리를 쉽게 결정할 수 있도록 비콘에 프로그래밍됩니다.

In the museum example, the proximity UUID would be associated with one particular museum, and major and minor numbers could be used to group or distinguish multiple beacons within the museum.

박물관의 예에서 근접 UUID는 하나의 특정 박물관과 연관되며, 메이저 및 마이너 번호는 박물관 내의 여러 비콘을 그룹화하거나 구별하는 데 사용될 수 있습니다.

In this case, the major value might specify a room in the museum, while the minor number might be associated with a particular exhibit in that room.

이 경우, 주요 값은 박물관의 방을 지정하는 반면, 보조 값은 해당 방의 특정 전시와 연관될 수 있습니다.

If multiple beacons are installed this way, each associated with a particular room and exhibit, ranging performed by the iOS application on the receiving device (see “Ranging” on page 134) can distinguish between them, estimate the distance to each, and determine the location of the receiving device.

이런 방식으로 여러 개의 비콘을 설치하고 각각이 특정 방과 전시와 연관되면 수신 장치의 iOS 애플리케이션에서 수행되는 거리 측정 (134페이지의 "거리 측정" 참조)을 통해 비콘을 구별하고 각 비콘까지의 거리를 추정하고 수신 장치의 위치를 ​​확인할 수 있습니다.

One possible use of this information by the iBeacon app could be to deliver relevant information about the exhibit closest to the person holding the receiving iOS device.

iBeacon 앱에서 이 정보를 사용할 수 있는 방법 중 하나는 수신 iOS 기기를 들고 있는 사람에게 가장 가까운 전시회에 대한 관련 정보를 전달하는 것입니다.

Typically, a beacon advertises only and doesn’t provide other services or connectability (because BLE devices stop advertising once a connection is made).

일반적으로 비콘은 광고만 하고 다른 서비스나 연결성을 제공하지 않습니다 (BLE 장치는 연결되면 광고를 중지하기 때문입니다).

The advertising packet format shown in Figure 9-3 follows the standard BLE format for adverting packets and uses the Manufacturer Specific Data AD Type (see “Advertising Data Format” on page 48).

그림 9-3에 표시된 광고 패킷 형식은 광고 패킷에 대한 표준 BLE 형식을 따르며 제조업체별 데이터 AD 유형을 사용합니다 (48페이지의 "광고 데이터 형식" 참조).

The advertising packet format used by iBeacon The typical iBeacon is a simple coin-cell-powered piece of BLE hardware (the BLE112 module, for example).

iBeacon에서 사용하는 광고 패킷 형식 일반적인 iBeacon은 코인 셀로 구동되는 간단한 BLE 하드웨어 (예: BLE112 모듈)입니다.

It is also possible to program an iOS device to perform the iBeacon advertising service using the Core Bluetooth framework.

Core Bluetooth 프레임워크를 사용하여 iBeacon 광고 서비스를 수행하도록 iOS 장치를 프로그래밍하는 것도 가능합니다.

This is useful for testing, but not very practical, because the iBeacon app must always be in the foreground.

이는 테스트에 유용하지만 iBeacon 앱이 항상 포그라운드에 있어야 하기 때문에 실용적이지는 않습니다.

If you do want to turn your iOS device into an iBeacon transmitter, you can use the Locate for iBeacon app from Radius Networks.

iOS 장치를 iBeacon 송신기로 전환하려면 Radius Networks의 Locate for iBeacon 앱을 사용할 수 있습니다.

Another useful app from Radius Networks is MacBeacon for OS X, which allows your Mac to function as an iBeacon, saving your iOS device for testing your iBeacon app.

Radius Networks의 또 다른 유용한 앱은 OS X용 MacBeacon입니다. 이 앱을 사용하면 Mac이 iBeacon으로 작동하여 iBeacon 앱 테스트를 위해 iOS 기기를 저장할 수 있습니다.

Ranging is the process whereby the iBeacon app running on a receiving device (such as an iPhone) uses the strength of the received radio signal from a nearby beacon to estimate the distance between the receiving device and the beacon.

범위 지정은 수신 장치 (예: iPhone)에서 실행되는 iBeacon 앱이 근처 비콘에서 수신된 무선 신호의 강도를 사용하여 수신 장치와 비콘 사이의 거리를 추정하는 프로세스입니다.

The signal strength is measured in RSSI (received signal strength indication), a number in dBm that is available for every peripheral discovered by BLE apps running on iOS devices.

신호의 강도는 iOS 장치에서 실행되는 BLE 앱이 검색한 모든 주변 장치에 사용할 수 있는 dBm 단위의 숫자인 RSSI (수신 신호 강도 표시)로 측정됩니다.

In particular, the RSSI is tracked for every beacon in range of the iOS device running an iBeacon app.

특히 RSSI는 iBeacon 앱을 실행하는 iOS 장치 범위 내의 모든 비콘에 대해 추적됩니다.

The measured RSSI from a particular beacon varies as the iPhone moves around a room.

특정 비콘에서 측정된 RSSI는 iPhone이 방 안을 이동할 때마다 달라집니다.

In general, the RSSI gets smaller as the distance between the iPhone and the iBeacon increases.

일반적으로 RSSI는 iPhone과 iBeacon 사이의 거리가 멀어질수록 작아집니다.

Beacons also broadcast an RSSI value in the advertising packet.

비콘은 또한 광고 패킷에서 RSSI 값을 브로드캐스트합니다.

The value of the RSSI number in this case is fixed and programmed into the beacon during manufacturing.

이 경우 RSSI 번호 값은 제조 중에 고정되어 비콘에 프로그래밍됩니다.

The RSSI is determined by measuring the beacon’s signal strength at a fixed distance of one meter, typically using an iPhone running special-purpose software.

RSSI는 일반적으로 특수 목적 소프트웨어를 실행하는 iPhone을 사용하여 고정 거리 1미터에서 비콘의 신호 강도를 측정하여 결정됩니다.

For example, the Locate for iBeacon app from Radius Networks can be used for this.

예를 들어 Radius Networks의 Locate for iBeacon 앱을 이를 위해 사용할 수 있습니다.

The RSSI value is actually stored as a signed eight-bit integer representing dBm units in the advertising packet, but you don’t have to know this or deal with the RSSI being a logarithmic scale and varying (generally) as the inverse square of the distance from the beacon to use it as those details are taken care of by iOS.

RSSI 값은 실제로 광고 패킷에서 dBm 단위를 나타내는 부호 있는 8비트 정수로 저장되지만, 이를 알거나 RSSI가 대수적 크기이고 일반적으로 비콘으로부터의 거리의 역제곱으로 변한다는 사실을 다룰 필요는 없습니다. 이러한 세부 사항은 iOS에서 처리합니다.

The main purpose of this calibration is to take care of variation in signal output from beacon to beacon, due to individual differences in construction and performance of the radio chips.

이 교정의 주요 목적은 무선 칩의 구성 및 성능의 개별적인 차이로 인해 비콘에서 비콘으로 출력되는 신호의 변화를 처리하는 것입니다.

The iBeacon app compares the measured RSSI to the expected value of the RSSI at one meter broadcast in the advertising packet by the beacon to estimate the distance between the beacon and the iOS device.

iBeacon 앱은 측정된 RSSI를 비콘이 광고 패킷에 방송하는 1미터에서의 RSSI 예상 값과 비교하여 비콘과 iOS 장치 사이의 거리를 추정합니다.

This method yields a fairly good estimation of the distance to a beacon (typically, within less than one) if all the beacons are calibrated.

이 방법을 사용하면 모든 비콘이 보정된 경우 비콘까지의 거리 (일반적으로 1 미만)를 상당히 잘 추정할 수 있습니다.

The Core Location service provides classes and methods for ranging using iBeacons, as demonstrated in the following examples.

코어 위치 서비스는 다음 예에서 설명한 것처럼 iBeacon을 사용하여 범위를 지정하기 위한 클래스와 메서드를 제공합니다.

You will want to use instances of the CLBeaconRegion class and associated methods.

CLBeaconRegion 클래스의 인스턴스와 관련 메서드를 사용하고 싶을 것입니다.

With calibrated beacons and LCBeaconRgion, you only have to think in terms of actual distance in meters and beacon regions (circular areas surrounding a particular iBeacon with a radius you set).

보정된 비콘과 LCBeaconRgion을 사용하면 미터 및 비콘 영역 (사용자가 설정한 반경을 가진 특정 iBeacon 주변의 원형 영역)의 실제 거리 측면에서만 생각하면 됩니다.

For example, you can have the iBeacon app trigger some action relative to an iBeacon region, such as an alert that tells you when you enter or leave a particular region with a desired radius from a particular beacon.

예를 들어, iBeacon 앱이 iBeacon 지역과 관련된 일부 작업을 트리거하도록 할 수 있습니다 (예: 특정 비콘에서 원하는 반경을 가진 특정 지역에 들어가거나 나갈 때 알려주는 경고).

Methods are also provided to tell the app which iBeacon is closest, again based on ranging values.

범위 값을 기반으로 앱에 가장 가까운 iBeacon을 알려주는 방법도 제공됩니다.

Implementing an iBeacon App

iBeacon 앱 구현

To implement the following iBeacon app, all you need is the Core Location framework, within which the key class references for the application include CLLocationManager, CLBeaconRegion, and CLBeacon.

다음 iBeacon 앱을 구현하려면 애플리케이션에 대한 주요 클래스 참조에 CLLocationManager, CLBeaconRegion 및 CLBeacon이 포함된 Core Location 프레임워크만 있으면 됩니다.

No parts of the Core Bluetooth framework are used directly.

코어 Bluetooth 프레임워크의 어떤 부분도 직접 사용되지 않습니다.

This iPhone app detects the presence of nearby beacons and determines which one is closest.

이 iPhone 앱은 근처 비콘의 존재를 감지하고 어느 것이 가장 가까운지 결정합니다.

To test the app, we programmed several BLE112 modules (shown in Figure 9-4), powered by CR2032 coin cells for easy placement.

앱을 테스트하기 위해 우리는 쉽게 배치할 수 있도록 CR2032 코인 셀로 구동되는 여러 BLE112 모듈 (그림 9-4 참조)을 프로그래밍했습니다.

BLE112 modules programmed as iBeacons and powered by CR2032 coin cells.

iBeacon으로 프로그래밍되고 CR2032 코인 셀로 구동되는 BLE112 모듈입니다.

For testing, the Bluegiga BLE112 modules generated and transmitted the required iBeacon advertising packet.

테스트를 위해 Bluegiga BLE112 모듈은 필요한 iBeacon 광고 패킷을 생성하고 전송했습니다.

Complete code for both the iPhone app and the testing program for the BLE112 modules is provided in the Bluegiga BLE112 repository for this book.

iPhone 앱과 BLE112 모듈용 테스트 프로그램에 대한 전체 코드는 이 책의 Bluegiga BLE112 저장소에 제공됩니다.

First, you need to create and register the beacon region:

먼저 비콘 영역을 생성하고 등록해야 합니다:

Since each iBeacon app must use a particular proximity UUID that is hardcoded into the app through the initWithProximityUUID process earlier, it will respond only to beacons with that UUID (the UUID that is registered with iOS when the app is downloaded).

각 iBeacon 앱은 이전에 initWithProximityUUID 프로세스를 통해 앱에 하드코딩된 특정 근접성 UUID를 사용해야 하므로, 앱을 다운로드할 때 iOS에 등록된 UUID인 해당 UUID를 가진 비콘에만 응답합니다.

This means that users have control, because they must download the app to use it (though, once installed, the app can still receive alerts even if it is not open or running).

이는 사용자가 앱을 사용하려면 앱을 다운로드해야 하기 때문에 제어할 수 있음을 의미합니다. 단, 앱을 설치한 후에는 앱이 열려 있거나 실행 중이 아니더라도 계속 알림을 받을 수 있습니다.

Without explicitly downloading the app, they will not be bombarded by un‐ wanted iBeacon alerts and notices associated with other beacons with different proximity UUIDs.

앱을 명시적으로 다운로드하지 않으면 서로 다른 근접 UUID를 가진 다른 비콘과 관련된 원치 않는 iBeacon 경고 및 알림이 쏟아지지 않습니다.

As of iOS 7.1, the operating system itself registers the beacon regions that work with the app when the app is installed.

iOS 7.1부터는 앱 설치 시 운영 체제 자체에서 앱과 함께 작동하는 비콘 영역을 등록합니다.

Then, even if the app is suspended or not running, the system will wake up the iOS app to deal with entering or exiting a beacon region, normally within about 10 seconds.

그러면 앱이 일시정지되거나 실행되지 않는 경우에도 시스템은 일반적으로 약 10초 이내에 iOS 앱을 깨워 비콘 영역에 들어가거나 나가는 작업을 처리합니다.

In this next section of code, the CLBeacon class provides methods and objects to start and stop monitoring for particular iBeacons, as well as methods that determine which beacon is closest to the iOS device:

다음 코드 섹션에서 CLBeacon 클래스는 특정 iBeacon에 대한 모니터링을 시작 및 중지하는 메서드와 개체뿐만 아니라 iOS 장치에 가장 가까운 비콘을 결정하는 메소드도 제공합니다.

If this code were embedded in a museum application, the app could now determine the closest beacons and then take the appropriate action (e.g., provide multimedia content that further explains the exhibit).

이 코드가 박물관 애플리케이션에 내장된 경우 앱은 이제 가장 가까운 비콘을 결정한 다음 적절한 조치를 취할 수 있습니다 (예: 전시회에 대해 자세히 설명하는 멀티미디어 콘텐츠 제공).

Android devices can also make use of iBeacons, or BLE beacons in general.

Android 기기에서는 일반적으로 iBeacon 또는 BLE 비콘을 사용할 수도 있습니다.

If you are interested in using iBeacons with Android, see the Radius Networks Android library of APIs to interact with iBeacons.

Android에서 iBeacons를 사용하는 데 관심이 있다면 Radius Networks Android API 라이브러리를 참조하여 iBeacon과 상호 작용하세요.