Files
esp-idf/examples/bluetooth/bluedroid/ble/ble_eddystone_sender/README.md
T
2026-04-02 14:59:40 +08:00

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.