欢迎光临
我们一直在努力

宿舍桌面助手:从立项到完成的全过程学习记录

——项目当前还正处在测试各个分功能阶段,可查看其他博客查看进度

一、项目立项与背景

本项目源于一个朴素的想法:让宿舍桌面上的设备不只是被动响应指令,而是能主动感知环境、结合天气与时间,像一位贴心的朋友一样给出生活提醒。最终项目定义为「CAN助手」——基于 STM32 + CAN 总线 + I.MX6ULL Linux 的桌面生活助手。

一句话描述:STM32 采集环境数据通过 CAN 上报,Linux 端融合天气 API 与 AI 对话能力,以虚拟角色加语音的形式主动给出生活提醒,并支持网页远程互动。

二、总体目标与验收标准

核心目标是在 2025 年 12 月前,完成一个可演示、可写进简历、可拍视频的项目。具体验收标准如下:

  • STM32 通过 CAN 总线周期上报温湿度、光照数据,Linux 端实时接收并解析。
  • Linux 端融合天气 API,能根据室内环境、室外天气和时间给出主动提醒。
  • 虚拟角色在屏幕上显示,提醒时配有文字气泡和语音播报。
  • 手机或电脑浏览器可访问 Web 页面,查看数据、触发提醒、与角色对话(接入 AI API)。
  • 所有代码在 GitHub 上,有完整 README、架构图、演示视频。

进阶目标包括增加更多传感器(人体感应、空气质量)、数据历史记录与可视化、多宿舍组网(多 STM32 节点挂同一 CAN 总线)。

三、时间线规划

整个项目从 2025 年 8 月启动,按功能模块划分为六个阶段。每个阶段都会单独成文,记录该阶段的详细步骤、踩坑笔记和代码片段,本文只保留阶段目标与里程碑产出,作为总览索引。具体进度可根据实际情况灵活调整,不必严格按时间推进。

阶段目标里程碑产出详细记录
Phase 1:地基 CAN 链路完全打通 cansend 到 STM32 灯亮,candump 收到回复 Phase 1 实战记录
Phase 2:感知 STM32 接入温湿度加光敏,CAN 上报 Linux 终端实时打印环境数据 Phase 2 实战记录
Phase 3:智能 规则引擎加天气 API 加主动提醒 终端输出结构化提醒 Phase 3 实战记录
Phase 4:人格 Qt 虚拟角色加语音播报 屏幕显示角色并说话,拍出第一版视频 Phase 4 实战记录
Phase 5:交互 Flask 后端加 AI API 加 Web 页面 手机浏览器可对话、可控制 Phase 5 实战记录
Phase 6:打磨 文档、GitHub、简历、面试准备 完整作品集加投递寒假实习 Phase 6 实战记录

四、技术需求清单

4.1 STM32 端(MCU)

需求项规格优先级
CAN 通信 500kbps,中断接收 RX0,轮询发送 必须
I2C 温湿度传感器 SHT30 或 AHT20,1Hz 采样 必须
ADC 光敏采集 光敏电阻模块,1Hz 采样 必须
数据打包 定义 CAN 报文:0x301 温湿度、0x302 光照 必须
指令响应 接收 0x401 控制帧,执行动作(如点亮 LED 模拟执行器) 必须
状态回复 执行后回复 0x402 状态帧 必须
数据滤波 滑动平均防抖 建议
DMA(可选) ADC 多通道提升效率 可选

4.2 Linux 端(I.MX6ULL 系统)

需求项规格优先级
SocketCAN 接收 C 语言,解析 0x301/0x302 帧 必须
SocketCAN 发送 C 语言,发送 0x401 控制帧 必须
天气 API 心知天气或和风天气,HTTP GET,JSON 解析 必须
规则引擎 根据室内外数据产生提醒,带去重和优先级 必须
语音播放 aplay 播放预生成 WAV,USB 声卡输出 必须
Qt 界面 显示虚拟角色加文字气泡加实时数据 必须
Flask 后端 REST API:/api/status、/api/remind、/api/chat 必须
AI API 接入 GPT/GLM/Claude 任选,Prompt 包含环境上下文 必须
多进程协作 CAN 接收进程、Web 进程、GUI 进程通过 UDP/socket 通信 必须
数据记录 CSV 追加写入,带时间戳 建议
SQLite 互动日志、历史提醒存储 可选

4.3 硬件新增

硬件型号建议约价优先级
温湿度传感器 SHT30(I2C) 10-15 元 必须
光敏传感器 光敏电阻模块(ADC) 3-5 元 必须
USB 声卡 免驱型 10-20 元 必须
小音箱 3.5mm 有源 15-30 元 必须
HDMI 小屏 5-7 寸 50-120 元 建议
人体红外 HC-SR501 5-8 元 可选
空气质量 PMS5003 20-40 元 可选

