Skip to content

🚀 第 14 课 · 微型卫星数据采集任务

模块:航天 | 课时:45 分钟 | 类型:实操+PBL节点 ⭐ PBL 里程碑:原型定稿

🛠️ 本课配套工具:🛰️ 轨道计算器 →

📖 讲义

模块:航天 | 课时:45 分钟 | 类型:实操 + PBL 里程碑(原型定稿) 教学法:5E 之 Explore(探索)+ EDP(制作→测试→改进)+ PBL 第二里程碑 🏆


学习目标

完成本课后,你能够:

  1. 说明 ESA CanSat 的"主任务 + 副任务"设计模式,并能定义一个有明确目标、可行流程的副任务。
  2. 设计 一个完整的数据采集方案:选定传感器、确定采样率、约定数据格式(CSV)、选择存储/传输方式。
  3. 完成 一次"任务设计 → 数据采集 → 可视化 → 分析"的闭环,并从数据中得出科学结论。
  4. 运用 Python(matplotlib)或 Excel 将原始数据转化为折线图、散点图,计算均值、极值、趋势。
  5. 定稿 你的 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 分钟出图。

💡 好图的三个要素:① 有标题和坐标轴标签(含单位);② 比例合适,曲线占满图面;③ 必要时加图例和数据点标注。

四、数据分析方法:从数字到结论

画完图不等于完成分析。要回答:这组数据告诉了我们什么? 常用四把"分析刀":

  1. 均值(mean):整体水平。如平均温度 23.5 ℃。
  2. 极值(max/min):边界情况。如最高光照出现在第 8 秒,对应朝向太阳。
  3. 趋势(trend):随时间/高度怎么变?气压随高度下降,符合大气模型。
  4. 相关性(correlation):两个变量是否同涨同跌?如温度和光照是否同步变化?

🎤 关键一问:你的分析结论要回扣到任务目标。如果任务是"判断朝向",结论不能停留在"光照值在 480–650 之间",而要落到"CanSat 在第 6–10 秒朝向窗口(太阳方向)"。

五、科学的实验报告要素

无论你做的是 CanSat 副任务还是 PBL 原型验证,一份合格的实验报告都包含这五块:

要素内容常见错误
实验目的一句话说清要验证什么写成"学习数据采集"(这是目标不是目的)
实验方法仪器、流程、控制变量漏写采样率、漏写环境条件
数据原始记录 + 图表只放表不放图,或图无坐标轴单位
分析均值/极值/趋势/相关性只描述不分析,没有"所以呢"
结论是否达到目的 + 改进方向结论与数据脱节,或夸大数据含义

本课小结

  • 任务设计:ESA CanSat = 主任务(测温压高度)+ 副任务(自主设计);副任务用"目标—原理—判据"三步法定义。
  • 数据采集:定采样率、用 CSV 格式、串口调试 + SD 卡存储。
  • 可视化:matplotlib 折线图/散点图,或 Excel 替代;好图要有标题、轴标签、单位。
  • 数据分析:均值、极值、趋势、相关性——四把刀切出结论,结论必须回扣任务目标。
  • 🏆 PBL 里程碑:本课你要定稿 PBL 创意设计原型/方案——从"想法"变成"定稿原型"的关键节点,与第 6 课的选题确认首尾呼应。

延伸阅读

  1. 🌐 ESA CanSat 官方指南(任务设计、评分标准): https://www.esa.int/Education/CanSat
  2. 📖 matplotlib 官方教程(中文): https://www.matplotlib.org.cn/
  3. 🎬 "How to analyze sensor data"——Arduino 数据分析入门(B 站可搜)
  4. 🌐 全国青少年航天创新大赛·航天科技创新赛规则:http://nysic.declare.htgjjl.com
  5. 💡 想深入?了解奈奎斯特采样定理——为什么采样率必须 ≥ 信号最高频率的 2 倍。

🔬 实践活动

