
Explore Bluetooth fundamentals and evolution, comparing Bluetooth classic and Bluetooth low energy, including topology, positioning features, and the rise of Bluetooth low energy audio and Bluetooth 5.x specifications.
Explore the ESP32 Bluetooth stack architecture, including controller and host layers, two host stacks bluejoy and limbo (nimble), and where to find related examples and source code.
Explore how the generic access profile enables Bluetooth low energy communication by defining four roles—broadcast, observer, peripheral, and central—and guiding device collaboration from advertising to data exchange.
An introduction to Bluetooth GATT, a generic attribute profile that defines a client–server model of services and characteristics, with UUID-based declarations and presentation format.
Explore the ESP32 Bluetooth GATT server workflow by examining a service table example, configuring the stack, and handling GATT events from setup to read and write data.
Explore the ESP32 Bluetooth advertising flow and scanning mechanics, detailing how host and link layers exchange set advertising data and scan response data, enable advertising, and handle command complete events.
Explore ESP32 Bluetooth advertising data formatting, including length, type, flags, TX power, and complete local name, with legacy and extended advertising limits.
Explore the gatt client workflow for ESP32 Bluetooth, tracing events from fresh controller setup to MTU negotiation, service discovery, and enabling notification through a step-by-step callback flow.
Learn how to process BLE read operations on the ESP32 Bluetooth server using a GATT service table, with auto response and application-driven replies, tested with the light blue app.
Set up two ESP32 boards as server and client to read a server characteristic value via Bluetooth GATT client, handling the read event and displaying the value like 55667788.
Learn how the ESP32 bluetooth write data for server lets a client control a server led by sending one-byte commands, handling short and long writes via MTU.
Learn to write data from an esp32 bluetooth client to a server to control a led, including uuid-based handle lookup, sending led command data, and blinking the led.
Learn how to implement ESP32 Bluetooth server notifications using a FreeRTOS timer to periodically send updates to a mobile app, with config descriptor handling for notification and indication.
Learn how ESP32 Bluetooth notification works between a server and a client, including enabling notify, handling the notify event, and blinking a client LED based on data.
Explore the difference between indication and notification in ESP32 bluetooth, covering server and client roles, acknowledgments, confirmations, and how to test for get busy status.
This course is for ESP32 bluetooth beginner. it focuses on ESP32 bluetooth low energy (BLE) data communication on bluedriod stack. It analyses all the flow for how esp32 read data, write data, notification and indication between the client and server.
All the code has been tested on ESP32_idf_sdk_ver 5.0. In the videos, we use the command line compile environment to compile and test the code.
For the tested board, we use two ESP32C3 boards and one lightblue mobilephone app. You also can use other boards, such as ESP32S3 boards, or other apps to test.
(1) For the introduction part, it briefly introduces the bluetooth history and the bluetooh stack for ESP32. For the GAP and GATT part, it talks about the GAP and GATT "key" knowledge for our BLE software development.
(2) For the ESP32 BLE on bluedriod, it explains the GATT server and GATT client work flow, GATT server advertising flow, advertising data format, read data, write data, notification and indication. It gives examples not only from server side, but also from client side in order to help people to clearly understand the whole detail BLE data communication flow, such as, we will blink one led on the client board by the notification data, or we will control the led on the server board by writing different data to the server through the BLE GATT.