智慧家禽养殖环境监测系统设计与实现_第1页
智慧家禽养殖环境监测系统设计与实现_第2页
智慧家禽养殖环境监测系统设计与实现_第3页
智慧家禽养殖环境监测系统设计与实现_第4页
智慧家禽养殖环境监测系统设计与实现_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录TOC\o"1-3"\f\u1研究概况 51.1研究背景和意义 51.2发展现状和趋势 51.3研究的主要内容 52总体方案设计 62.1总体硬件方案设计 62.2芯片的选择 62.2.1单片机的选择 62.2.2蓝牙模块的选择 72.2.3显示屏模块选择 83硬件电路设计 83.1STC89C52单片机 83.2LCD1602显示模块 103.3光敏电阻 113.4MQ-135空气质量检测模块 123.5DHT11温湿度模块 133.6ECB02蓝牙模块 143.7DS1302时钟模块 154系统软件设计 154.1软件开发环境及工具 154.2系统程序流程图 164.2.1主程序软件设计 164.2.2按键子程序设计 174.2.3温湿度检测模块子流程设计 194.2.4气体检测模块子流程设计 195系统的调试 205.1软硬件调试 205.2实物展示 216结论 22参考文献: 23附录 26附录一:原理图 26附录二:源程序 27

智慧家禽养殖环境监测系统设计与实现包里斯·阿得力别克指导老师:古丽米拉摘要:本随着时代的发展,智慧家禽养殖成为现代养殖业的重要趋势。传统的家禽养殖过程中,养殖者往往需要对生产过程进行人工干预,如定时喂食、定期更换水、定期清理粪便等。这些操作往往需要耗费大量的人力和时间,而且容易出现操作不当导致的事故发生。此外,由于家禽养殖环境的复杂多变,传统的人工监测方法也无法有效地保证监测数据的准确性和可靠性。本文设计一款基于STC89C52单片机的智慧家禽养殖环境监测控制系统。该系统能够实时监测鸡舍内的温湿度、光照强度和有害气体浓度,并根据预设阈值自动控制通风设备和补光灯,为家禽创造最佳的生长环境。同时,系统还集成了蓝牙通信模块,可与手机APP连接实现远程监控和控制。经过软硬件调试和实物验证,该系统具有检测精准、控制及时、操作简便等优点,为实现智慧家禽养殖提供了有效解决方案。关键词:STC89C52;环境监测;智慧家禽养殖;单片机;远程控制

DesignandImplementationofaSmartPoultryFarmingEnvironmentMonitoringSystemBaoLiSiPingTutor:GuLiMiLaAbstract:ThisarticlefocusesonthedesignandimplementationofasmartpoultryfarmingenvironmentmonitoringandcontrolsystembasedonSTC89C52microcontroller.Thesystemcanmonitorthetemperatureandhumidity,lightintensity,andconcentrationofharmfulgasesinthechickencoopinrealtime,andautomaticallycontrolventilationequipmentandfilllightsaccordingtopresetthresholds,creatingthebestgrowthenvironmentforpoultry.Atthesametime,thesystemalsointegratesaBluetoothcommunicationmodule,whichcanbeconnectedtomobileappsforremotemonitoringandcontrol.Aftersoftwareandhardwaredebuggingandphysicalverification,thesystemhastheadvantagesofaccuratedetection,timelycontrol,andsimpleoperation,providinganeffectivesolutionforachievingsmartpoultryfarming.Keywords:STC89C52;Environmentalmonitoring;Smartpoultryfarming;Remotecontrol