第 14 课实践环节(约 35 分钟 + 10 分钟里程碑审核) 本课是 PBL 项目第二里程碑 🏆——你的创意设计原型/方案在这一节点定稿


活动目标

  1. 小组设计并确定一个 CanSat 副任务(目标—原理—判据三步法),完成任务设计书。
  2. 采集真实传感器数据(含一次模拟"释放/升降"过程),用 CSV 格式记录。
  3. Python(matplotlib)或 Excel 完成数据可视化,并得出科学结论。
  4. 🏆 完成 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:烧录程序

  1. 打开 Arduino IDE,加载教师提供的 CanSat 数据采集代码模板(见素材清单 cansat_datalog.ino)。
  2. 确认你的副任务所需传感器引脚/地址与代码一致(需修改的地方教师会标注)。
  3. 选择正确的开发板和端口,上传程序。

⚠️ 若上传失败:先检查端口(设备管理器)、再检查接线、最后看报错信息。常见问题见教师参考 FAQ。

步骤 2:模拟"释放"过程采集数据

真实 CanSat 是从火箭/气球释放后下降的。课堂中我们用手持模拟代替:

  • 升降模拟:一人手持 CanSat,从头顶高度缓慢下降到桌面(约 1.5 米),模拟下降过程;或反复举高-下放模拟波动。
  • 朝向模拟(光照/磁场任务):缓慢转动 CanSat,让不同面朝向窗户/光源。

步骤 3:记录数据

  1. 打开 Arduino IDE 的串口监视器(波特率与代码一致,如 9600),或用串口绘图工具。
  2. 开始采集,同步进行模拟动作,持续 30–60 秒
  3. 将串口数据复制保存为 CSV 文件data_teamX.csv),或用 Mind+/串口助手直接导出。

✅ 数据采集记录表

项目记录
采集开始时间__________
采集时长(秒)__________
采样率(Hz)__________
总数据点数__________
采集时环境(窗户开/关、室内/外、光照)__________
操作者__________
数据文件名__________
备注(异常、中断等)__________

💡 小技巧:采集前先静置 5 秒采一段"基线数据",方便后续对比。


活动三:数据可视化与分析(10 分钟)

方式 A:Python + matplotlib(推荐)

打开教师提供的模板 plot_cansat.py(见素材清单),修改文件名和列名后运行:

python
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(编程薄弱同学)

  1. 用 Excel 打开 CSV 文件。
  2. 选中数据列 → 插入 → 折线图散点图
  3. 添加坐标轴标题(含单位)、图表标题。
  4. 右键数据系列 → 添加趋势线(线性)。

✅ 数据分析任务

填入你的分析结果(回扣任务目标):

分析维度你的结果
均值温度均值 ____ ℃,光照均值 ____
极值最高光照 ____(出现在第 ___ 秒),最低 ____
趋势温度随时间 ____(升/降/平稳),光照 ____
相关性温度与光照 ____(同步/相反/无关)
任务结论根据判据,CanSat 朝向/状态是:____________
是否达到任务目的□ 达到 □ 部分达到 □ 未达到

🎤 关键提醒:结论要写"所以呢"——不只是"光照变了",而是"光照在第 8 秒达峰值,说明此时朝向窗户"。


🏆 PBL 里程碑(10 分钟):原型定稿审核

这是本课最重要的环节。在此之前,你的 PBL 作品是"方案 + 初版原型";今天之后,它要定稿——成为后续海报、视频、答辩的依据。与第 6 课的"选题确认"首尾呼应:第 6 课定的是"做什么",本课定的是"做出来是什么样"。

里程碑流程

  1. 组内自检(3 分钟):对照《PBL 原型定稿检查表》逐项打勾。
  2. 教师逐组审核(约 7 分钟,教师巡回):每组用 1–2 分钟向教师说明定稿原型。
  3. 签字确认:通过的小组,教师在检查表上签字,原型定稿。

《PBL 原型定稿检查表》🏆(关键里程碑文档)

