Thiết lập NimBLE cho ESP32-C3, C6, H2 và S3 bằng bộ UUID HLP cố định.
Dự án esp32-hlp-ble sử dụng NimBLE và bộ UUID service/characteristic HLP đã được cố định. Đây là bản tham chiếu cho các dòng hỗ trợ BLE như ESP32-C3, C6, H2 và S3. Ứng dụng dùng notification để gửi dữ liệu từ thiết bị tới Android và acknowledged write để gửi dữ liệu từ Android tới thiết bị. Frame HLP được ghép lại theo ký tự LF, không phụ thuộc vào ranh giới packet ATT.
Hãy dùng ESP-IDF 5.5.x. File sdkconfig.defaults đi kèm bật NimBLE và controller ở chế độ chỉ BLE. Ví dụ này chỉ nhận HLP dạng thô: mỗi state hợp lệ được in thành HLP state trong serial monitor. Khi tích hợp vào firmware, hãy thay state_line() bằng queue hoặc decoder của ứng dụng; ví dụ không kèm renderer màn hình.
idf.py set-target esp32s3
idf.py build
idf.py -p COM5 flash monitor
Implementation hoạt động với ATT MTU mặc định. Dữ liệu Android ghi xuống có thể đến theo các chunk bất kỳ, còn notification dùng cho handshake từ thiết bị được chia theo ATT payload đã thương lượng. Firmware không yêu cầu 2M PHY hoặc một mức connection priority cụ thể.
MTU - 3, với timeout ba giây cho mỗi chunk.0x2902. Firmware gửi dev ngay sau khi Android bật notification và
yêu cầu 4 Hz, là rate BLE tối đa được chấp nhận.ping mỗi năm giây. Protocol task trả pong trước khi chuyển state sang tác vụ ứng
dụng có thể chạy chậm.Sau handshake thành công, serial monitor sẽ có output tương tự:
I hlp_ble: HLP state: {"v":1,"t":"s","nav":1,"spd":47,...}