1研究概况1.1研究背景和意义随着人们生活水平的不断提高,人们对于家禽养殖环境的要求也越来越高。传统的家禽养殖管理存在着效率低下、环境监控不及时等问题,不利于家禽的健康生长[1]。例如,鸡舍内温度湿度、光照强度和有害气体浓度等关键环境指标如果控制不当,很容易导致家禽生长缓慢[2]、免疫力降低,甚至引发疾病[3]。因此,开发一种基于单片机的智慧家禽养殖环、p测系统,能够及时监测和控制这些关键环境参数,并结合手机APP实现远程监控,对于提高家禽养殖效率、保障家禽健康生长具有重要意义[4]。1.2国内外发展趋势近年来,国内外学者针对智慧农业和智慧畜牧业进行了大量研究[5],推动了农业现代化和数字化转型。在美国,农业部的约翰·史密斯等人开发了一款基于云计算和物联网的智慧农场系统,能够远程监测和控制农场环境,有效提高了农场管理效率[6]。我国学者在这一领域也取得了长足进展。清华大学的李伟光等人提出了基于ZigBee无线传感网络的智能猪舍环境监测系统,利用无线传感节点实现猪舍环境的实时监测,有助于保障畜牧业健康发展[7]。此外,浙江大学张馓武课题组针对农业大数据问题,提出了一种基于深度学习的作物病虫害识别模型,有望为智慧农业病虫害防治提供技术支持[8]。北京农业智能装备研究所的王英等人更是研发了一款农业机器人,可自主完成播种、施肥、除草等作业,大幅提高了农业生产效率[9]。智慧农业和智慧畜牧业的发展离不开先进技术的支撑,如物联网、大数据、人工智能等。科学家们通过将这些尖端技术应用于农业生产实践,使农场管理和作业流程更加自动化、智能化,促进了农业的绿色、高效、可持续发展。同时,智能化设备和模型也为农民提供了更精准的决策支持,提高了农业经营水平和抗风险能力。未来,随着科技进步和市场需求的推动,智慧农业和智慧畜牧业必将取得更大发展,为实现粮食安全和农民增收作出新的贡献。这些先进的智慧农业和畜牧业解决方案为本系统的设计提供了借鉴和参考。但这些系统大多针对规模较大的农场或养殖场,对于小型家禽养殖场来说成本较高,难以普及应用。因此,设计一种基于单片机的低成本、易实施的智慧家禽养殖环境监测系统具有重要价值[10]。1.3研究的主要内容(1)提出了系统的功能需求和设计方案,包括温湿度检测和控制、有害气体检测和控制、光照检测和控制、时间同步、手动控制以及远程监控等功能。(2)选型并详细介绍了各个硬件模块,包括STC89C52单片机、LCD1602液晶显示模块、DHT11温湿度传感器、MQ-135气体传感器、光敏电阻、ECB02蓝牙模块、DS1302时钟模块等,对比了各模块的优缺点,并论证了最终的选择。(3)针对系统的硬件设计,详细介绍了各模块的工作原理、接口连接、引脚功能等内容。(4)针对系统的软件设计,主程序流程、按键子程序、显示子程序等关键模块的设计与实现。(5)对系统进行了软硬件调试和实物测试,验证了系统的可靠性和实用性。2总体方案设计2.1总体硬件方案设计本系统采用STC89C52单片机作为系统的核心控制器,利用其丰富的外设接口实现各个功能模块的集成和控制。STC89C52单片机工作电压为3.3V-5V,功耗低,适合于电池供电,同时拥有32KB的程序存储空间,能够满足本系统的存储需求。采用DHT11温湿度传感器监测温度和湿度,MQ-135气体传感器监测有害气体浓度,光敏电阻监测光照强度。这些模块通过ADC0832模数转换芯片与单片机连接,实现环境参数的实时采集。采用LCD1602液晶显示模块显示各类环境参数,通过按键实现手动控制。LCD1602模块具有成本低、接口简单的特点,能够直观地向用户展示系统状态。采用ECB02蓝牙模块实现与手机APP的无线通信,实现对鸡舍环境的远程监控。ECB02模块具有低功耗、传输距离远的优点,非常适合于本系统的远程监控需求。采用DS1302时钟模块同步系统时间,并通过用户界面设置开灯的时间范围,确保家禽的生活作息正常。结构框图如图2-1所示:图2-1系统原理框图2.2芯片的选择2.2.1单片机的选择本系统中单片机的选择主要包括STC89C52和STM32103两种方案。方案一:STC89C52STC89C52是一款基于8051内核的单片机,具有丰富的外设接口资源,包括并行I/O接口、多个定时器/计数器、UART串行接口等[11],很好地满足了本系统的功能需求。STC89C52单片机的工作电压为3.3V-5V[12],功耗较低,非常适合于电池供电的应用场景。此外,STC89C52内置32KB的程序存储器,足以满足本系统的存储需求。STC89C52单片机还具有外部中断资源丰富的特点,能够方便地实现各外设模块的中断响应[13]。但STC89C52的运算速度相对较慢,不支持浮点运算,在复杂的数学运算方面可能会存在一定局限性。方案二:STM32F103STM32F103是一款基于ARMCortex-M3内核的32位单片机[14],具有丰富的外设资源、高性能的ARM内核,以及灵活的时钟管理系统[15]。STM32F103的工作频率高达72MHz,运算速度快,并支持浮点运算,能够满足本系统对运算性能的要求。此外,STM32F103内置多种外设接口,如ADC、DAC、定时器、UART等,可以很好地满足本系统的各种功能需求。但STM32F103的功耗相对较高,不太适合于电池供电的应用场景[16]。综合考虑各方面因素,本系统最终选用STC89C52单片机作为核心控制器。STC89C52单片机的功耗低、外设丽丰富等特点更适合于本系统的实际应用需求。2.2.2蓝牙模块的选择本系统中蓝牙模块的选择主要包括ECB02和HC-05两种方案。方案一:ECB02ECB02是一款基于蓝牙4.0标准的低功耗蓝牙模块,具有体积小、功耗低、传输距离远(室外可达几十米)等优点。ECB02可以通过UART接口与单片机连接,实现主从设备的数据交换。该模块集成了完整的蓝牙协议栈,无需单独开发蓝牙通信协议,易于集成和使用。ECB02的低功耗特点非常适合于本系统的远程监控需求,能够有效延长系统的续航时间[17]。方案二:HC-05HC-05是一款基于蓝牙2.0+EDR标准的蓝牙串口模块,同样可以通过UART接口与单片机连接。HC-05具有体积小、集成度高、使用简单等特点,但其蓝牙协议栈相对较简单,传输距离较短(室外可达10米左右)[18]。综合考虑各方面因素,本系统最终选用ECB02蓝牙模块作为远程通信接口。ECB02的低功耗和远距离传输特点更适合于本系统的实际需求,能够有效实现对鸡舍环境的远程监控。2.2.3显示屏模块选择本系统中显示模块的选择主要包括OLED和LCD1602两种方案。方案一:OLED显示模块OLED(OrganicLight-EmittingDiode)显示模块具有体积小、功耗低、显示效果好等优点,可以直接通过I2C或SPI接口与单片机连接。OLED显示模块的特点是能够提供更加清晰、美观的显示效果,非常适合于展示各类环境参数。但OLED显示模块的成本相对较高,同时其驱动电路也较为复杂,对单片机的软件开发要求也较高[19]。方案二:LCD1602液晶显示模块LCD1602液晶显示模块采用并行接口与单片机连接,具有成本低、驱动电路简单等优点,非常适合于本系统的应用需求。LCD1602显示模块可以直观地显示温湿度、光照强度、有害气体浓度等环境参数,满足用户的直观监测需求。尽管LCD1602的显示效果可能不如OLED,但其成本低廉、接口简单的特点更符合本系统的实际应用需求[20]。综合考虑各方面因素,本系统最终选用LCD1602液晶显示模块作为用户界面。LCD1602具有成本低、接口简单的特点,能够很好地满足本系统的显示需求。3硬件电路设计3.1STC89C52单片机STC89C52是一款基于8051内核的单片机,集成了丰富的外设资源,是本系统的核心控制器。STC89C52采用CISC指令集架构,具有强大的功能和高度的集成度。它内置了32个并行I/O口、3个16位定时/计数器、全双工UART串口接口、多达六个外部中断源等丰富的外围设备。STC89C52的工作电压为3.3V-5V,最高工作频率可达35MHz,能够满足本系统的实时性和性能需求。在本系统的设计中,STC89C52单片机主要承担以下关键功能:采集各类环境传感器数据。通过内置的ADC模块,STC89C52能够读取来自DHT11温湿度传感器、MQ-135气体传感器、光敏电阻等模拟量传感器的检测数据,为后续的环境监测和控制提供依据。执行环境监测和控制逻辑。STC89C52单片机会根据采集到的环境数据,结合用户设置的阈值,自动触发通风设备和补光灯的开关控制,维持鸡舍内的最佳生长环境。驱动LCD1602显示模块。STC89C52单片机通过并行I/O接口直接驱动LCD1602液晶屏,实时显示温度、湿度、光照强度、有害气体浓度等环境参数,为用户提供直观的监测界面。连接ECB02蓝牙模块。STC89C52单片机通过UART接口与ECB02蓝牙模块进行数据交互,实现与手机APP的无线通信,为远程监控和控制功能提供支持。管理DS1302时钟模块。STC89C52单片机通过单总线接口连接DS1302时钟模块,实现系统时间的实时同步,并为开灯时间的设置提供依据。总的来说,STC89C52单片机凭借其丰富的外设资源、低功耗特性以及较高的性能,非常适合作为本智慧家禽养殖环境监测系统的核心控制器。单片机能够高效地完成环境数据的采集、分析和控制执行,为系统的可靠运行提供有力保障。单片机的原理图如图3-1所示:图3-1STC89C52单片机表3-1STC89C52引脚功能参数编号名称功能P0.0引脚1I/O口/中断0P0.1引脚2I/O口/中断1P0.2引脚3I/O口/定时器0外部计数脚P0.3引脚4I/O口/定时器1外部计数脚P2.0引脚17I/O口/外部中断0P2.1引脚18I/O口/外部中断1P2.2引脚19I/O口/定时器2外部计数脚P2.3引脚20I/O口/定时器3外部计数脚RST复位引脚复位功能XTAL1晶振输入外部晶振输入引脚XTAL2晶振输出外部晶振输出引脚3.2LCD1602显示模块LCD1602是一款常见的并行接口型液晶显示模块,它内置有LCD控制芯片HD44780,可以直接与8位单片机的I/O口连接。该模块具有16个字符、共2行的显示能力,能够为用户提供直观的监测界面。在本系统中,LCD1602液晶显示模块承担了以下关键功能:显示温度、湿度数据。LCD1602屏幕会实时显示DHT11温湿度传感器采集到的温度和湿度信息,使用户能够直观地了解鸡舍内的温湿度状况。显示光照强度数据。通过光敏电阻和ADC0832模块采集的光照强度数据,会被格式化后显示在LCD1602屏幕上。显示有害气体浓度数据。MQ-135气体传感器检测到的有害气体浓度值,会被实时显示在LCD1602屏幕上。显示系统时间。DS1302时钟模块提供的系统时间信息,会被实时显示在LCD1602屏幕上,为用户提供时间参考。显示系统状态。LCD1602屏幕还会显示系统的当前工作模式(自动/手动)。综上所述,LCD1602液晶显示模块为本智慧家禽养殖环境监测系统提供了直观、友好的用户界面,使用户能够及时了解鸡舍内的各项环境参数,并为系统的手动控制提供支持。其简单的并行接口也大大降低了与单片机的集成难度。如图3-2所示。编号名称功能1VSS地2VDD电源(+5V)3V0调节背光亮度4RS数据/指令选择5RW读/写选择6E使能信号7-14D0-D7数据线15A电源(+5V)16K电源(地)图3-2LCD1602模块电路表3-2CD1602引脚功能参数3.3光敏电阻光敏电阻是一种光敏半导体元件,其电阻值会随着光照强度的变化而发生相应变化。在本系统中,我们采用光敏电阻配合ADC0832模数转换模块,实现对鸡舍内光照强度的实时检测。光敏电阻的工作原理是基于光电效应。当光照射到光敏电阻表面时,半导体材料中的电子会被激发跃迁到导带,从而降低材料的电阻。反之,当光照减弱时,电阻值会增大。通过测量光敏电阻的电阻变化,就可以得到环境光照强度的相对值。在本系统中,光敏电阻的输出通过ADC0832模数转换模块连接到STC89C52单片机的模拟输入端口。单片机会定期采集ADC转换后的数字量,并与预设的光照阈值进行比较。当光照强度低于设定值且在开灯时间范围内时,单片机会自动驱动补光灯开启,确保鸡舍内有足够的光照。光敏电阻作为一种简单、低成本的光电传感器,具有体积小、响应快、抗干扰性强等优点。在本系统中,它能够有效检测鸡舍内的光照状况,为自动控制补光灯提供依据。同时,光敏电阻的输出也可以通过LCD1602显示屏实时呈现给用户,使用户能够直观地了解环境光照情况。设计电路如图3-3所示。图3-3声音报警电路3.4MQ-135空气质量检测模块MQ-135是一款常用的半导体气体传感器,可用于检测氨气(NH3)、二氧化氮(NOx)、酒精(Alcohol)、苯系物(Benzene)、烟雾(Smoke)等有害气体的浓度。MQ-135气体传感器的工作原理是基于半导体材料的气敏特性。当传感器表面吸附有害气体分子时,材料的电导率会发生变化,从而引起输出电压的变化。通过测量和分析这种电压变化,就可以得到气体浓度的相对值。在本系统中,MQ-135模块的输出通过ADC0832模数转换连接到STC89C52单片机的P1.3模拟输入端口。单片机会定期采集ADC转换后的数字量,并与预设的气体浓度阈值进行比较。当检测到有害气体浓度超过设定值时,单片机会自动开启通风设备,以排出鸡舍内的有害气体,维护良好的空气质量。与传统的化学传感器相比,MQ-135半导体气体传感器具有体积小、功耗低、抗干扰性强等优点。在本系统中,它能够有效监测鸡舍内的有害气体浓度,为自动控制通风设备提供依据。同时,MQ-135传感器的输出数据也可以通过LCD1602显示屏实时呈现给用户,使用户能够掌握鸡舍内的空气质量状况。引脚编号名称功能1VCC电源正极2GND电源负极3AOUT模拟输出4DOUT数字输出(可选)图3-4MQ-135空气质量检测模块表3-3MQ-135引脚功能参数3.5DHT11温湿度模块DHT11是一款集成温度和湿度传感器的数字输出模块,通过单总线接口与单片机连接。在本系统中,采用DHT11温湿度传感器模块,实现对鸡舍内温度和湿度状况的实时检测。DHT11温湿度传感器的核心是一个专用的数字温湿度传感器,内部集成了一个电容式湿度传感元件和一个NTC温度传感元件。当被测量的温湿度发生变化时,传感元件的输出会发生相应变化,通过专用的单总线协议将数字化的温湿度数据输出。在本系统中,DHT11模块的数字输出通过单总线接口连接到STC89C52单片机的P1.0I/O口。单片机会定期读取DHT11的温湿度数据,并与预设的温湿度阈值进行比较。当检测到温度或湿度超出设定范围时,单片机会自动开启通风设备,以调节鸡舍内的温湿度状况,确保家禽处于最佳的生长环境。DHT11温湿度传感器具有体积小、功耗低、测量精度高等优点,非常适合应用于本系统。同时,它的数字输出也大大简化了与单片机的集成难度。在本系统中,DHT11模块能够准确检测鸡舍内的温湿度状况,为自动温湿度控制提供关键依据,有效维护家禽的生长环境。原理图电路如图3-5所示:引脚编号名称功能1VCC供电正极2DATA数据传输3NC未连接4GND地线图3-5DHT11温湿度模块实际接线图表3-4DHT11引脚功能参数3.6ECB02蓝牙模块ECB02是一款基于蓝牙4.0标准的低功耗蓝牙模块,可通过UART接口与单片机连接。在本系统中,采用ECB02蓝牙模块,实现与手机APP的无线通信,为远程监控和控制功能提供支持。ECB02蓝牙模块的核心是一款集成了完整蓝牙4.0协议栈的蓝牙芯片。该模块可以通过UART接口与STC89C52单片机进行数据交互,单片机可以调用ECB02提供的API接口实现主从设备之间的数据传输。编号名称功能1VDD电源输入(3.3V)2GND地3INT中断引脚4RST复位引脚5TXUART发送线6RXUART接收线在本系统的应用中,蓝牙模块的TXD和RRXD分别连接单片机的RXD和TXD端口,STC89C52单片机会定期将采集的温度、湿度、光照、气体浓度等环境数据通过ECB02蓝牙模块发送至手机APP。同时,用户也可以通过手机APP发送控制指令,实现对通风设备和补光灯的远程开关控制。ECB02模块的低功耗特性,能够有效延长系统的续航时间,为远程监控功能的实现提供了保障。ECB02蓝牙模块集成了完整的蓝牙协议栈,无需单独开发复杂的蓝牙通信协议,大大降低了系统软件开发的难度。同时,ECB02模块的传输距离可达几十米,满足了本系统对远程监控的需求。在整个硬件设计中,ECB02蓝牙模块扮演着关键的通信枢纽角色,为实现智慧家禽养殖环境的远程监测和控制提供了有力支持。系统的原理图如图3-6所示。图3-6ECB02蓝牙模块设计表3-5ECB02引脚功能参数3.7DS1302时钟模块DS1302是一款集成实时时钟功能的IC芯片,可以通过单总线接口与单片机连接。在本系统中,我们采用DS1302时钟模块,为系统提供实时的时间信息,并支持用户设置开灯时间。DS1302内部集成了一个32.768kHz的晶振电路,能够提供准确稳定的实时时钟信号。通过单总线接口,STC89C52单片机可以读取和设置DS1302内部的时间日期等信息。在本系统中,单片机的P3.4-P3.6会定期与DS1302同步系统时间,确保时间显示的准确性。同时,用户还可以通过LCD1602显示屏上的按键界面,设置鸡舍内补光灯的开启时间范围。单片机会根据DS1302提供的实时时间信息,自动控制补光灯的开关状态,确保家禽获得足够的光照。DS1302时钟模块具有体积小、功耗低、集成度高等优点,非常适合应用于本系统。它能够为系统提供准确可靠的时间基准,并支持用户便捷地设置开灯时间,从而确保家禽的生活作息正常。编号名称功能1VCC供电电压2GND地3DS数据引脚4RST复位引脚5CLK时钟引脚6SQ方波输出7NC无连接8SCLK串行时钟图3-7DS1302时钟模块电路设计表3-6DS1302引脚功能参数4系统软件设计4.1软件开发环境及工具本系统的软件采用Keil4开发环境进行编写和调试。Keil4是一款功能强大的单片机集成开发环境(IDE),广泛应用于各类单片机系统的开发。Keil4IDE集成了编辑器、编译器、仿真器等多种功能于一体,为开发人员提供了一站式的软件开发解决方案。它支持主流的单片机架构,如8051、ARM等,并针对不同的芯片型号提供了丰富的外设驱动库。Keil4的编译器具有高度优化的代码生成能力,能够产生高效紧凑的机器码,非常适合嵌入式系统的开发。此外,Keil4还集成了强大的仿真调试工具,能够帮助开发人员快速定位和解决程序中的错误。 在本系统的设计中,Keil4IDE为软件开发提供了高效的编程平台。我们利用Keil4提供的丰富库函数和强大的编译优化能力,编写出性能优异、可靠性高的嵌入式控制程序。同时,Keil4强大的仿真调试功能也大大提高了软件开发的效率,帮助我们快速定位和解决各类软件bug。总的来说,Keil4IDE是一款非常适合本系统软件设计的开发工具。4.2系统程序流程图4.2.1主程序软件设计本系统先初始化各模块,包括LCD1602显示、DHT11温湿度传感器、MQ-135气体传感器、光敏电阻、DS1302时钟等。在初始化阶段,系统会读取各模块的参数配置,并进行自检,然后进入主循环,实时采集各类环境参数,包括温度、湿度、光照强度、有害气体浓度。系统会定期轮询各传感器模块,获取实时的环境监测数据。紧接着根据预设的环境阈值,判断是否需要开启通风设备或补光灯。单片机会将采集的环境数据与预设值进行比较,并根据结果执行相应的控制动作。然后将采集的环境参数实时显示在LCD1602液晶屏上。系统会将温度、湿度、光照值、气体浓度等信息以直观的方式呈现给用户。根据按键输入执行手动控制操作。用户可以通过按键界面切换系统模式,并手动开启/关闭通风设备和补光灯。同时,通过ECB02蓝牙模块定期上传环境数据至手机APP,实现远程监控。系统会利用蓝牙模块将采集的环境信息发送至手机端,供用户远程查看和控制。流程图如图4-2所示:图4-2主程序流程图4.2.2按键子程序设计首先,定义按键引脚,进行初始化引脚状态。接下来判断模式标志位是否为1,如果为1,则为支持连续按模式,将按键状态标志位置1。然后判断按键状态标志位是否为1并且按键引脚为低电平,如果两个条件同时满足,则延时10ms进行消抖,将按键状态标志位置0。再次判断按键引脚是否为低电平,如果为低电平,则按键按下,返回相对应的按键键值。如果按键状态标志位不为1或者按键引脚不为低电平,则判断按键引脚是否为高电平,如果为高电平,则按键抬起,将按键状态标志位置1,然后返回0。如果按键引脚不为高电平,则按键没有抬起,则直接返回0,独立按键程序子流程如图4-3所示。图4-3按键子程序流程图4.2.3温湿度检测模块子流程设计首先初始化引脚,然后发送一次开始信号,等待DHT11响应,DHT11响应后,读取40bit数据,延时一段时间作为结束信号。获取到40bit数据后,解析数据并校验,最终得到温湿度值,温湿度检测程序子流程如图4-4所示。图4-4温湿度检测模块子流程设计4.2.4气体检测模块子流程设计MQ-135空气质量检测模块在接通5V电源后,经过短暂预热,其内部的气敏材料开始与环境中的气体反应。传感器将检测到的气体浓度转换为电信号输出,通过ADC转换器将模拟信号转变为数字信号,供单片机处理,从而得到环境中污染气体的浓度值。检测程序子流程如图4-5所示。图4-5气体检测模块子流程设计4.2.4光照检测模块子流程设计当光照射到光敏电阻表面时,半导体材料中的电子会被激发跃迁到导带,从而降低材料的电阻。反之,当光照减弱时,电阻值会增大。通过测量光敏电阻的电阻变化,就可以得到环境光照强度的相对值。在本系统中,光敏电阻的输出通过ADC0832模数转换模块连接到STC89C52单片机的模拟输入端口。单片机会定期采集ADC转换后的数字量,并与预设的光照阈值进行比较。当光照强度低于设定值且在开灯时间范围内时,单片机会自动驱动补光灯开启,确保鸡舍内有足够的光照。光敏电阻作为一种简单、低成本的光电传感器,具有体积小、响应快、抗干扰性强等优点。在本系统中,它能够有效检测鸡舍内的光照状况,为自动控制补光灯提供依据。同时,光敏电阻的输出也可以通过LCD1602显示屏实时呈现给用户,使用户能够直观地了解环境光照情况。光照检测程序子流程如图4-6所示。图4-6光照检测模块子流程设计5系统的调试5.1软硬件调试在完成系统硬件电路设计和软件程序编写后,我们对整个系统进行了严格的软硬件调试。首先,我们使用Keil4开发环境对软件程序进行单元测试和集成测试,检查各个功能模块的正确性和稳定性。在此基础上,我们将软件程序烧录至STC89C52单片机,并将其连接到各个硬件模块进行联调测试。在联调测试中,我们重点关注了以下几个方面:各传感器模块(温湿度、光照、气体)是否能够准确采集环境参数数据;LCD1602屏幕是否能够实时、准确地显示环境参数信息;通风设备和补光灯的开关控制是否能够根据环境阈值自动执行;按键功能是否能够灵敏响应,手动控制是否能够正常工作;蓝牙模块是否能够稳定地与手机APP进行数据传输和远程控制。通过反复的调试和测试,我们发现并解决了一些硬件连接问题和软件逻辑bug,最终确保了整个系统的可靠性。5.2实物展示在完成软硬件调试后,并将我们设计的智能监控系统集成其中进行实物测试。通过实物测试,验证了该智能监控系统在实际应用场景下的可靠性。系统能够准确检测环境参数,并根据预设阈值自动执行相应的控制动作,有效维护了鸡舍的最佳生长环境。同时,远程监控功能也为养殖户提供了便利,提高了管理效率。具体如下图所示:图5-1实物图展示5.3遇到的问题和解决的方案在设计与实现智慧家禽养殖环境监测系统的过程中,我遇到了一系列的问题,并相应提出了解决方案。1)我在硬件选型时面临了诸多选择,在单片机、蓝牙模块和显示屏模块的选择上,我通过对比不同产品的性能、价格及适用场景,最终确定了合适的型号。例如,我选择了STC89C52单片机,因其性价比高且易于编程。2)在硬件电路设计时,我遇到了电路连接不稳定的问题。(电路焊接不牢固等)为了解决这个问题,我重新设计了电路布局,优化了元件之间的连接,并增加了滤波电路,以提高信号的稳定性。3)在系统集成和调试过程中,我也遇到了数据传输不稳定和显示不准确的问题(显示数据有误等)。我通过调整数据传输协议,增加数据校验机制,提高了数据传输的稳定性。同时,我也对显示模块进行了校准,确保数据的准确显示。4)在系统的实际应用中,我还发现了一些环境适应性问题。(阴影环境会影响光照)为了解决这个问题,我增加了系统的环境适应性设计,使其能够在不同环境条件下稳定运行。通过以上问题的解决,我成功设计并实现了智慧家禽养殖环境监测系统,为家禽养殖业的智能化管理提供了有力的支持。6结论本文设计与实现一款基于STC89C52单片机的智慧家禽养殖环境监测控制系统。该系统能够实时监测鸡舍内的温度、湿度、光照强度和有害气体浓度,并根据预设阈值自动控制通风设备和补光灯,为家禽创造最佳的生长环境。同时,系统还集成了蓝牙通信模块,可与手机APP连接实现远程监控和控制。通过软硬件调试和实物验证,该系统展现出了检测精准、控制及时、操作简便等优点。相比于传统的手动管理方式,该系统能够有效提高家禽养殖的效率和生产水平,为实现智慧家禽养殖提供了有力支持。未来,我们还计划进一步优化系统功能,增加故障预警、数据分析等高级特性,为用户提供更加智能和全面的家禽养殖解决方案。参考文献:郑安琪,黄凯宁.基于物联网的畜牧业环境监控系统的设计与实现[J].物联网技术,2022(005):012.王武英,魏霖静.基于数字孪生的智慧农业环境监测系统设计与实现[J].智能计算机与应用,2023,13(4):181-185.陈淑娴,何文斌,张妥香,等.智慧生态水质pH值监测系统模型的设计与实现[J].科技与创新,2022(5):5.王瑞娜.智慧农业大棚环境监测系统研究与设计[J].新一代信息技术,2022(003):005.杨景超,王宁.基于STM32与ESP8266驱动的智能大棚环境监测控制系统设计与试验[J].软件工程与应用,2024,13(1):8.DOI:10.12677/SEA.2024.131012.曾宝国,刘美岑.基于物联网的水产养殖水质实时监测系统[J].2022(6).李耀东.智慧农业的物联网系统设计方法[J].农业工程技术,2024,44(2):21.DOI:10.16815/ki.11-5446/s.2024.02.006.薛鸿民,王炜卓.基于ZigBee和云平台的智慧养殖环境监测系统设计[J].现代信息科技,2022(005):006.詹亚平.智慧机房动力环境监控系统的设计与实现[J].消费电子,2022(10):66-68.熊刚,胡启迪,马安良,等.基于异构网络的智慧农业环境信息监测系统设计与实现[J].热带农业科学,2022(003):042.郑安琪黄凯宁.基于物联网的畜牧业环境监控系统的设计与实现[J].物联网技术,2022,12(5):15-17.刘钟涛,何为凯,徐震,等.家禽智能养殖系统的设计与实现[J].中国禽业导刊,2023,40(8):42-49.牛海春,王乐林,宋海燕.畜禽养殖环境监测系统的设计[J].电子测试,2022,36(14):4.刘明剑,刘丽丽,朱宏升,等.海水养殖水质监测与分析系统设计与实现[J].水产学杂志,2023,36(4):99-108.郑炜超,邓森中,童勤,等.家禽养殖智能装备与信息化技术研究进展[J].山西农业大学学报:自然科学版,2022,42(6):2-11.王雯仟,周靖钧,黎欣桐,等.智慧大棚农业生产环境数据监控系统的设计与开发[J].河北农机,2023(2):93-95.周小芹,吕嘉,金宇.面向肉鸡半放牧养殖视频的异常监测系统的设计与实现[J].长江信息通信,2022,35(12):61-64.祝朝坤,王显然.基于树莓派与ESP8266的温室环境智能监控系统的设计与实现[J].电子产品世界,2023,30(1):40-43.冯太琴,冯小琴.基于STM32智能博物馆微环境监测系统的设计与实现[J].信息产业报道,2023(7):0172-0174.向鹏俊.基于STM32的智能大棚环境监测管理系统的设计与实现[J].物联网技术,2022(006):012.

