4.3 KiB
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-H4 | ESP32-S3 |
|---|
ESP-IDF Eddystone Example
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.
Flow Diagram
┌──────────────────┐ ┌──────────────────┐
│ 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│
└──────────────────┘ └──────────────────┘
How to Use Example
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.
Hardware Required
- A development board with ESP32/ESP32-C3/ESP32-H2/ESP32-C2/ESP32-S3 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.)
- A USB cable for Power supply and programming
See Development Boards for more information about it.
Build and Flash
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.
Example Output
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()
Troubleshooting
For any technical queries, please open an issue on GitHub. We will get back to you soon.