ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

单片机物联网|毕设答辩|毕业设计项目|观赏鱼缸控制系统设计

单片机物联网|毕设答辩|毕业设计项目|观赏鱼缸控制系统设计 标题观赏鱼缸控制系统设计文档介绍1绪论1.1 研究背景及意义城市化进程持续推进现代都市居民的生活节奏变得更快工作压力不断加大人们对于精神文化生活的追求愈加强烈在此情形下观赏鱼养殖这一低强度富有趣味性的休闲活动渐渐被城市家庭普遍认可并当作兴趣爱好观赏鱼可用来美化家居环境观赏它们的时候能平缓情绪减轻压力对于调和现代人紧张的生活节奏有着积极作用但观赏鱼养殖可不是一项简单的日常照看事务鱼缸环境的维持牵涉水温调控水质守护水位维持等诸多方面只要其中一个环节出问题就有可能引发鱼类患病乃至死亡。 传统鱼缸运作大多靠人工来完成这就要求养殖者定时监测水温更换水体留意水质改变情况这样的运作既耗时又费力而且很难立即察觉到偶发事件并加以解决常常是在养殖者外出或者粗心的时候带来一些本可避免的损失。物联网技术飞速发展给传统鱼缸经营方式向智能化转型赋予了技术支持经由把传感器技术自动控制技术和无线通信技术有机融合起来就能形成起一套可即时监测鱼缸环境参数并自动开展相应控制动作的智能经营系统此系统可以把养鱼者从繁杂琐碎的日常守护事务当中解脱出来而且凭借远程观察功能无论养鱼者身处何方均能及时了解鱼缸状况并予以必要干涉所以设计出一套功能完备运行可靠的观赏鱼缸智能控制系统对于加强家庭观赏鱼养殖的便捷程度及其达成率有着重要的实际价值本课题就依托这样的大背景力求研制出一套兼具环境检测自动控制和远程守护功能的鱼缸控制系统从而为现代家庭水族养殖给予更为科学高效的养护计划。1.2 国内外研究现状1.2.1 国外研究现状国外关于智能水族养殖系统的相关研究启动得比较早其技术发展比较成熟欧美那些发达国家在水产养殖自动化方面的研究投入了诸多资源创建起较为完善的技术体系。在外传感器的应用上国外的研究者较早便把多参数水质传感器用在水族养殖当中从而做到对水温pH值溶解氧氨氮这些关键指标的即时检测这给精准化养殖经营形成了技术根基至于控制系统则大多是国外的产品采取模块化的设计理念把温度控制过滤循环自动投喂等功能整合起来用户可以依循自己的实际需求来灵活设定功能模块这表现出很高的系统整合程度以及设计的灵活性。 近些年来伴随着物联网技术得到全面推广国外的智能水族产品朝着云端化移动化的方向迈进很多产品具备经由智能手机应用程序执行远程观测和控制的能力一些高端产品还融入了人工智能算法它们可以遵照鱼类的行为特征及其生长状况自动调节养殖参数智能化水平持续优化。从商业应用角度看德国日本等国的智能水族设备制造技术位于世界前列它们的产品在测量精度运行稳定性以及用户体验上存在突出优势这些国家有着比较完善的产业链和成熟的技术标准体系产品从传感器精度到执行机构可靠性都要经过严格的检测认证但是国外产品大多价格昂贵高端产品常常超出一般家庭用户的消费水平而且有些产品的功能设计更多依照国外家庭的养殖习惯和使用环境不能完全契合国内家庭用户的真实需求在鱼缸尺寸适应性本地化交互界面等方面也存在一定差距正是由于这样的情况国外高端产品想要在国内市场广泛推广就会碰上诸多困难这也给国内自行研发的智能水族系统创造出了不同的竞争机会。1.2.2 国内研究现状国内关于智能水族养殖系统的研究开始得比较晚但是近年来发展速度很快随着植入式技术和物联网技术得到普及国内的高校以及科研机构展开了许多这方面的研究并收获了丰富的理论与应用经验从学术研究角度看国内的研究人员针对鱼缸环境检测自动控制算法远程传达等内容做了细致探究给出了很多依靠单片机ARM 处理器和植入式操作系统的解决办法覆盖了从传感器收集数据一直到执行器控制的整套技术流程这些研究在技术路线方面表现出多种化特征有的是按照简单控制逻辑制定的低成本方案也有的是采用即时操作系统并结合复杂控制算法而作出的全面性规划从而给智能水族系统的产业化进程供应了技术支持。 在产品开发这个层面上国内智能水族设备市场处于快速发展当中许多科技公司推出了一些针对家庭用户的智能鱼缸产品其功能包含自动恒温智能照明自动投喂水质监测等众多方面相关的产品种类和功能一直在增多。国内产品大多看重性价比并执行本地化功能设计在 WiFi 联网手机控制云平台接入这些方面有一定的优势可以较好地符合国内用户的使用习惯及消费水平国内企业在国内软件开发和人机交互方面投入较多所以手机应用程序的功能和界面设计常常更为贴近国内用户的需求。不过总的来说国内产品在传感器精度系统稳定性以及智能化水平上同国外先进水平还是存在一定的差距格外是在多参数综合判定和自适应控制算法上有着很大的改善余地当前大多数产品仍旧着眼于单个功能的达成并未深入地针对系统整体框架及其各功能模块之间的协作展开设计。 国内研究大多着眼于功能达成的层面对于长时间运行的可靠性故障自动回复能力等考量有所短缺前面的问题便是本课题研究的关键着手点经由系统的软硬件协作设计来探寻塑造起功能完备运行稳定的智能鱼缸控制系统的方案。1.3 研究内容本课题旨在设计并实现一套基于单片机的观赏鱼缸智能控制系统围绕环境监测、自动控制、本地显示和远程通信四大功能模块展开研究。具体研究内容包括以下几个方面经由系统总体架构设计综合考量功能需求成本控制以及技术可行性之后可以确定系统的硬件平台与软件框架。展开硬件电路设计时以主控芯片为核心设计时钟电路复位电路等基本电路还要针对温度监测水质监测水位监测液晶显示以及无线通信等外围电路执行选型与设计促使各个模块稳定又可靠地运行。执行系统软件开发任务的时候要搭建起依靠嵌入式即时操作系统创建起来的软件平台完成主程序框架的设计工作并编写好数据采集数据显示网络传达自动控制这些子程序然后执行调试。进行系统集成与调试时要逐一考察硬件模块并综合调校软件功能以解决开发阶段产生的技术难题核实系统各功能是否得到落实。完成系统功能验证及结果分析依靠实际运作检测来考量系统的稳定性和可靠性并总结设计阶段的经验与短缺。前面的研究内容执行完毕之后就可以达成一个智能化的鱼缸经营系统这个系统可以随时监测水温水质水位这些参数并且具有本地显现自动加水远程观测与控制这样的功能。2系统总体结构设计2.1 系统组成方案本课题开始设计的时候就针对鱼缸智能控制系统所需要的功能以及性能标准给出了两个可行的设计方案。方案一采取以8位单片机为核心控制器的集中式控制架构这个方案把STC系列或者AVR系列的8位单片机当作主控芯片再加上DS18B20温度传感器TDS水质传感器和红外光电式水位传感器来收集环境参数显示方面使用1602字符型液晶屏经由串口和ESP8266模块关联达成WiFi通信。此方案的优点在于硬件成本低开发工具比较成熟入门难度不大比较适合功能需求较为简单的情形但是8位单片机的处理能力存在一定局限性无法兼顾多路传感器数据的采集及处理液晶显示的更新以及网络协议栈的执行特别当需运行即时操作系统时资源瓶颈表现得越发明显而且1602液晶屏仅能显示字符内容不能显示图形界面这方面的用户体验还需进一步改良。方案二把32位 ARM 处理器当作核心控制器采取分层结构此方案选定凭借 ARM Cortex - M4 内核的 STM32 系列单片机做主控芯片这个系列的芯片有着较强的处理能力外设接口也很多可以应对多任务同时处理的情况传感器方面挑选了数字式温度传感器模拟输出水质传感器以及非接触式电容式水位传感器依靠模拟数字转换和单总线协议来做数据收集显示部分用的是 TFT 彩色液晶屏其可表现图形界面这样就能直观地显示出各种环境参数。无线通信利用 ESP8266 模块经由 MQTT 协议同物联网云平台相连达成数据上传与远程控制的目的从软件角度来说采用了 RT - Thread 实时多线程操作系统依靠多任务调度机制来同步执行数据采集显示更新以及网络通信等事务。综合对比两个方案方案一成本较低但其扩展性欠佳处理能力也较为有限无法满足本课题设计的所有功能需求方案二在性能扩展性和用户体验上有着突出的优势特别是在采用即时操作系统之后可以更好地应对多任务并发的情况保证系统运行的即时性和稳定性所以本课题选定方案二作为最终的执行方案。2.2 系统工作原理本系统的工作原理包含数据采集本地处理自动控制和远程交互这四个环节它们以形成闭合回路的方式运作当系统接通电源并完成初始化之后主控芯片会遵照预先设定好的采样间隔先后获取温度传感器水质传感器以及水位传感器所产生的输出信号。温度传感器利用单总线协议来传递数字形式的温度值水质传感器则发出和水中溶解性固体含量呈线性比例关系的模拟电压信号而水位传感器则给出表示当前水位高低的数字电平信号主控芯片会对这些收集得来的原始数据执行滤波和数值转換操作从而得出真实的环境参数数值。数据处理完毕之后系统会做两件事其一系统把处理过的数据传送到TFT液晶显示屏上实施本地化显示这样一来用户就能直接从屏幕上得知当下的温度水质以及水位情况。其二系统经由ESP8266模块把数据封装成MQTT协议报文并上传到ThingsBoard物联网云平台从而达成数据的远方储存与显现在自动控制层面系统随时判定水位检测信号是否低于预先设定的阈值一旦水位过低系统便会自动开启水泵来实施补水直到水位恢复常态才终止补水行为。 在远程控制方面用户借助云平台发出控制指令系统接收到该指令并执行相应的远程补水操作。这个系统包含前面提及的工作流程可即时监测鱼缸环境本地显示相关信息并自动调节相关参数还能做到远程运维从而创建起一套较为完善的智能控制体系。2.3 系统构建本系统若按照功能模块来划分则包含有五个主要形成单元它们分别是主控模块传感检测模块显示模块执行模块以及通信模块。主控模块处于整个系统的核心地位它承担协调各个模块工作顺序的任务还要处理传感器传来的数据运行控制算法并管理通信事务本系统采用STM32F411CEU6作为主控芯片此芯片以ARM Cortex - M4内核为基础其最高工作频率可达到100MHz自带512KB的闪存以及128KB的静态随机存取存储器具备较多的外设接口资源其中覆盖大量通用同步异步收发器串行外设接口集成电路总线接口以及模拟数字转换器通道这些完全可以满足本系统对外设的各种对接需求而且主控模块里还包含了时钟电路和复位电路可以给芯片供应稳定的运行时钟并给予系统可靠的重新启动功能。传感检测模块承担着收集鱼缸环境参数的任务包含温度检测单元水质检测单元以及水位检测单元温度检测单元所用的是DS18B20数字温度传感器这种传感器凭借单总线通信机制其测量精度较高而且经过防水封装处理适宜长时间置于水中运行。水质检测单元则依靠TDS传感器经由测量水的电导率来间接体现水中溶解性固体的含量输出的模拟电压信号会由主控芯片内的模拟数字转换器转为成数字值水位检测单元采用的是非接触式的电容式水位传感器此传感器借助感知电容的改变来判别水位是否低于预定阈值并把开关量信号传递给主控芯片以执行读取操作。显示模块选用 TFT 彩色液晶屏经由串行外设接口同主控芯片交互用以及时显现温度TDS 值水位状况等系统参数而且可以依循设计图形化的用户界面改善交互感受。执行模块重点在于水泵控制单元主控芯片借助通用输入输出引脚来控制继电器从而控制水泵的开启与停止做到自动补水和远程补水的目的通信模块利用 ESP8266 WiFi 模块依靠通用同步异步收发器接口和主控芯片相接达成与 ThingsBoard 物联网云平台的无线通信完成数据上传和远程指令接收。 前面所述各个模块经由恰当的硬件拼接及软件调配形成起一个功能完备运行稳定的智能鱼缸控制系统。3系统硬件设计3.1 主控电路设计3.1.1 主控芯片选择本系统主控芯片选型围绕处理性能外设资源功耗特性以及开发支持等方面展开综合考量经由对诸多主流单片机实施对比分析之后选定意法半导体公司所生产的 STM32F411CEU6作为系统主控芯片此芯片具备 ARM Cortex - M4 内核包含数字信号处理指令集以及浮点运算单元其最高主频能够达到100MHz可以高效达成传感器数据采集数字滤波数值转换以及控制算法等各类计算任务。在存储资源上该芯片预先设置了512KB的闪存和128KB的静态随机存取存储器给 RT - Thread 嵌入式即时操作系统以及多任务应用程序的运行赋予了足够的空间而且这个芯片还具备多种低功耗工作模式很符合长期运行设备的需求它有着较为成熟的开发工具链也有许多的技术文档做支撑这样就能切实减小开发的困难削减开发的时间。图3.1 STM32F411CEU6引脚分配图STM32F411CEU6在外设接口上带有诸多通用同步异步收发器串行外设接口集成电路总线接口以及12位模拟数字转换器通道可以一次性挂接温度传感器水质传感器显示模块和无线通信模块不需要做接口复用或者扩展使得硬件设计更为简捷此芯片有36个通用输入输出引脚其丰富的引脚资源保障了各个功能模块得以独立相连免除了引脚冲突的状况出现而且该芯片自带的模拟数字转换器具备12位分辨率能够达到对TDS传感器模拟信号高精度采集的目的凭借前面这些因素STM32F411CEU6在性能资源功耗以及开发便捷性等诸多方面基本符合本系统对主控芯片的所有需求给系统功能的完全达成赋予了可信赖的硬件支撑。3.1.2 时钟电路时钟电路对于单片机系统来说非常重要它可以给芯片内部的时序逻辑电路给予同步基准信号STM32F411CEU6芯片内置了时钟管理单元该单元包含多种时钟源选项比如内部高速振荡器内部低速振荡器外部高速晶振以及外部低速晶振。若想达成较高的工作精度并且保证频率稳定本系统把外部高速晶振当作主时钟源外部高速晶振选取8MHz的无源石英晶体再加上两个22pF的负载电容形成并联谐振电路再接到芯片的 OSC_IN 和 OSC_OUT 引脚上。这个晶振的频率经由芯片内部的锁相环电路放大之后可以达到100MHz的系统主频这就满足了系统对于处理性能的要求锁相环电路具备增频和减频的功能从而给主控芯片各个不同的功能模块供应灵活多变的工作时钟。系统配有32.768kHz的外部低速晶振用以激发芯片内部的实时时钟模块给系统赋予精确的时间参照利于做到定时采样定时上报等功能实时时钟模块可在系统主电源断电时凭借备用电池持续运行维持时间的连贯性。时钟电路的规划要留意晶振和芯片引脚间的连线最好短而且直负载电容要靠近晶振摆放以此来减小分布参数对振荡频率的影响保证时钟信号的稳定性及其抗干扰性能在印刷电路板设计时晶振电路周边应当设置地线实施隔离防止高频信号线造成干扰经由恰当的时钟电路规划与布局就为系统给予了稳定可靠的时钟源从而保障了主控芯片和各个外设模块按时序同步并协同运行。3.1.3 复位电路复位电路可在系统上电或者运行异常的时候把单片机重新设成指定的起始状态使得程序从正确的入口地址启动执行。STM32F411CEU6芯片的复位引脚NRST属于低电平有效类型一旦这个引脚得到维持一段固定时延的低电平信号那么芯片内部所有的寄存器都会被复位成预置值程序计数器会指向前置向量地址从而让系统得以再度运行本系统经由把阻容复位电路同按键复位融合起来的办法来达成复位的目的这样既保全了上电自动复位的稳定性又增添了人机互动时能够执行手动复位的可能性阻容复位电路包含一个10kΩ的上拉电阻和一个0.1μF的复位电容其中电阻的一端与3.3V电源相连另一端则接在NRST引脚上而电容则是跨接于NRST引脚和地之间。图3.2 复位电路图上电的刹那间电容两端的电压无法突然改变NRST引脚维持着低电平伴随电容经由电阻得到充电引脚上的电压慢慢升至高电平如此便完成了上电复位的过程。对于电阻和电容的参数选取而言需与芯片的复位时间需求相符合从而保证低电平所持续的时段能够达到芯片内部复位动作的执行目的按键复位电路在NRST引脚和地之间串联了一个轻触开关当系统必要实施手动复位的时候按下这个开关就能把NRST引脚直接接地发出低电平的复位信号。 要防止由于按键抖动而造成误复位可以考虑在软件层面做去抖动处理或者在硬件方面增添滤波电容复位电路设计时还得重视静电保护手段在NRST引脚和地之间可用瞬态抑制二极管免除静电放电致使系统误复位的情形发生利用阻容复位结合按键复位这样一种设计方案此系统就具有了稳定的复位功能可在各类不同情况下保证系统从预知状态开始执行运作。3.2 温度检测电路设计温度属于影响鱼类生存状况的重要环境要素水温过高或者过低都会干扰鱼类的正常生理机能运作情况恶劣的时候甚至会造成鱼类死亡所以及时而精确地监测鱼缸内的水温对于维持鱼类健康成长而言十分关键本系统选择了 DS18B20 数字温度传感器来执行水温检测任务这种传感器依靠单总线传送协议只需一条数据线就能同主控芯片达成双向信息交互这在很大程度上精简了硬件之间的耦合关系。传感器内部装配有 12 位的模拟数字转换元件其温度分辨能力能够达到 0.0625 摄氏度测温区间从 -55 摄氏度延伸到 125 摄氏度而在 0 至 85 摄氏度之间时的精度可控制在正负 0.5 摄氏度之内完全符合鱼缸水温监测的需求而且该传感器采用了不锈钢材质并做了防水处理附带防水电缆所以可以直接放入水中长时间运行具备较好的抗腐性与耐久性。图3.2 DS18B20温度检测电路图DS18B20传感器同主控芯片的结合比较简易总共涉及三个引脚其分别为电源引脚数据引脚以及接地引脚。传感器的工作电压由主控芯片的3.3V输出端给予数据引脚则连接到STM32芯片某一个通用的输入输出引脚之上按照单总线协议数据线在空闲时应维持高电平所以要在数据引脚施加一个4.7kΩ的上拉电阻以接通电源端从而确保通信时序的准确性当执行数据收集任务的时候主控芯片会发出依照单总线时序设计的重置脉冲和读写脉冲以此来依次做到传感器的初始化开启温度变换功能并获取温度数值这些事情传感器送回的原始温度数据是16位的二进制形式主控芯片经过数值换算便能得出真实的摄氏度数值进而给后面的温度显示和调节供应依照。3.3 水质检测电路设计水质状况会直接左右观赏鱼的健康情况而水中溶解性固体含量则属于评定水质清洁度的关键指标这个系统用 TDS 传感器来检测鱼缸里的水质这种传感器经由测定水的电导率来间接表现水中溶解性固体的含量。传感器包含探针以及信号调理电路两部分探针浸入水中去获取电导率信号信号调理电路则会把微小的电信号放大约化并转变成0到2.3V之间的模拟电压输出这个电压值和水里总溶解固体的含量成线性关系传感器所需的供电电压范围是3.3到5伏特这个系统使用3.3伏特的电源其测量范围限定在0到1000ppm精度控制在满量程正负百分之五以内如此便能满足家庭鱼缸水质日常监测的需求传感器依靠交流激励信号来激发探针这样就能避开直流极化效应给电极带来的不良影响进而提升探针的使用寿命。图3.2 TDS传感器模块引脚示意图TDS传感器和主控芯片的连接以模拟接口方式为主传感器的模拟信号输出引脚连在STM32芯片的一个模拟数字转换器输入通道上主控芯片经由模拟数字转换器定时获取传感器输出的模拟电压值遵照电压与TDS值的线性关系执行换算从而得出真实的水质参数在电路设计时要重视模拟信号的抗干扰处理传感器信号线应尽量短并且远离高频数字信号线而且因为TDS测量结果同环境温度有关系统在数据处理的时候会把温度传感器采集到的水温值融合进来针对TDS测量结果开展温度补偿修正把测量值转换成标准温度下的等效TDS值这样就能进一步加强水质监测的精准度给养殖户判断水质情况以及决定换水时间给予科学按照。3.4 水位检测电路设计鱼缸水位若要维持在合理范围之内这对于保障鱼类的生存空间以及水循环系统的正常运行来说十分关键本系统利用非接触式电容水位传感器来执行水位监测此传感器按照电容感应原理来运作。当传感器表面同水体之间的介质出现变化的时候感应电容就会发生改变内部电路经由检测电容的这种变化来判定是否存在水流传感器属于非接触式设计所以它可以被装在外壁上并不需要与水直接接触这样就避开了传统浮子式传感器常常会由于水垢附着而失灵这一问题而且也免除了金属探头给水质带来污染的可能性传感器所发出的是开关量信号只要检测到有水流就会输出高电平如果没有水流就输出低电平这个信号可以直接接到主控芯片的通用输入输出端口上面去无需再加装什么专门的信号调节电路才行。图3.2 水位检测电路图电容式水位传感器存在三根引出线即电源线地线以及信号线其中电源线需接到3.3V电源端信号线则要与STM32芯片某一个通用输入输出引脚相接主控芯片经由读取此引脚的逻辑电平来判断当前水位状况为适配不同鱼缸的大小及安装地点可利用传感器上设置的电位器去调整其灵敏度在系统运行期间主控芯片始终监测水位传感器的状态一旦探测到信号电平由高变低也就是水位低于预定阈值时便会立刻开启自动补水流程借助控制继电器闭合促使水泵通电运行。 水位上升到正常水平的时候系统会让继电器断开从而让水泵停止工作依靠这样的闭环控制方法就达成了自动维持水位的目的免除了由于水位过低而产生的各类问题。3.5 显示电路设计人机交互界面的设计会直接左右用户使用系统的便捷程度本系统需随时向用户显示温度TDS值水位状态等关键信息所以选择了TFT彩色液晶屏作为显示模块。该显示屏利用的是薄膜晶体管技术其特点是响应快色彩还原度高可视角度大屏幕大小为1.44英寸分辨率达到了128×128像素可以清楚地显示文字数字以及简单的图形显示模块里融合了驱动控制器这个控制器向外给出串行外设接口只需要四根信号线就能和主控芯片展开通讯包含片选信号时钟信号数据输入信号和数据输出信号这样的接口方式所占的引脚比较少有益于简化硬件设计。TFT液晶显示屏同STM32主控芯片相连采用串行外设接口总线形式显示模块的片选引脚挂接在主控芯片某一个通用输入输出引脚之上时钟引脚则连向串行外设接口的时钟输出引脚数据输入引脚同主出从入引脚相接。显示模块的工作电压是3.3V在软件控制方面主控芯片经由串行外设接口向显示屏传送初始化命令序列设置显示参数以及通信模式当处于正常工作状况时主控芯片会把待显示的文本和图形数据送进显示模块的显存当中从而由其内部的驱动控制器自行更新屏幕上的显示内容。 本系统界面设计包含温度显示区TDS值显示区水位状态指示区以及网络连接状态指示区利用不同颜色和图标来区分各类信息用户可直接从屏幕上掌握鱼缸当前状况。3.6 无线通信电路设计要达成鱼缸环境数据远程检测及远程控制的功能该系统需具有接入互联网的能力无线传达方式比有线传达更简单易布线其安装更为灵活更契合家庭应用场景此系统采用ESP8266无线WiFi模块来解决网络通信问题此模块属于高度综合性的单芯片无线局域网微控制器其内部包含TCP/IP协议栈并且符合802.11 b/g/n无线标准能够处于工作站模式接入点模式或者混合模式该模块向外供给通用同步异步收发器接口主控芯片经由串口传送AT指令以操控模块执行网络关联和数据输送从而减小了开发的困难度模块的工作电压为3.3V这与主控芯片的电源电压相符合如此便利于统一供电。图3.2 ESP8266WiFi模块电路图ESP8266模块和STM32主控芯片之间采用通用同步异步收发器UART异步串行通信方式进行结合模块的串口接收引脚需连接到主控芯片的发送引脚上串口发送引脚则应连接到主控芯片的接收引脚经由交叉连接达成全双工通信效果模块设置为工作站模式并依靠AT指令连接到家庭路由器以接入互联网之后再同ThingsBoard物联网云平台创建起MQTT长连接MQTT协议属于一种轻量级的物联网通信协议具备开销低可靠性强的特性在数据上传时主控芯片会把所采集到的温度TDS值以及水位状态等数据依照JSON格式加以封装接着经由串口发送给ESP8266模块该模块接着把这些数据转化为成MQTT协议报文并转发到云平台当中。 在远程控制方面模块会接收到云平台下达的控制指令经由串口传递给主控芯片主控芯片解读指令之后便展开相应的远程补水操作从而达成了设备端的联网功能及其远程运作的能力。4系统软件设计4.1 软件开发环境与编程语言本系统软件开发依托 ARM 嵌入式开发平台并利用集成开发环境来执行程序编写编译及调试任务开发工具选取 Keil MDK - ARM这种集成开发环境由 ARM 公司官方认可适用于 STM32 系列芯片的开发其自带 ARM 编译器效率突出调试功能完备具备代码编辑编译结合仿真调试等多种功能足以符合本系统软件开发的要求所选编程语言为 C 语言C 语言具有代码效率较高可移植性能较好底层控制力较强等特点比较契合嵌入式系统开发需求可以直 接操控硬件寄存器从而做到对外设的精准控制在代码规划上运用模块化设计理念把具有不同功能的代码各自封装成单独的源文件与头文件主程序文件硬件初始化模块传感器激发模块显示激发模块网络通信模块以及控制逻辑模块等都是如此设置这些模块相互之间借助函数接口来开展交互这样做不但减小了代码之间的耦合程度而且提升了程序的可读性与可维护性。为改进系统的即时性及其并发处理能力本系统采用 RT - Thread 嵌入式即时多线程操作系统RT - Thread 是一款国产开源即时操作系统具备体积小巧启动快速即时性良好的特性它能支持多任务同时运行而且内核对资源的占有量小很适合资源有限的微控制器平台。经由操作系统的线程经营信号量消息队列这些机制把数据采集显示更新网络通信以及控制任务各自安排到不同的线程去执行这样就能全面利用处理器的资源保证各个任务依照预定的优先顺序和时间要求及时做出回应使用操作系统以后系统各个功能模块之间存在的资源争夺和同步难题得到了有效的解决开发者可以重点考虑每个功能模块的实际达成情况不需要过多去理会任务调度那样的底层细枝末节于是程序的整体架构就变得越发清晰易懂其扩展性也得到了很大的改良。4.2 主程序设计主程序位于整个系统软件的前端起着调度的关键作用它需完成系统初始化进而启动各种功能线程系统上电之后主程序首先执行硬件初始化步骤譬如设置系统时钟初始化中断向量表设置通用输入输出引脚初始化串行外设接口以及通用同步异步收发器之类的外设模块。当硬件初始化结束时系统转入到操作系统初始化环节调用 RT - Thread 操作系统的相关函数来形成内核运行环境涉及内存运作模块的初始化调度器的初始化以及定时器的初始化等事务等到基本的硬件初始化以及操作系统内核初始化均告完成主程序便创建各种应用线程此系统创建了数据采集线程显示更新线程网络通信线程以及自动化控制线程各个线程均有自己独立的栈空间和优先级其中数据采集线程的优先级最高以确保能及时取得传感器的数据显示更新线程和自动化控制线程次之网络通信线程的优先级则相对较低。线程创建完毕以后主程序会启动操作系统调度器这样系统就进入了多任务并发运行的状态从那时起主程序就不再去执行具体的业务逻辑而是由操作系统依照线程的优先级以及调度策略来决定各个线程的运行时间。操作系统的调度器采取了基于优先级的抢占式调度算法即高优先级线程能够抢占低优先级线程的执行权以此来保障那些对即时性要求比较高的任务得以及时得到处理如果出现许多同优先级线程同时就绪的情况那么调度器就会凭借时间片轮转的方式来实施调度从而做到让各个线程均等地获取到处理器资源主程序的设计体现出一种依靠即时操作系统的应用程序开发模式也就是把系统功能拆解成很多个相互独立又并行运行的任务这样做的好处是提升了程序的模块化水平及其可扩展能力还减小了程序开发时的难度。4.3 数据采集子程序设计数据采集子程序定时读取各个传感器的输出信号把原始数据转变成真实的物理量给其他功能模块给予数据支持这个子程序作为单独的线程运行起来依照预设的采样时间不断重复执行它的设计重点考虑到了数据采集的即时性和准确性需求在每一次采样阶段到来的时候数据采集线程首先要利用单总线协议从 DS18B20 温度传感器那里获取信息遵照传感器规定的步骤发出温度转换指令等到转换完毕之后再去查看温度寄存器里的数值经由对这些数值的分析得出具体的温度数据单总线通信非常看重时序安排程序里面借助精准的延时函数来把控相关的时序节奏从而保障读写操作能够顺利完成。 接着去读取水位传感器通用输入输出引脚上的电平状态按照高低电平来判定当前水位是否正常这项操作很简洁又很直接可以立即得到水位状态的信息。模拟数字转换器开始采集 TDS 传感器输出的模拟电压信号该模拟数字转换器以连续扫描模式运行转换完毕会产生中断经由读取转换结果寄存器取得数字量并结合参考电压来计算实际电压值再按照电压与 TDS 值的标定曲线计算出当前的水质参数等到所有数据采集结束后数据采集线程会把更新后的温度值TDS 值以及水位状态存储到共享数据结构里而且借助消息队列向显示线程和控制线程发出数据更新通知为确保采集数据稳定程序里加入了滑动平均滤波算法针对连续多次采集的数据执行平均处理从而有效地抑制偶然干扰给测量结果带来的影响数据采集线程在完成一个采集阶段之后利用操作系统的时间片延时功能去等待下一个采集阶段的到来如此一来就规避了无效的忙等待减小了系统的功耗。4.4 显示子程序设计显示子程序把系统运行状况以及传感器数据经由图形化界面展现在TFT液晶屏上达成人机交互的目的这个子程序以独立线程形式运行系统初始化时做显示屏的硬件初始化及界面布局的设定工作初始化靠串行外设接口总线向显示屏发送诸多初始化命令来设置显示参数与通信模式涉及显示方向色彩格式扫描方式等并清除显存。界面布局用固定区域划分法把屏幕分成标题栏温度显示区TDS显示区水位状态区和网络状态区各个区域都有其特定的功能利于用户立即得到所需信息在正常运行期间显示线程不断侦听数据更新消息按照事件激发的方式回应数据变化情况免去了毫无意义的定时刷新。显示线程接到数据采集线程的数据更新通知以后从中共享的数据结构里获取最新的温度值TDS值以及水位状态把这些数值转换成字符串形式然后借助字符显示函数在预定的地方执行显示更新。至于水位状态则依照实际水位情形来显示“正常”或者“报警”两种状态而且会用不同的图标和色彩加以区别一旦水位过低就会出现红色的报警图标从而提醒用户留意。在网络状态区当中按照通信线程反馈回来的关联状态来显示已经连接或者尚未连接这样的提示信息这样就能让用户知道系统当前是否具备网络连通能力显示更新这种行为实行局部更新策略只是针对那些数值发生变化的地方实施更新规避因全屏刷新而产生的闪烁情况另外还缩减了数据传送的总量提升了显示的速度显示线程的设计很看重界面的反应速率和用户的感受使得用户可以随时清楚地掌握鱼缸内的各种环境参数界面简单又直观操作起来也很方便。4.5 通信子程序设计通信子程序用来管理ESP8266模块和ThingsBoard物联网云平台之间的网络连接及数据交互达成数据上传和远程指令接收的功能这个子程序以独立线程的形式运行包含网络连接管理数据发布和指令订阅这三个功能模块这些模块相互配合来完成网络通信的任务。网络连接管理模块负责执行ESP8266模块的初始设置并维持其连接状态在线程启动时经由串口传送AT指令集逐步完成模块重置模式设定关联路由器以及形成MQTT连接等工作流程每次发送AT指令之后模块都会给出相应的回应信息程序借助分析该回应内容来判断操作结果是否达标如果有误就执行重试或者错误校正流程。 连接创建起来以后线程便转入到循环观察阶段并开始处理数据的发出和指令的接收事务利用多路混用机制做到双向通信的效果。数据发布模块依照预定的上报时段从数据共享区获取最新传感器数据并把温度TDS值以及水位状态按 JSON 格式整合成数据报文再经由 MQTT 协议的发布消息功能发送到云平台指定的主题当中JSON 格式有着不错的可读性和扩展性利于云平台实施解读与保存。指令订阅模块主要负责应对云平台所发出的控制指令利用 MQTT 订阅的方式来接收远程补水指令一旦收到指令便对该指令里的控制参数加以分析然后向自动化控制线程传达信息从而引发远程补水动作为了保障通信的可靠性程序里嵌入了超时重连机制借助心跳包定时去检查连接状况一旦察觉到网络被切断或者存在连接问题就会自动试图重新创建连接包含再次关联路由器重新形成 MQTT 连接等环节进而保证系统长时间运行期间网络处于有效状态即便在网络短暂中断的时候也可自行恢复正常通信。4.6 自动控制子程序设计自动控制子程序依靠传感器采集到的即时数据来执行各种控制操作从而达成鱼缸环境的自动化调节这个子程序以独立线程的形式运行其中最主要的就是水位自动控制功能和远程补水控制功能这两种控制手段各自独立而且互相配合一起保证鱼缸水位的稳定。水位自动控制功能要不断检测水位传感器的状态才行控制线程在每次采样阶段都会去读取水位传感器发来的信号一旦发现水位低于预先设定的界限就会让控制通用输入输出端口发出高电平信号促使继电器产生磁性吸合现象进而开启水泵来进行补水在补水期间控制线程一直要关注水位情况等到水位回升到正常范围以后就把那个通用输入输出端口设置成低电平于是继电器就断电失磁水泵也就自动停机不转这样一种形成闭合回路的控制方法达成了水位的自主保持目的免去了由于水位过低而引发的一系列麻烦状况。程序里加入了延时确认机制防止因为水位波动而使水泵频繁开停。水位传感器状态发生改变之后要连续多次确认其处于稳定状态这样才执行对应的动作从而有效地解决了临界状态下的抖动问题这个延时确认机制依靠软件定时器来达成一旦水位状态发生变化就开启计时如果在指定的时段里状态维持稳定就会执行控制操作如果有状态回落的情况出现则放弃当前的操作远程补水控制功能从通信线程那里获取到来自远方的指令只要接收到远程补水指令不论当前水位情况怎样都会启动水泵运转预设好的一段时间以此做到按需补水的目的。 这种设计符合用户远程补水的需求即便系统自动补水功能正常运行的时候用户还是可以依照自己的实际情况来执行补水操作。自动控制子程序的设计按照安全可靠的原则其在控制输出引脚时采取了必要的保护手段比如在初始化的时候保证输出为低电平而且设置看门狗以防止程序失控等从而规避由于程序异常造成的误动作进而保障系统的运行安全。5调试与结果分析5.1 硬件调试硬件调试属于系统开发的关键部分其主要目的在于核实电路板焊接的质量以及各个硬件模块基本功能的正常性调试流程包含三个阶段即电源检测基础电路检测和外设模块检测。在电源检测阶段主要任务是查看电路板供电系统的稳定性利用万用表去测量电源输入端和各个芯片电源引脚对于地的电压以确定3.3V电压输出没有异常并且不存在短路问题一旦给电路板上电就可以留意一下各芯片表面的温度不会有不正常的高温状况发生而且电源指示灯也会正常点亮这显示出电源模块运行正常从而为后续的调试给予稳定的供电保障在基础电路检测阶段重点在于核查主控芯片的最小系统能否正常运行借助示波器来测量时钟电路晶振引脚的波形当看到8MHz正弦波信号平稳地被发出的时候就说明时钟电路运行正常晶振也能稳定地产生振荡。 复位电路检测时经由示波器观察上电时 NRST 引脚的电压变化曲线其低电平持续时间需符合复位要求手动复位按键的功能也应正常按下该按键时芯片就能可靠复位进而保证系统可在必要时刻回到初始状态。外设模块检测阶段需逐一核实各传感器及功能模块的硬件关联是否准确在温度传感器检测时利用示波器观察数据引脚波形可见符合单总线时序的通信信号这显示传感器与主控芯片的通信链路正常在水位传感器检测时改变传感器表面的水位状况观测输出电平能正确翻转这就验证了传感器的响应特性TDS传感器检测时把传感器探针浸入不同浓度的水样里观测模拟电压输出随浓度变化而变化的情况从而确定传感器输出信号与水质参数有较好的对应关系。 显示屏模块上电之后可以正常显示出初始画面其背光亮度正常这表明显示模块的供电和通信接口连接正确ESP8266模块上电以后电源指示灯就会亮起经由串口调试工具能够获取到模块的启动信息从而确认该模块运行正常在完成硬件调试之后电路板便能够稳定地上电运行各个硬件模块的功能也都正常这就给后续的软件调试赋予了可靠的硬件平台也给系统整体功能的达成形成了稳固的基础。5.2 软件调试软件调试重点在于核查各功能模块的程序代码是否恰当地达成了预期功能其采用分模块分阶段的调试策略展开在此之前先执行基础软件平台的调试涉及系统时钟设置通用输入输出口的初始化串行外设接口的初始化以及通用同步异步收发器的初始化等事务经由调试器逐步运行代码来留意寄存器设置值是否无误并借助示波器考察时钟输出端和通信接口的波形是否合乎预期从而保证基础软件环境设置准确无误。在调试期间察觉到系统时钟设置开始阶段存在倍频系数设定欠妥之处引发系统主频陷入低于预期状况经过参照芯片数据手册调整锁相环设置参数以后系统主频得以回归正常水平接着着手对传感器推动程序加以调试在温度传感器推动调试环节撰写简单的评定程序并不断读取温度值利用调试器检查所读取的数据把它们与实际水温及显示数值做对比以此来确认时序和数值转换是否准确。 TDS传感器推动调试时需设置模拟数字转换器实施连续采样利用调试器查看转换结果并结合串口输出不同浓度水样时的电压值以验证模拟数字转换通道的线性度。在水位传感器推动调试过程中读取通用输入输出引脚的电平状态模拟水位的变动情况检查状态转变是否快速而精确从而保证传感器数据收集的准确性。再次执行显示驱动程序的调试工作并编写图形检测程序来验证屏幕初始化序列是否正确逐步考察画点画线显示字符以及显示图形等功能从而保证显示模块按设计要求显示出界面内容。在调试期间察觉到屏幕初始化时序出现偏差引发了显示异常现象经由调节串行外设接口的通信速率及延时参数之后该问题得以解决在串口通信驱动调试阶段利用串口调试助手与ESP8266模块展开交互活动向其发送AT指令用以考量模块的连接状况及其数据收发能力并核实相关指令回应的准确性接下来才着手对网络协议栈和操作系统功能执行调试流程检查MQTT协议是否能与ThingsBoard云平台形成关联并开展数据交换以此确认数据上传以及指令接受方面存在的功能特性。 RT-Thread操作系统被采用以后要考查多线程的创建情况也要探究其调度情形以及同步机制是否完善保证各个线程依照预设目标协同运作还要解决好资源访问时可能出现的争执问题。在操作系统相关调试的时候碰上因为线程栈空间划分短缺而导致系统无法正常运行这种情况于是便增扩大该空间改良相关线程的任务安排如此一来就把先前提及的故障给排除掉了软件调试过程所找出的各类问题都得细致分析后再加以改正这样一来各个模块的功能才得以符合预先规划的目的进而为接下来要做的系统综合调试工作构筑稳固根基。5.3 综合调试综合调试把硬件和软件各模块融合起来做系统整体功能的验证检测重点看系统数据收集是否准确控制响应是否及时网络传达是否稳定长时间运行是否可靠。系统上电以后先留意显示屏的初始化情形检查界面能否正常显示各参数初始值是否恰当把温度传感器和TDS传感器投入鱼缸的水里注意显示屏上温度值和TDS值随时的变动同实际测量值作比较温度测量误差在正负0.3摄氏度之内TDS测量误差在满量程的正负百分之五范围内符合设计需求。 由改变鱼缸水位来观察水位状态显示的变化水位降到传感器安装位置之下时屏幕上的水位状态指示就会变成报警状态水泵会自动开启实施补水作业等水位回升之后水泵便自动关闭其自动补水功能运作正常。在自动补水功能的调试期间最初出现过水位波动致使水泵频繁启停的情况不过经过在软件当中添加了延时确认机制之后水泵启停的次数就大幅度缩减控制的稳定性也得到了改善。利用网络调试工具来观察ThingsBoard云平台的数据接收状况核实系统是否依照设置好的上报间隔发送温度TDS以及水位数据云平台仪表盘能否正确显示出各个参数的变动趋势图数据上传既迅速又精准。在通信功能调测的时候存在网络断开以后不能自动重建链接的现象经由改良超时重建机制加上了心跳包监测和自动重建逻辑网络链接的稳定性得到有效加强经由云平台发送远程加水指令系统可在几秒钟之内作出回应并且开启水泵运作远程控制功能得以达成响应时间处于可被接受的范围内。 要想证实系统长时间运行是否稳定就执行了连续48小时的运行检测此期间系统一直在采集数据并上传到云平台其自动控制功能也正常激活未发生死机或者数据中断现象系统运行稳定可靠综合调试成果显示本系统各个功能模块配合得当数据采集精确控制响应快速网络通信正常整体性能符合预先设定的目标经过这个课题的研究和应用做到了依靠单片机的观赏鱼缸智能控制系统的开发这个系统能减小人工干预的频次改善鱼缸守护的智能化程度具备比较好的实用价值和推行潜力。
返回列表