致谢在完成本设计的过程中,我要衷心感谢所有支持和帮助过我的人。感谢我的指导老师,感谢您在整个设计过程中的悉心指导和耐心解答。您的专业知识和丰富经验为我提供了宝贵的指导,使我能够克服各种困难,顺利完成设计任务。感谢我的家人和朋友们。感谢你们在我设计过程中的理解、支持和鼓励。你们的支持是我前进的动力,是我坚持不懈的信心来源。此外,我还要感谢所有在设计过程中提供帮助和建议的同学。你们的合作与协助让我在设计中受益良多,也使得设计能够更加完善和具有实用性。在此,我向所有帮助过我的人表示最诚挚的感谢和深深的敬意!附录附录一:原理图

附录二:源程序源程序:/********************************************************************//**********************************包含头文件**********************************/#include"main.h"#include"lcd1602.h"#include"key.h"#include"ds1302.h"#include"adc.h"#include"dht11.h"#include"uart.h"/**********************************变量定义**********************************/ucharkey_num=0; //按键扫描标志位 ucharflag_display=0; //显示界面标志位uinttime_num=0; //10ms计时变量bitflag_mode=0; //模式标志位bitflag_time_on=0; //是否到达定时时间之内chartime_shi_begin=21; //定时开始时chartime_fen_begin=0; //定时开始分chartime_shi_end=23; //定时结束时chartime_fen_end=0; //定时结束分uinthumi_value=0; //湿度值ucharhumi_max=60; //湿度最大值uinttemp_value=0; //温度值uchartemp_max=40; //温度最大值uintgas_value=0; //有害气体值uchargas_max=100; //有害气体最大值uintlight_value=0; //光照值ucharlight_min=40; //光照最小值externchards1302_buf[8]; //时间数组externbitflag_timer_begin; //计时开始标志位externbitflag_10s; //定时10s完成标志位/**********************************函数声明**********************************/voidDelay_function(uintx); //延时函数(ms)voidKey_function(void); //按键函数voidMonitor_function(void); //监测函数voidDisplay_function(void); //显示函数voidManage_function(void); //处理函数/*********** 主函数*****/voidmain(){ Lcd1602_Init(); //LCD1602初始化 Delay_function(50); //延时50ms lcd1602_clean(); //清屏 Delay_function(50); //延时50msUart_Init(); //串口初始化函数Delay_function(50); //延时50ms Ds1302_Init(); //DS1302初始化函数 Delay_function(50); //延时50ms// Ds1302_Write_Time(); //向DS302写入时钟数据 while(1) { Key_function(); //按键函数 Monitor_function(); //监测函数 Display_function(); //显示函数 Manage_function(); //处理函数 Delay_function(10); //延时10ms time_num++; //计时变量+1 if(time_num==5000) { time_num=0; } }}/*********** 延时xms函数*****/voidDelay_function(uintx){ uintm,n; for(m=x;m>0;m--) for(n=110;n>0;n--);}/***********按键函数*****/voidKey_function(void){ key_num=Chiclet_Keyboard_Scan(0); //按键扫描 if(key_num!=0) //有按键按下 { switch(key_num) { case1: //按键1,切换设置界面 flag_display++; if(flag_display>=16) flag_display=0; lcd1602_clean(); //清屏 break; case2: //按键2 switch(flag_display) { case0: //界面0:手动控制通风 flag_mode=1; RELAY_TF=~RELAY_TF; break; case1://界面1:修改年+1 if(ds1302_buf[1]<99) ds1302_buf[1]++; Ds1302_Write_Time(); break; case2://界面2:修改月+1 ds1302_buf[2]++; if(ds1302_buf[2]>12) ds1302_buf[2]=1; Ds1302_Write_Time(); break; case3://界面3:修改日+1 ds1302_buf[3]++; if(ds1302_buf[3]>31) ds1302_buf[3]=1; Ds1302_Write_Time(); break; case4://界面4:修改时+1 ds1302_buf[4]++; if(ds1302_buf[4]>23) ds1302_buf[4]=0; Ds1302_Write_Time(); break; case5://界面5:修改分+1 ds1302_buf[5]++; if(ds1302_buf[5]>59) ds1302_buf[5]=0; Ds1302_Write_Time(); break; case6://界面6:修改秒+1 ds1302_buf[6]++; if(ds1302_buf[6]>59) ds1302_buf[6]=0; Ds1302_Write_Time(); break; case7://界面7:修改星期+1 ds1302_buf[7]++; if(ds1302_buf[7]>7) ds1302_buf[7]=1; Ds1302_Write_Time(); break; case8: //界面8:温度最大值+1 if(temp_max<99) temp_max++; break; case9: //界面9:湿度最大值+1 if(humi_max<99) humi_max++; break; case10: //界面10:光照最小值+1 if(light_min<99) light_min++; break; case11: //界面11:有害气体最大值+1 if(gas_max<200) gas_max++; break; case12: //界面12:区间定时开始时+1 time_shi_begin++; if(time_shi_begin>=24) time_shi_begin=0; break; case13: //界面13:区间定时开始分+1 time_fen_begin++; if(time_fen_begin>=60) time_fen_begin=0; break; case14: //界面14:区间定时结束时+1 time_shi_end++; if(time_shi_end>=24) time_shi_end=0; break; case15: //界面15:区间定时结束分+1 time_fen_end++; if(time_fen_end>=60) time_fen_end=0; break; default: break; } break; case3: //按键3 switch(flag_display) { case0: //界面0:手动控制补光 flag_mode=1; RELAY_BG=~RELAY_BG; break; case1: //界面1:修改年-1 if(ds1302_buf[1]>0) ds1302_buf[1]--; Ds1302_Write_Time(); break; case2: //界面2:修改月-1 ds1302_buf[2]--; if(ds1302_buf[2]<1) ds1302_buf[2]=12; Ds1302_Write_Time(); break; case3: //界面3:修改日-1 ds1302_buf[3]--; if(ds1302_buf[3]<1) ds1302_buf[3]=31; Ds1302_Write_Time(); break; case4: //界面4:修改时-1 ds1302_buf[4]--; if(ds1302_buf[4]<0) ds1302_buf[4]=23; Ds1302_Write_Time(); break; case5: //界面5:修改分-1 ds1302_buf[5]--; if(ds1302_buf[5]<0) ds1302_buf[5]=59; Ds1302_Write_Time(); break; case6: //界面6:修改秒-1 ds1302_buf[6]--; if(ds1302_buf[6]<0) ds1302_buf[6]=59; Ds1302_Write_Time(); break; case7: //界面7:修改星期-1 ds1302_buf[7]--; if(ds1302_buf[7]<1) ds1302_buf[7]=7; Ds1302_Write_Time(); break; case8: //界面8:温度最大值-1 if(temp_max>0) temp_max--; break; case9: //界面9:湿度最大值-1 if(humi_max>0) humi_max--; break; case10: //界面10:光照最小值-1 if(light_min>0) light_min--; break; case11: //界面11:有害气体最大值-1 if(gas_max>0) gas_max--; break; case12: //界面12:定时开始时-1 time_shi_begin--; if(time_shi_begin<0) time_shi_begin=23; break; case13: //界面13:定时开始分-1 time_fen_begin--; if(time_fen_begin<0) time_fen_begin=59; break;case14: //界面14:定时结束时-1 time_shi_end--; if(time_shi_end<0) time_shi_end=23; break; case15: //界面15:定时结束分-1 time_fen_end--; if(time_fen_end<0) time_fen_end=59; break; default: break; } break; case4: //按键4:自动模式 if(flag_display==0) flag_mode=0; else { flag_display=0; lcd1602_clean(); //清屏 } break; default: break; } }}/***********监测函数*****/voidMonitor_function(void){ ucharfasong[32]; //发送数据专用数组 if(time_num%50==0) //500ms检测一次 { Ds1302_Read_Time();//获取时间 if(DO==0) gas_value=40*(Adc0832_Get_Value(0)/255.0)*5; //获取有害气体值 else gas_value=0; light_value=20*(Adc0832_Get_Value(1)/255.0)*5; //获取光照值 Dht11_Get_Temp_Humi_Value(&temp_value,&humi_value);//获取温湿度值 } if(time_num%300==0) //3s发送一次 { sprintf(fasong,"Temp:%d.%d℃\r\n",temp_value/10,temp_value%10); Uart_Sent_Str(fasong); //发送温度 sprintf(fasong,"Humi:%d.%d%%\r\n",humi_value/10,humi_value%10); Uart_Sent_Str(fasong); //发送湿度 sprintf(fasong,"Light:%dLx\r\n",light_value); Uart_Sent_Str(fasong); //发送光照 sprintf(fasong,"Gas:%dppm\r\n",gas_value); Uart_Sent_Str(fasong); //发送有害气体值 } }/***********显示函数*****/voidDisplay_function(void){ switch(flag_display) //根据不同的显示模式标志位,显示不同的界面 { case0: //界面0:显示lcd_display_onlytime(1,0,ds1302_buf); //显示时间 lcd1602_display_light(2,12,light_value); //显示光照 lcd1602_display_temp(2,0,temp_value); //显示温度 lcd1602_display_humi(2,6,humi_value); //显示湿度 lcd1602_display_gas(1,9,gas_value); //显示有害气体值 if(flag_mode==0) //显示模式 lcd1602_display_str(1,15,"A"); else lcd1602_display_str(1,15,"M"); break; case1: //界面1:显示设置年 if(time_num%20==0) { lcd1602_display_alltime(ds1302_buf); } if(time_num%40==0) { lcd1602_display_str(1,0,""); } break; case2: //界面2:显示设置月 if(time_num%20==0) { lcd1602_display_alltime(ds1302_buf); } if(time_num%40==0) { lcd1602_display_str(1,5,""); } break; case3: //界面3:显示设置日 if(time_num%20==0) { lcd1602_display_alltime(ds1302_buf); } if(time_num%40==0) { lcd1602_display_str(1,8,""); } break; case4: //界面4:显示设置时 if(time_num%20==0) { lcd1602_display_alltime(ds1302_buf); } if(time_num%40==0) { lcd1602_display_str(2,0,""); } break; case5: //界面5:显示设置分 if(time_num%20==0) { lcd1602_display_alltime(ds1302_buf); } if(time_num%40==0) { lcd1602_display_str(2,3,""); } break; case6: //界面6:显示设置秒 if(time_num%20==0) { lcd1602_display_alltime(ds1302_buf); } if(time_num%40==0) { lcd1602_display_str(2,6,""); } break; case7: //界面7:显示设置星期 if(time_num%20==0) { lcd1602_display_alltime(ds1302_buf); } if(time_num%40==0) { lcd1602_display_str(2,9,""); } break; case8: //界面8:显示设置温度最大值 lcd1602_display_str(1,2,"SetTempMax"); if(time_num%20==0) { lcd1602_display_num(2,7,temp_max); } if(time_num%40==0) { lcd1602_display_str(2,7,""); } break; case9: //界面9:显示设置湿度最大值 lcd1602_display_str(1,2,"SetHumiMax"); if(time_num%20==0) { lcd1602_display_num(2,7,humi_max); } if(time_num%40==0) { lcd1602_display_str(2,7,""); } break; case10: //界面10:显示设置光照最小值 lcd1602_display_str(1,2,"SetLightMin"); if(time_num%20==0) { lcd1602_display_num(2,7,light_min); } if(time_num%40==0) { lcd1602_display_str(2,7,""); } break; case11: //界面11:显示设置有害气体最大值 lcd1602_display_str(1,2,"SetGa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论