尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

STM32智能行李箱毕业设计:GPS定位、称重与蓝牙控制全方案

STM32智能行李箱毕业设计:GPS定位、称重与蓝牙控制全方案 简介本资源是一套基于STM32微控制器的智能行李箱系统完整开发套件面向高等院校计算机、电子、自动化等专业本科生及嵌入式初学者专为毕业设计、课程设计与实践项目打造。系统涵盖主控逻辑、LCD人机交互、电机驱动、传感器数据采集等核心功能模块代码经实测稳定运行文档详尽覆盖硬件选型、原理图说明、软件架构与调试指南支持快速复现与二次开发。压缩包共286个文件含40余个C源文件.c、42个头文件.h、41个编译中间文件.o、40个依赖文件.d及Keil工程配置.uvproj、.uvopt、烧录镜像.hex、启动脚本.bat等结构规范便于理解嵌入式项目构建全流程整体大小8.68MB轻量易用。已有55人学习下载配套资料可直接用于答辩材料整理、实验报告撰写与原型演示显著降低毕业课题实施门槛。 带毕业设计性质的STM32智能行李箱听起来功能很多其实拆开看就是一套很典型的单片机综合应用——传感器采集、电机控制、无线通信、电源管理全部揉在一块板子上。如果你正在找这类项目的源码和开发文档参考或者准备做类似的课程设计、毕业设计这篇分享尽量把完整的方案、选型理由、代码逻辑、调试坑点和文档组织方式都讲透。我按毕业设计最常见的功能组合来讲GPS定位防丢、行李称重、蓝牙APP控制、电子锁和报警提示主控用STM32F103C8T6所有代码模块化组织能直接移植到自己的工程里。下面按从方案设计到实际验收的顺序逐步展开。1. 需求拆解与总体方案设计1.1 智能行李箱到底要做什么功能清单与边界先别急着写代码拿到题目之后第一步是明确系统边界。很多人在毕业设计里实现了一堆功能最后发现没有一个做得扎实答辩时被老师追问就露馅。智能行李箱的功能不是越花哨越好而是要有清晰的逻辑闭环感知、决策、执行、反馈。我按毕设常见需求整理了一张功能表功能模块实现效果硬件基础优先级GPS定位防丢行李箱位置通过手机APP查询GPS模块蓝牙核心行李称重实时显示重量超重提醒HX711压力传感器核心蓝牙控制解锁/上锁、查询状态、触发报警蓝牙模块电子锁核心电子锁控制手机远程开锁也可按键开锁电磁锁/舵机锁核心报警提示剧烈振动或非法移动时本地声光报警蜂鸣器振动传感器加分项电量监测锂电池电压显示与低电量预警ADC分压检测加分项为什么不做自动跟随和人脸识别因为视觉跟随涉及OpenMV或者摄像头识别算法成本高、难度大而且行李箱拉着跑在校园里本身就是安全隐患。我见过好几个学弟试图做视觉跟随最后要么摄像头识别不稳定要么跟随逻辑不够安全被老师质疑不如把GPS、称重、蓝牙这几个模块做得可靠、数据做得精确。核心原则是每个功能都能用“输入-处理-输出”讲清楚每个模块都有对应的测试数据。1.2 主控选型为什么是STM32F103C8T6STM32F103C8T6在同类项目里几乎是标准答案。这是一块Cortex-M3内核、主频72MHz的芯片64KB Flash、20KB RAM48引脚封装资源对于这个项目来说刚好够用不会像用F4那样大材小用也不会像用51那样算力和外设都捉襟见肘。最核心的考虑是生态。F103系列在网上的例程、库函数文档、论坛问答数量几乎是所有单片机里最多的这对毕设来说非常友好。你在调试中遇到任何问题基本都能搜到前人的解决方案。我当时用标准外设库开发因为参考代码最多HAL库的代码也能找到但标准库整理起来的项目结构更清晰。各模块的资源占用情况外设模块通信方式占用资源GPSUSART19600波特率中断接收蓝牙USART29600波特率中断接收称重传感器HX711GPIO模拟时序2个GPIODOUT/PD_SCKOLED显示屏I2CI2C1地址0x3C电子锁/蜂鸣器GPIO输出各1个GPIO振动传感器GPIO外部中断1个GPIO上升沿触发Flash和RAM的占用大概在60%左右留出了后续加功能的空间。如果后面需要记录历史位置数据20KB的RAM不够存太多但作为毕设演示场景完全够用。1.3 系统整体框架硬件拓扑与数据流向整个系统可以看成两条独立数据链路加上一条共享电源总线。第一条链路是“位置链路”GPS模块通过串口把NMEA 0183协议数据发给STM32STM32解析出经纬度、UTC时间、速度等信息格式化之后通过蓝牙模块发送到手机APPAPP端做地图路径展示。第二条链路是“重量链路”称重传感器电阻应变片桥式电路输出的差分毫伏信号经过HX711放大和24位ADC采样变成数字量STM32读取之后通过校准系数转换成克数在OLED和手机端同步显示。数据流向可以概括为传感器采集 → STM32处理 → 屏幕显示/蓝牙传输 → 手机控制/查看。主循环采用前后台架构前台是串口中断和外部中断负责及时接收数据后台主循环负责解析和处理不需要引入操作系统代码逻辑更直观也更好解释。2. 硬件电路搭建与关键器件选型实战2.1 电源系统设计电池、升压、稳压智能行李箱要移动使用供电是第一个要解决的问题。我用的方案是一节18650锂电池标称3.7V容量根据箱子空间选5000mAh到10000mAh通过升压模块升压到5V再经过LDO稳压到3.3V给单片机供电。为什么中间要加一级5V因为GPS模块和HX711传感器模块的工作电压范围虽然支持3.3V但5V供电时GPS模块的接收灵敏度和HX711的激励电压更稳定测量结果波动更小。升压模块用的是常见的MT3608方案便宜、纹波能接受注意要把输出电压调准在5.0V再接入后续电路。LDO用的是AMS1117-3.3压差只有1V左右输入5V输出3.3V效率还行。实测下来整个系统待机电流约80mAOLED点亮、GPS工作、蓝牙连接状态报警和开锁瞬间电流会到500mA以上18650电池容量2500mAh能坚持大概8到10小时如果换成两节并联容量翻倍实测续航在15小时以上。这个实验数据写进论文里是加分项。2.2 GPS模块选型与接线细节GPS模块我选的是ATGM336H比老牌的NEO-6M体积更小、功耗更低、冷启动速度也更快。模块通过串口输出NMEA 0183格式的数据默认波特率9600这个和STM32的USART1直接对接就行注意共地是必须的模块的TX接单片机RX模块的RX接单片机TX交叉连接别接反。天线位置是GPS模块最容易出错的地方。模块通常带陶瓷有源天线最好的安装位置是行李箱顶部或侧面的塑料壳内侧不能放在金属壳里面因为金属会屏蔽卫星信号。我最初把模块装在箱子底部靠近金属拉杆的地方搜星数从12颗直接掉到4颗挪到顶部后恢复正常。如果你的行李箱是金属材质需要把天线通过延长线引出到塑料面板再固定。2.3 称重模块HX711与电阻应变片的连接称重部分用的是HX711模块和铝制悬臂梁式压力传感器。传感器的工作原理是电阻应变片粘贴在悬臂梁上受力时梁发生形变应变片电阻值随之变化惠斯通电桥输出一个微小的差分电压。这个电压在毫伏级别单片机ADC根本没法直接采所以需要HX711做信号放大和模数转换。HX711和单片机之间是两线接口DOUT数据输出和PD_SCK时钟输入。单片机通过特定时序从HX711读出24位数据增益可以通过PD_SCK的脉冲序列选择我用的是128倍增益对应通道A。接线时特别注意传感器有五根线红黑是电源E和E-绿白蓝分别是信号正、信号负和屏蔽线。不同厂家的传感器颜色定义不完全一样买来后第一件事是查规格书确认每条线的定义不要想当然。HX711模块的AVDD供电建议直接用5V这样传感器激励电压稳定在约为4.2V左右称重数据跳动比3.3V供电要小很多这个是我实测试出来的差距。2.4 蓝牙模块、电子锁和报警电路蓝牙模块我试过两种。HC-05经典蓝牙配置简单但功耗大而且现在很多手机已经不再兼容蓝牙2.0。后来换成HM-10的BLE4.0模块功耗降了一半手机连接也更稳定。HM-10默认波特率9600发送AT指令可以修改串口参数注意AT指令模式的进入方法是上电时按住模块上的按键直到LED慢闪再用USB转TTL连接电脑或者通过单片机串口发送。电子锁的实际选型我做过对比方案优点缺点建议电磁锁响应快、力度大瞬时电流大1A需要驱动电路行李箱锁舌改造难SG90舵机控制简单、电流小扭矩有限锁舌需要轻适合自制锁扣结构微型电磁插销锁体积小5V直接驱动动作声音大最推荐接线简单我最后用的是微型电磁插销锁5V供电高电平触发弹出锁舌直接推拉就能复位。用STM32的GPIO接一个NPN三极管S8050驱动继电器都省了因为插销锁工作电流大约500mA三极管完全能扛住。报警电路最简单一个5V有源蜂鸣器加一个NPN三极管驱动GPIO输出高电平就响。有源蜂鸣器内部自带振荡源不需要PWM代码里一个GPIO翻转就搞定而且声音足够大行李箱被人拖走时能起到明显的警示作用。2.5 接线清单与PCB布局建议把整套系统的接线整理成一张表方便照着接线。注意这里所有模块的地线最终要汇聚到同一个电源地避免形成地环路。模块STM32引脚说明GPS TXPA10 (USART1_RX)交叉连接GPS RXPA9 (USART1_TX)交叉连接HM-10 TXPA3 (USART2_RX)交叉连接HM-10 RXPA2 (USART2_TX)交叉连接HX711 DOUTPB0推挽输入HX711 PD_SCKPB1推挽输出OLED SCLPB6 (I2C1_SCL)上拉电阻4.7KOLED SDAPB7 (I2C1_SDA)上拉电阻4.7K电磁锁驱动PA4通过S8050控制蜂鸣器驱动PA5通过S8050控制振动传感器PB3外部中断输入电池电压检测PA0 (ADC1_IN0)分压电阻后接入PCB布局方面有两点建议HX711的模拟信号线要尽量短远离电机驱动或电磁锁这种大电流线路电池电压检测的分压电阻用1%精度的金属膜电阻否则检测到的电压偏差会超过0.1V。如果只是毕设用洞洞板焊接完全够用注意把HX711模块用铜柱垫高避免背面焊点和下面走线短路。3. 软件模块化设计与核心代码逻辑3.1 工程结构与模块划分软件部分我按照模块化思想组织每个外设功能放在独立的源文件里主程序只负责模块间的调度和数据流转。这样做的好处是调试方便比如GPS不工作单独测试gps模块就行不会影响其他功能。工程目录划分main.c主循环调度、状态机管理gps.c / gps.h串口接收、NMEA帧解析、经纬度换算hx711.c / hx711.h称重传感器驱动、滤波算法ble.c / ble.h蓝牙数据接收、指令解析oled.c / oled.hOLED屏初始化、界面刷新lock_alarm.c / lock_alarm.h电子锁控制、蜂鸣器报警逻辑adc_bat.c / adc_bat.h电池电压采样和电量计算delay.c / delay.h延时函数每个模块对外只提供2到3个接口函数比如HX711模块对外就是HX711_Init、HX711_Get_Weight、HX711_Tare这三个函数主程序根本不需要关心模块内部怎么实现。这种设计在答辩讲代码结构的时候也是加分项老师会觉得你有软件工程思维。3.2 初始化顺序与主循环设计main函数里的初始化顺序是有讲究的不能随意排。我建议先初始化时钟和延时然后是GPIO、串口、I2C初始化外设模块最后打开全局中断。GPS模块和蓝牙模块上电后需要几百毫秒的时间才能进入正常工作状态所以初始化之后最好加一个1秒的延时再开始发送数据。主循环采用一个简单的状态机每个周期大约50ms检查GPS是否收到新数据有则解析并更新位置调用HX711读取任务进行称重采样每200ms采一次检查蓝牙是否有新指令有则执行解锁/报警/查询操作刷新OLED显示检查振动传感器标志位触发报警循环里执行时间控制在80ms以内不能让某个模块占用太长时间不然GPS数据缓冲区会溢出。GPS模块的串口接收我在中断里用一个环形缓冲区主循环再解析这样既不会丢数据也不会阻塞其他功能。3.3 GPS数据解析从NMEA协议到可直接使用的位置信息GPS模块输出的NMEA 0183协议里有多种帧最常用的是GPRMC帧包含了定位状态、纬度、经度、速度、航向和UTC时间。解析流程是这样的在串口接收缓冲区里搜索“$GPRMC”开头的行按逗号分隔字段检查第2个字段不是“A”表示定位无效直接丢弃如果有效提取纬度和经度字段以及方向标识、UTC时间把度分格式ddmm.mmmm转换成十进制度数方便APP端显示度分转十进制的公式我直接写进代码里十进制 整数部分 小数部分除以60。比如gps读取到3041.5823整数30是度41.5823是分转换后就是30 41.5823/60 30.693038度。下面是我当时用的核心解析代码注释里写清楚了每一步的逻辑// 从GPRMC帧中提取经纬度信息 void GPS_ParseGPRMC(char *buffer, GPS_Info *info) { char *p buffer; int field 0; int i 0; if (strncmp(buffer, $GPRMC, 6) ! 0) return; // 跳过帧头 p 7; field 1; while (*p field 10) { if (*p ,) { field; p; continue; } // 第2个字段定位状态A表示有效 if (field 2) { info-pos_status *p; } // 第4个字段纬度 if (field 4) { if (i 15 *p ! .) { info-latitude_raw[i] *p; } } // 第6个字段经度 if (field 6) { if (i 15 *p ! .) { info-longitude_raw[i] *p; } } p; } p NULL; }实际使用中GPRMC帧里第5个字段N/S和第7个字段E/W是方向标识分别表示北纬/南纬和东经/西经。中国国内用不到南纬西经但代码里还是要处理直接忽略会导致跨半球时位置跑到海上去。我当时代码里把方向字段也解析出来根据N/S和E/W给经纬度加正负号这样一个简单的处理就让程序带了更强的通用性。3.4 HX711称重算法毛重、净重、去皮与滤波HX711的读取原理是用时钟脉冲把24位数据逐位移出来。每给PD_SCK一个上升沿DOUT引脚输出一位数据等24个位读完再把PD_SCK拉高触发下一次转换。这个过程中时序需要严格满足芯片手册要求最简单的方式是直接用GPIO模拟代码控制在微秒级别不需要用到定时器。称重算法上最容易犯的错是直接拿原始ADC值当作重量使用。HX711输出的是带符号的24位数据要转成实际克数需要校准。校准方法很简单先用标准砝码我用厨房秤校准过的1kg铁块测出原始读数毛重除以读数得到的系数就是每个ADC单位的重量。我建议把读数和重量转换分开。原始读数经过一个低通滤波后再通过系数换算成克数并减去去皮零点。滤波用的是简单的滑动平均取最近5次采样平均实测波动从±15克降到±3克以内。重量小于某阈值时直接清零避免传感器在无负载状态下输出极小的漂移值。以下是HX711模块的核心读取代码片段// 读取HX711的24位ADC值 uint32_t HX711_Read(void) { uint32_t count 0; uint8_t i; // 等待DOUT变为低电平表示数据准备好 while (HX711_DOUT_READ()); for (i 0; i 24; i) { HX711_SCK_HIGH(); delay_us(1); count count 1; if (HX711_DOUT_READ()) { count; } HX711_SCK_LOW(); delay_us(1); } // 第25个上升沿返回通道A、增益128 HX711_SCK_HIGH(); delay_us(1); HX711_SCK_LOW(); return count; }读取完成后要注意符号扩展。HX711用的是24位有符号数最高位是符号位如果直接当作32位无符号数使用负数时会得到巨大的正值。正确做法是判断第23位是否为1是的话把高8位补成0xFF再做有符号转换。3.5 蓝牙指令协议设计蓝牙模块和APP之间的数据交互需要自定义一套简单的通信协议。不要直接发裸字符串否则APP端解析容易出错。我用的协议帧格式如下帧头功能码数据长度数据校验0xAA1字节1字节N字节1字节校验指令从单片机发给APP0xAA 0x01 0x04 重量高字节 重量低字节 电量 状态 校验和。APP发给单片机的指令更简单0xAA 0x02 0x01 0x01 校验和功能码0x02表示控制指令数据0x01解锁、0x02上锁、0x03报警。校验和用最简单的累加和SUM (帧头功能码长度所有数据) 0xFF。不用CRC是因为指令长度短累加和够用且实现简单答案也容易解释。解析时要注意防粘包和断包。串口中断收到的一帧数据可能不完整也可能一次收到两帧所以主循环里的解析函数需要按帧头查找、按长度裁剪校验不对就丢弃。3.6 报警逻辑与低功耗处理报警模块的触发逻辑是系统处于上锁状态时振动传感器检测到持续3秒以上的抖动就触发蜂鸣器报警并同时发送报警状态到手机APP。为什么加3秒的延时因为拖动行李箱时会产生连续振动而搬一下或者触碰会产生短促振动3秒阈值能很好区分两种场景减少误报。低功耗方面因为GPS模块本身就是耗电大户没有用睡眠模式所以我做了两个优化OLED屏每分钟自动熄屏按键或蓝牙指令触发唤醒蓝牙连接断开后系统自动降低采样频率GPS模块用软件方式切换到低功耗模式模块手册里有PMTK指令可以用来配置实测电流从80mA降到35mA左右。当然如果行李箱长期不用建议直接断电。我加了一个物理电源开关实际演示时大家都是开箱插电再操作低功耗模式主要写在论文里体现设计思考答辩时能讲清楚原理就行。4. 调试阶段遇到的典型问题与完整排查过程4.1 GPS搜星慢且定位飘移天线位置与电源干扰GPS问题是最折磨人的。第一次上电测试模块开机5分钟都没定位成功拿到阳台才勉强搜到5颗星定位误差大到几百米。我的排查链路是这样的先用模块自带的USB转TTL小板直接用电脑看数据排除STM32串口配置问题确认模块能输出GGA和GPRMC帧但状态一直为“V”无效把模块拿到窗外等了3分钟终于变成“A”有效但位置始终在附近漂移检查天线发现我把天线放在了锂电池旁边电池的金属外壳严重干扰了信号把天线移到箱子塑料挡板外侧搜星数量从5颗直接跳到11颗恢复定位正常但漂移依然存在换成户外开阔地测试漂移范围缩小到10米内结论GPS模块必须远离金属物体和锂电池天线最好贴在外壳内壁测试地点尽量选开阔区域。箱子里如果已经装了金属结构件天线要尽量往高处走。电源线的干扰也要注意。GPS模块供电最好加一个10uF的退耦电容我用的是模块上的VCC和GND之间并联电容实测能降低定位数据的跳动幅度。4.2 称重读数漂移共地问题与软件滤波HX711称重模块在单独测试时读数很稳定装进箱子里接上STM32就发现读数不停跳动从600克到900克之间乱跳。排查过程检查传感器接线确认是差分输入且屏蔽线接到HX711的AGND没问题用万用表测量HX711的输出电压发现GND和AVDD之间的电压有200mV的波动异常发现HX711模块的AVDD是从5V供电而STM32板子的5V来自USB供电USB供电电压本身就带纹波在HX711的AVDD和GND之间加一个100uF的电解电容同时把传感器屏蔽线单独接到电源地波动降到20mV以内软件里加了滑动平均滤波之后显示稳定到±3克以内重点总结模拟电路和数字电路要共地但模拟电源要做好滤波。HX711模块不要直接和电机或者电磁锁共用电源线如果条件允许用独立的LDO给传感器供电。4.3 蓝牙连上但指令不响应从参数到接线的排查HM-10蓝牙模块用手机连接成功但是在APP里点击解锁没反应。检查过程如下用串口助手直接接STM32的串口2给蓝牙模块发AT指令指令正常模块回应OK手机连上蓝牙后尝试通过串口监视器看STM32是否有收到数据完全没有排查后发现HM-10模块的TX接的是PA3USART2_RX但HM-10的TX引脚实际电压平时是低电平如果STM32的RX配置成浮空输入可能被拉低造成接收异常把蓝牙模块的TX和STM32的RX之间加了一个1K电阻串联并且把STM32的RX配置成内部上拉输入问题解决APP控制正常关键点接线不是简单的“TX接RX”就行还要考虑电平匹配和引脚的默认状态。如果用的是5V单片机的板子接3.3V蓝牙模块还要注意电平转换STM32的引脚都可以配置成开漏输出加外部上拉这种方式通吃。4.4 电池供电时单片机反复重启电磁锁动作瞬间的电源跌落前期用USB供电调试一切正常换锂电池供电后发现每次电磁锁动作的瞬间单片机就会复位重启OLED屏幕闪一下。排查结果用示波器测5V电源轨发现电磁锁触发瞬间电压从5V跌到3.2V持续几十毫秒原因电池加升压模块的瞬时输出能力不足电磁锁启动电流500mA以上MT3608升压模块的响应速度跟不上解决在5V母线上加一个470uF的大电容作为瞬间储能缓冲同时软件上把电磁锁触发时间从一直拉高改成200ms脉冲锁舌伸出到位后关闭驱动另一个优化GPIO拉高前先检查电池电量低于3.5V时拒绝开锁并蜂鸣提示避免电池被瞬间拉垮这个问题是最典型的实际工程问题写在论文的“问题与解决方案”一节里非常有说服力老师也很喜欢听这类真实的调试经历。5. 系统实测结果与数据整理5.1 各功能模块的测试用例与结果整机测试我设计了以下用例每个都记录了实测数据这部分内容可以直接整理成论文的测试章节测试项目测试方法预期结果实测结果结论GPS定位户外开阔地开机3分钟定位成功冷启动82秒搜星11颗通过称重精度标准1kg砝码测试5次误差±20g误差±5g通过蓝牙开锁APP点击解锁观察锁舌1秒内动作500ms通过报警响应拖动行李箱5秒内报警约3秒触发通过续航满电连续工作≥8小时实测9小时50分钟通过通信距离手机连接后走远≥15米稳定开阔地25米稳定通过5.2 实测数据表现从性能到体验GPS定位精度这块在开阔场地静态测试的CEP大概是5到8米动态移动时误差会稍微大一些主要是手机和行李箱之间数据刷新频率导致的滞后。定位输出的频率是1Hz也就是一秒更新一次位置刚好满足“找箱子在哪个方向”的需求不会让人觉得卡顿。称重部分的重复性表现不错同一物体反复放上秤台读数波动在±5克以内。不过这里有个使用场景要注意压力传感器是悬臂梁式承重范围我选的是50kg量程超过50kg会输出饱和实测压到60kg的时候读数就不再上升了所以说明文档里一定写清楚量程避免用户误操作损坏传感器。蓝牙通信的延迟在室内实测大约300到500ms主要是手机端APP轮询状态造成的实际使用基本无感。5.3 如何把测试数据做成答辩材料测试数据不能只记录数字要整理成“测试条件-操作过程-实测记录-结果分析”的完整报告。答辩时每个数据都放在这4个维度下讲老师问起来才有底气。我的建议是制作一张大的整机测试汇总表把测试环境温度、手机型号、测试地点、步骤操作、时间点、结果数据、截图都放进去然后再用图表的形式展示称重校准曲线和GPS定位轨迹这样比一堆干巴巴的数字直观得多。这块内容不需要很高大上只要逻辑清晰、数据真实就能给整个毕设增色不少。6. 毕业设计开发文档的结构组织与答辩准备6.1 完整开发文档包含哪些内容很多人做毕业设计代码写完了但文档拖到最后才写最后只能熬夜赶工质量可想而知。完整开发文档应该和开发过程同步推进目录结构我建议这样组织需求分析功能需求、性能指标、可行性分析系统总体设计系统框图、工作流程、模块划分、通信协议设计硬件设计主控选型、各模块原理图、PCB设计、接线表、电源计算软件设计工程架构、初始化流程、核心算法流程图、关键代码说明系统测试测试环境、测试用例、测试数据、问题与解决方案总结与展望工作成果、创新点、不足与改进方向其中“问题与解决方案”这一节最容易出彩把你调试过程中遇到的每个问题、排查思路、解决方案记录下来老师看了会觉得你真正动手做过而不是网上找代码糊弄。6.2 代码工程打包和资料整理技巧源码打包之前一定要做几个动作加注释、整理README、写模块说明。代码注释不需要每行都写但要保证重要逻辑协议解析、数据处理、中断处理旁边都有3到5行说明让人能看明白设计意图。README文件里要写清楚系统功能简介、开发环境Keil版本、库版本、硬件清单、接线表、编译烧录步骤、使用方法以及代码文件结构和每个文件的作用。这样拿到代码的人很快就能跑起来答辩时老师要求在电脑上演示也能快速操作。代码仓库里我建议按“硬件资料”、“软件源码”、“文档报告”三个目录组织硬件资料放原理图PDF和接线图软件源码放完整的Keil工程文档报告放开发文档和测试报告。这样整个资料包结构清晰拿到手不用翻半天。6.3 答辩现场容易被问的问题和应答思路根据我的经验老师很喜欢在智能类项目上问几个固定问题提前准备能让答辩过程顺利很多问为什么选STM32F103C8T6不选更便宜的51单片机答51单片机主频低、外设少GPS解析和后续扩展都受限STM32的USART、I2C、外部中断等资源适配合适性价比高资料丰富。问GPS定位的精度是多少为什么在室内不能用答静态CEP可达2.5米取决于模块型号动态使用误差在5-10米左右。GPS靠卫星信号在室内信号被建筑遮挡基本无法定位实际使用时可以结合手机基站定位辅助。问称重传感器的量程和精度是多少怎么校准的答量程50kg实际测量误差±5g校准用标准砝码测量先测出ADC单位与克数的换算系数再在代码里做去皮和滤波。问整个系统的功耗大概多少能续航多久答正常工作电流80mA优化后待机35mA2500mAh电池实测续航约10小时使用优化策略和更大容量电池可以进一步提升。问这个系统有什么实际应用场景答机场出行防丢提示、货物称重提醒、可结合手机APP做位置追踪这些场景都是自己实际测试验证过的基本功能展开讲就行。回答问题的核心原则是用数据说话用事实作答。每个问题都用“我实测的数据是……”开头比任何理论都更有说服力。写在最后一份扎实资料背后的真实积累智能行李箱这个项目做完之后我最大的体会是这类嵌入式综合项目的价值不在功能多炫酷而在把每个模块做扎实把每个问题弄清楚。GPS为什么搜不到星、称重为什么漂移、电磁锁为什么导致复位这些问题背后的原理比代码本身更有意义。整理源码和开发文档的过程其实是最耗精力的但它能让你的设计更有说服力也让后来的人少走弯路。如果你自己要做一个类似的STM32项目建议也按这套思路走先画系统框图、列接口清单再动手焊板子、写驱动最后把遇到的问题和解决方案记录成文档。这个过程本身就是最好的毕业设计答辩准备。最后分享一个小技巧开发过程中给每个模块单独建一个测试demo工程单独验证通过后再整合到主工程。这样“拼车”时出了问题你能立刻知道是哪个模块的问题不用整板调试找Bug能省下大量时间。本文还有配套的精品资源点击获取
返回列表