🚀 第 14 课 · 微型卫星数据采集任务
模块:航天 | 课时:45 分钟 | 类型:实操+PBL节点 ⭐ PBL 里程碑:原型定稿
📖 讲义
模块:航天 | 课时:45 分钟 | 类型:实操 + PBL 里程碑(原型定稿) 教学法:5E 之 Explore(探索)+ EDP(制作→测试→改进)+ PBL 第二里程碑 🏆
学习目标
完成本课后,你能够:
- 说明 ESA CanSat 的"主任务 + 副任务"设计模式,并能定义一个有明确目标、可行流程的副任务。
- 设计 一个完整的数据采集方案:选定传感器、确定采样率、约定数据格式(CSV)、选择存储/传输方式。
- 完成 一次"任务设计 → 数据采集 → 可视化 → 分析"的闭环,并从数据中得出科学结论。
- 运用 Python(matplotlib)或 Excel 将原始数据转化为折线图、散点图,计算均值、极值、趋势。
- 定稿 你的 PBL 创意设计原型/方案——这是本课的里程碑交付物 🏆。
核心知识
一、CanSat 任务设计:ESA 模式(主任务 + 副任务)
上节课我们拆解了 CanSat 的硬件结构。今天要回答一个更关键的问题:这个"易拉罐卫星"到底要完成什么任务?
欧洲航天局(ESA)的 CanSat 竞赛确立了一个经典的任务设计模式——一个主任务 + 一个副任务:
- 主任务(所有队伍必须完成):测量大气温度和气压,并基于气压推算高度,在 CanSat 下降过程中把数据传回地面站。这是 CanSat 的"标配",验证你能完成一次基本的遥感测量。
- 副任务(每队自主设计):这是体现创意和差异的地方。你需要围绕一个科学问题或工程目标,设计额外的探测任务。
为什么要分主副?因为真实航天任务正是如此——卫星的"有效载荷"分公用载荷和科学载荷,前者保证基本功能,后者体现任务特色。CanSat 的副任务,就是你练习"载荷设计思维"的沙盘。
如何定义一个好的副任务?用"目标—原理—判据"三步法:
| 步骤 | 要问自己的问题 | 例子(测光照判断朝向) |
|---|---|---|
| 目标 | 我要回答什么问题? | CanSat 在空中朝向哪个面? |
| 原理 | 用什么物理量能推断它? | 不同朝向接收的光照强度不同 |
| 判据 | 数据满足什么条件就下结论? | 光照值最高的一面 = 朝向太阳的面 |
💡 设计原则:副任务必须是可观测、可量化、可用现有传感器验证的。不能是"感受太空的美"这种无法测量的目标。
二、数据采集方法:采样率、格式、存储
任务设计好后,要想清楚"数据怎么记下来"。三个关键决策:
1. 采样率(sampling rate)——多久记一次数据?
- 大气测量任务:1–2 Hz(每秒 1–2 次)足够,因为温压变化缓慢。
- 测振动/加速度:需要 10 Hz 以上,否则会漏掉快速变化。
- ⚠️ 采样率不是越高越好:数据量变大、SD 卡写入跟不上、电池消耗加快。根据被测物理量的变化速度来定。
2. 数据格式——数据长什么样?最通用的是 CSV(逗号分隔值):
时间,温度,气压,光照
0.00,24.3,1012.5,560
0.50,24.1,1011.8,620
1.00,23.9,1011.2,580每一行是一次"采样",每一列是一个"通道"。CSV 的好处是纯文本、Excel/Python 都能直接读,坏处是没有单位——所以一定要在表头写清楚,或单独记录说明。
3. 存储还是传输?
| 方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| SD 卡存储 | 容量大、掉电不丢、可离线 | 不能实时看 | 长时间、大数据量任务 |
| 串口实时传输 | 即采即看、便于调试 | 断线即丢、距离受限 | 课堂调试、短时任务 |
🎤 工程经验:真实卫星两种都用——遥测下传关键数据,星上存储全量数据。课堂中我们先串口调试,确认无误后再加 SD 卡。
三、数据可视化:让数据"会说话"
原始数据是一堆数字,人眼很难看出规律。可视化是把数据变成图形,让趋势、异常、相关性一目了然。
| 图表类型 | 适用场景 | 能看出什么 |
|---|---|---|
| 折线图(plot) | 数据随时间变化 | 趋势、周期、突变 |
| 散点图(scatter) | 两个变量的关系 | 相关性、聚类 |
| 柱状图(bar) | 分类数据比较 | 各类大小对比 |
Python + matplotlib 是科研最常用的可视化工具,几行代码就能画图(代码见实践活动和素材清单)。对编程还不熟的同学,Excel 完全能胜任:选中数据 → 插入图表 → 选折线图,5 分钟出图。
💡 好图的三个要素:① 有标题和坐标轴标签(含单位);② 比例合适,曲线占满图面;③ 必要时加图例和数据点标注。
四、数据分析方法:从数字到结论
画完图不等于完成分析。要回答:这组数据告诉了我们什么? 常用四把"分析刀":
- 均值(mean):整体水平。如平均温度 23.5 ℃。
- 极值(max/min):边界情况。如最高光照出现在第 8 秒,对应朝向太阳。
- 趋势(trend):随时间/高度怎么变?气压随高度下降,符合大气模型。
- 相关性(correlation):两个变量是否同涨同跌?如温度和光照是否同步变化?
🎤 关键一问:你的分析结论要回扣到任务目标。如果任务是"判断朝向",结论不能停留在"光照值在 480–650 之间",而要落到"CanSat 在第 6–10 秒朝向窗口(太阳方向)"。
五、科学的实验报告要素
无论你做的是 CanSat 副任务还是 PBL 原型验证,一份合格的实验报告都包含这五块:
| 要素 | 内容 | 常见错误 |
|---|---|---|
| 实验目的 | 一句话说清要验证什么 | 写成"学习数据采集"(这是目标不是目的) |
| 实验方法 | 仪器、流程、控制变量 | 漏写采样率、漏写环境条件 |
| 数据 | 原始记录 + 图表 | 只放表不放图,或图无坐标轴单位 |
| 分析 | 均值/极值/趋势/相关性 | 只描述不分析,没有"所以呢" |
| 结论 | 是否达到目的 + 改进方向 | 结论与数据脱节,或夸大数据含义 |
本课小结
- 任务设计:ESA CanSat = 主任务(测温压高度)+ 副任务(自主设计);副任务用"目标—原理—判据"三步法定义。
- 数据采集:定采样率、用 CSV 格式、串口调试 + SD 卡存储。
- 可视化:matplotlib 折线图/散点图,或 Excel 替代;好图要有标题、轴标签、单位。
- 数据分析:均值、极值、趋势、相关性——四把刀切出结论,结论必须回扣任务目标。
- 🏆 PBL 里程碑:本课你要定稿 PBL 创意设计原型/方案——从"想法"变成"定稿原型"的关键节点,与第 6 课的选题确认首尾呼应。
延伸阅读
- 🌐 ESA CanSat 官方指南(任务设计、评分标准): https://www.esa.int/Education/CanSat
- 📖 matplotlib 官方教程(中文): https://www.matplotlib.org.cn/
- 🎬 "How to analyze sensor data"——Arduino 数据分析入门(B 站可搜)
- 🌐 全国青少年航天创新大赛·航天科技创新赛规则:http://nysic.declare.htgjjl.com
- 💡 想深入?了解奈奎斯特采样定理——为什么采样率必须 ≥ 信号最高频率的 2 倍。
🔬 实践活动
第 14 课实践环节(约 35 分钟 + 10 分钟里程碑审核) 本课是 PBL 项目第二里程碑 🏆——你的创意设计原型/方案在这一节点定稿。
活动目标
- 小组设计并确定一个 CanSat 副任务(目标—原理—判据三步法),完成任务设计书。
- 采集真实传感器数据(含一次模拟"释放/升降"过程),用 CSV 格式记录。
- 用 Python(matplotlib)或 Excel 完成数据可视化,并得出科学结论。
- 🏆 完成 PBL 原型定稿——教师逐组审核《原型定稿检查表》。
器材清单
| 器材 | 数量 | 说明 |
|---|---|---|
| Arduino CanSat 套件 | 每组 1 套 | 含主控板 + 温压/光照/磁场/加速度等传感器 |
| 电脑(装 Arduino IDE + Python/Mind+) | 每组 1 台 | Excel 作为编程替代方案 |
| USB 数据线 | 每组 1 根 | 连接 CanSat 与电脑,串口传输 |
| SD 卡模块(可选) | 每组 1 | 若需离线存储;课堂默认用串口 |
| 《CanSat 任务设计书》模板 | 每组 1 份 | 见活动一 |
| 《数据采集记录表》 | 每组 1 份 | 见活动二 |
| 《PBL 原型定稿检查表》 | 每组 1 份 | 见里程碑环节,🏆 关键文档 |
| 透明胶带 / 橡皮泥 | 若干 | 固定 CanSat 或加配重 |
活动一:副任务设计工作坊(15 分钟)
🎤 教师先花 2 分钟回顾"目标—原理—判据"三步法(见讲义),然后各组自主设计。
候选副任务(每组选 1 个,或自拟)
| 编号 | 候选副任务 | 用到的传感器 | 科学问题 |
|---|---|---|---|
| A | 测光照判断朝向 | 光敏电阻/光照传感器 | CanSat 哪个面朝向光源("太阳")? |
| B | 测磁场判断方向 | 磁力计(如 HMC5883L/QMC5883) | CanSat 相对地磁的朝向如何变化? |
| C | 测加速度判断运动状态 | 加速度计(如 MPU6050/ADXL345) | CanSat 何时静止、何时运动、何时"释放"? |
| D | 测温度梯度判断姿态 | 两个温度传感器(上下布置) | CanSat 哪一端更热(朝向热源)? |
💡 自拟任务也可,但必须满足"可观测、可量化、可用现有传感器验证"。建议基础组从 A/C 入手,进阶组挑战 B/D。
✅ 你的产出:填写《CanSat 任务设计书》
┌──────────────────────────────────────────────────────┐
│ CanSat 副任务设计书(第 14 课) │
├──────────────────────────────────────────────────────┤
│ 团队名称:____________________ │
│ 副任务名称:____________________(一句话) │
│ │
│ 【目标】我们要回答的科学/工程问题: │
│ __________________________________________ │
│ │
│ 【原理】用什么物理量能推断它(写出依据): │
│ __________________________________________ │
│ │
│ 【传感器选择】用到的传感器及型号: │
│ __________________________________________ │
│ │
│ 【实验流程】分步骤(① ② ③ …,含控制变量): │
│ ① ____________________________________ │
│ ② ____________________________________ │
│ ③ ____________________________________ │
│ │
│ 【采样率】每 ___ 秒记一次(理由:__________) │
│ │
│ 【判据】数据满足什么条件即可下结论: │
│ __________________________________________ │
│ │
│ 【预期数据】你预测会看到什么结果: │
│ __________________________________________ │
│ │
│ 【数据格式】列:时间, ____ , ____ , ____ │
└──────────────────────────────────────────────────────┘✅ 完成后请教师初评:任务是否"可观测、可量化、可验证"。未通过则现场修改。
活动二:数据采集实操(10 分钟)
步骤 1:烧录程序
- 打开 Arduino IDE,加载教师提供的 CanSat 数据采集代码模板(见素材清单
cansat_datalog.ino)。 - 确认你的副任务所需传感器引脚/地址与代码一致(需修改的地方教师会标注)。
- 选择正确的开发板和端口,上传程序。
⚠️ 若上传失败:先检查端口(设备管理器)、再检查接线、最后看报错信息。常见问题见教师参考 FAQ。
步骤 2:模拟"释放"过程采集数据
真实 CanSat 是从火箭/气球释放后下降的。课堂中我们用手持模拟代替:
- 升降模拟:一人手持 CanSat,从头顶高度缓慢下降到桌面(约 1.5 米),模拟下降过程;或反复举高-下放模拟波动。
- 朝向模拟(光照/磁场任务):缓慢转动 CanSat,让不同面朝向窗户/光源。
步骤 3:记录数据
- 打开 Arduino IDE 的串口监视器(波特率与代码一致,如 9600),或用串口绘图工具。
- 开始采集,同步进行模拟动作,持续 30–60 秒。
- 将串口数据复制保存为 CSV 文件(
data_teamX.csv),或用 Mind+/串口助手直接导出。
✅ 数据采集记录表
| 项目 | 记录 |
|---|---|
| 采集开始时间 | __________ |
| 采集时长(秒) | __________ |
| 采样率(Hz) | __________ |
| 总数据点数 | __________ |
| 采集时环境(窗户开/关、室内/外、光照) | __________ |
| 操作者 | __________ |
| 数据文件名 | __________ |
| 备注(异常、中断等) | __________ |
💡 小技巧:采集前先静置 5 秒采一段"基线数据",方便后续对比。
活动三:数据可视化与分析(10 分钟)
方式 A:Python + matplotlib(推荐)
打开教师提供的模板 plot_cansat.py(见素材清单),修改文件名和列名后运行:
import matplotlib.pyplot as plt
# 读取数据
times, temps, light = [], [], []
with open("data_teamX.csv", encoding="utf-8") as f:
next(f) # 跳过表头
for line in f:
t, temp, l = line.strip().split(",")
times.append(float(t))
temps.append(float(temp))
light.append(float(l))
# 画折线图
fig, ax1 = plt.subplots()
ax1.plot(times, temps, "r-o", label="温度")
ax1.set_xlabel("时间 / s")
ax1.set_ylabel("温度 / ℃", color="r")
ax2 = ax1.twinx()
ax2.plot(times, light, "b-s", label="光照")
ax2.set_ylabel("光照值", color="b")
plt.title("CanSat 数据采集结果")
plt.savefig("result.png", dpi=120)
plt.show()方式 B:Excel(编程薄弱同学)
- 用 Excel 打开 CSV 文件。
- 选中数据列 → 插入 → 折线图 或 散点图。
- 添加坐标轴标题(含单位)、图表标题。
- 右键数据系列 → 添加趋势线(线性)。
✅ 数据分析任务
填入你的分析结果(回扣任务目标):
| 分析维度 | 你的结果 |
|---|---|
| 均值 | 温度均值 ____ ℃,光照均值 ____ |
| 极值 | 最高光照 ____(出现在第 ___ 秒),最低 ____ |
| 趋势 | 温度随时间 ____(升/降/平稳),光照 ____ |
| 相关性 | 温度与光照 ____(同步/相反/无关) |
| 任务结论 | 根据判据,CanSat 朝向/状态是:____________ |
| 是否达到任务目的 | □ 达到 □ 部分达到 □ 未达到 |
🎤 关键提醒:结论要写"所以呢"——不只是"光照变了",而是"光照在第 8 秒达峰值,说明此时朝向窗户"。
🏆 PBL 里程碑(10 分钟):原型定稿审核
这是本课最重要的环节。在此之前,你的 PBL 作品是"方案 + 初版原型";今天之后,它要定稿——成为后续海报、视频、答辩的依据。与第 6 课的"选题确认"首尾呼应:第 6 课定的是"做什么",本课定的是"做出来是什么样"。
里程碑流程
- 组内自检(3 分钟):对照《PBL 原型定稿检查表》逐项打勾。
- 教师逐组审核(约 7 分钟,教师巡回):每组用 1–2 分钟向教师说明定稿原型。
- 签字确认:通过的小组,教师在检查表上签字,原型定稿。
《PBL 原型定稿检查表》🏆(关键里程碑文档)
┌──────────────────────────────────────────────────────────┐
│ PBL 原型定稿检查表(第 14 课 · 里程碑 ②) │
├──────────────────────────────────────────────────────────┤
│ 团队名称:________________ 审核日期:__________ │
│ │
│ 一、方案定稿 │
│ □ 创意设计方案文稿已有完整初稿(含问题/原理/方案) │
│ □ 选题已锁定,与第 6 课《选题确认书》一致或已正式变更 │
│ □ 查新已完成(≥5 条),创新点表述清晰 │
│ │
│ 二、原型定稿 │
│ □ 实物模型:结构已成型,关键部件可演示(☐ 实物 ☐ 概念) │
│ 若为概念原型:有 3D 渲染图/原理样机 │
│ □ 若为软件/算法类:核心功能已可演示 │
│ □ 原型与方案描述一致(说的和做的对得上) │
│ □ 已用 CanSat 数据采集验证过至少一项关键假设(本课产出) │
│ │
│ 三、可展示性 │
│ □ 能用 1 分钟讲清"解决什么问题、怎么解决、新在哪" │
│ □ 已有至少 1 张原型照片/截图可用于海报 │
│ □ 下一步打磨计划明确(海报/视频/报告分工) │
│ │
│ 四、里程碑结论 │
│ □ 通过定稿,进入打磨阶段 │
│ □ 小幅修改后通过(修改项:______________) │
│ □ 需重大返工(原因:____________________) │
│ │
│ 教师签字:________________ 日期:__________ │
└──────────────────────────────────────────────────────────┘🎤 审核标准:见教师参考"PBL 原型定稿审核标准"。核心是三点——方案完整、原型可演示、与选题一致。未通过的小组须在 3 天内补交。
讨论问题(如时间允许)
- 你的副任务数据,是否支持你最初的"预期数据"?如果不支持,是数据有问题还是假设有问题?
- 如果再做一次,你会怎么改进采样率或流程来获得更好的数据?
- CanSat 的"主任务 + 副任务"模式,如何迁移到你的 PBL 作品?(你的作品也有"核心功能 + 创新功能"吗?)
⚠️ 安全提示
- 电路安全:接线时务必断电(拔 USB 或关电源);传感器供电电压确认(多数为 3.3V/5V,接错易烧毁)。
- 防止跌落:手持采集时握紧 CanSat,下方勿站人;可在 CanSat 外裹泡沫/海绵防摔。
- 数据线:USB 线不要用力拉扯,避免扯松接口或带倒电脑。
- 锐器:CanSat 外壳如有金属边角,注意防划伤。
- 用眼卫生:长时间盯串口数据易疲劳,每 15 分钟远眺一次。
✏️ 学生任务单
姓名:__________ 班级:__________ 团队:__________
课堂任务(当堂完成)
任务 1:副任务概念辨析(3 分钟)
- ESA CanSat 任务由一个 ________ 和一个 ________ 组成。
- 主任务(所有队必须完成)是测量 、 并推算 ________。
- 定义副任务的"三步法"是:________ → ________ → ________。
- 课堂默认数据格式是 ________,它的好处是 ________________。
任务 2:完成《CanSat 副任务设计书》(活动一)
与队友共同填写(见实践活动模板),核心字段摘录如下:
| 字段 | 你的内容 |
|---|---|
| 副任务名称 | ________________________ |
| 目标(要回答的问题) | ________________________ |
| 原理(用什么物理量推断) | ________________________ |
| 选用传感器 | ________________________ |
| 采样率(理由) | 每 ___ 秒一次,因为 __________ |
| 判据(什么条件算成功) | ________________________ |
| 预期数据 | ________________________ |
✅ 教师初评:☐ 通过 ☐ 修改后通过 签字:________
任务 3:数据采集记录(活动二)
| 项目 | 记录 |
|---|---|
| 采集时长(秒) | ________ |
| 采样率(Hz) | ________ |
| 总数据点数 | ________ |
| 采集环境(光照/室内外) | ________ |
| 数据文件名 | ________ |
| 异常/中断记录 | ________ |
任务 4:数据分析与结论(活动三)
| 分析维度 | 你的结果 |
|---|---|
| 均值 | ________ |
| 极值(max / min 及对应时间) | ________ |
| 趋势 | ________ |
| 相关性 | ________ |
| 任务结论(回扣目标) | ________ |
| 是否达到任务目的 | ☐ 达到 ☐ 部分 ☐ 未达到 |
附图:将你的可视化图(Python 或 Excel)截图贴于此,或写明文件名:____________
任务 5:PBL 原型定稿检查表(核心部分)🏆
这是本课里程碑。逐项打勾,未完成的当场说明原因和补救计划。
| 检查项 | 完成 | 备注/补救计划 |
|---|---|---|
| 方案文稿已有完整初稿(问题/原理/方案) | ☐ | |
| 选题已锁定,与第 6 课一致或已正式变更 | ☐ | |
| 查新已完成(≥5 条),创新点清晰 | ☐ | |
| 实物/概念原型已成型且可演示 | ☐ | |
| 原型与方案描述一致 | ☐ | |
| 用 CanSat 数据验证过至少一项关键假设 | ☐ | |
| 能 1 分钟讲清"问题/方案/创新点" | ☐ | |
| 已有至少 1 张原型照片可用于海报 | ☐ | |
| 下一步打磨计划(海报/视频/报告分工)明确 | ☐ |
里程碑结论:☐ 通过定稿 ☐ 小幅修改后通过 ☐ 需返工 教师签字:________ 日期:________
课后任务
必做
完善数据分析报告(一份 mini 实验报告,≥400 字):
- 包含五要素:实验目的、实验方法、数据(图表)、分析、结论。
- 用 Python 或 Excel 重画一张更规范的图(含标题、轴标签、单位)。
- 提交:报告 PDF + CSV 原始数据 + 可视化图。
定稿原型补完:若本课未通过里程碑审核,3 天内补交; 若已通过,根据下一步计划完成海报初稿或视频脚本(二选一,分工到人)。
研究日志更新:在 PBL 项目日志中记录本周进展(任务设计 + 数据 + 结论 + 定稿状态),不少于 200 字。
选做 💡
- 优化副任务:换一组参数(提高采样率、换场地、加控制变量)再采一次,对比两次结论的差异。
- 学习 matplotlib 进阶:尝试画散点图(如温度 vs 光照)、加图例、保存高清图。
- 跨组对比:与选不同副任务的小组交换数据,看看不同传感器能否交叉验证(如加速度数据能否印证"释放"时刻)。
自评(✔ / ✘)
| 本课目标 | 达成 |
|---|---|
| 能说出 CanSat 主任务 + 副任务模式 | |
| 能用"目标—原理—判据"三步法定义副任务 | |
| 成功采集并保存了一组真实传感器数据 | |
| 用 Python 或 Excel 画出了数据图 | |
| 从数据中得出了回扣任务目标的结论 | |
| 完成 PBL 原型定稿检查并(通过/有明确补救计划) | |
| 能说出本课里程碑与第 6 课选题确认的呼应关系 |
👨🏫 教师参考
课时概览
本课是航天模块的实操核心课,也是整个 PBL 项目的第二里程碑节点(原型定稿),承担三重任务:CanSat 副任务设计 → 数据采集闭环 → PBL 原型定稿审核。
成败关键在于:① 让学生亲手完成一次从"提问"到"结论"的数据闭环(而非只听不练);② 严格把关里程碑——原型定稿意味着项目从"做"转入"打磨展示"阶段,松放过关会让后续海报/视频/答辩失去根基。本课的定稿节点与第 6 课的选题确认首尾呼应:第 6 课定"做什么",本课定"做出来是什么样"。
时间分配表(45 分钟)
| 时间 | 环节 | 内容 | 形式 |
|---|---|---|---|
| 0–3 min | 🎤 导入 | 回顾上节 CanSat 拆解 + 抛问:"易拉罐卫星到底要完成什么任务?" | 讲授 |
| 3–10 min | 🎤 任务设计与数据采集方法 | ESA 主+副任务模式、"目标—原理—判据"三步法、采样率/CSV/存储 | 讲授 |
| 10–25 min | ✅ 副任务设计工作坊 | 各组选定副任务,填《CanSat 任务设计书》,教师初评 | 小组 + 巡回 |
| 25–35 min | ✅ 数据采集实操 | 烧录程序、模拟"释放"、采集 30–60 秒数据存 CSV | 小组实操 |
| 35–45 min | 🏆 PBL 原型定稿审核 + 可视化课后化 | 教师逐组过《原型定稿检查表》并签字;可视化分析若课堂来不及,转为课后 | 里程碑审核 |
⏱ 时间紧的应对:45 分钟要做"设计+采集+定稿"确实紧张。建议:① 任务设计书要求精简版(6 字段即可,完整版课后补);② 数据可视化不强求课堂完成,改为课后,把课堂宝贵时间留给采集+定稿;③ 准备好现成代码模板,学生只需改文件名/列名。
教学设计(5E + EDP + PBL 对应)
| 5E / EDP / PBL 阶段 | 本课对应 |
|---|---|
| Engage(激发) | "易拉罐卫星要完成什么任务"——从拆解到使用 |
| Explore(探索) | 副任务设计工作坊——学生自主定义探测任务 |
| Explain(解释) | 教师讲任务设计法、数据采集方法、分析方法 |
| Elaborate(拓展) | 课后完善数据分析报告 + 原型补完 |
| Evaluate(评价) | 副任务设计书初评 + 数据分析结论 + 原型定稿检查表 |
| EDP | 上节"设计"→ 本节"制作(采集)+ 测试(数据验证)+ 改进" |
| PBL 里程碑 🏆 | 原型定稿:从"想法/初版"→"定稿原型" |
重难点与突破策略
重难点 1:副任务设计——创意与可行性的平衡 ⭐
- 学生困难:两种极端——要么"测个温度"太简单无新意;要么"探测外星生命"脱离传感器现实。
- 突破:用候选清单(A/B/C/D)给脚手架,基础组从 A/C(光照/加速度)入手,进阶组挑战 B/D(磁场/温度梯度)。强调"可观测、可量化、可用现有传感器验证"三标准。教师在初评时用"三问"快速卡关:① 能测吗?② 能算/能判吗?③ 有没有结论?
重难点 2:数据可视化对编程薄弱学生是拦路虎
- 学生困难:Python + matplotlib 对没编程基础的学生门槛高,容易卡在报错上浪费整节课。
- 突破:① 提供现成代码模板(见素材清单
plot_cansat.py),学生只改文件名和列名;② Excel 作为兜底方案,明确告诉学生"Excel 出图完全合格",消除焦虑;③ 课堂优先保采集,可视化课后完成。绝不让编程门槛挡住数据分析思维的培养。
重难点 3:从"数据描述"到"科学结论"的跨越
- 学生困难:分析停在"光照值在 480–650 之间",不会落到"CanSat 在第 8 秒朝向窗户"。
- 突破:在讲义和分析表里反复强调"回扣任务目标"。给一个正反例对比:❌"温度变了" vs ✅"温度在第 15 秒下降 2℃,对应 CanSat 下降到阴影区"。让学生把"判据"字段抄到分析表上方,时时对照。
重难点 4:原型定稿审核的标准化 ⭐【里程碑关键】
- 学生困难:原型水平参差,教师凭感觉审容易宽严不一。
- 突破:用本课末尾的"PBL 原型定稿审核标准"(见下)量化判断,分"通过/小改后通过/返工"三档,每档有明确触发条件。重点看三点:方案完整、原型可演示、与选题一致。
重难点附加:采样率选择的教学
学生常问"采样率设多少"。给一个简单口诀:"被测对象变化多快,就采多快;留 2 倍余量。" 大气温压秒级变化 → 1–2 Hz 足够;加速度/振动毫秒级 → ≥10 Hz。可顺带提"奈奎斯特定理"作为高阶拓展,但不展开公式。
常见问题(FAQ)
Q1:学生烧录程序失败(端口找不到/上传报错)怎么办?
三步排查:① 端口——设备管理器看是否识别(CH340/CP2102 驱动是否装);② 接线——TX/RX 是否接反、供电是否到位;③ 报错——看 IDE 红字,"avrdude: stk500_getsync()" 多为波特率或晶振不匹配。备 1–2 套已验证的备用套件,故障组换设备保进度。
Q2:学生副任务设计太空泛(如"研究环境")或太复杂怎么办?
空泛用"具体化追问":"研究环境的什么?温度?光照?哪个方向的?"复杂用"减法":"如果只保留一个传感器,你能回答什么?"目标把任务压到"一个变量、一个判据"。举正例(见下"参考答案·优秀副任务示例")示范。
Q3:编程薄弱学生卡在 Python 上,整节课没产出怎么办?
立即切 Excel 方案(活动三方式 B)。明确告知"Excel 出图是合格交付"。课堂核心是数据采集成功 + 分析结论成立,工具是次要的。可安排编程较好的学生跨组临时支援。
Q4:某组数据全是噪声/无变化,分析不出结论怎么办?
引导排查:① 传感器是否正常(手捂温度计看是否升、挡光看光照是否降);② 接线/引脚对不对;③ 是否在采集时做了模拟动作。若硬件问题来不及修,给一份教师备用数据集(见素材清单)让学生至少完成分析环节,并要求课后重采。
Q5:原型定稿时,某组原型明显没做好,但学生想"先过了再说",怎么办?
守住里程碑严肃性。如实判为"小改后通过"或"返工",并写明具体修改项和期限(3 天)。松放过关会传染——其他组看到"没做好也能过",下次就都糊弄。但态度要鼓励:"今天没完成没关系,关键是清楚还差什么。"给出明确补救路径。
Q6:某组的 PBL 作品和 CanSat 完全无关,怎么用本课验证假设?
CanSat 数据采集验证的是**"传感器+数据+分析"的方法论**,不必和 PBL 选题强绑定。让该组用 CanSat 验证其作品中任何一个涉及测量/传感的假设即可(如作品涉及环境监测,就用温压数据验证;涉及姿态,就用加速度/磁场验证)。验证的是方法,不是内容。
参考答案(学生任务单)
任务 1(填空)
- 主任务、副任务
- 温度、气压、高度
- 目标、原理、判据
- CSV(逗号分隔值);纯文本、Excel/Python 都能直接读
任务 4(分析结论)——优秀副任务设计示例
示例 A:测光照判断朝向(基础组)
- 目标:判断 CanSat 哪个面朝向窗户(光源)。
- 原理:朝光面光照值最高,背光面最低。
- 判据:某面光照值持续 > 基线 1.5 倍,则该面朝向光源。
- 预期:转动 CanSat 时光照呈周期性峰谷。
- 优秀结论样例:"光照值在第 6–10 秒达峰值(约 650),基线约 420,峰值/基线 ≈ 1.55,超过 1.5 倍判据,说明此期间 CanSat 光敏面朝向窗户(太阳方向)。"
示例 B:测加速度判断运动状态(基础组)
- 目标:判断 CanSat 何时静止、何时被举起/释放。
- 原理:静止时 z 轴加速度 ≈ 9.8 m/s²(重力);运动/冲击时出现尖峰。
- 判据:|a − 9.8| > 2 m/s² 视为运动/冲击事件。
- 优秀结论样例:"第 12 秒 z 轴加速度出现 −3.2 m/s² 尖峰(|a−9.8|=13),远超 2 m/s² 判据,对应 CanSat 被快速下放(模拟释放);第 15 秒恢复至 9.7,说明已落稳。"
示例 C:测磁场判断方向(进阶组)
- 目标:通过地磁判断 CanSat 水平朝向。
- 原理:磁力计 x/y 分量随朝向呈正余弦变化。
- 判据:水平旋转一周,x、y 各出现一次极大极小,相位差约 90°。
- 优秀结论样例:"x 分量在第 8 秒达峰、y 分量在第 12 秒达峰,相位差约 90°,符合旋转模型;据此推算 CanSat 约在 8 秒时磁北朝向窗户方向。"
💡 这些示例体现了"数据 → 判据 → 结论"的完整逻辑链,可印发给学生对标。
差异化教学建议
- 编程薄弱学生:① 优先用 Excel 出图;② 提供已改好参数的
plot_cansat.py模板,只需双击运行;③ 数据采集时配编程较好的同伴结对;④ 分析结论用填空式表格引导,降低开放度。 - 学有余力学生:① 副任务选 B/D(磁场/温度梯度);② 加测第二个变量做相关性散点图;③ 尝试 SD 卡存储 + 串口双模式;④ 探究奈奎斯特采样定理,用高低采样率对比数据失真。
- 动手能力强学生:让其协助故障排查和设备管理,担任"技术组长",跨组支援。
- PBL 进度落后小组:里程碑环节单独辅导,明确"最小可演示原型"标准(能讲清一个核心功能即可),避免追求完美而无法定稿。
PBL 原型定稿审核标准 🏆(教师巡回用)
教师在巡回时用此标准快速判定。核心是三看:看方案、看原型、看一致性。
| 维度 | 通过(定稿) | 小改后通过 | 返工 |
|---|---|---|---|
| 方案完整性 | 文稿初稿含问题/原理/方案三块,查新≥5 条 | 缺某一块或查新<5,但思路清晰 | 文稿仅有零散想法 |
| 原型可演示性 | 实物/概念原型能演示核心功能 | 大部分可演示,某部件待修 | 无任何可演示形态 |
| 与选题一致性 | 原型与第 6 课选题一致(或已正式变更) | 基本一致,局部调整 | 与选题严重不符 |
| 数据验证 | 用 CanSat 数据验证过至少一项假设 | 采集了数据但分析未完成 | 无任何数据产出 |
判定规则:四项全部"通过"→ 定稿签字;仅 1 项"小改"→ 小改后通过(写明修改项+3 天期限);任一"返工"→ 返工(给补救方案+期限)。
🎤 审核话术:定稿 → "原型锁定,进入海报/视频打磨,下周起按计划推进";小改 → "把 ___ 补完,3 天内交我复审";返工 → "核心问题在 ___,我建议 ___,重做这一部分,下周复审。"
🏆 里程碑意义:这是 PBL 项目从"创造期"转入"展示期"的转折点。定稿后,第 15–18 课的资源全部用于海报、视频、报告、答辩准备,不再大改原型。守住此节,期末作品包才有根基。
Python 数据可视化示例代码
提供给学生的模板,已尽量简化。学生只需改
CSV_FILE和列数。
# plot_cansat.py —— CanSat 数据可视化模板
# 用法:把本文件和 data_teamX.csv 放同一文件夹,运行即可
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"] # 中文显示
plt.rcParams["axes.unicode_minus"] = False
CSV_FILE = "data_teamX.csv" # ← 改成你的文件名
times, ch1, ch2 = [], [], [] # 三列:时间、通道1、通道2
with open(CSV_FILE, encoding="utf-8") as f:
next(f) # 跳过表头
for line in f:
parts = line.strip().split(",")
if len(parts) < 3:
continue
times.append(float(parts[0]))
ch1.append(float(parts[1]))
ch2.append(float(parts[2]))
fig, ax1 = plt.subplots(figsize=(8, 5))
ax1.plot(times, ch1, "r-o", markersize=3, label="温度/℃")
ax1.set_xlabel("时间 / s")
ax1.set_ylabel("通道1", color="r")
ax2 = ax1.twinx()
ax2.plot(times, ch2, "b-s", markersize=3, label="光照")
ax2.set_ylabel("通道2", color="b")
plt.title("CanSat 数据采集结果")
fig.legend(loc="upper right", bbox_to_anchor=(0.9, 0.85))
plt.tight_layout()
plt.savefig("result.png", dpi=120)
plt.show()
# 简单统计
print(f"通道1: 均值={sum(ch1)/len(ch1):.2f}, 最大={max(ch1)}, 最小={min(ch1)}")
print(f"通道2: 均值={sum(ch2)/len(ch2):.2f}, 最大={max(ch2)}, 最小={min(ch2)}")Excel 替代:打开 CSV → 选中数据 → 插入折线图 → 添加轴标题(含单位)→ 可加趋势线(右键系列→添加趋势线)。5 分钟出图,完全合格。
赛事对接说明 🏆
本课是赛事对接的关键验证节点:
- 原型定稿 = 赛事"实物模型类"的核心交付物成型:航天科技创新赛(实物模型类)评审中,"实物/概念模型"是硬性要求,本课定稿的即是该交付物。
- CanSat 副任务设计思维 = 赛事加分项:评委看重"载荷设计思维"——你的卫星/探测器要完成什么科学任务。副任务设计书直接对应赛事方案文稿中的"任务目标"部分。
- 数据闭环 = 研究报告的核心证据:本课产出的数据 + 可视化 + 结论,是研究报告(作品包第 5 件)最有力的实证,远胜纯文字描述。
- 与第 6 课呼应:第 6 课(选题确认)定"做什么",本课(原型定稿)定"做成什么样"。两个里程碑共同构成 PBL 的"立项—定稿"骨架,后续第 15–18 课进入"展示打磨"。
- 时间紧迫感:本课后距期末展示仅 4 课(第 15–18),必须让学生意识到"原型不能再大改,重点转向展示"。
课前准备清单
- [ ] CanSat 套件数量核对(每组 1 套),提前测试每套能正常读传感器+串口输出
- [ ] 电脑装好 Arduino IDE(含 CH340/CP2102 驱动)、Python(含 matplotlib)或 Mind+
- [ ] 打印《CanSat 副任务设计书》《数据采集记录表》《PBL 原型定稿检查表》模板(每组各 1)
- [ ] 准备 CanSat 数据采集代码模板(
cansat_datalog.ino,见素材清单),已注释需修改处 - [ ] 准备 Python 可视化模板(
plot_cansat.py,见上文) - [ ] 准备 教师备用数据集(一份正常采集的 CSV,供故障组分析用)
- [ ] 准备 Excel 数据表模板(
cansat_template.xlsx,编程薄弱学生用) - [ ] 备 1–2 套已验证的备用 CanSat 套件(应对硬件故障)
- [ ] 透明胶带/海绵/橡皮泥(固定、配重、防摔)
- [ ] 课前收集各组 PBL 进展,预判哪组可能无法定稿,重点辅导
- [ ] 打印"优秀副任务设计示例"(见参考答案),供学生对标
📋 素材清单
课前准备(教师)
代码模板(提供给学生,课堂用)
| 素材 | 用途 | 说明 |
|---|---|---|
cansat_datalog.ino | CanSat 数据采集代码 | Arduino IDE 烧录,串口输出 CSV;含温压+光照(可改其他传感器) |
plot_cansat.py | Python matplotlib 可视化 | 双 Y 轴折线图,改文件名即可运行;附简单统计输出 |
cansat_template.xlsx | Excel 数据表模板 | 编程薄弱学生用;含示例数据 + 折线图设置 |
backup_data.csv | 教师备用数据集 | 故障组分析用;含一组正常的温压光照 60 秒数据 |
文档(打印)
| 文档 | 份数 | 说明 |
|---|---|---|
| 《CanSat 副任务设计书》模板 | 每组 1 | 见实践活动活动一 |
| 《数据采集记录表》 | 每组 1 | 见实践活动活动二 |
| 《PBL 原型定稿检查表》🏆 | 每组 1 | 里程碑关键文档,见实践活动 |
| 学生任务单 | 每人 1 | |
| "优秀副任务设计示例"(参考答案节选) | 每组 1 | 教师参考中的 A/B/C 示例,供对标 |
软件 / 链接
| 资源 | 用途 |
|---|---|
| Arduino IDE(含 CH340/CP2102 驱动) | 烧录 CanSat 程序、串口监视器 |
| Python 3 + matplotlib | 数据可视化(推荐) |
| Mind+(图形化编程) | Python/Arduino 替代,适合编程薄弱学生 |
| Excel / WPS 表格 | 可视化兜底方案 |
| ESA CanSat 官方指南 https://www.esa.int/Education/CanSat | 任务设计参考 |
| matplotlib 中文教程 https://www.matplotlib.org.cn/ | 可视化学习 |
| 大赛官网 http://nysic.declare.htgjjl.com | 航天科技创新赛规则 |
代码模板(完整内容)
模板 1:CanSat 数据采集(Arduino)
文件:
cansat_datalog.ino|默认输出"时间,温度,气压,光照"四列 CSV,波特率 9600
// CanSat 数据采集模板(第 14 课)
// ⚠️ 请根据你的副任务修改传感器读取部分(标注 MODIFY 处)
// 默认:DHT11 测温湿度 + BMP280 测气压 + 光敏电阻(模拟口)测光照
// ---- 传感器库(按需启用)----
#include <DHT.h> // 温湿度(若有)
#include <Wire.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#define LIGHTPIN A0 // 光敏电阻接 A0
// ---- 参数 ----
const float SAMPLE_INTERVAL = 0.5; // 采样间隔(秒) ← MODIFY 按需调整
unsigned long t0;
void setup() {
Serial.begin(9600);
dht.begin();
// 表头(CSV 第一行)← MODIFY 改成你的列名
Serial.println("时间,温度,气压,光照");
t0 = millis();
}
void loop() {
float t = (millis() - t0) / 1000.0; // 经过的秒数
// ---- 读取传感器(MODIFY:换成你副任务需要的传感器)----
float temp = dht.readTemperature(); // 温度 ℃
float pres = 1013.0; // 气压 hPa(接 BMP280 后替换)
int light = analogRead(LIGHTPIN); // 光照 0-1023
// ---- 串口输出 CSV ----
if (!isnan(temp)) {
Serial.print(t, 2); Serial.print(",");
Serial.print(temp, 1); Serial.print(",");
Serial.print(pres, 1); Serial.print(",");
Serial.println(light);
}
delay(SAMPLE_INTERVAL * 1000); // 按采样率延时
}使用步骤:① 装库(DHT sensor library by Adafruit);② 选对开发板和端口;③ 上传;④ 打开串口监视器(9600),看到 CSV 数据流;⑤ 采集时复制保存为
.csv文件。
模板 2:Python 可视化
文件:
plot_cansat.py|双 Y 轴折线图 + 简单统计(见教师参考完整版)
# plot_cansat.py —— CanSat 数据可视化模板
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"] # 中文
plt.rcParams["axes.unicode_minus"] = False
CSV_FILE = "data_teamX.csv" # ← 改成你的文件名
times, ch1, ch2 = [], [], []
with open(CSV_FILE, encoding="utf-8") as f:
next(f)
for line in f:
parts = line.strip().split(",")
if len(parts) < 3:
continue
times.append(float(parts[0]))
ch1.append(float(parts[1]))
ch2.append(float(parts[2]))
fig, ax1 = plt.subplots(figsize=(8, 5))
ax1.plot(times, ch1, "r-o", markersize=3, label="通道1")
ax1.set_xlabel("时间 / s"); ax1.set_ylabel("通道1", color="r")
ax2 = ax1.twinx()
ax2.plot(times, ch2, "b-s", markersize=3, label="通道2")
ax2.set_ylabel("通道2", color="b")
plt.title("CanSat 数据采集结果")
fig.legend(loc="upper right", bbox_to_anchor=(0.9, 0.85))
plt.tight_layout(); plt.savefig("result.png", dpi=120); plt.show()
print(f"通道1: 均值={sum(ch1)/len(ch1):.2f} 最大={max(ch1)} 最小={min(ch1)}")
print(f"通道2: 均值={sum(ch2)/len(ch2):.2f} 最大={max(ch2)} 最小={min(ch2)}")模板 3:Excel 数据表
文件:
cansat_template.xlsx|结构如下,学生粘贴数据后直接出图
| A列(时间) | B列(温度) | C列(气压) | D列(光照) |
|---|---|---|---|
| 0.00 | 24.3 | 1012.5 | 560 |
| 0.50 | 24.1 | 1011.8 | 620 |
| ... | ... | ... | ... |
内置设置:
- 选中 B 列 → 插入折线图(温度趋势)
- 选中 D 列 → 插入折线图(光照趋势)
- 图表标题、X轴"时间/s"、Y轴含单位已预设
- 提示框:右键数据系列 → 添加趋势线(线性)可看趋势
模板 4:备用数据集
文件:
backup_data.csv|60 秒模拟数据(温度缓降 + 光照周期变化),供硬件故障组分析用。格式同模板 1 输出。
器材清单(汇总)
| 器材 | 数量 | 备注 |
|---|---|---|
| Arduino CanSat 套件 | 每组 1 | 主控板 + 多传感器 |
| 电脑 | 每组 1 | Arduino IDE + Python/Excel |
| USB 数据线 | 每组 1 | 串口通信 + 供电 |
| SD 卡模块(可选) | 每组 1 | 离线存储;课堂默认串口 |
| 透明胶带/海绵/橡皮泥 | 若干 | 固定、配重、防摔 |
| 备用 CanSat 套件 | 全班 1–2 套 | 应对硬件故障 |
注意事项
- ⚠️ 课前务必逐套测试 CanSat,确保传感器读取正常、串口有输出。硬件故障是本课最大风险。
- ⚠️ USB 驱动(CH340/CP2102)是常见坑,课前在每台电脑预装,避免课堂装驱动浪费时间。
- ⚠️ Python 中文显示需设
font.sans-serif = SimHei,否则中文乱码。模板已写好,提醒学生勿删。 - ⚠️ matplotlib 若未安装:
pip install matplotlib。可预装或提供 Mind+/Excel 替代。 - ⚠️ 传感器供电电压确认(3.3V/5V),接错易烧毁,接线时断电。