开源项目声明与经验分享

本文将详细阐述我的电子开发项目核心内容,同时分享实践过程中的技术探索与个人经验总结。

本项目的诞生源于开源社区的滋养,最终也将以免费开源的形式回馈社区。项目核心大部分开发工作由我完成,部分文档撰写与建模等工作得到了其他的协助支持。开发过程中,我引用了大量开源内容,如有侵权请联系我,本项目相关内容将开放共享,供大家自由用于学习、研发与工作场景。

在经验分享方面,基于个人实践:我试过自己设计电路板,并找人修改过板子,但如果没有足够的精力、时间和资源(如资金),建议尽量不要从头开始设计板子。最好使用现有的开源板子或在他人板子上进行小幅修改。最终,我也经历了多次失败,制作了几个废板,最终通过使用扩展板才勉强完成成品。芯片选型和方案设计需要丰富的经验,我也曾多次调整方案和更换芯片,因此建议在动手前充分规划,确保方案可行。购买材料和模块要注意型号,尺寸等等细节,最好找个设计的人给设计好外观以及各种尺寸以方便弄出比较好的外观和内部结构。软件也是方案好后再弄,不然一直反复改和调试等等。

一、项目定位与核心功能

1. 项目定位

面向穿戴场景的智能眼镜原型,融合边缘视觉识别、本地语音播报与 ESP32 交互控制,聚焦多源数据融合与即时反馈功能。

2. 核心亮点

  • 多芯片协同:STM32H7 作为主控,K230 负责边缘视觉计算,ESP32 提供上层扩展,分工明确高效。
  • 双串口精准分工:STM32H7 与小智 ESP32 通过 PB10/PB11 通信,与 K230 通过 PC6/PC7 对接,保障数据传输稳定。
  • 多源数据融合:整合视觉识别、超声波测距、姿态检测等数据,实现场景化智能反馈。

3. 功能

  • 跌倒检测:基于 MPU9250 的姿态与加速度融合算法,通过阈值与状态机实现精准判断。
  • 超声波测距:检测障碍距离并触发语音播报,提升穿戴场景安全性。
  • 语音播报:基于 SYN6288 帧协议,提供统一中文播报接口,支持方向、类别、距离等信息播报。
  • 视觉识别融合:K230 运行 YOLOv11n 实现目标检测,每秒输出 “方向 + 类别” 数据,与超声结果合成播报。
  • 串口交互:PB10/PB11 提供简易命令行与密码提示,方便测试与调试。
  • GPS 定位:UART1 中断接收 NMEA 数据,系统任务周期更新定位信息。
  • 蓝牙控制:通过 HC-05 模块实现蓝牙通信功能。
  • 。。。。

小智AI接收GPS定位部分没有做好,不过小智AI可以使用高德地图MCP服务(网上有讲解),电源监测也没弄(最后弄了个拓展板没有用INA等),我的模型也没有训练好训练了一小半。

二、系统组成与架构

  • 处理器与系统
    • STM32H743ZIT6(FreeRTOS v9.0.0,主频 480MHz)
    • 模块:跌倒检测、智能监控、蜂鸣器、按键、电机/风扇、超声波、GPS、INA219 电源监控等
  • 视觉计算
    • CanMV K230 运行 YOLOv11n,串口定期输出识别方向+标签
  • 交互与扩展
    • 小智 ESP32(xiaozhi-esp32 工程,lichuang-dev 板卡配置)
    • 语音播报模块(UART8,工程内 Voice 模块)
  • 通信总览
    • PB10/PB11 ↔ 小智 AI(ESP32)
    • PC6/PC7 ↔ K230(UART2,经 FPIOA 映射)
    • PE1/PE0 ↔ 语音播报模块(UART8)
    • 其他:I2C1(MPU9250/INA219),蓝牙(HC-05),GPS 等

三、硬件连接表

功能 STM32H7 引脚 外设/模块 对端引脚/功能 说明
与小智 AI 通信 PB10 (TX) ESP32(小智) RX 串口电平为 3.3V;交叉连接
与小智 AI 通信 PB11 (RX) ESP32(小智) TX 波特率建议 115200
与 K230 通信 PC6 (USART6_TX) K230 UART2 RX(FPIOA 12) 交叉连接
与 K230 通信 PC7 (USART6_RX) K230 UART2 TX(FPIOA 11) 交叉连接
公共地 GND 全部模块 GND 必须共地
供电 3.3V ESP32/K230 3.3V 确认板卡电源需求;必要时加电平转换或独立供电

