This is an old revision of the document!
Zephyr Beacon example
It's time to deal with some wireless transmission using nRF52840 SoC. At the beginning, we will use the example of the Bluetooth Low Energy Beacon which is included in the Zephyr installation in PlatformIO. This example advertises the device as the “Test beacon” with details provided in Eddystone 1) format.
After importing it to the Visual Studio Code we should make some configuration: remove the unwanted build target from platformio.ini, and if we want to receive messages via serial port enable it within prj.conf. This example starts the Bluetooth interface with the function bt_enable() that passes the pointer to the bt_ready() which is the callback function to notify that initialization has finished.
err = bt_enable(bt_ready);
Inside this bt_ready() function, we call bt_le_adv_start() function to start advertising.
bt_le_adv_start(BT_LE_ADV_NCONN, ad, ARRAY_SIZE(ad), sd, ARRAY_SIZE(sd));
The beacon example is very simple because the beacon device is intended to advertise only so, there is no further functionality implemented. This example shows the so-called Eddystone format 2) of Bluetooth Beacons that send simple information to nearby devices. To reduce the number of bytes sent in the advertisement frame the Eddystone format defines the list of prefixes and suffixes that can be used in the URL 3). For example, web prefixes can be encoded as in the table 1.
| Decimal | Hex | Prefix |
|---|---|---|
| 0 | 0x00 | http://www. |
| 1 | 0x01 | https://www. |
| 2 | 0x02 | http:// |
| 3 | 0x03 | https:// |
Web suffixes defined in Eddystone format are listed in the table 2.
| Decimal | Hex | Suffix |
|---|---|---|
| 0 | 0x00 | .com/ |
| 1 | 0x01 | .org/ |
| 2 | 0x02 | .edu/ |
| 3 | 0x03 | .net/ |
| 4 | 0x04 | .info/ |
| 5 | 0x05 | .biz/ |
| 6 | 0x06 | .gov/ |
| 7 | 0x07 | .com |
| 8 | 0x08 | .org |
| 9 | 0x09 | .edu |
| 10 | 0x0a | .net |
| 11 | 0x0b | .info |
| 12 | 0x0c | .biz |
| 13 | 0x0d | .gov |
