日期:2026-07-15
BLE GATT 协议
架构
text
手机/电脑 (Browser/App)
↕ Web Bluetooth / BLE 客户端
ESP32-S3 (NimBLE GATT Server)
↕ JSON 命令
主逻辑 (ble_cmd_handle)
命令列表
| 命令 | 功能 |
|---|---|
switch_page |
切换页面 |
memo_update |
更新备忘录 |
news_list |
获取新闻列表 |
get_status |
获取设备状态 |
settings_update |
更新设置 |
refresh_news |
强制刷新新闻 |
reboot |
重启设备 |
set_vcom |
运行时调节 VCOM |
get_vcom |
获取当前 VCOM |
save_vcom |
持久化 VCOM 到 NVS |
vcom_scan |
VCOM 扫描(start-end-step) |
image_upload |
分块上传图片到 SPIFFS |
返回通知
| 通知 | 内容 |
|---|---|
state |
设备当前状态 |
ui_state |
UI 状态 |
status |
get_status 的响应 |
news_list_resp |
新闻列表 |
MTU 优化
- dirty flag 机制:BLE 消息只更新内存变量,主循环统一写 NVS(避免每条消息写闪存 →200ms 导致丢包)
- 图片上传:分块 340 字节 → base64 → JSON 包装 ~495 字节 < 512
Web Server
- WiFi 局域网内提供管理界面
web_server_start()/web_server_stop()
SD 卡电子书
- 支持
.txt文件,最多 50 本 - 文件浏览器 + 阅读器双状态
- 分页阅读(
g_ebook_page/g_ebook_page_total)
其他硬件
麦克风
- GPIO15 (ADC2 CH4)
mic_sample(ms, &min, &max, &avg)— 环境音量采样
RGB LED
- GPIO9
rgb_led_set(r, g, b)— 静态颜色rgb_led_blink(r, g, b, times, ms)— 闪烁
物理按键
- LEFT=GPIO2, RIGHT=GPIO1, OK=GPIO5
- 短按翻页/选择, 长按进入/退出
Python 工具链
| 脚本 | 功能 |
|---|---|
gen_font.py |
生成中文字库 |
gen_large_font.py |
生成 32/48/64px 大字库 |
gen_weather_icons.py |
天气图标 PNG→C 数组 |
build_icons.py |
图标编译 |
vision.py |
阿里千问 VL 识图(读图片描述) |
upload_font.py |
字体上传到 SPIFFS |
关键词
#BLE #GATT #JSON协议 #SD卡 #电子书 #WebServer #工具链
相关
所属索引 待补充 · 主页 待补充
归档索引 待补充
来源与关联索引
- 来源
- 个人知识库
- 原笔记
- 05-历史归档/旧项目/墨水屏原始记录/通信与扩展.md
- 资料性质
- 历史记录。原文的版本、来源与验证边界继续保留。