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

📅 发布时间:2026/8/28 4:35:39
宿舍桌面助手:从立项到完成的全过程学习记录
一、项目立项与背景本项目源于一个朴素的想法让宿舍桌面上的设备不只是被动响应指令而是能主动感知环境、结合天气与时间像一位贴心的室友一样给出生活提醒。最终项目定义为「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 或 AHT201Hz 采样必须ADC 光敏采集光敏电阻模块1Hz 采样必须数据打包定义 CAN 报文0x301 温湿度、0x302 光照必须指令响应接收 0x401 控制帧执行动作如点亮 LED 模拟执行器必须状态回复执行后回复 0x402 状态帧必须数据滤波滑动平均防抖建议DMA可选ADC 多通道提升效率可选4.2 Linux 端I.MX6ULL 系统需求项规格优先级SocketCAN 接收C 语言解析 0x301/0x302 帧必须SocketCAN 发送C 语言发送 0x401 控制帧必须天气 API心知天气或和风天气HTTP GETJSON 解析必须规则引擎根据室内外数据产生提醒带去重和优先级必须语音播放aplay 播放预生成 WAVUSB 声卡输出必须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 硬件新增硬件型号建议约价优先级温湿度传感器SHT30I2C10-15 元必须光敏传感器光敏电阻模块ADC3-5 元必须USB 声卡免驱型10-20 元必须小音箱3.5mm 有源15-30 元必须HDMI 小屏5-7 寸50-120 元建议人体红外HC-SR5015-8 元可选空气质量PMS500320-40 元可选最少新增预算约 50-80 元不含屏幕。4.4 软件工具工具用途STM32CubeMX STM32CubeIDEMCU 开发VS Code SSHLinux 端代码编辑MobaXterm串口/SSH 终端Git GitHub版本管理心知天气 API免费天气数据edge-tts电脑上生成语音 WAVOpenAI/智谱 GLM APIAI 对话FlaskWeb 后端Qt CreatorGUI 开发交叉编译工具链编译 ARM 程序五、CAN 应用层协议设计这是项目的核心文档也是简历中「CAN 应用层协议设计」能力的直接证明。CAN ID方向数据场含义0x301STM32 到 Linux[温度整数, 温度小数, 湿度]环境数据上报1Hz0x302STM32 到 Linux[光照高字节, 光照低字节]光照数据上报1Hz0x401Linux 到 STM32[指令码, 参数]控制指令如 0x01 等于开 LED0x402STM32 到 Linux[状态码]指令执行结果回复0x403STM32 到 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 集成。九、学习记录计划本篇文章将按时间线记录从立项到完成的完整过程后续每个阶段完成后会持续补充对应的实战笔记、踩坑记录和代码片段最终形成一份完整的项目学习档案。