┌──────────────────────────────────────────────────────────┐
│        PBL 原型定稿检查表(第 14 课 · 里程碑 ②)           │
├──────────────────────────────────────────────────────────┤
│ 团队名称:________________  审核日期:__________          │
│                                                          │
│ 一、方案定稿                                             │
│  □ 创意设计方案文稿已有完整初稿(含问题/原理/方案)       │
│  □ 选题已锁定,与第 6 课《选题确认书》一致或已正式变更     │
│  □ 查新已完成(≥5 条),创新点表述清晰                   │
│                                                          │
│ 二、原型定稿                                             │
│  □ 实物模型:结构已成型,关键部件可演示(☐ 实物 ☐ 概念) │
│     若为概念原型:有 3D 渲染图/原理样机                   │
│  □ 若为软件/算法类:核心功能已可演示                     │
│  □ 原型与方案描述一致(说的和做的对得上)                │
│  □ 已用 CanSat 数据采集验证过至少一项关键假设(本课产出) │
│                                                          │
│ 三、可展示性                                             │
│  □ 能用 1 分钟讲清"解决什么问题、怎么解决、新在哪"       │
│  □ 已有至少 1 张原型照片/截图可用于海报                  │
│  □ 下一步打磨计划明确(海报/视频/报告分工)              │
│                                                          │
│ 四、里程碑结论                                           │
│  □ 通过定稿,进入打磨阶段                                │
│  □ 小幅修改后通过(修改项:______________)              │
│  □ 需重大返工(原因:____________________)              │
│                                                          │
│ 教师签字:________________   日期:__________            │
└──────────────────────────────────────────────────────────┘

🎤 审核标准:见教师参考"PBL 原型定稿审核标准"。核心是三点——方案完整、原型可演示、与选题一致。未通过的小组须在 3 天内补交。


讨论问题(如时间允许)

  1. 你的副任务数据,是否支持你最初的"预期数据"?如果不支持,是数据有问题还是假设有问题?
  2. 如果再做一次,你会怎么改进采样率或流程来获得更好的数据?
  3. CanSat 的"主任务 + 副任务"模式,如何迁移到你的 PBL 作品?(你的作品也有"核心功能 + 创新功能"吗?)

⚠️ 安全提示

  • 电路安全:接线时务必断电(拔 USB 或关电源);传感器供电电压确认(多数为 3.3V/5V,接错易烧毁)。
  • 防止跌落:手持采集时握紧 CanSat,下方勿站人;可在 CanSat 外裹泡沫/海绵防摔。
  • 数据线:USB 线不要用力拉扯,避免扯松接口或带倒电脑。
  • 锐器:CanSat 外壳如有金属边角,注意防划伤。
  • 用眼卫生:长时间盯串口数据易疲劳,每 15 分钟远眺一次。

✏️ 学生任务单

姓名:__________ 班级:__________ 团队:__________


课堂任务(当堂完成)

任务 1:副任务概念辨析(3 分钟)

  1. ESA CanSat 任务由一个 ________ 和一个 ________ 组成。
  2. 主任务(所有队必须完成)是测量 并推算 ________。
  3. 定义副任务的"三步法"是:________ → ________ → ________。
  4. 课堂默认数据格式是 ________,它的好处是 ________________。

任务 2:完成《CanSat 副任务设计书》(活动一)

与队友共同填写(见实践活动模板),核心字段摘录如下:

字段你的内容
副任务名称________________________
目标(要回答的问题)________________________
原理(用什么物理量推断)________________________
选用传感器________________________
采样率(理由)每 ___ 秒一次,因为 __________
判据(什么条件算成功)________________________
预期数据________________________

✅ 教师初评:☐ 通过 ☐ 修改后通过 签字:________

任务 3:数据采集记录(活动二)

项目记录
采集时长(秒)________
采样率(Hz)________
总数据点数________
采集环境(光照/室内外)________
数据文件名________
异常/中断记录________

任务 4:数据分析与结论(活动三)

