Final Hackathon

期末黑客松个人日志

日期:2026-05-30 至 2026-05-31 · 主题:团队项目设计、制作与复盘

Project Profile

1. 项目名称

风候

2. 团队成员

王君威,张欢欢,李思达,张鑫,秦博闻

3. 一句话产品定义

为想知道身边环境数据的学生提供便捷的环境监测工具。

Design Log(时间轴)

周六上午

需求确认与方案拆分

团队确认“风候”的实现方案和具体分工,我主要负责硬件测试和 PCB 电路板绘制。

查看详细记录
周六下午

原型制作与第一次联调

一边按学校加工精度调整 PCB,一边配合代码组测试硬件,并处理传感器损坏带来的取舍。

查看详细记录
周日上午

PCB 细节检查与最终修改

Gerber 文件送出后发现加工精度仍有风险,于是继续放大焊盘、导线间距并优化折线处理。

查看详细记录

Tech Stack & Code

设备端代码使用 ESP32-S3 + Arduino 框架,通过 PlatformIO 管理工程。整体思路是把传感器采集、声音采样、数据整理和网络上传拆成几个模块运行,硬件端负责把环境数据整理成统一格式,再上传到服务器。

主要代码链接

工程配置:PlatformIO 配置了 ESP32-S3 开发板、Arduino 框架、串口速率、默认设备 ID、上传地址和 ArduinoJson 依赖。

查看 platformio.ini

程序入口:主程序负责初始化 WiFi、配置存储、传感器模块、音频采样、数据聚合和网络上传,并通过多个任务让这些部分并行运行。

查看 main.cpp

I2C 传感器管理:这一部分负责读取温湿度、气压、空气质量、光照等传感器数据,是环境监测功能的核心。

查看 I2cSensorManager.cpp

声音采样:音频模块通过 I2S 麦克风采集声音数据,并计算声音强度相关指标,让设备不只记录温湿度,也能反映周围声音环境。

查看 AudioSampler.cpp

数据整理:数据聚合模块把不同传感器产生的数据合并成最新的一组设备状态,方便后续统一上传。

查看 DataAggregator.cpp

网络上传:上传模块负责连接 WiFi,并把整理后的环境数据发送到后端接口。

查看 NetworkUploader.cpp

Reflections

1. 硬件制作不能只看“能不能连上”

这次我主要负责硬件测试和 PCB 电路板绘制。刚开始画 PCB 时,我更关注电路连接关系是否正确,但真正准备加工时才发现,软件里看起来没问题的线路,不一定适合学校现场的制板精度。线宽、焊盘和导线之间的距离、折线转角这些细节,都会影响最后能不能顺利做出板子。

2. 遇到问题时要及时取舍

周六下午测试硬件时,有一颗 SGP41 传感器不知为何烧坏了,而且在提供的传感器里没有找到合适的替代品。如果继续花很多时间排查它,可能会影响整个项目继续推进。最后我们选择放弃这个芯片,先保证剩下的硬件和基础环境监测功能能继续运行。这个过程让我意识到,黑客松里不只是解决问题,也要判断哪些问题值得继续投入时间。

3. 团队协作让问题更容易被发现

这次制作过程中,我一边画 PCB,一边和写代码的同学一起测试硬件。很多问题不是单独看硬件或单独看代码就能发现的,只有真正联调时才会暴露出来。比如传感器是否正常、主控能不能读到数据、硬件调整会不会影响代码测试,这些都需要几个人不断同步。

4. 下次可以提前做得更充分

如果下次再做类似项目,我会更早确认制板设备的精度要求,在画第一版 PCB 时就把线宽、间距和转角处理留得更保守一些。同时也会提前准备关键传感器的备选方案,避免某个元件损坏后整个功能被迫删掉。这次虽然过程中有不少临时调整,但也让我更清楚地理解了从电路图到实物之间还有很多实际限制需要考虑。