尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

STM32智能鱼缸毕业设计全解析:从电路到代码实践

STM32智能鱼缸毕业设计全解析:从电路到代码实践 简介本资源是一套完整的STM32嵌入式毕业设计项目方案面向电子信息、自动化及物联网方向的本科生与初学者解决智能水产养殖系统开发中多传感器融合、外设驱动、人机交互与远程控制等典型工程问题。压缩包共98个文件含41个头文件.h定义硬件接口与功能模块38个C源文件.c实现温度/TDS/水位采集、OLED显示、继电器逻辑控制、舵机喂食定时、ESP8266联网通信及按键阈值调节等核心功能另有电路图PDF、元器件清单Excel、Keil工程文件.uvprojx、固件HEX及实物接线参考图等结构清晰便于分模块学习与调试。资源包仅604KB轻量实用已吸引82人下载学习。用户可直接基于该工程开展课程设计、毕设开发或竞赛原型搭建配套完整软硬件协同逻辑、可运行源码及明确的外设连接说明显著降低从原理到落地的学习门槛。 最近整理电脑里的旧工程翻到了当年指导学弟完成的一个毕业设计——STM32智能鱼缸。说实话这类项目在嵌入式毕设里属于万金油级别从单片机原理到传感器采集、从PID控制到人机交互几乎把本科阶段的核心知识点串了个遍。但网上很多开源版本只丢给你一个源码压缩包电路图不完整元器件清单含糊其辞拿到手根本跑不起来。这篇文章就把这个“STM32智能鱼缸”从需求拆解、电路设计、源码实现到联调排错整个流程讲透适合正在做嵌入式课程设计、毕业设计或者单纯想自己动手DIY一个自动鱼缸的同学参考。智能鱼缸这个名字听起来唬人实际上就是把“人能做的养鱼操作”自动化水温要稳定在设定范围灯光要定时开关模拟昼夜鱼食要按时投喂水位低了要提醒补水。核心难点反而不在STM32本身而在如何把传感器误差、执行器延迟、日常使用的可靠性这些问题处理好。文章里我会直接给出我实际使用的电路连接方式、关键代码思路和调试经验不是让你抄一份代码交差而是让你看完之后能真正理解每一根线、每一行代码为什么这么安排。1. 项目整体思路一个毕业设计应当如何拆解需求1.1 智能鱼缸要解决什么问题开始动手之前先别急着画电路图。我见过太多同学拿到题目就打开立创EDA开始拖元件拖到一半发现引脚不够用、电源拓扑不合理回头再改浪费大量时间。正确顺序应该是先列需求再定方案最后才是电路设计。从养鱼的日常场景出发智能鱼缸至少需要处理四件事水温监测与恒温控制。热带鱼对水温敏感比如七彩神仙鱼适宜水温在28℃左右波动超过2℃就容易生病。所以温度传感器要有加热棒要能自动断电、自动加热。灯光定时调度。有些鱼缸灯需要模拟日出日落定时开灯关灯能稳定鱼的生物钟也能方便观赏。自动喂食。上班族或学生党经常忘记喂食伺服电机驱动的喂食器可以实现每天定点定量投喂。水位检测与异常报警。鱼缸蒸发现象明显尤其夏天。水位低到一定程度必须提示补水否则水泵空转或者加热棒干烧都很危险。这四个功能是核心在此基础上可以扩展显示模块、按键交互、上位机串口监控等。毕设答辩时候有一个完整的“发现问题—设计方案—验证结果”的闭环比堆砌一堆用不上的功能点更能拿分。1.2 为什么选择STM32平台很多人在选型阶段纠结51单片机能不能做ESP32能不能做树莓派能不能做我的建议是如果你做的是课程设计用51确实够但作为毕业设计STM32是性价比和答辩效果最平衡的选择。原因一是STM32的生态极其成熟。你随便搜一个外设模块的驱动几乎都能找到基于STM32F1的参考代码这对项目周期有限的在校生来说太重要了。二是STM32的资源足够支撑这个项目的扩展空间比如后续加个WiFi模块做远程控制它的USART、SPI、I2C接口完全够用。三是答辩老师对STM32的认可度普遍高它属于真正的32位嵌入式微控制器能体现你对ARM架构、中断优先级、DMA这些概念的掌握程度而不只是“单片机开发”。具体到型号我用的是STM32F103C8T6蓝色Pill小板72MHz主频64KB Flash20KB RAM20个GPIO3个USART2个I2C2个SPI12位ADC。这是市面上最常见的型号国产替代的GD32F103C8T6也兼容而且便宜一片几块钱。整个智能鱼缸项目的IO需求大约15个F103C8T6完全够用。1.3 功能模块划分与整体架构我在做模块划分时把整个系统分成五层感知层DS18B20水温传感器、水位传感器。感知层解决的是“鱼缸现在是什么状态”的问题。决策层STM32主控跑逻辑控制算法。决策层根据感知层的数据决定下一步执行什么动作。执行层继电器控制加热棒和照明、舵机控制喂食器、水泵。执行层物理上改变鱼缸状态。交互层OLED屏幕显示温度、水位、工作状态按键设置目标温度和时间参数。辅助层掉电检测、看门狗、蜂鸣器报警。这个层很多人忽略但恰恰是系统稳定性和安全性最关键的保障。这种分层思路不光是写代码的架构也是画电路图和写毕业论文目录时可以参考的逻辑。答辩老师问“你的系统怎么描述”的时候你把这几个层次一摆他就知道你是真的理解了这个系统而不是把网上代码拼一拼。2. 硬件设计电路图、元器件清单与原理说明2.1 主控最小系统与启动配置STM32F103C8T6蓝色Pill板上面已经带了8MHz晶振、复位电路、LDO稳压和USB转串口所以严格来说不用自己画最小系统这是它适合新手的原因。但毕业设计通常要求提交电路图所以你要能画出或者解释清楚最小系统的几个部分电源部分3.3V供电通常用AMS1117-3.3把5V降下来输入输出各加一个10uF和100nF电容滤波。电源纹波问题在带舵机和继电器时特别明显后面我会专门讲。晶振电路HSE接8MHz晶振两个20pF负载电容通过PLL倍频到72MHz主频。复位电路NRST引脚接一个10kΩ上拉电阻和100nF电容到地构成上电复位。启动模式BOOT0接10kΩ下拉到地BOOT1接10kΩ下拉到地从Flash启动这是正常用户模式。注意BOOT0必须可靠接地否则可能下载程序后不执行。有条件的同学建议把这四个部分的电路图画进自己的原理图里虽然板子上已经有了但电路图里体现出来能展示你懂这个芯片是“怎么活起来的”。2.2 电源拓扑与接口规划整个系统的供电我设计了三个电压等级5V主电源给舵机、继电器线圈侧、OLED模块供电。来源可以是USB 5V或12V转5V的DC-DC模块比如MP1584或LM2596。注意如果直接用USB口拖舵机启动瞬间电压跌落容易复位单片机最好用外部5V电源或加一个大电容缓冲。3.3V逻辑电源给STM32主控和传感器信号逻辑供电由5V经过AMS1117-3.3稳压得到。12V或220V交流给加热棒和照明灯供电通过继电器隔离控制。这部分属于强电整个电路板上要明确区分强弱电区域继电器与低压区保持足够的安全距离。引脚规划我特别强调一下因为这是新手最容易踩坑的地方。我的分配方式是DS18B20接PA0数字温度信号需接4.7kΩ上拉电阻。水位传感器接PA1ADC采集模式采集电压判断水位。OLED的SCL接PB6SDA接PB7使用I2C1外设。舵机信号线接PA8用定时器TIM1的CH1输出PWM为什么用TIM1后面源码部分会说明。加热棒继电器接PB0高电平触发。照明继电器接PB1。蜂鸣器接PB10。按键用PB12、PB13、PB14分别做“菜单”“加”“减”全部接GPIO输入加上拉电阻。串口方面USART1的TX接PA9、RX接PA10用于上位机通信和打印调试信息。USART2的TX接PA2、RX接PA3可以预留接WIFI模块或蓝牙模块方便答辩的时候展示远程监控功能扩展。2.3 传感器与执行器的驱动电路传感器部分DS18B20是单总线协议同一个引脚上既能供电又能传数据电路设计最关键的是那个4.7kΩ上拉电阻。没有这个上拉电阻单总线的高电平根本拉不起来你读到的温度永远是85℃DS18B20的默认上电值。水位传感器我用的是最简单的导电式探针一根探针放高水位一根放低水位利用水的导电性把两个IO口导通或断开。这种方案成本低但有个致命问题水中离子会电解长期使用探针会腐蚀而且水的电阻不稳定导致ADC值抖动大。更可靠的方案是采用非接触式光电液位传感器或者浮球开关只输出开关信号不需要ADC稳定性好很多。如果毕业设计要求体现工程应用的可靠性推荐用浮球开关方案。执行器部分加热棒和照明灯的功率都不小绝对不能直接接在STM32的GPIO上。我用的是5V继电器模块GPIO输出经过一个NPN三极管如S8050驱动继电器线圈然后继电器触点控制220V侧的通断。有的继电器模块自带光耦隔离和驱动三极管那GPIO直接接IN口就行但一定要确认模块触发的电平逻辑和电流方向。舵机驱动比较特殊SG90舵机的供电是5V信号线接PWM输出PWM周期固定20ms脉宽0.5ms到2.5ms对应0°到180°。要注意舵机启动瞬间峰值电流可能到500mA以上如果和单片机共用同一个5V电源会导致单片机瞬间电压跌落重启这就是著名的“舵机导致单片机复位”问题。我的解决办法是舵机单独用一个LM2596降压模块供电或者用一个大电容比如470uF并接在舵机电源端实测能明显减少复位现象。2.4 元器件清单与选型注意事项这个项目用到的元器件其实不多但每一项都有讲究。主控部分STM32F103C8T6最小系统板一块。如果你自己画核心板还需要8MHz晶振、两个20pF电容、10kΩ/100nF复位电路、AMS1117-3.3、若干0.1uF去耦电容。特别注意MCU的每个VDD引脚旁边都要放一个100nF的电容而且尽量靠近引脚放置这个细节在PCB上容易被忽视但在抗干扰上非常关键。传感器部分DS18B20一个TO-92封装注意买原厂或质量好的国产仿品经常读到85℃或者跳动很大。水位传感器可以是光电式的、浮球式的或导电探针式的看你想体现的技术侧重点。OLED一块推荐I2C接口的SSD1306方案的0.96寸四针模块接线少代码库全。执行器部分SG90舵机一个5V继电器模块两个用于加热棒和照明或三个再加水泵S8050三极管若干1N4007二极管若干并联在继电器线圈两端用于续流这个二极管如果漏了三极管会被反向感应电压击穿继电器倒是能工作但单片机可能频繁复位接线端子若干。电源部分5V/2A电源适配器一个12V转5V的DC-DC模块一个如果电源方案选12VAMS1117-3.3稳压模块或芯片一个470uF/25V电解电容两个0.1uF瓷片电容若干。辅助部分有源蜂鸣器一个5V按键三个10kΩ电阻若干4.7kΩ电阻一个DS18B20上拉杜邦线若干洞洞板或PCB板一块。注意元器件清单表格里务必标明型号、数量、封装、关键参数。做毕设的时候老师看到你元器件清单里写“电容若干”是非常不专业的一定要精确到数量、容值和封装。我当时连每个电阻的精度都标了这也是论文评分的一个隐性加分项。3. 软件实现源码结构与核心算法详解3.1 工程文件组织与开发环境配置软件部分我用的开发环境是Keil MDK5配合STM32CubeMX做初始化代码生成然后再手动写业务逻辑。不要一上来就纯手写寄存器版本虽然那样显得技术含量高但项目周期拖太久。也不建议全套用CubeMX自动生成加HAL库调用有些老师会觉得你封装层太多。折中方案是用标准外设库SPL或HAL库写驱动关键算法自己手写配上注释答辩的时候能讲得清楚。工程文件的组织方式建议这样分Project/ |-- Core/ // 主函数、中断服务函数 |-- Drivers/ | |-- BSP/ // 板级支持包如LED、按键、蜂鸣器 | |-- Sensor/ // DS18B20、水位传感器驱动 | |-- Device/ // OLED、舵机、继电器驱动 |-- App/ | |-- Control/ // PID控制、状态机 | |-- Task/ // 定时调度任务 |-- Middlewares/ // FreeRTOS如果用了的话这个结构不是随便分的它跟前面说的分层架构一一对应既是代码组织方式也是论文的软件设计章节大纲。每个模块一个.c和一个.h头文件里把所有对外接口写清楚内部变量全部static修饰。这个习惯早期养成了后面找bug会轻松很多。3.2 温度采集与数据滤波DS18B20的驱动是单总线协议时序要求比较严格初始化的时候要先拉低总线480us以上再释放然后检测是否存在应答脉冲。我直接用GPIO模拟时序实现了这个驱动因为ST官方库没有直接的单总线外设。温度采集最容易翻车的地方是读取时会被中断打断导致时序错乱读出来是0xFFFF或者乱码。解决办法有三个层级在读取DS18B20的整个过程中关闭全局中断PRIMASK 1读完再打开。简单粗暴但有效。或者采用中断屏蔽更细粒度的方法只关定时器中断和串口中断。更工程化的做法是让所有可能打断的操作用一个临界区保护或者把温度读取放进主循环的固定时隙里不在中断里做。我实际用的是第一种温度读取整个过程大概1ms关中断影响不大。但要注意如果系统里还有喂食舵机这种对时序要求高的PWM输出关中断可能导致PWM周期抖动所以后来我把温度采集单独放在一个定时器中断之外的任务里通过互斥机制避免冲突。滤波方面我采集连续20次温度取平均值同时丢掉最大最小值各2个然后用一个一阶低通滤波filtered 0.8 * filtered_old 0.2 * current_sample这样既能滤掉尖峰噪声又不会让温度响应太慢。整个过程不到30行代码但对系统的稳定性提升非常明显。实测在开启加热棒的情况下未经滤波的温度波动有±3℃滤波后能控制在±0.3℃以内。3.3 PID恒温控制实现恒温控制是这个系统里最有“技术含量”的部分也是答辩的高频考点。很多人直接用滞回控制低于26℃开加热高于28℃关加热。这种方式简单但温差大加热棒频繁启停对鱼缸环境和继电器寿命都不好。我用的方案是位置式PID控制在加热棒上的应用output Kp * error Ki * integral Kd * derivative其中error target_temperature - current_temperature。当error为正说明温度低于目标值需要加热。有一个细节特别重要积分饱和问题。如果鱼缸温度迟迟到不了目标积分项会一直累积等温度到达后累积的积分值会让加热棒继续加热很久造成明显过冲。我的处理是积分限幅把积分项限制在最大输出的20%以内并且在温度高于目标0.5℃时主动把积分项清零。Kp、Ki、Kd三个参数我是实测整定的。先设Ki0、Kd0只给Kp观察温度曲线的振荡情况慢慢增大Kp直到温度开始稳定然后加Ki消除稳态误差最后加一点点Kd抑制过冲。我最终用的参考值是Kp15Ki0.1Kd2但这个值跟鱼缸体积、加热棒功率强相关各位同学一定要在自家鱼缸上实测调整不能照抄。这就是为什么毕设题目里带“设计”两个字它要的是你理解控制算法的调参过程而不是把代码跑通就万事大吉。3.4 定时喂食与灯光调度的状态机设计喂食和灯光控制本质上是“时间触发的事件调度”。最简单的方式是在主循环里轮询当前时间满足条件就触发动作。但这种方式如果遇到阻塞代码比如温度采集关中断定时会漂移。更规范的做法是使用一个系统tick比如1ms一个定时器中断每tick更新一次时间计数然后设定时标志位主循环检测标志位执行动作。喂食的流程我设计成一个小的状态机状态IDLE等待喂食时间到。状态FEED_START打开储食转盘舵机正转90°。状态FEED_HOLD保持90°持续1.5秒让鱼食掉落到水中。状态FEED_RETURN舵机反转回0°。状态FEED_DONE标记本次喂食完成等到第二天的喂食时间再启动。这个状态机的好处是即使舵机执行过程中被中断打断每个状态都是可恢复的不会出现“转了一半停住”的卡死状态。喂食时间通过按键设置可以设定一天喂食1到4次每次喂食时间点可以单独配置。灯光调度的逻辑类似设定一个开启时间和一个关闭时间在定时器中断里检查时间匹配然后置位继电器控制标志位。我在实际设计里还加了一个手动/自动切换模式按下“菜单”键进入设置界面可以手动开灯关灯、手动喂食方便日常使用和演示。3.5 显示、报警与按键交互OLED显示我用的SSD1306 I2C方案用的是常见的四针模块VCC、GND、SCL、SDA。I2C通信速度设为400kHz快速模式帧率完全够用。显示界面我做了两屏第一屏显示当前温度、目标温度、当前时间、加热/照明状态第二屏显示喂食时间点和水位状态。按“菜单”键切换屏幕按“加”/“减”键在设置界面调整目标温度。报警方面我实现了三类报警温度超限报警温度高于34℃或低于15℃立即报警。水位低报警水位低于低水位探针蜂鸣器每秒响一次并显示报警图标。加热棒故障报警连续加热10分钟而温度没有变化判断加热棒可能损坏或继电器没吸合自动断开继电器并报警。第三类报警最容易被人忽略但它非常实用。鱼缸加热棒在冬天几乎全天候工作一旦电路出问题要么加热棒一直加热导致水滚烫要么彻底断电导致水温骤降。有故障检测整个系统的可靠性就不是一个档次了。按键的消抖我用了经典的延时消抖法检测到按键按下后延时10ms再读一次确认有效后执行动作。如果对响应速度要求高可以用定时器轮询消抖但简单项目延时消抖足够用了。4. 联调与验证从裸板到能稳定运行的鱼缸4.1 硬件上电前的安全检查硬件画完板子或者搭完面包板之后千万不要直接上电。我第一次自己做这块板子的时候就是因为没检查一个电容接反直接冒烟了。现在我习惯遵循一套固定的检查流程先用万用表测电源正负极之间的电阻如果阻值接近0Ω说明有短路绝对不能上电。然后断开负荷单独给主控板供电测3.3V是否正常用示波器看纹波是否在可接受范围一般峰峰值小于50mV合格。再逐个接入外设模块每接一个都确认电流和电源稳定性没出问题。继电器控制220V加热棒那部分一定要先加一个隔离变压器或者用带漏电保护的插座测试安全第一。我的建议是联调阶段先用12V的小功率灯模拟加热棒验证逻辑正确后再接入真实设备。别嫌麻烦这能帮你过滤掉90%的电气故障。4.2 外设逐个驱动的顺序软件开发阶段的联调我有一个推荐的顺序保证每一步都容易定位问题第一步点亮OLED。这是最基础的I2C通信测试OLED能显示字符就说明I2C外设和GPIO配置没问题。第二步调DS18B20温度采集串口打印温度值确认读数合理。第三步调继电器手动置位PB0和PB1听继电器吸合声音测量触点通断。第四步调舵机PWM输出特定脉冲宽度用逻辑分析仪或示波器看波形是否正确。第五步调水位传感器用手触摸探针模拟水位变化看ADC值或开关状态是否改变。这五步顺序不是随意的每步都依赖前一步的通信基础。如果OLED都没点亮就去调水温传感器出问题不知道是GPIO没配好还是单总线时序问题排查起来很痛苦。每调通一个模块我就在代码里加一个打印语句标注“dev_test_passed”后续排查问题时能快速定位是第几个设备挂掉了。4.3 整体联调与PID参数整定外设全部驱动完成以后进入系统级联调。这时我建议准备一个大一点的水桶装满水把传感器和执行器都放进去先做模拟测试不要真折腾鱼。水温控制测试要看三个指标稳定时间、超调量、稳态误差。我实测的结果是从20℃的冷水加热到设定28℃PID参数调到合适后大约需要35分钟超调0.3℃稳态误差0.1℃以内。如果用滞回控制同样的加热条件超调能到2℃稳态误差0.5℃。这就是PID方案的价值体现也是你在论文里可以放对比图表的核心数据。喂食功能联调时我遇到过一个问题舵机转到90°以后有时候会抖一下然后回到0°造成鱼食卡在转盘里没掉下去。排查后发现是舵机供电不足波形分析仪能看到5V电源在舵机转动瞬间跌到3.8V。解决方法是换独立电源模块加大电容之后再也没有抖动过。这个案例后来我写进了论文的问题分析章节效果非常好。灯光控制联调就简单了主要是验证定时逻辑准确性。我连续跑了3天每天观察定时关灯是不是精确到秒。系统时钟用的是STM32的RTC外接一个32.768kHz晶振后每天误差大概1秒内完全可以接受。5. 常见问题与排查技巧实录5.1 温度读数异常现象DS18B20读出来的温度一直是85℃或者长时间没变化。这个问题的原因几乎都是单总线时序被中断干扰或者上拉电阻没接。85℃是DS18B20上电时暂存器ROM里的默认值代码能读到这个值说明初始化基本通过但读写时序还不稳定导致CRC校验失败后返回默认值。解决办法检查上拉电阻是否为4.7kΩ确保读取时关中断或延长延时时间。还有一个容易被忽略的是代码里的延时函数要基于真实的系统时钟如果你用的是内部RC振荡器而代码按8MHz外部晶振延时时序全线漂移。我调试时就吃过这个亏烧录后温度永远固定在某些值最后定位到是系统时钟配置错误。实验技巧拿一个吹风机吹一下DS18B20看温度读数是否快速变化。如果读数不变基本可以确定是读写时序问题而不是传感器本身坏了。5.2 舵机抖动、卡死或导致单片机复位这几乎是所有带舵机的嵌入式项目的经典问题原因说穿了就是电流和时序两件事。电流方面舵机启动瞬间会拉走大电流导致5V电源电压跌落。如果单片机的3.3V是经过AMS1117从同一个5V降下来的电压跌落时会触发掉电复位表现为舵机一转屏幕闪一下然后重启。最终解决方法是舵机独立供电或加大容量电容。时序方面驱动舵机的PWM一定要用硬件定时器生成的稳定PWM信号不要用软件延时翻转GPIO。我用的是TIM1_CH1因为STM32F103的高级定时器频率精度更高PWM输出更稳定。另外一个坑是舵机的PWM脉宽范围。SG90的标称是0.5ms对应0度2.5ms对应180度。但不同厂家的舵机一致性差有的需要微调脉宽范围。我写代码的时候把脉宽范围做成了宏定义方便现场校准两行定义的修改就能让舵机走满一圈。5.3 系统跑着跑着就死机或重启这类问题要分两步排查硬件方面先看电源纹波继电器吸合瞬间、舵机转动瞬间是否导致电压跌落软件方面看是否有死循环、数组越界、栈溢出。我遇到一个特别隐蔽的死机问题OLED显示函数在显示浮点数时用了sprintf格式化字符串这个函数在嵌入式环境里占用栈空间很大如果任务栈分配不够就会出现偶发死机。换成直接整数转字符串的函数后问题彻底消失。嵌入式开发里sprintf/printf这种重量级字符串函数尽量少用尤其是在中断里绝对禁用。软件看门狗IWDG一定要加我的喂食时间设置为每1秒刷新一次看门狗主循环正常时间远远小于1秒所以如果系统挂了1秒内看门狗就会复位重启。这个功能在无人看守的场景下意义重大鱼缸坏个一晚上可能鱼都活不了看门狗至少能保证系统自愈。5.4 毕业设计答辩的高频问题答辩老师大概率不会问你代码细节他会问这几个方向“为什么选STM32F103C8T6而不是F4或者F7”答F103功耗更低、价格更低、资料最多对于鱼缸这种工况足够用而且低主频的抗干扰性往往更好。“PID参数是怎么整定的”答现场调参过程先比例后积分再微分说明你理解参数和系统输出的对应关系。千万不要说“网上抄的”。“如果掉电再上电系统怎么恢复”答参数存储在EEPROM或Flash里上电后从存储区恢复用户设定值温度控制直接进入自动运行模式水位检测和报警立即启动。“这个系统能不能扩展远程监控”答预留了USART2接口可以接ESP8266模块通过MQTT协议把温度、水位数据推送到手机端硬件改动几乎为零只需增加一个模块和对应的通信协议代码。这些问题的答案都在你的项目过程里只要你真的自己动手做过一遍问到细节自然能答上来。这也是我强调全过程理解的重要性背出来的东西在追问下很容易露馅。6. 我的一些经验与建议做完这个项目最大的心得倒不是代码怎么写得漂亮、电路怎么画得专业而是“提前做减法”和“延迟做加法”。前期需求阶段别想着把能用上的传感器全挂上去功能越多调试时间成倍增加。先把温度、喂食、灯光、水位四个核心功能调稳定再去考虑手机控制、云端联网这些扩展点。有条件的同学建议把整个实际运行过程拍下来包括鱼缸正常运行、加热棒启停、舵机投喂、报警触发等关键节点。答辩的时候放一段一两分钟的视频比PPT里写十页文字都有说服力。我当时还用手机的秒表连续记录了3天温度曲线画成折线图贴在论文里老师看了后直接在满意栏打了勾。后面做扩展的话我建议优先考虑加一个ESP8266或ESP32模块做远程控制。现在WiFi模块降价到白菜价物联网功能加进去后整个项目的应用场景从“家用智能鱼缸”升级成“远程养殖监控系统”这又是另一个档次的设计了。软件上可以把调度逻辑移植到FreeRTOS用任务替代裸机轮询再把PID控制改成模糊PID自适应整个项目的技术深度又上一层台阶。最后说一句实际的做这类毕业设计最忌讳的就是把手头代码当成保姆级答案去抄哪怕你把时序图都背下来也不如亲手点亮一个OLED来得实在。做对了是你大学四年攒下的本事做错了也是你答辩时最真实的素材。本文还有配套的精品资源点击获取
返回列表