分析维度你的结果
均值________
极值(max / min 及对应时间)________
趋势________
相关性________
任务结论(回扣目标)________
是否达到任务目的☐ 达到 ☐ 部分 ☐ 未达到

附图:将你的可视化图(Python 或 Excel)截图贴于此,或写明文件名:____________

任务 5:PBL 原型定稿检查表(核心部分)🏆

这是本课里程碑。逐项打勾,未完成的当场说明原因和补救计划。

检查项完成备注/补救计划
方案文稿已有完整初稿(问题/原理/方案)
选题已锁定,与第 6 课一致或已正式变更
查新已完成(≥5 条),创新点清晰
实物/概念原型已成型且可演示
原型与方案描述一致
用 CanSat 数据验证过至少一项关键假设
能 1 分钟讲清"问题/方案/创新点"
已有至少 1 张原型照片可用于海报
下一步打磨计划(海报/视频/报告分工)明确

里程碑结论:☐ 通过定稿 ☐ 小幅修改后通过 ☐ 需返工 教师签字:________ 日期:________


课后任务

必做

  1. 完善数据分析报告(一份 mini 实验报告,≥400 字):

    • 包含五要素:实验目的、实验方法、数据(图表)、分析、结论。
    • 用 Python 或 Excel 重画一张更规范的图(含标题、轴标签、单位)。
    • 提交:报告 PDF + CSV 原始数据 + 可视化图。
  2. 定稿原型补完:若本课未通过里程碑审核,3 天内补交; 若已通过,根据下一步计划完成海报初稿视频脚本(二选一,分工到人)。

  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(填空)

  1. 主任务、副任务
  2. 温度、气压、高度
  3. 目标、原理、判据
  4. 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 和列数。

python
# 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 分钟出图,完全合格。


赛事对接说明 🏆

本课是赛事对接的关键验证节点

  1. 原型定稿 = 赛事"实物模型类"的核心交付物成型:航天科技创新赛(实物模型类)评审中,"实物/概念模型"是硬性要求,本课定稿的即是该交付物。
  2. CanSat 副任务设计思维 = 赛事加分项:评委看重"载荷设计思维"——你的卫星/探测器要完成什么科学任务。副任务设计书直接对应赛事方案文稿中的"任务目标"部分。
  3. 数据闭环 = 研究报告的核心证据:本课产出的数据 + 可视化 + 结论,是研究报告(作品包第 5 件)最有力的实证,远胜纯文字描述。
  4. 与第 6 课呼应:第 6 课(选题确认)定"做什么",本课(原型定稿)定"做成什么样"。两个里程碑共同构成 PBL 的"立项—定稿"骨架,后续第 15–18 课进入"展示打磨"。
  5. 时间紧迫感:本课后距期末展示仅 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.inoCanSat 数据采集代码Arduino IDE 烧录,串口输出 CSV;含温压+光照(可改其他传感器)
plot_cansat.pyPython matplotlib 可视化双 Y 轴折线图,改文件名即可运行;附简单统计输出
cansat_template.xlsxExcel 数据表模板编程薄弱学生用;含示例数据 + 折线图设置
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

arduino
// 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 轴折线图 + 简单统计(见教师参考完整版)

python
# 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.0024.31012.5560
0.5024.11011.8620
............

内置设置

  • 选中 B 列 → 插入折线图(温度趋势)
  • 选中 D 列 → 插入折线图(光照趋势)
  • 图表标题、X轴"时间/s"、Y轴含单位已预设
  • 提示框:右键数据系列 → 添加趋势线(线性)可看趋势

模板 4:备用数据集

文件:backup_data.csv|60 秒模拟数据(温度缓降 + 光照周期变化),供硬件故障组分析用。格式同模板 1 输出。


器材清单(汇总)

器材数量备注
Arduino CanSat 套件每组 1主控板 + 多传感器
电脑每组 1Arduino 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),接错易烧毁,接线时断电。

《空天科技探秘》高一选修课 · 对接全国青少年航天创新大赛