Skip to content

iBeacon

What is an IBeacon?

Since we can’t get our hands on a Step-Hear beacon we needed a replacement. Joey van der Bie suggested making an IBeacon using the spare ESP32. According to an online article from Mokoblue, an IBeacon is a wireless Bluetooth Low Energy technology invented by Apple in 2013. They believe that the IBeacon was a revolutionary method to deliver location-based services and information to smartphones. The IBeacon generates signals which activate a protocol on the smartphone when the phone is within reach.

The IBeacon transmission frequency can be configured and can be altered using device-specific methods. The frequency rate and the transmit power can be adjusted in the settings, this does affect the battery power. The range of a standard IBeacon is approximately 70 meters. According an article from apple developers, the Bluetooth strength of the IBeacon can be used to determine the proximity of the beacon. "IBeacon"

How does the IBeacon protocol work?

An IBeacon is a Bluetooth low energy device that emits advertisements following a strict format. This format includes an Apple-defined IBeacon prefix, followed by a variable UUID, and a major, minor pair. "IBeacon packet" In the image below you can see what the protocol between the remote and the IBeacon would look like. The beacon sends out an RX signal which means that the transceiver can only listen to the frequency. When the remote receives the signal it sends out a request to connect to the beacon. If the beacon accepts the request then the remote will be able to send data using a TX frequency. The beacon can then receive data through Bluetooth, like for example our data with what button is pressed on the remote. After the data is received the beacon will send an acknowledgement back to the phone to confirm that they received the data. "IBeacon protocol"

Are there alternatives for the IBeacon?

The IBeacon can probably be used for our project but maybe different devices are available that fit better for our project. Google for example released Eddystone in 2015 according to Wikipedia compete with the Apple IBeacon. Both beacons use Bluetooth Low Energy (BLE) and are compatible with IOS and Android. So what is the difference? According to an article from Kontakt, there are not many differences between the products of the two tech titans. The main problem using Eddystone is that Google has discontinued both Eddystone and Physical Web beacon notifications. In 2018, privacy advocates raised concerns about the security of the Eddystone platform. They were specifically worried about how the audio component of the beacon was recorded, stored, and filtered to extract only the ultrasonic portion of the signal. There were concerns that users conversations could be illegally recorded by beacons using the Eddystone protocol in conjunction with the Nearby Messages API, potentially violating their privacy if proper informed consent was not obtained. This together with a small user base and poor user experience were the reasons behind discontinuing Eddystone.

Facebook made a Bluetooth beacon in trying to compete with Google and Apple. The primary use of the Facebook Bluetooth beacon was to connect with the Facebook app on the user’s phone. Retrieve the user’s location and then provides location-specific advertising on the user’s Facebook feed. No recent sources are confirming that the Facebook beacons ever came out of the testing face so I am going to assume their device is discontinued.

There is also an open-source alternative for IBeacons called AltBeacons. IBeacons and AltBeacons are both beacon protocols used for proximity-based interactions, but they have some key differences. IBeacons, developed by Apple, are tightly integrated with the iOS ecosystem and primarily compatible with iOS devices. On the other hand, AltBeacons, an open-source protocol from Radius Networks, offer cross-platform compatibility, working with both Android and iOS devices. While IBeacons have a simpler setup process and configuration options within the Apple ecosystem, AltBeacons provide greater flexibility for customization. IBeacons have a larger established community and a well-integrated ecosystem within Apple’s platform, whereas AltBeacons benefit from being open-source and offering broader platform support.

How to calculate the distance with Bluetooth signal strength?

Calculating distance using Bluetooth signal strength (RSSI - Received Signal Strength Indication) can be challenging due to various factors that affect signal propagation. However, you can use a technique called Trilateration, which involves measuring the signal strength from multiple Bluetooth devices to estimate the distance. One commonly used formula for estimating distance based on RSSI is the Free Space Path Loss (FSPL) formula. This formula assumes that there are no obstacles or interference between the Bluetooth devices and follows the inverse square law. However, please note that the FSPL formula is a basic approximation and may not be accurate in all environments.

The FSPL formula is as follows:

d = 10^((RSSIref-RSSI)/(10*n))

Where:

  1. d is the estimated distance between the Bluetooth devices.
  2. RSSIref is the reference RSSI value at a known distance.
  3. RSSI is the measured RSSI value.
  4. n is the path loss exponent, which depends on the environment and can vary between 2 and 4. A value of 2 is often used for indoor environments.

Sources

https://www.mokoblue.com/nl/a-detailed-guide-to-ibeacon/ https://en.wikipedia.org/wiki/IBeacon https://www.aislelabs.com/reports/beacon-guide/ https://developer.apple.com/documentation/corelocation/determining_the_proximity_to_an_ibeacon_device?language=objc https://kontakt.io/blog/ibeacon-vs-eddystone/ https://en.wikipedia.org/wiki/Eddystone_(Google) https://kontakt.io/blog/what-is-eddystone/ https://en.wikipedia.org/wiki/Facebook_Bluetooth_Beacon https://altbeacon.org/ https://github.com/AltBeacon/spec https://en.wikipedia.org/wiki/Free-space_path_loss https://www.bleuio.com/blog/measuring-distance-with-bluetooth-in-indoor-environment-using-python/


Last update: June 1, 2023