注意:

  • K230 端在脚本中将 UART2 映射为 TX=FPIOA 11、RX=FPIOA 12;因此与 STM32 需要交叉对接:PC6→FPIOA12(K230 RX),PC7←FPIOA11(K230 TX)
  • 全部模块共地,电平一致(默认 3.3V TTL);若串口电平不一致需使用电平转换

四、数据流与协议约定

  • K230 每约 1s 在识别到目标时,向串口输出“<方向>有<类别>”的中文短句,如:“右上有行人”
    • 方向集合:上/下/左/右/左上/左下/右上/右下
  • STM32H7 在 USART6(PC6/PC7)解析 K230 行文本,同时融合超声波距离等信息,调用 Voice 模块进行中文播报
  • 与小智 ESP32 的 PB10/PB11 通道用于人机交互与上层控制(工程中已保留登录/密码提示等示例)

五、代码片段

1)识别事件联动一次超声测距并更新“最近有效距离”(识别时带距离的前提)

/* 识别事件触发:优先触发一次超声波测距以获取最新距离 */
if (Ultrasonic_TriggerMeasurement() == HAL_OK) {
    SystemTasks_Delay(5);
    float m = Ultrasonic_GetDistance();
    if (m >= 0.0f) {
        g_system_data.sensor_data.ultrasonic_distance_cm =
            MovingAverageFilter(m, ultrasonic_filter_buffer, 10, &ultrasonic_filter_index);
        g_system_data.sensor_data.ultrasonic_timestamp = SystemTasks_GetTick();
        g_system_data.sensor_data.ultrasonic_valid = 1;

2)方向化语音播报(8 方向+可选“XXcm”+标签/障 方向化语音播报(8 方向+可选“XXcm”+标签/障碍物)碍物)

/* 根据方向枚举选择前缀(默认前方) */
if (dir == VOICE_DIR_LEFT)          { prefix = GB_ZUOFANG;      prefix_len = (uint16_t)sizeof(GB_ZUOFANG);      }
else if (dir == VOICE_DIR_RIGHT)    { prefix = GB_YOUFANG;      prefix_len = (uint16_t)sizeof(GB_YOUFANG);      }
else if (dir == VOICE_DIR_UP)       { prefix = GB_SHANGFANG;    prefix_len = (uint16_t)sizeof(GB_SHANGFANG);    }
else if (dir == VOICE_DIR_DOWN)     { prefix = GB_XIAFANG;      prefix_len = (uint16_t)sizeof(GB_XIAFANG);      }
else if (dir == VOICE_DIR_LEFT_UP)  { prefix = GB_ZUOSHANGFANG; prefix_len = (uint16_t)sizeof(GB_ZUOSHANGFANG); }
else if (dir == VOICE_DIR_LEFT_DOWN){ prefix = GB_ZUOXIAFANG;   prefix_len = (uint16_t)sizeof(GB_ZUOXIAFANG);   }

3)小智 ESP32 串口模板(示例,用板级 pins 对接 STM32 PB10/PB11)

const uart_port_t U = UART_NUM_1;
uart_config_t cfg = { .baud_rate=115200,.data_bits=UART_DATA_8_BITS,.parity=UART_PARITY_DISABLE,.stop_bits=UART_STOP_BITS_1,.flow_ctrl=UART_HW_FLOWCTRL_DISABLE };
uart_param_config(U, &cfg);
uart_set_pin(U, ML307_TX_PIN, ML307_RX_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
uart_driver_install(U, 2048, 0, 0, NULL, 0);
uart_write_bytes(U, "hello\r\n", 7);
uint8_t buf[64]; int n = uart_read_bytes(U, buf, sizeof(buf), 20 / portTICK_PERIOD_MS);
if (n > 0) ESP_LOGI("UART","RX %dB", n);

完整项目链接:BYTE-01-UX/AI-glasses: 面向穿戴式“智能眼镜”原型:融合边缘视觉识别(K230 YOLOv11n)、本地语音播报(STM32 语音模块)与“小智”ESP32 交互控制,自行查看程序,如有侵权,请+v17636006235

外观很丑就先不放了

结语:本项目聚焦穿戴式智能设备的多芯片协同与多源数据融合,开源内容可供相关领域学习者、开发者参考。若有技术疑问、优化建议或合作意向,欢迎在评论区留言交流。期待与各位开发者共同完善项目,推动开源文化在电子技术领域的持续发展。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