最少新增预算约 50-80 元(不含屏幕)。

4.4 软件工具

工具用途
STM32CubeMX + STM32CubeIDE MCU 开发
VS Code + SSH Linux 端代码编辑
MobaXterm 串口/SSH 终端
Git + GitHub 版本管理
心知天气 API 免费天气数据
edge-tts 电脑上生成语音 WAV
OpenAI/智谱 GLM API AI 对话
Flask Web 后端
Qt Creator GUI 开发
交叉编译工具链 编译 ARM 程序

五、CAN 应用层协议设计

这是项目的核心文档,也是简历中「CAN 应用层协议设计」能力的直接证明。

CAN ID方向数据场含义
0x301 STM32 到 Linux [温度整数, 温度小数, 湿度] 环境数据上报(1Hz)
0x302 STM32 到 Linux [光照高字节, 光照低字节] 光照数据上报(1Hz)
0x401 Linux 到 STM32 [指令码, 参数] 控制指令(如 0x01 等于开 LED)
0x402 STM32 到 Linux [状态码] 指令执行结果回复
0x403 STM32 到 Linux [心跳] 节点在线状态(心跳包)

六、从零开始搭建项目

这一部分将记录我从零开始搭建这个项目的完整过程,包括环境准备、硬件接线、代码编写、联调测试等每一个环节。每一步的详细操作、遇到的问题和解决方案都会在这里持续补充,形成一份可复现的搭建指南。

搭建过程将按照以下主线推进:

  • 环境准备:安装 STM32CubeMX、STM32CubeIDE、交叉编译工具链,配置 Linux 开发环境。
  • 硬件搭建:连接 STM32 与传感器、CAN 收发器,完成 I.MX6ULL 与 CAN 总线的接线。
  • STM32 端开发:从 CubeMX 生成工程开始,逐步实现 CAN 收发、传感器采集和数据上报。
  • Linux 端开发:配置 SocketCAN,编写 C 语言收发模块,打通 CAN 链路。
  • 联调与验证:cansend 到 STM32 灯亮,candump 收到回复,验证整条数据链路。
  • 后续扩展:接入天气 API、规则引擎、Qt 界面、Flask 后端和 AI 对话。

每个环节完成后,我会把对应的实战笔记、踩坑记录和代码片段补充到这一节,方便后续回顾和复现。

AHT20温湿度传感器:参考AHT20温湿度传感器使用-CSDN博客

linux主机从以太网抓取天气信息:参考嵌入式 Linux 以太网学习笔记:从驱动到应用-CSDN博客

七、项目亮点总结

以下亮点可用于面试和简历表达:

  • 异构架构:采用 STM32 加 SoC 的 MCU 加 Linux 异构架构,模拟车载域控制器设计。
  • CAN 协议设计:自定义 CAN 应用层协议,包含数据上报、指令下发、状态回复、心跳机制。
  • 规则引擎:设计基于多源数据(室内环境加天气加时间)的主动提醒规则引擎。
  • AI 集成:接入 GPT API 实现自然语言交互,角色能基于环境上下文给出个性化建议。
  • 全栈能力:在资源受限的嵌入式 Linux 板上部署 Flask 后端,实现远程控制与监控。
  • 模块化:CAN 接收、规则引擎、GUI、Web 服务解耦,通过 IPC 通信,支持扩展。

八、简历项目描述模板

宿舍桌面 AI 助手(2025.08-2025.12)

设计并实现基于 STM32 加 SoC 异构架构的桌面生活助手系统。STM32F407 作为环境感知节点,采集温湿度(I2C/SHT30)与光照(ADC)数据,通过 CAN 总线以 500kbps 速率周期上报至 I.MX6ULL Linux 中央网关。

自定义 CAN 应用层协议,包含数据上报(0x301/0x302)、控制指令(0x401)、状态回复(0x402)与心跳帧,实现可靠的双向通信。

Linux 端基于 SocketCAN 编写 C 语言收发模块,融合心知天气 API 与规则引擎,综合室内外环境产生主动提醒。

部署 Python Flask 后端服务,接入 GPT API 实现自然语言交互,支持用户通过网页远程查询状态、触发提醒、与 AI 角色对话。

使用 Qt 开发虚拟角色界面,配合语音播报实现人格化交互体验。

技术栈:STM32 HAL 库、CAN 总线、SocketCAN、Linux 多进程、Python Flask、Qt、HTTP/JSON、AI API 集成。

九、学习记录计划

本篇文章将按时间线记录从立项到完成的完整过程,后续每个阶段完成后,会持续补充对应的实战笔记、踩坑记录和代码片段,最终形成一份完整的项目学习档案。

赞(0)
未经允许不得转载:171主机测评 » 宿舍桌面助手:从立项到完成的全过程学习记录
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址