ESP32-S3 API 参考
本文引用的文件
ai_cloud.pyATGM336H_5N.pymax30102.pyxgo.pylv_utils.pyxunfei.pyespnow.pyhrcalc.py
产品概述
本参考聚焦于 ESP32-S3 产品线(掌控板3.0、乐动掌控2.0等)的专属API,重点覆盖新增模块与能力:AI云端交互、GNSS定位(北斗/GPS)、心率血氧传感、机器狗控制、LVGL事件循环工具,以及与ESP32版API的差异要点。文档面向K12创客教育场景,帮助开发者快速理解各模块职责、调用方式与注意事项。
核心业务流程
AI语音识别与问答流程(百度语音+文心大模型)
录音文件转Base64并请求百度语音识别接口,返回文本;再调用文心对话接口获取回答。
关键节点:鉴权token获取、音频文件读取、HTTP POST请求、JSON解析。
GNSS定位数据读取与解析流程(ATGM336H)
UART读取原始NMEA帧,过滤RMC与BDGSA段,解析时间、经纬度、速度、日期及卫星信息。
关键节点:串口缓冲、ASCII解码容错、字段截取与校验、数据有效性标志。
心率血氧测量流程(MAX30102 + hrcalc)
I2C初始化设备,周期性读取FIFO红/红外光值,使用算法计算HR与SpO2,输出有效结果或错误码。
关键节点:寄存器配置、FIFO采样、峰值检测、比值计算与阈值判定。
机器狗控制流程(XGO)
通过串口协议发送指令控制移动、姿态、动作、舵机角度、电池与固件信息等。
关键节点:命令封装与校验、参数范围映射、响应解包与超时处理。
LVGL事件循环流程
基于定时器或uasyncio驱动LVGL tick与任务处理,支持同步/异步刷新回调。
关键节点:lv.init、tick_inc、task_handler、异常捕获与自动停止。
sequenceDiagram
participant App as "应用"
participant AI as "AI云端模块"
participant HTTP as "网络请求"
App->>AI : 调用 get_text(录音文件)
AI->>HTTP : 获取访问令牌
HTTP-->>AI : 返回 token
AI->>HTTP : POST 语音识别接口
HTTP-->>AI : 返回识别结果
App->>AI : 调用 get_answer(文本)
AI->>HTTP : POST 文心对话接口
HTTP-->>AI : 返回回答文本
AI-->>App : 返回最终答案
图表来源
ai_cloud.py:18-24ai_cloud.py:69-92ai_cloud.py:94-122
章节来源
ai_cloud.py:18-24ai_cloud.py:69-92ai_cloud.py:94-122
功能模块清单
AI云端模块(ai_cloud.py)
职责:提供语音识别与文心问答的便捷接口,封装鉴权、HTTP请求与JSON解析。
用户价值:简化云端AI集成,降低网络与协议复杂度。
验收要点:token获取成功、识别结果正确、问答返回合理文本;异常时打印错误并抛出提示。
GNSS定位模块(ATGM336H_5N.py)
职责:UART读取NMEA数据,解析RMC与BDGSA,输出时间、经纬度、速度与日期。
用户价值:为位置服务、轨迹记录、导航类项目提供基础定位能力。
验收要点:能稳定读取RMC/BDGSA,解析出有效坐标与UTC时间,具备无效数据处理逻辑。
心率血氧模块(max30102.py + hrcalc.py)
职责:I2C驱动MAX30102,采集PPG信号,计算心率与血氧浓度。
用户价值:健康类项目的基础生理指标采集。
验收要点:设备可扫描到,FIFO数据可读,HR/SpO2在合理范围内且带有效性标识。
机器狗控制模块(xgo.py)
职责:通过串口协议控制XGO机器狗的运动、姿态、动作、舵机、电池与固件信息。
用户价值:机器人教学与竞赛的核心控制库。
验收要点:指令发送与响应校验通过,参数范围限制生效,读回数据准确。
LVGL事件循环工具(lv_utils.py)
职责:提供LVGL定时刷新与任务调度,支持同步/异步模式与异常处理。
用户价值:统一GUI刷新机制,避免阻塞与内存分配问题。
验收要点:lv.init后tick正常推进,task_handler执行,异常被捕获并安全停止。
讯飞语音模块(xunfei.py)
职责:基于WebSocket实现语音识别(IAT)与语音合成(TTS),含鉴权签名。
用户价值:在线语音能力扩展,适合语音交互项目。
验收要点:WebSocket连接建立成功,音频流分段发送,识别结果拼接正确,TTS音频下载完成。
ESP-NOW通信模块(espnow.py)
职责:封装底层ESPNowBase,提供无连接短报文收发与迭代接收。
用户价值:低功耗、低延迟的局域网通信方案。
验收要点:发送与接收字节流正确,超时处理合理,迭代器模式可用。
章节来源
ai_cloud.py:18-24ai_cloud.py:69-92ai_cloud.py:94-122ATGM336H_5N.py:29-165ATGM336H_5N.py:198-388max30102.py:39-168hrcalc.py:13-105xgo.py:123-787lv_utils.py:43-142xunfei.py:65-229espnow.py:6-41
数据与状态
AI云端模块
输入:录音文件路径、文本内容;配置:API_KEY/SECRET_KEY。
输出:识别文本、问答回答;状态:token缓存、请求头设置。
边界:网络可达性、云端限流与鉴权失败需重试或降级。
GNSS定位模块
输入:UART原始NMEA帧;状态:是否解码、是否解析、数据有效性标志。
输出:UTC时间、经纬度(度分格式与十进制)、速度(节与km/h)、日期、卫星PRN列表。
边界:非ASCII字符容错、RMC/BDGSA缺失时的空值处理。
心率血氧模块
输入:I2C FIFO红/红外光值序列;状态:设备初始化、测量进行中。
输出:HR(bpm)、SpO2(%)及有效性;内部状态:ir_D/red_D均值。
边界:采样时长约30秒,异常时返回None或错误码。
机器狗控制模块
输入:运动方向/步数、姿态角度、动作ID、舵机角度、电池查询等。
输出:固件版本、电池电量、IMU角度(roll/pitch/yaw)、舵机角度。
状态:协议帧解析状态机、超时与校验失败处理。
LVGL事件循环
输入:频率、定时器ID、刷新回调、异常处理器。
输出:LVGL任务处理、UI刷新;状态:运行中/已停止、嵌套计数。
边界:缺少uasyncio时仅支持同步模式;异常时自动deinit。
讯飞语音模块
输入:音频文件或文本;状态:WebSocket连接、消息帧状态(首帧/中间帧/末帧)。
输出:识别结果字符串、TTS音频文件。
边界:鉴权签名生成、RTC时间获取、网络稳定性。
ESP-NOW模块
输入:目标地址、数据长度、格式;状态:接收缓冲区、迭代器状态。
输出:字节流或浮点数(可选格式化);状态:超时与空结果。
边界:MAX_DATA_LEN限制、字节序转换。
章节来源
ai_cloud.py:18-24ai_cloud.py:69-92ai_cloud.py:94-122ATGM336H_5N.py:29-165ATGM336H_5N.py:198-388max30102.py:39-168hrcalc.py:13-105xgo.py:123-787lv_utils.py:43-142xunfei.py:65-229espnow.py:6-41
关键约束与边界
网络与云端依赖
AI云端与讯飞语音均依赖WiFi与互联网,需确保网络连通与鉴权配置正确;云端限流或故障时应做重试与降级策略。
硬件资源与引脚
GNSS使用UART(默认UART1,TX/RX可配),注意引脚冲突;MAX30102使用I2C,需确认设备地址与总线空闲。
XGO通过串口通信,注意波特率与协议帧校验;LVGL事件循环占用定时器或协程资源。
数据有效性与容错
GNSS数据需检查RMC有效性标志,缺失时返回占位值;心率血氧测量需要稳定接触与足够采样时长。
LVGL事件循环在异常时自动停止,避免死锁;ESP-NOW接收有超时与空结果处理。
性能与实时性
心率血氧测量约30秒,期间应避免阻塞其他任务;LVGL刷新频率建议根据屏幕与任务负载调整。
XGO指令发送间隔与最小时间参数影响运动平滑性,需按实际硬件调优。
章节来源
ai_cloud.py:69-92xunfei.py:65-229ATGM336H_5N.py:29-165max30102.py:133-168xgo.py:610-688lv_utils.py:43-142espnow.py:14-41