🔥「芯火·启航」STM32嵌入式AI开发训练营(L1)
🤝 参与团队协作开发
实训虽为单人独立完成项目,但采用统一的硬件平台、开发环境和代码规范。每日集中实验室工作、统一进度汇报、相互交叉评审代码,在实践中养成版本管理(Git)、文档撰写、代码可读性等团队协作基本功,为后续组队参加电赛、挑战杯等团队赛事打下协作基础。
🤖 拥抱AI辅助开发
系统性地掌握Claude Code + DeepSeek在嵌入式开发全流程的应用:从环境配置、代码生成、bug排查、协议理解到架构设计。这是AI时代工程师的核心竞争力——不是让AI替代思考,而是学会提出精确的技术问题、审查AI产出、人机高效协作,将开发效率提升数倍。
🎓 为大二及后续发展筑基
实训构建了嵌入式开发的完整知识框架。结业后将具备独立承担电子设计竞赛、智能车竞赛、蓝桥杯等赛事嵌入式部分的能力;在后续课程设计、毕业设计中可以直接复用本实训积累的代码库和调试经验;发表论文时涉及实验装置设计也能自主完成下位机开发。
💎 向芯片设计过渡
嵌入式开发是芯片设计的最佳入口。通过深入理解STM32F407的Cortex-M4内核架构、总线矩阵、外设寄存器操作、中断控制器NVIC等底层机制,建立起"芯片如何工作→软件如何驱动芯片"的系统视角,为后续学习Verilog/FPGA、IC数字设计、SoC架构等芯片方向课程奠定坚实的实践基础。
本次实训的重要性和必要性
📌 补齐"理论到实践"的关键断层
大一/大二阶段学生已修完C语言、模拟电路、数字电路等基础课程,但普遍存在"学过C语言却写不出一个完整嵌入式程序,学过模电却不会用ADC采集电压"的断层。本实训通过30天系统性项目驱动,将零散的理论知识焊接成可运行的工程能力,打通从课本到实际产品的最后一公里。
📌 构建"可迁移"的工程方法论
实训传授的不仅是STM32F407这一款芯片的使用,更是阅读数据手册、分析时序图、调试通信协议、排查硬件故障等通用工程方法。这些能力具有高度可迁移性——无论后续接触ST、TI、NXP还是国产MCU,甚至转向FPGA开发,方法论和思维方式都是相通的。
📌 提前锁定竞赛入场资格
电子设计竞赛、智能车竞赛等高水平赛事的备赛周期通常需要3-6个月集中训练。如果等到大三才开始第一次接触STM32,备赛窗口极其紧张。本实训在大一/大二暑假完成嵌入式能力构建,相当于提前一年半锁定参赛资格,为后续竞赛培训赢得了充裕的打磨时间。
📌 顺应产业升级和就业趋势
集成电路产业是国家重点战略方向,企业对嵌入式/芯片人才的需求持续增长。本次实训串联了嵌入式系统→通信协议→传感器→上位机可视化的完整IoT技术栈,与产业界对"全栈嵌入式工程师"的能力要求高度契合,为实习就业积累有说服力的项目作品和实操经验。
一句话总结:30天,从零基础到独立完成一个无线传感采集系统,构建嵌入式开发的完整能力框架,为竞赛、课题、论文和芯片方向学习铺设坚实的第一块基石。
| 阶段 | 天数 | 日期 | 核心任务 | 产出 |
|---|---|---|---|---|
| 阶段0:环境搭建 | Day 1—2 | 7/18 — 7/19 | VS CodePlatformIOClaude CodeDeepSeekST-LinkGit | 开发环境100%可用,LED闪烁验证 |
| 阶段1:外设基础 | Day 2下午—12 | 7/19 — 7/29 | GPIO中断定时器PWMADC/DACI²CSPIUARTDMA | 每个外设独立可运行Demo |
| 阶段2:模块实战 | Day 13—24 | 7/30 — 8/10 | 5传感器蓝牙HC-05WiFi ESP8266OLEDPython可视化 | 每个模块独立驱动+验证通过 |
| 阶段3:系统联调 | Day 25—28 | 8/11 — 8/14 | 双节点联调PC端可视化整机测试 | 完整系统跑通,数据流正常 |
| 阶段4:展示准备 | Day 29—30 | 8/15 — 8/16 | PPT+视频现场演示 | 作品展示+实训报告 |
全部器材分2家店采购。所有链接使用淘宝搜索(
s.taobao.com),搜索词已经精确到具体型号,点进去出现的商品中,按表格最右列「选择指南」操作即可,无需自己对比甄别:
| 店铺 | 负责采购 | 说明 |
|---|---|---|
| 正点原子天猫旗舰店 | F407核心板 ×2 DAP下载器 OLED屏幕 |
全国电赛首选品牌,教程最全,Claude Code 可直接引用其官方文档和原理图 |
| 优信电子 淘宝店 | 全部传感器模块 蓝牙+ESP8266 面包板+电源+杜邦线 LED/按键/蜂鸣器/电位器 SG90舵机+L298N 万用表+收纳盒 |
电子DIY圈公认一站式店,传感器、无线模块、接插件、工具一应俱全。部分冷门模块优信如果没有,可在淘宝搜同型号选销量最高的即可 |
📦 完整器材清单 — 点击蓝色器材名称直达商品,按「选择指南」下单
| 店铺 | 类别 | 器材名称 (点击购买 🔗) | 指定型号 | 数量 | 单价 | 小计 | 📌 选择指南 | |
|---|---|---|---|---|---|---|---|---|
| ▸ 店铺一:正点原子(天猫旗舰店) | ||||||||
| 正点 | 主控 | STM32F407ZGT6 核心板 🔗 | 正点原子 M100Z-M4 STM32F407ZGT6 最小系统板 |
2 | 135 | 270 | 认准店铺名"正点原子旗舰店"(天猫蓝标)。 选颜色分类:"焊排针"(¥135)。 不要选"不焊排针"(¥108),自己焊太费时间。 |
|
| 正点 | 调试 | DAP 下载调试器 🔗 | 正点原子 Mini DAP 高速仿真器 |
1 | 30 | 30 | 认准"正点原子旗舰店"。 选"Mini DAP"(¥30左右),不要选ST-Link(DAP速度更快且免驱)。 这个下载器同时支持调试+虚拟串口,一根线搞定。 |
|
| 正点 | 显示 | 0.96寸 OLED显示屏 🔗 | 0.96寸 OLED SSD1306 驱动芯片 I²C接口 128×64 |
1 | 12 | 12 | 认准"4针 I²C接口"(VCC/GND/SCL/SDA), 不要买7针SPI版。 颜色选"蓝黄双色"(上半蓝下半黄),视觉效果最好。 正点原子店里也有,可在买核心板时一起下单。 |
|
| 正点原子小计 | 312 | |||||||
| ▸ 店铺二:优信电子(淘宝搜店铺"优信电子",进店后搜以下型号。如某型号缺货,同型号换一家店买即可,模块都一样) | ||||||||
| 优信 | 供电 | 面包板电源模块 🔗 | MB-102 面包板电源 3.3V / 5V 双路输出 |
1 | 8 | 8 | 选带开关和DC圆口的版本(¥8左右)。 不要买仅USB供电的简化版——后续可能需要电池或外接电源供电,DC口方便扩展。 |
|
| 优信 | 供电 | Micro USB 数据线 🔗 | Micro USB 数据线 (能传数据,非仅充电) |
2 | 5 | 10 | ⚠️ 标题里必须带"数据线"或"可传数据"字样。 纯充电线插上电脑不识别STM32! 如果商家标注不清,直接买手机原装数据线(安卓口的)。 |
|
| 优信 | 实验 | 面包板 830孔 🔗 | MB-102 830孔面包板 带背胶 |
1 | 12 | 12 | 搜"830孔 面包板",¥10-15。 认准中间有凹槽(方便插核心板跨接)。 板子背面带双面胶的更好,可粘在桌面上不会滑动。 |
|
| 优信 | 实验 | 杜邦线套装 🔗 | 公对公+公对母+母对母 各20-30条,长约30cm |
1套 | 10 | 10 | 搜"杜邦线 套装 3种",¥10左右一套。 选30cm长度(太短接线别扭,太长信号干扰)。 3种都要有:公对公、公对母、母对母。 |
|
| 优信 | 外设 | LED+电阻 基础元件包 🔗 | LED 红绿蓝各5个 220Ω电阻10个 (或直接买元件包) |
1套 | 5 | 5 | 搜"LED 发光二极管 混装",选3mm或5mm均可。 电阻选220Ω 1/4W。 或者直接买"单片机入门元件包"(¥15-20,含LED/电阻/按键/电位器等全套),比零买更省事。 |
|
| 优信 | 外设 | 轻触按键 🔗 | 6×6mm 四脚 轻触开关 |
4 | 0.5 | 2 | 搜"6x6 轻触开关 四脚"。 选直插式(引脚可插面包板),不要贴片式。 4个才¥2,多买几个备用也不亏。 |
|
| 优信 | 外设 | 有源蜂鸣器模块 🔗 | 有源蜂鸣器模块 低电平触发 3.3V-5V兼容 |
1 | 3 | 3 | 搜"有源蜂鸣器模块",¥3。 认准"有源"(内置振荡电路,通电即响),不要无源蜂鸣器(需要PWM驱动)。 模块上有一颗三极管+一个蜂鸣器+3个排针。 |
|
| 优信 | 外设 | 10K 电位器 🔗 | 10KΩ 蓝白可调电阻 3脚直插 |
2 | 1 | 2 | 搜"10K 电位器 蓝白"。 认准3个引脚的蓝白方块电位器(最常见的那种)。 ¥1一个,用来模拟0-3.3V电压输出给ADC采集。 |
|
| 优信 | 传感器 | BH1750 光照传感器 🔗 | GY-302 BH1750FVI 芯片 I²C接口 |
1 | 5 | 5 | 搜"GY-302 BH1750"。 模块上印有GY-302丝印,4个排针(VCC/GND/SCL/SDA)。 ¥5-8。注意不要买成BH1750裸芯片——要买焊接好排针的模块。 |
|
| 优信 | 传感器 | MPU6050 六轴陀螺仪 🔗 | GY-521 MPU6050 芯片 3轴陀螺仪+3轴加速度 |
1 | 8 | 8 | 搜"GY-521 MPU6050"。 模块上印有GY-521丝印,8个排针。 ¥8-12。不要买¥4的国产替代芯片版——I²C时序可能有问题,建议买标注"原装MPU6050"的版本。 |
|
| 优信 | 传感器 | DS18B20 温度传感器 🔗 | DS18B20 模块版 不锈钢管防水探头 单总线接口 |
1 | 5 | 5 | 搜"DS18B20 模块 防水"。 ⚠️ 买模块版(一个小PCB板+不锈钢管探头),模块上自带4.7kΩ上拉电阻。 千万不要买裸TO-92封装(3脚小黑豆)——需要自己焊电阻,新手容易时序异常。 |
|
| 优信 | 传感器 | 光敏电阻传感器模块 🔗 | 4针光敏电阻模块 AO模拟输出 DO数字输出(阈值) |
1 | 3 | 3 | 搜"光敏电阻传感器模块 4针"。 ¥3-5。4个排针:VCC/GND/AO/DO。 我们项目中只用AO脚(模拟电压接ADC),DO脚空着不接。 |
|
| 优信 | 传感器 | HC-SR04 超声波模块 🔗 | HC-SR04 超声波测距 2cm-400cm |
1 | 5 | 5 | 搜"HC-SR04 超声波"。 ¥4-6。外观是两个银色的圆筒(发射+接收),4个排针(VCC/Trig/Echo/GND)。 这个模块全球都一样,选最便宜的即可。 |
|
| 优信 | 无线 | HC-05 蓝牙模块 🔗 | HC-05 蓝牙串口模块 主从一体 6针排针 |
2 | 15 | 30 | 搜"HC-05 蓝牙模块"。 认准6个排针(STATE/RX/TX/GND/VCC/EN),底板为蓝色PCB。 ¥12-18一个。买2个,不要买HC-06(只能做从机)。 注意:很多HC-05模块的工作电压是5V但信号电平3.3V兼容。 |
|
| 优信 | 无线 | ESP8266 NodeMCU 🔗 | NodeMCU V3 ESP8266MOD芯片 板载CH340 USB转串口 |
1 | 14 | 14 | 搜"ESP8266 NodeMCU CH340"。 ⚠️ 必须买NodeMCU开发板(黑色PCB,带MicroUSB母座),¥12-18。 千万不要买ESP-01(8脚小黑模块)——需要额外USB转串口,新手调试极其不便。 |
|
| 优信 | 执行器 | SG90 微型舵机 🔗 | SG90 9g微型舵机 180度 PWM控制 |
1 | 6 | 6 | 搜"SG90 舵机"。 ¥5-8。蓝色外壳,配3根杜邦线。 不要买MG90S(金属齿轮版,贵且本项目不需要),普通塑料齿轮SG90完全够用。 |
|
| 优信 | 执行器 | L298N 电机驱动模块 🔗 | L298N 双H桥驱动 带散热片 驱动电压5V-35V |
1 | 8 | 8 | 搜"L298N 电机驱动"。 ¥7-10。红色PCB,中间有一颗黑色芯片+银色散热片。 这是最经典的电机驱动模块,所有卖家都一样,选最便宜的即可。 |
|
| 优信 | 工具 | 数字万用表 🔗 | DT830B 便携数字万用表 电压/电阻/通断/电流 |
1 | 20 | 20 | 搜"DT830B 万用表"。 ¥15-25。黄色外壳的经典入门表。 够用了——测电压、测通断、测电阻,日常调试基本就这几项。 |
|
| 优信 | 存储 | 元件收纳盒 🔗 | 15格塑料收纳盒 可调隔板 |
1 | 8 | 8 | 搜"元件盒 15格 可调"。 ¥6-10。选隔板可拆卸的款式,方便放不同大小的模块。 不要买固定隔板的——有些模块尺寸大放不进去。 |
|
| 优信电子小计 | 162 | |||||||
| 🛒 人均合计(约) | ¥474 | |||||||
□ F407核心板 ×2(焊排针版,¥135/个) □ DAP下载器 ×1 □ OLED屏 ×1(4针I²C蓝黄双色)
□ BH1750 ×1(GY-302) □ MPU6050 ×1(GY-521) □ DS18B20模块 ×1 □ 光敏电阻模块 ×1 □ HC-SR04 ×1
□ HC-05蓝牙 ×2 □ ESP8266 NodeMCU ×1 □ SG90舵机 ×1 □ L298N驱动 ×1
□ 面包板 ×1(830孔) □ 面包板电源模块 ×1 □ Micro USB数据线 ×2 □ 杜邦线套装 ×1
□ LED+电阻包 ×1 □ 轻触按键 ×4 □ 有源蜂鸣器模块 ×1 □ 10K电位器 ×2
□ DT830B万用表 ×1 □ 收纳盒 ×1
① 所有模块类器材(传感器、蓝牙、ESP8266、舵机、L298N、OLED、蜂鸣器)本质上都是标准公模产品,无论哪家店卖的,电路板一模一样。所以选销量高、评价好、价格适中的即可,不需要纠结店铺。
② 唯一需要注意品牌的是正点原子F407核心板和DAP下载器——这两个必须认准正点原子,因为资料和原理图是配套的。
③ 建议提前2周下单,收到后第一时间把所有模块通电测试一遍,坏的赶紧换。
④ 所有链接点击后如果显示"商品已下架"(淘宝链接会变化属正常),用表格中「指定型号」列的关键词重新搜索即可。
Day 1(7月18日):Windows 开发环境完整搭建
上午(8:30—12:00):基础软件安装
| 步骤 | 任务 | 耗时 | 详细说明 |
|---|---|---|---|
| 0 | 前置检查 | 15min | 确认Windows系统版本 ≥ Win10;确认用户账户名不含中文/空格(PlatformIO编译路径不能有中文);确认电脑剩余硬盘 ≥ 10GB |
| 1 | 安装 Git for Windows | 20min | 官网 git-scm.com 下载安装。安装选项全部默认即可。完成后打开 Git Bash 验证:git --version。Git 用于版本管理代码,也用于 Claude Code 的安装依赖 |
| 2 | 安装 Node.js | 20min | 官网 nodejs.org 下载 LTS 版本(≥18.x)。安装完成后在 PowerShell 验证:node --version 和 npm --version。Claude Code 依赖 Node.js 运行 |
| 3 | 安装 VS Code | 30min | 官网 code.visualstudio.com 下载安装。安装时勾选"添加到PATH"。装完后打开 VS Code,点击左侧扩展图标,安装 中文语言包(Chinese Language Pack),重启后界面为中文 |
| 4 | 安装 VS Code 核心扩展 | 20min | 在扩展商店搜索安装:① PlatformIO IDE(嵌入式开发核心)② C/C++(Microsoft出品,代码补全和语法检查)③ GitLens(Git可视化,方便回退代码) |
下午(13:30—15:30):安装 Claude Code + DeepSeek
| 步骤 | 任务 | 耗时 | 详细说明 |
|---|---|---|---|
| 5 | 安装 Claude Code | 20min | 打开 PowerShell(管理员模式),执行:npm install -g @anthropic-ai/claude-code安装完成后验证: claude --version |
| 6 | 配置 DeepSeek 作为 Claude Code 的模型后端 | 30min | Claude Code 支持通过 API Key 接入 DeepSeek。需要:① 注册 DeepSeek 开放平台账号(platform.deepseek.com)→ 获取 API Key → 充值(最低约10元足够整个实训期)② 在 PowerShell 中配置环境变量:setx ANTHROPIC_API_KEY "你的DeepSeek_API_Key"setx ANTHROPIC_BASE_URL "https://api.deepseek.com"③ 关闭并重新打开终端使环境变量生效。④ 测试: claude "你好,请用中文回复" |
| 7 | VS Code 内集成 Claude Code | 20min | 在 VS Code 中按 Ctrl+Shift+P 打开命令面板,搜索 Claude Code: Open in Terminal。或者在 VS Code 的集成终端(Ctrl+`)中直接输入 claude 开始交互。这样可以在同一窗口内:左边写代码,右边问AI |
| 8 | (可选)配置国内npm镜像 | 10min | 如果 npm 下载速度慢,在 PowerShell 中执行:npm config set registry https://registry.npmmirror.com |
下午(15:30—17:30):PlatformIO + 第一个工程
| 步骤 | 任务 | 耗时 | 详细说明 |
|---|---|---|---|
| 9 | 创建 STM32F407 PlatformIO 工程 | 30min | VS Code → PlatformIO 图标 → Home → New Project → Board 选 ST STM32F407ZGT6(或搜索 Generic STM32F407ZGT6)→ Framework 选 STM32Cube(即HAL库)→ 选好保存路径(路径中不能有中文!)→ Finish。PlatformIO 会自动下载 STM32 平台包(首次约需10-20分钟,取决于网速) |
| 10 | 安装 ST-Link 驱动 | 20min | ST-Link V2 在 Windows 上需要驱动。下载 Zadig 工具(zadig.akeo.ie),将 ST-Link 插入USB口,Zadig 中选择 ST-Link → 安装 WinUSB 驱动。装完后设备管理器中出现 "ST-Link Debug" 设备即成功 |
| 11 | 配置 platformio.ini | 15min | 在工程根目录 platformio.ini 中确认/添加:debug_tool = stlinkupload_protocol = stlink确保烧录和调试都走 ST-Link |
| 12 | 编写第一个程序:LED闪烁(Blink) | 40min | 使用 Claude Code 辅助生成代码。在 VS Code 终端输入:claude "请帮我写一个STM32F407的LED闪烁程序,使用HAL库,LED接在引脚PC0上(低电平点亮),每500ms翻转一次。请给出完整的main.c代码"将AI生成的代码复制到 src/main.c,按 PlatformIO 底栏的 →(Upload) 按钮编译+烧录 |
| 13 | 验证:LED闪烁成功 | — | 核心板上LED以0.5秒间隔闪烁即Day 1大功告成。如果失败,把错误信息复制给Claude Code排错 |
Day 2(7月19日):环境收尾 + 硬件连接验证 + 进入 GPIO 学习
| 时间 | 任务 | 内容 |
|---|---|---|
| 8:30—10:00 | 环境查漏补缺 | 逐一确认每人环境:① PlatformIO 能编译通过 ② ST-Link 能下载 ③ Claude Code 在 VS Code 终端能正常对话 ④ DeepSeek API 有额度。任何问题现场用 Claude Code 排查 |
| 10:00—11:30 | 理解 PlatformIO 工程结构 | 借助 Claude Code 了解:platformio.ini 配置含义、src/ 目录放源码、lib/ 放自定义库、HAL库驱动文件在哪。学会:修改引脚配置后如何重新编译、如何查看编译错误 |
| 11:30—12:00 | 硬件连接练习 | 学习面包板接线规则(电源轨、连通方向)。把F407核心板插到面包板上,用面包板电源模块供电(3.3V),用杜邦线把 PC0 引脚引出到面包板上的外接LED(串220Ω电阻接地) |
| 13:30—15:30 | GPIO原理学习 | 用 Claude Code 交互学习:GPIO 输入/输出模式(推挽/开漏)、上拉/下拉电阻概念、HAL库 GPIO 操作函数(HAL_GPIO_WritePin / HAL_GPIO_ReadPin / HAL_GPIO_TogglePin)。做实验:① 外接LED流水灯(3个LED依次点亮)② 按键控制LED(按下亮、松开灭) |
| 15:30—17:30 | 按键消抖实战 | 学习机械按键抖动原理、软件消抖方法(延时法 vs 定时器法)。实验:① 按键切换LED状态(按一下亮、再按一下灭)② 长按/短按识别。用 Claude Code 生成代码并调试 |
① 把编译错误信息直接粘贴给Claude Code,比手动排查快10倍
② 生成代码后不要直接全盘复制,先理解思路,再分段验证
③ 遇到硬件不工作时,把接线描述+现象+代码一起发给AI分析
④ 用
Ctrl+` 打开终端,终端里敲 claude "问题",代码窗口和AI在同一屏幕
逐个吃透 STM32F407 的核心外设。每个外设的学习模式:原理(30min)→ Claude Code生成代码 → 烧录验证 → 修改参数加深理解。
GPIO + 中断 EXTI
- GPIO 8种模式全部理解(重点:推挽输出/开漏输出/上拉输入/浮空输入)
- 外部中断 EXTI:按键触发中断,中断服务函数中翻转LED
- NVIC 中断优先级分组配置
- 综合实验:4个按键控制4个LED不同模式(流水灯/跑马灯/呼吸效果/全闪)
定时器基础 + SysTick
- SysTick 系统滴答定时器:毫秒级延时(HAL_Delay 原理)
- 通用定时器 TIM2-TIM5:定时中断、时基配置
- 定时器实现精确延时(微秒级)
- 实验:定时器中断让LED以精确频率闪烁(1Hz/2Hz/5Hz可切换)
- 实验:用定时器输入捕获测量按键按下时长
PWM输出 + 舵机控制
- TIM输出比较 → PWM生成原理(占空比、频率、分辨率)
- HAL库 PWM 配置:
HAL_TIM_PWM_Start - 实验:LED 呼吸灯(PWM控制亮度渐变)
- 实验:控制 SG90 舵机旋转到指定角度(0°→90°→180°→0°循环)
- 理解 PWM 周期20ms、占空比 0.5ms—2.5ms 对应舵机角度
UART 串口通信
- UART 通信协议原理(波特率/起始位/数据位/停止位/校验位)
- HAL库 UART 发送/接收:轮询模式、中断模式
- 实验:printf 重定向到串口,向PC串口助手打印"Hello STM32"
- 实验:串口接收PC发来的指令,控制LED亮灭
- 学习 USB转TTL(CH340)模块与F407的UART1连接
ADC 模数转换
- STM32F407 ADC 12位逐次逼近型,3个独立ADC
- ADC 单次转换 / 连续转换 / 扫描模式
- 实验:读取电位器电压值,串口打印实时电压
- 实验:读取光敏电阻模块模拟输出,测量环境光强
- 实验:采集F407内部温度传感器通道(ADC1_IN16)
DAC + DMA 基础
- STM32F407 DAC 12位,可输出模拟电压
- DMA 直接存储器访问原理(解放CPU)
- 实验:DAC输出正弦波(查表法 + DMA自动搬运)
- 实验:ADC采集电位器 → DMA传输 → DAC输出跟随
- 用串口打印DMA传输完成标志验证
I²C 总线(上)— 协议学习 + OLED 驱动
- I²C 协议原理:SCL/SDA、起始/停止条件、ACK/NACK、7位地址
- STM32F407 I²C 硬件外设 vs 软件模拟对比
- 实验:驱动 0.96寸 SSD1306 OLED 屏幕
- 显示文字、数字、简单图形
- 用 Claude Code 生成 OLED 驱动代码并理解
I²C 总线(下)— BH1750 + MPU6050 驱动
- 实验:驱动 BH1750 光照传感器,I²C读取光照度(lux)
- 实验:驱动 MPU6050 六轴传感器,读取加速度+角速度原始数据
- I²C 设备扫描程序:自动探测总线上所有设备地址
- 将光照值和姿态角显示在 OLED 上
OneWire 单总线 + SPI 总线
- OneWire 单总线协议原理(与I²C对比)
- 实验:驱动 DS18B20 温度传感器,读取温度
- SPI 协议原理:MOSI/MISO/SCK/NSS,全双工高速
- 实验(选做):SPI 驱动 MAX7219 LED点阵
- 注意 DS18B20 时序严格(微秒级),调试时可用逻辑分析仪
综合复习 + 超声波模块
- HC-SR04 超声波测距:Trig发10μs脉冲 → Echo高电平持续时间 → 距离计算
- 用到:GPIO输出(Trig)+ GPIO输入中断(Echo上升/下降沿)+ 定时器(计时)
- 综合实验:OLED显示超声波测量的距离,距离<10cm时蜂鸣器报警
- 回顾阶段1所有外设,梳理:哪些已掌握?哪些还模糊?用Claude Code补漏
- 阶段1验收标准:给一个新传感器数据手册,能在2小时内用Claude Code辅助写出驱动
以最终项目为导向,将每个传感器和通信模块独立调试通过,为阶段3联调做准备。
系统架构设计 + 任务分解
- 在纸上画出最终系统的架构框图:采集节点(F407)→ 蓝牙 → 汇总节点(F407)→ ESP8266 WiFi → PC Python
- 定义数据帧协议:采集节点发给汇总节点的数据格式(JSON或自定义二进制帧)
- 定义每个传感器的数据更新频率
- 用 Claude Code 写一个
protocol.h数据帧结构体
蓝牙模块 HC-05 调通
- HC-05 AT 指令模式配置:设置主从模式、配对密码、波特率
- 两个HC-05配对:一主一从,自动连接
- 串口透传验证:从模块发数据 → 主模块收到
- 实验:两块F407通过蓝牙互相发送字符串
- 注意:HC-05默认波特率9600,需要与STM32 UART配置一致
下位机采集节点 — 传感器集成(上)
- 在一块F407上同时驱动:BH1750(I²C)+ DS18B20(OneWire)+ 光敏电阻(ADC)
- 多传感器数据采集的时序调度:定时器触发的轮询架构
- 把采集到的光照、温度、ADC电压通过串口打印出来验证
下位机采集节点 — 传感器集成(下)
- 加入 MPU6050(I²C)+ HC-SR04(GPIO中断)
- 5个传感器同时在采集节点上运行,互不干扰
- MPU6050的DMP(数字运动处理器)移植:输出欧拉角(Roll/Pitch/Yaw)而非原始数据
- 用Claude Code帮助整合所有传感器驱动到一个工程里
采集节点 — 数据打包 + OLED本地显示
- 将5传感器数据按协议帧打包(结构体 + 校验和)
- 采集节点本地 OLED 轮流显示各传感器数值
- 按键切换OLED显示页面(传感器1→传感器2→...)
- 通过蓝牙把数据帧发给汇总节点验证
汇总节点 — 蓝牙接收 + 数据处理
- 汇总节点F407通过蓝牙接收采集节点的数据帧
- 帧解析:校验和验证 → 拆包 → 各传感器数据提取
- 汇总节点OLED显示接收状态(信号强度/丢包率/数据)
- 用蓝灯闪烁指示接收到有效数据帧
汇总节点 — ESP8266 WiFi 数传
- ESP8266 AT指令模式:连接WiFi → 设置TCP/UDP → 发送数据
- 汇总节点通过UART2连接ESP8266,把传感器数据转发到WiFi
- 在PC上用网络调试助手(NetAssist)接收数据验证
- 注意ESP8266供电:需要3.3V且电流>300mA,不要用ST-Link供电
PC 端 Python 环境
- Python 环境搭建(用Claude Code安装):
pip install pyserial matplotlib numpy - 用 pyserial 从串口读取数据(汇总节点也可以通过USB串口直接发PC作为备选方案)
- 或用 socket 通过WiFi接收ESP8266发来的数据
- 用 Claude Code 生成Python串口数据接收脚本
Python 实时曲线显示
- 用 Claude Code 生成 matplotlib 实时曲线代码
- 多通道显示:温度曲线、光照曲线、距离曲线、姿态角曲线
- 支持 matplotlib.animation 动态刷新
- 窗口布局:左侧4个实时曲线,右侧数值面板
Python GUI 仪表盘
- 用 Claude Code 升级可视化:从纯曲线升级为仪表盘式
- 可选方案:PyQt5 或 tkinter + matplotlib 嵌入
- 仪表盘元素:温度表盘、光照进度条、姿态3D小球、距离刻度尺
- 数据保存功能:将传感器数据存入CSV文件
下位机低功耗优化 + 错误处理
- 增加看门狗IWDG:程序跑飞自动复位
- 增加通信超时处理:蓝牙断开→自动重连;传感器读取失败→标记错误并重试
- LED状态指示:绿灯=正常运行、红灯=传感器故障、蓝灯=通信故障
- 运行稳定性测试:连续运行1小时不崩溃
缓存日 + 代码重构
- 整理所有代码:去除调试用的printf、统一代码风格
- 把传感器驱动封装成独立模块(.h/.c文件),提高可维护性
- 用 Git 提交所有代码到本地仓库,写好 commit message
- 整理一份开发笔记:记录每个模块的关键配置和踩过的坑
端到端联调(上)
- 采集节点→蓝牙→汇总节点→ESP8266→PC Python 全链路打通
- 从传感器采集到Python界面显示,延迟 ≤ 1秒
- 测试各种边界条件:节点距离拉远(蓝牙极限距离测试)、传感器遮挡
- 记录发现的问题列表
端到端联调(下)
- 根据Day 25问题列表逐一修复
- 增加报警功能:温度超过阈值→蜂鸣器响 + PC端红色闪烁提示
- 增加舵机反馈:光照太暗时自动打开舵机控制的"补光灯角度调节"
- 用 Git 打 tag
v1.0-beta
稳定性测试 + 性能优化
- 连续运行2小时,记录数据刷新率、丢包率、内存使用
- 优化通信速率:提高蓝牙波特率至115200
- 优化传感器采集频率:不同传感器根据变化快慢设不同采样间隔
- Claude Code 辅助做代码审查,找出潜在bug
最终修复 + 版本冻结
- 修复稳定性测试中发现的所有问题
- PCB 飞线整理、杜邦线用热缩管/扎带固定
- 打 tag
v1.0-release,冻结展示版本 - 开始写实训总结报告
展示准备
- 制作展示PPT(10-15页):项目背景 → 系统架构 → 技术方案 → 传感器选型 → 通信协议设计 → 实物照片 → Python可视化截图 → 遇到的问题和解决方案
- 准备演示流程脚本:先让评委看PC端实时数据 → 遮挡传感器看报警 → 展示双节点蓝牙通信 → 回答技术提问
- 准备备份方案:如果现场WiFi连不上,有USB串口直连的备选演示路径
- 打包所有代码 + 文档
作品展示 + 成果提交
- 上午:现场作品展示 + 答辩
- 下午:提交最终交付物:
① 完整源码(Git仓库)
② 实训总结报告(含系统架构图、通信协议文档、开发心得体会)
③ 展示PPT
④ 演示视频(录屏3-5分钟,作为线上备份) - 实训结束
| 时间 | 任务 |
|---|---|
| 8:30—9:00 | 开VS Code,检查前一天代码能编译通过。在终端敲 claude "今天我要做XXX,请给我今天的开发计划" |
| 9:00—11:30 | 新知识学习 + 代码编写(遇到问题立刻问Claude Code,不等不猜) |
| 11:30—12:00 | 简短记录:今天学到什么?什么没搞懂?写入开发笔记 |
| 13:30—16:30 | 动手实验 + 硬件调试(最耗时的环节,耐心排查) |
| 16:30—17:00 | 代码提交Git,写commit message,更新开发笔记 |
| 17:00—17:30 | 回顾当日成果,标注未解决问题,发给Claude Code:"明天我该怎么做来解决XXX" |
①
claude "请解释STM32F407的{外设名}工作原理,用通俗语言"②
claude "帮我写一个用HAL库驱动{传感器型号}的代码,引脚是{XXX}"③
claude "这段代码编译报错:{粘贴错误信息}。如何修复?"④
claude "我的{传感器}读不到数据,接线是{描述},代码在src/main.c中,可能是什么原因?"⑤
claude "请审查我的代码,指出可能导致不稳定的地方"
| 工具/平台 | 网址/说明 |
|---|---|
| VS Code | code.visualstudio.com |
| Git for Windows | git-scm.com |
| Node.js | nodejs.org(LTS版) |
| Claude Code | npm install -g @anthropic-ai/claude-code |
| DeepSeek API | platform.deepseek.com |
| PlatformIO | VS Code扩展商店搜索安装 |
| Zadig(ST-Link驱动) | zadig.akeo.ie |
| STM32F407参考手册 | STM32F4xx Reference Manual(RM0090),建议下载PDF到本地 |
| ST HAL库文档 | STM32CubeF4固件包自带 chm 帮助文档 |
| 串口助手 | WIN:SSCOM / MobaXterm;Linux:minicom / picocom |
| 网络调试助手 | NetAssist(TCP/UDP收发测试) |