examples/bluetooth/bluedroid/ble/ble_eddystone_sender/README.md
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-S3 |
|---|
This example demonstrates Eddystone-compatible BLE sending of eddystone frame, including UID and URL and TLM.
Eddystone is an open beacon protocol specification from Google aimed at improving "proximity-based experiences" with support for both Android and iOS smart device platforms.
Learn more on Beacons and Eddystone.
┌──────────────────┐ ┌──────────────────┐
│ Eddystone Sender │ │ Eddystone Receiver│
│ (Advertiser) │ │ (Scanner) │
└────────┬─────────┘ └────────┬─────────┘
│ │
│ 1. Initialize BLE │
│ 2. Configure Eddystone Frame: │
│ - UID Frame (Namespace + Instance) │
│ - URL Frame (Encoded URL) │
│ - TLM Frame (Telemetry Data) │
│ 3. Set Raw Advertising Data │
│ 4. Start Advertising │
│ │
│ ─────────── Broadcasting ─────────── │
│ │
│ Eddystone Advertisement Packet │
│ ═══════════════════════════════════════════>│
│ (Broadcast periodically) │
│ │
│ │ Parse Frame:
│ │ - UID: Namespace ID
│ │ - URL: Decoded URL
│ │ - TLM: Battery, Temp
│ │
┌────────┴─────────┐ ┌────────┴─────────┐
│ Eddystone Sender │ │ Eddystone Receiver│
└──────────────────┘ └──────────────────┘
Before project configuration and build, be sure to set the correct chip target using:
idf.py set-target <chip_name>
Switch sending mode UID or URL or TLM:
Go to: idf.py menuconfig --> Component config --> Example 'EDDYSTONE SEND' --> then select the EXMAPLE_EDDYSTONE_SEND option.
See Development Boards for more information about it.
Run idf.py -p PORT flash monitor to build, flash and monitor the project.
(To exit the serial monitor, type Ctrl-].)
See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.
I (532) EDDYSTONE_DEMO: Register callback
I (532) EDDYSTONE_DEMO: Raw advertising data set complete
I (532) EDDYSTONE_DEMO: Advertising started successfully
I (542) main_task: Returned from app_main()
For any technical queries, please open an issue on GitHub. We will get back to you soon.