智能养殖孵化环境控制系统_第1页
智能养殖孵化环境控制系统_第2页
智能养殖孵化环境控制系统_第3页
智能养殖孵化环境控制系统_第4页
智能养殖孵化环境控制系统_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

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

文档简介

第1章绪论1.1研究目的及意义瘤尾守宫是一种生活在澳大利亚的生物,被认为是海龙的亲戚。瘤尾守宫的孵化环境研究是为了揭示其繁殖生态和提供促进繁殖成功的条件。孵化环境对于保证瘤尾守宫幼体的生存和成长至关重要。在研究中,首先需要了解瘤尾守宫的繁殖行为和繁殖周期。观察野外种群中的交配和产卵行为,记录交配行为的频率、时机和地点。通过这些观察,可以确定适合瘤尾守宫繁殖的季节和繁殖地点。在孵化环境研究中,水质条件是至关重要的因素。瘤尾守宫的卵需要一定的水质参数来保证孵化的成功。研究人员需要测量和监控水温、盐度和PH值等参数,并调整这些参数来创造最适合孵化的环境。此外,水体中的溶解氧含量也需要控制在适宜范围内,以确保卵的健康孵化。孵化环境中的底质和植被也需要研究。瘤尾守宫的卵通常会附着在海藻或其他底质上。了解瘤尾守宫的产卵习性和卵的附着偏好,可以为模拟合适的孵化环境提供参考。提供合适的底质和植被可以提供卵的保护和适宜的卵壳附着表面。此外,光照条件也是重要的研究内容。瘤尾守宫在野外生活中处于光线充足的环境,因此需要模拟合适的光照条件来促进孵化。研究人员可以调整光照强度和光照周期,以确保瘤尾守宫卵的健康发育和孵化成功。随着蛋肉类的社会需求量不断增长,给位于瘤尾守宫养殖上游的孵化产业带来了活力,促进了孵化产业朝规模化、集约化方向发展。孵化产业所使用的人工孵化技术是利用仿生学思想,通过模拟瘤尾守宫孵化的自然环境,人为创造蛋种胚胎发育所需条件,以达孵化出幼禽的目的。本文针对目前孵化产业信息化程度不高、孵化环境参数调控实时性差等不足,设计出了一种基于物联网技术的瘤尾守宫孵化环境监控系统。国外的农业产业智能化发展起步较早,美国在20世纪40年代已基本实现了农业机械化,20世纪70年代末开始研究农业专家系统。物联网作为又一次世界信息产业浪潮,具有优良的发展前景,与农业产业的融合是大势所趋。伴随着自动化技术、物联网技术、计算机网络技术的不断发展,使得农业物联网产业愈发成熟,国外农业现代化发展进程得到了加速。对于当前的社会发展,瘤尾守宫孵化产业正朝着规模化、集约化方向发展,为提高种蛋孵化率与健雏率、提高瘤尾守宫孵化产业的现代化水平,亟需先进物联网技术对禽类孵化时的环境进行准确实时监控和管理,因此,设计一种具有新兴物联网技术的孵化监控系统具有广阔市场前景。随着信息化技术的迅速发展,我们越来越注重信息的传递和共享。在现代家畜养殖中,信息控制的需求越来越大。因此,我们开始将物联网技术应用于家畜养殖,这是信息时代的新型应用技术,为畜牧业的发展转型带来了新的动力。综上所述,物联网在当今家畜养殖中具有广泛的应用。相比传统的饲养技术,基于物联网技术的养殖模式实现了信息化管理,注重智能化的操作,使整个家畜的养殖和管理更加系统化、科学化。1.2国内外研究现状2022年,李惠娜在《基于STM32和物联网公有云的鸡蛋孵化环境检测系统设计》文中谈到农业物联网的应用则主要是在农业生产环境因子方面实现感知、传输、处理和控制[2]。伴随着物联网技术不断发展,对农业生产环境因子进行调控研究越来越深入,逐渐涉及到瘤尾守宫养殖业的应用。2021年,邹文虎在《基于物联网的环境监测系统设计研究》文中讲到,将物联网技术应用于孵化环境的远程监控起步较晚[3],且较少应用,大都采用独立式孵化设备调控孵化环境。2021年,海涛,陈娟,周文杰,陆猛,曾泽明在《基于LoRa和NB-IoT物联网技术的孵化监控系统》文中介绍了我国基于物联网远程监控系统的设计研究较多,将农业物联网技术应用于禽类孵化环境远程监控的研究较少[5]。目前,小型孵化企业一般是使用基于C/S孵化设备进行现场调控孵化环境,降低了生产效率、提高了生产成本。2019年,CostaEduardo,ElbersArmin,KoeneMiriam,SteentjesAndre,WisselinkHenk,WijnenPeter,GonzalesJose在《QualitativeEvaluationofCausesforRoutineSalmonellaMonitoringFalse-PositiveTestResultsinDutchPoultryBreedingFlocks》中认为家畜的饲养环境对家畜的生产有着很大程度的影响,而现在传统的家畜养殖中,养殖环境往往存在一定的问题。其中,最普遍的问题就是养殖舍内的气味过大,不利于家畜生长,而且舍内的温度湿度等不是家畜生长的最适要求。2019年,SabooriA和KamaliK在《BiologyofAllothrombiumshirazicumZhang(Acari:Trombidiidae)inGarmsar,Semnanprovince,Iran》文中谈论到日本政府早在2004年提出“U-Japan”计划,计划将农业物联网列入农业发展当中,2009年8月份将该计划进一步升级为“i-Japan”战略。近年来,日本发展的智慧农业仍是以农业物联网为信息主体源。2018年,YANBojie;PANYuchun;ZHANChunjiang等在《Suitabilityevaluationoflivestockfarmspatiallayoutatcounty-levelbasedonGIS县域畜禽养殖场空间布局规划适宜性评价》中指出,现代养殖方式不论规模大小,都面临着养殖环境问题。养殖环境的不良影响不仅限于养殖场周围的环境,还会影响到家畜的生长。因此,严格控制家畜饲养环境对于提高家畜的质量至关重要。运用物联网技术来控制养殖环境,可以大幅度提高治理污染的效率。具体而言,我们可以利用传感器来感知养殖场内的温度、湿度、氧气浓度等指标,然后将这些数据进行智能处理,最后进行自动或手动的控制调节。1.3主要研究内容1.阅读相关文献确定了设计功能和软件硬件的选择方案。2.硬件部分采用STM32单片机。3.下位机设计采用KEIL5软件,使用C语言进行编程设计。4.上位机软件设计在QT平台,使用MYSQL数据库进行设计。5.将系统进行调试运行并成功实现。6.实现的成果为实物。7.系统基本功能为:对当前状况进行检测并发送至上位机。8.系统特色功能为:根据温湿度、亮度、空气质量、风速自动控制翻蛋和消毒。该系统应完成的主要功能有:1.WIFI通信,手机端上位机。2.实时监测温度、湿度、风速、空气质量、光照,显示并发送上位机。3.手动控制杀菌模块开启/关闭。4.通过步进电机进行翻蛋处理。5.手机端上位机,显示下位机发来的参数。第2章系统总体结构2.1设计方案本课题设计了一套应用于调控瘤尾守宫孵化环境的物联网监控系统。系统包括底层终端的环境数据采集与执行机构的控制、数据传输、阿里云平台的应用等三部分。在底层终端选用STM32作为主控中心对环境数据进行采集和控制,使用了卡尔曼滤波算法对所采集到的数据进行滤波处理;阿里云平台是作为Web服务器和底层终端数据通信的桥梁,使用云平台统一接入标准,快速实现与底层设备进行通信,且阿里云平台具有数据推送能力,可直接推送数据给第三方Web服务器,缩短了Web系统的开发周期,Web端是基于B/S(浏览器/服务器)架构开发模式,采用SSM框架进行设计。2.2功能需求分析2.2.1技术路线:1.硬件部分需要单片机STM32F103C8T6、温湿度传感器、光敏电阻、风速传感器、空气质量传感器、显示屏。2.软件平台程序用KEIL5。3.画原理图用Visio。4.编程语言用C语言。5.用户信息显示查看。2.2.2预期结果:通过对系统的布设和完善,最终完成的瘤尾守宫智能养殖孵化环境控制系统预期有如下成果:1.WIFI通信,手机端上位机。2.实时监测温度、湿度、风速、空气质量、光照,显示并发送上位机。3.手动控制杀菌模块开启/关闭。4.通过步进电机进行翻蛋处理。5.手机端上位机,显示下位机发来的参数。2.3总体方案设计这个设计过程可以概括为以下几个阶段:1.理论学习和调研,了解设计的课题内容,掌握必要的知识。2.系统分析和设计,确定系统各个部分的功能和相互关系,并收集相关的硬件和软件资料。3.系统规划和结构设计,制定系统的整体框架和原理图。4.硬件设计和电路图绘制,将各个系统部件通过接口电路连接在一起,形成完整的电路图。5.软件设计和流程图绘制,编写系统的控制程序,并绘制主流程图。6.进行模拟仿真,检查系统的控制功能是否符合要求,并整理写作论文。2.4元器件选型2.4.1单片机选型主控制芯片选择STM32F103C8T6,STM32F103C8T6是由意法半导体集团基于STM32系列ARMCortex-M内核开发的一款具有64KB的程序存储器的32位微控制器。其工作时需要2V~3.6V的电压和-40℃~85℃环境温度。STM32系列单片机属于一种具有高性能、强功能、大容量的单芯片,它适合于低成本、高性、低功率的“嵌入式”应用程序,与此同时,它还具有“良好的”功耗和“集成性”能。它具有方便、简单、结构简单等优点,在工业上受到了广泛的欢迎。 ‎本实验 ‎所采用的最小系统如下图:图2-1STM32Fl03C8T6最小系统原理图2.4.2温湿度传感器DHT11数字温湿度传感器是一款包含经过校正的数字信号输出的温湿度复合传感器,采用了特殊的数字模组采集技术和温湿度传感技术,保证了产品的高可靠性和良好的长期稳定性。该传感器由电阻型湿度敏感元件、NTC温度敏感元件组成,并与8位高性能微控制器相连。标定系数是一种以OTP存储方式存储于OTP存储器中,用于对检测信号进行处理,具有高质量、超快响应、高抗干扰性、高性价比等特点。图2-2DHT11温湿度传感器2.4.3空气质量传感器MQ135型气敏元件采用的是二氧化锡(SnO2),其在洁净空气中具有很低的导电性。在有污染物存在的情况下,随着污染物浓度的提高,传感器的导电性能也随之提高。通过一个简单的电路,就可以把电导的改变转化成相应于这种气体浓度的输出信号。MQ135传感器对氨气、硫化物、苯系蒸汽的灵敏度高,对烟雾和其它有害的监测也很理想,这种传感器可检测多种有害气体。图2-3空气质量传感2.4.4风速传感器风速传感器是一种用来测量风速的设备,在很多场合都会使用到它,不过因为它的体积很小,所以可以很容易的携带和组装,并且在使用的过程中也比较安全可靠。我们知道,风速传感器是一种使用方便,安全可靠的智能仪器仪表,可以有效地获取风速信息。当风吹过传感器的时候,气流会产生风能,当风能作用到传感器上时,会使传感器发生转动。而中轴则是驱动其内部的感应器,从而产生脉冲信号。图2-4风速传感器2.4.5通信模块蓝牙技术的缺点主要还是在传输距离和传输速率上,距离有限,速率也不如WIFI来得大,而且不同设备之间有些协议还不兼容,如果数据需要不间断的可用还需要本地数据一致保持纪录。ESP8266WIFI是一种强大的WIFI模块,可以实现与网络通信的功能。ESP8266WIFI在物联网中被广泛使用,可以通过串行通信接口连接到微控制器。ESP8266WIFI的主要特点是:高度集成:ESP8266WIFI集成了TCP/IP协议栈,可以直接连接到WIFI网络,无需额外的外部芯片;易于编程:ESP8266WIFI可以通过AT指令和Lua脚本进行编程;低成本:ESP8266WIFI的成本非常低,可以大规模应用于物联网产品中;而且ESP8266WIFI的功耗非常低,适合用于电池供电的应用场景。综合比较,蓝牙的缺点比较多,WIFI操作使用更加便捷,因此本文设计采用WIFI作为通信模块的选择。图2-5ESP8266WIFI模块第3章系统的硬件部分设计3.1系统总体设计本设计采用温湿度传感器、风速传感器、空气光强度传感器和STM32开发板、WIFI模块作为开发环境,用于控制孵化环境参数。通过WIFI模块连接阿里云,实现数据采集上传云端,实时更新孵化环境参数的数据。当参数超过手动设置的阈值时,系统会发出警报,从而实现对孵化环境的实时监控,提高孵化效率。阿里云物联网平台作为系统设计的选择,具有安全、稳定、低时延、高可用、免运维等优点,使系统开发简单,操作便利,适用于中小型孵化厂的环境控制系统。该系统应完成的主要功能有:具有无线通讯功能,手机端上位机;具有实时监控功能,对温度、湿度、亮度、空气质量和风速等进行实时监控,并将数据传输到手机端上;具有手动控制功能,对杀菌模组的开关进行人工控制;具有使步进电机把蛋翻过来的功能。手机端上位机,将来自下位端发来的数据显示出来。总体原理图如下所示:图3-1总体原理图3.2系统的主要功能模块设计3.2.1温湿度测量模块设计在温度精确测量中,关键有工作压力温度计、热电阻式温度计、双金属温度计、热电阻温度计、电子光学高温计、辐射源高温计和红外线温度计。工作压力温度计是工业化生产中最初的温度测量法之一。它构造简易,冲击韧性‎‏好,低成本,不依靠外界开关电源。它普遍使用于工业化生产中的温度精确测量。但鉴于其反应时间长、仪器设备密封性维护保养不会改变、受外部环境危害大等缘故,慢慢撤出了温度检测的队伍。电子光学高温计、辐射源高温计和红外线高温计都输出非接触式温度计。日常生活和工业生产场地的湿度通常是相对性湿度,用RH%表明。即气体(通常是气体)中包含的水蒸汽量(水蒸汽压)是与它的气体同样时饱和状态水蒸汽(饱和水蒸汽压)的百分数。湿度用肯定湿度、相对性湿度、漏点、体内湿气与干气的占比(净重或容积)等表明。普遍的湿度测量法有:动态性法(双压法、双温法、分离法)、静态数据法(饱和状态盐法、盐酸法)、漏点法、干湿度球法和电子器件感应器法。在本系统的设计中,传感器有温度传感器和湿度传感器,所以需要对两种类型的传感器进行选择。如图3-2温湿度传感器。图3-2DHT11温湿度传感器原理图3.2.2ESP8266WIFI模组模块设计ESP8266WIFI曾经成为低成本物联网爆炸的佳话,它是一款单核32位MCUWIFI芯片模块。该模块的特点是具备高性能的无线SOC,是一个完整且自成体系的WIFI网络方案,既可以独立运行,也可以作为从机搭载其他主机运行。在众多WIFI模块中,ESP8266WIFI串口通信模块应该是使用最广泛的一种。因为ESP8266WIFI模块是一款高性能的WIFI串口模块,不需要了解太多WIFI相关知识就可以轻松上手。简单来说,它只是一个串口转WIFI的设备,只要掌握了串口编程使用方法,就可以实现所谓的透明传输。ESP8266WIFI模组原理图如下图:图3-3ESP8266模组原理图3.2.3MQ135空气质量传感器模块设计MQ135是一种常用的气体传感器,可用于测量空气中的多种污染物质浓度,如二氧化碳、氮氧化物、氨气、酒精和苯等。该传感器使用二氧化锡作为敏感材料,当周围环境中存在污染气体时,传感器的电导率会随污染气体浓度的增加而增加。MQ135模块使用5V进行驱动,DO输出数字信号,AO输出模拟信号。其中,DO输出可用于进行上限报警,而AO输出则可用于进行模拟量输入和输出。MQ135原理图如下:图3-4MQ135空气质量传感器原理图3.2.4风速传感器模块设计风速传感器主要是通过测量风的速度来进行风速的测量。不同类型的风速传感器采用不同的原理来测量风速,以下是对不同类型的风速传感器原理的简介:皮托管式风速传感器:采用皮托管的原理,通过测量风压差来计算风速。皮托管式风速传感器通常由一个垂直于风向的管和一个水银压力计组成。螺旋桨风速传感器:通过测量螺旋桨旋转的速度来计算风速。螺旋桨风速传感器通常由一个旋转的螺旋桨和一个电子计数器组成。霍尔效应电磁风速传感器:通过测量风速对磁场的影响来计算风速。霍尔效应电磁风速传感器通常由一个磁场和一个检测霍尔效应的传感器组成。热线式风速传感器:通过测量风对热线的冷却效应来计算风速。热线式风速传感器通常由一个加热的热线和一个测量热线温度变化的传感器组成。超声波风速传感器:通过测量超声波在空气中的传播时间来计算风速。超声波风速传感器通常由一个发射器和一个接收器组成。超声波风速传感器主要是利用超声波时差法来实现风速的测量,声音在空气中的传播速度,会和风向上的气流速度叠加。若超声波的传播方向与风向相同,它的速度会加快,反之,它的速度会变慢。因此,在固定的检测条件下,超声波在空气中传播的速度可以和风速函数对应。通过计算即可得到精确的风速和风向。用于风速测量的最广泛使用的风速计是转杯式电动风速计,旋转风杯驱动发电机。发电机的输出运行是一个在风速中校准的电表。三杯风速计目前被用作风资源评估研究和实践的行业标准。杯型风速计由安装在水平臂上的3或4个半球形杯组成,这些杯安装在垂直轴上,在任何水平方向通过杯子的气流以大致与风速成比例的速度转动轴。因此,在设定的时间间隔内计算轴的转数会产生一个与速度范围内的平均风速成比例的值。原理图如下图:图3-5风速传感器原理图3.2.5光敏电阻模块设计光敏电阻器(photovaristor)又叫光感电阻,是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。光敏电阻又称光导管,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。这是由于光照产生的载流子都参与导电,在外加电场的作用下做漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速下降。光敏电阻的工作原理是基于内光电效应。在半导体光敏材料两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻,为了增加灵敏度,两电极常做成梳状。用于制造光敏电阻的材料主要是金属的硫化物、硒化物和碲化物等半导体。通常采用涂敷、喷涂、烧结等方法在绝缘衬底上制作很薄的光敏电阻体及梳状欧姆电极,接出引线,封装在具有透光镜的密封壳体内,以免受潮影响其灵敏度。原理图如下图:图3-6光敏电阻原理图第4章系统的软件设计4.1软件主流程图温湿度检测控制模块和光敏电阻收集环境数据,系统启动后下位机中的温湿度检测控制模块和光敏电阻开始收集环境的温湿度和光照强度数据。数据传输到主控制板,检测模块采集到数据后,将数据传输到主控制板。控制器根据数据作出分辨,主控制板接收到数据后,控制器会根据读取到的温湿度数据信息和控制参数进行分析,作出相应的决策。若环境参数在要求范围内则重新检测;如果温湿度检测控制模块检测到环境参数在系统要求范围内,则回到温湿度检测控制模块再次进行下一轮检测。调整环境参数,如果环境参数不在要求范围内,控制器会运行相应的机器设备,调整环境中的温度和湿度,直到环境参数达到要求范围内。上位机与下位机保持通讯,在整个系统运行过程中,上位机软件一直与下位机保持通讯,数据展示和储存,温湿度数据信号会展示在上位机中,客户可以对检测到的信息进行储存和编写。流程图如下:开始开始开始单片机初始化单片机初始化 N初始化成功?初始化成功?Y风速传感器对风速进行采集空气质量检测传感器进行采集光敏电阻进行光照强度采集D风速传感器对风速进行采集空气质量检测传感器进行采集光敏电阻进行光照强度采集DHT11进行温湿度采集风速数据传输空气质量数据传输光照强度数据传输温湿度数据传输风速数据传输空气质量数据传输光照强度数据传输温湿度数据传输NNNNNNN温湿度是否在范围内?温湿度是否在范围内?风速是否在范围内?空气质量是否在范围内?亮度是否在范围内?风速是否在范围内?空气质量是否在范围内?亮度是否在范围内? Y Y Y翻蛋并杀菌翻蛋并杀菌结束结束图4-SEQ图\*ARABIC\s11整体流程图4.2温湿度采集模块的软件设计当总线空余情况为高电平时,服务器将总线降低,等候DHT11响应。当单片机初始化完成后,DHT11温湿度传感器会对周围的温度和湿度进行采集并形成一个参数来表示温度及湿度,若此数据在设定的范围内,则触发接下来的翻蛋操作;若不在范围内,则可选择改变周围环境后重新采集。图4-2DHT11时序图4.3显示模块软件的设计在设计中需要显示当前环境的温度和湿度信息。系统使用液晶显示数据,STM32单片机初始化完成后显示屏会自动写控制字,控制字为单片机中获得的数据,随后显示出来。如图为显示模块流程图:开始开始单片机初始化单片机初始化 初始化成功? N初始化成功?Y写控制字写控制字写数据写数据显示显示结束结束图4-3显示子程序流程图4.4光敏电阻模块的软件设计光敏元件是一种对外界光线最为灵敏的元件,通常用于探测外界光线的强弱。当单片机初始化完成后,光敏电阻会对周围的光照进行采集并形成一个参数来表示光照强度,若此数据在设定的范围内,则触发接下来的翻蛋操作;若不在范围内,则可选择改变周围环境后重新采集。流程图如下:开始开始单片机初始化单片机初始化初始化成功?N初始化成功? .Y光敏电阻数据采集光敏电阻数据采集数据传输数据传输N亮度是否在范围?内?亮度是否在范围?内? Y开始开始图4-4光敏电阻流程图4.5MQ135空气质量检测的软件设计1.将程序下载到相应的开发板中。2.将串口线和模块接入开发板,给开发板上电。当单片机初始化完成后,MQ135空气质量传感器会对周围的空气进行采集并形成一个参数来表示空气质量,若此数据在设定的范围内,则触发接下来的翻蛋操作;若不在范围内,则可选择改变周围环境后重新采集。流程图如下:开始开始单片机初始化单片机初始化N初始化成功?初始化成功?YMQ135传感器数据采集MQ135传感器数据采集数据传输数据传输N空气质量是否在范围内?空气质量是否在范围内?Y结束结束图4-5MQ135空气质量传感器流程图4.6风速传感器的软件设计传感器的VCC和Vin引脚由升压转换器模块的输出提供7.5V,当单片机初始化完成后,风速会被周围的风速影响而发生转动,通过对风速传感器转动的幅度进行分析,传感器会形成一个参数来表示风速,若此数据在设定的范围内,则触发接下来的翻蛋操作;若不在范围内,则可选择改变周围环境后重新采集。实现其功能的流程图如下:开始开始单片机初始化单片机初始化初始化成功?N初始化成功?Y风速传感器数据采集风速传感器数据采集风速数据传输风速数据传输N风速是否在范围内?风速是否在范围内?Y翻蛋并杀菌翻蛋并杀菌结束结束图4-6风速传感器流程图4.7ESP8266WIFI模块的软件设计ESP8266WIFI的一般使用顺序,这里的“一般”指的是:ESP8266WIFI连接当前环境的热点,与服务器建立TCP连接,传输数据。当温湿度、光照强度、风速和空气质量数据都被采集完成后,ESP8266WIFI模块会将写数据自动上传至阿里云平台并在上位机中显示,方便我们观察。流程图如下图:开始开始单片机初始化单片机初始化初始化成功?N初始化成功? B Y获取数据获取数据EESP8266WIFI模块上传阿里云上传阿里云上位机获取并显示上位机获取并显示结束结束图4-7ESP8266WIFI流程图第5章系统测试5.1系统实物图图5-1系统完整实物图5.2测试原理图5-2和图5-3翻蛋器和上位机如图5-2和5-3点击上位机上方开启服务器后,手动设置上位机中温度、湿度、风速、空气质量和亮度的上下限,并观察到了上方有温湿度传感器、风速传感器、光敏电阻传感器、空气质量传感器所获得的实时数据。设置完毕之后点击是否开启翻蛋或杀菌,若此时的温度、湿度、风速、空气质量和亮度都位于正常范围内则翻蛋器进行翻转及正常翻蛋或杀菌器进行杀菌,若此时温度、湿度、风速、空气质量和亮度有一项不在正常范围内则系统报警,“0”否,“1”是,如果没有在正常范围就会报警为“1”。5.3翻蛋功能模块测试图5-4将各项参数上下限设置完毕如图5-4开启服务器后上位机将获得各个传感器的参数,随后将温度、湿度、风速、空气质量和亮度上下限设置完毕。图5-5翻蛋器翻转点击是否翻蛋,如图5-5由于是实时监测的各项数据都在上位机设置的范围之内,所以在控制器是否翻转一栏中输入“1”,翻蛋器翻转;若再次输入“0”,则重新获取数据后翻回。第6章总结与展望6.1总结在功率模块模拟仿真过程中出现问题,这通常是由于电路板焊接问题导致的。焊接不良可能会导致电路中出现断路或短路等问题,从而影响电路的正常运行。在此类问题出现时,重新检查焊接是否正确,是否存在虚焊、焊锡过多或过少等问题,进行修复即可。在程序流程中添加复位程序流程可以帮助解决单片机没有正常复位的问题。单片机在启动时需要进行复位操作,以确保系统处于一个良好的初始状态。如果单片机没有正常复位,可能会导致系统软件的运行出现错误或异常。在此类问题出现时,可以在程序流程中添加复位程序流程来解决问题。关于数据信息发送错误代码表明时未能分辨忙碌情况的问题,这通常是由于数据信息的发送速度过快,导致接收端无法及时处理数据信息,从而出现忙碌情况。解决方法是在设计中添加忙碌情况分辨,以确保数据信息的发送速度不会过快,从而避免系统软件出现逻辑错误。总的来说,系统软件的调试过程中可能会出现各种各样的问题,需要不断进行排查和解决。在遇到问题时,要有耐心和细心,逐一排查可能出现的原因,并尝试各种解决方法,直到问题得到解决为止。6.2展望设计以瘤尾守宫孵化装置制造连动为研究对象,在具体分析温湿度、光照、空气质量和风速对瘤尾守宫孵化的影响后,明确提出了一种基于单片机的温湿度自动控制系统。全部设计的首要工作中如下所示。分布式系统测量系统是一个很好的想法,但是需要确保温湿度感应器都能够准确地测量到环境的温湿度,并且数据能够被合理地整合和处理。此外,也需要考虑如何降低系统的复杂度和成本。引入优化算法是一个必要的步骤,可以进一步提高系统的效率和精度。PID控制算法是一个常用的方法,但是也需要进行合适的参数调整。模糊算法和神经网络控制算法也是很好的选择,但是需要考虑到算法的复杂度和可行性。工业触摸屏和无线数据传输的智能手机APP都是很好的发展方向,可以提高系统的实用性和便捷性。但是需要考虑到数据安全和隐私问题,以及成本和可行性等因素。总的来说,这个设计方案有很大的潜力,可以进一步完善和优化,需要根据实际情况进行具体的改进和调整。参考文献[1]王国红,邢蕊.创业导向、创新意愿与在孵企业创新绩效:孵化环境的调节作用1[C]//河南农业大学创新管理研究中心,重庆大学创新研究所南开,大学创业管理研究中心,吉林大学创业研究中心,清华大学中国企业成长与经济安全研究中心.中国创新与企业成长(CI&G)2013年度会议论文集.[出版者不详],2013:208-224.[2]李惠娜.基于STM32和物联网公有云的鸡蛋孵化环境检测系统设计[J].电子制作,2022,30(02):9-11+100.[3]邹文虎.基于物联网的环境监测系统设计研究[J].科学技术创新,2022(35):116-122.[4]李鹏飞;刘源;赵焕芬;于亚萍.基于单片机和LABVIEW的鸡蛋孵化环境控制系统开发[J].农技服务,2021,38(03):47-49.[5]海涛,陈娟,周文杰,陆猛,曾泽明.基于LoRa和NB-IoT物联网技术的孵化监控系统[J].中国农机化学报,2021,42(05):159-165.[6]韩甲文,张燕军,缪宏,张善文,戴敏.鹅种蛋孵化环境监测调控关键技术装备研发[J].农业装备技术,2022,48(02):43-45.[7]海涛,陈春华,黄光日,隆茂田,陈昌贵,陈娟.基于物联网与太阳能技术的孵化环境监控系统[J].装备制造技术,2020(12):36-39+55.[8]孔令夷.我国创业孵化生态系统环境综合评价[J].兰州学刊,2020(12):116-137.[9]张炜,邢潇.高技术企业创业孵化环境与成长绩效关系研究[J].科学学研究,2007(01):74-78.[10]俞玥,蒋劲松,郑成煌,钟镇涛,泮进明.单色绿光环境对孵化中种蛋蛋壳理化特性的影响[J].农业工程学报,2022,38(10):296-302.[11]孙雪蕾.基于单片机的自动鸽蛋孵化系统设计[J].时代农机,2019,46(08):78-79+84.[12]潘泽锴,陈锦雄.基于物联网技术的智能孵化系统研究与实现[J].实验室研究与探索,2022,41(05):141-146.[13]郭彬彬,刘宁,丁为民,陈信信,施振旦.基于TracePro的LED光照鹅孵化机设计及试验[J].中国农机化学报,2021,42(12):57-64.[14]杨金祥,章海,陈胜.雏鸡孵化中恒温孵化器系统的设计[J].农村经济与科技,2021,32(11):60-62.[15]陈创业,胡天让,谢晓丽,陈蕊.禽蛋孵化器远程控制系统设计[J].电子制作,2021(12):34-35+22.[16]齐琳.基于光照强度的恒温孵化器系统设计[J].自动化应用,2021(05):28-31.[17]曹春节.创业孵化社区管理系统的设计与实现[D].华中科技大学,2020.[18]丁孟松,杜晓霞,李京杰,李志杰.观赏鸟专用孵化加热消毒系统设计分析[J].湖北畜牧兽医,2018,39(04):30-31.[19]DotasVassilios,GourdouvelisDimitrios,HatzizisiLampros,KaimakamisIoannis,MitsopoulosIoannis,SymeonGeorge.Typology,StructuralCharacterizationandSustainabilityofIntegratedBroilerFarmingSysteminEpirus,Greece[J].Sustainability,2021,13(23).[20].JohnWC.Methodforreducingpathogensinpoultryhatcheryoperations:,AU2018219151A1[P].2019.[21]SuleEP,EnebeKO,SaturdayA,etal.Design,AnalysisAndDevelopmentOfAStudsGrindingMachine[J].JETIR(),2016(4).[22]AwadAShehata,RedaTarabees,MohamedSabryAbdElraheamElsayed.CharacterizationofSalmonellaEntericaIsolatedfromPoultryHatcheriesandCommercialBroilerChickens[J].PakistanVeterinaryJournal,2019.[23]HanHA.GiantAfricanlandsnails:pestsnotpets[J].AngiostrongylusCantonensis.附录电路图源代码#include"sys.h"#include"delay.h"#include"usart.h"#include"tim.h"#include"dht11.h"#include"hcsr04.h"#include"timer.h"#include"oled.h"#include"port.h"#include"esp8266.h"#include"adc.h"#include"app.h"intmain(void){ delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 system_Time_Init(9,7199); sys_gpio_init(); adc_init(); DHT11_Init(); TIM3_PWM_Init();//舵机定时器初始化 ESP8266_Init(115200); OLED_Init(); //初始化OLED OLED_Clear(); while(1) { app(); }}#include"dht11.h"#include"delay.h"u8temperature,humidity;//复位DHT11voidDHT11_Rst(void) { DHT11_IO_OUT(); //SETOUTPUT DHT11_DQ_OUT=0; //拉低DQ delay_ms(20); //拉低至少18ms DHT11_DQ_OUT=1; //DQ=1 delay_us(30); //主机拉高20~40us}//等待DHT11的回应//返回1:未检测到DHT11的存在//返回0:存在u8DHT11_Check(void) { u8retry=0; DHT11_IO_IN();//SETINPUT while(DHT11_DQ_IN&&retry<100)//DHT11会拉低40~80us { retry++; delay_us(1); }; if(retry>=100)return1; elseretry=0;while(!DHT11_DQ_IN&&retry<100)//DHT11拉低后会再次拉高40~80us { retry++; delay_us(1); }; if(retry>=100)return1; return0;}//从DHT11读取一个位//返回值:1/0u8DHT11_Read_Bit(void) { u8retry=0; while(DHT11_DQ_IN&&retry<100)//等待变为低电平 { retry++; delay_us(1); } retry=0; while(!DHT11_DQ_IN&&retry<100)//等待变高电平 { retry++; delay_us(1); } delay_us(40);//等待40us if(DHT11_DQ_IN)return1; elsereturn0; }//从DHT11读取一个字节//返回值:读到的数据u8DHT11_Read_Byte(void){ u8i,dat; dat=0; for(i=0;i<8;i++) { dat<<=1; dat|=DHT11_Read_Bit(); } returndat;}//从DHT11读取一次数据//temp:温度值(范围:0~50°)//humi:湿度值(范围:20%~90%)//返回值:0,正常;1,读取失败u8DHT11_Read_Data(u8*temp,u8*humi){ u8buf[5]; u8i; DHT11_Rst(); if(DHT11_Check()==0) { for(i=0;i<5;i++)//读取40位数据 { buf[i]=DHT11_Read_Byte(); } if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4]) { *humi=buf[0]; *temp=buf[2]; } }elsereturn1; return0; }//初始化DHT11的IO口DQ同时检测DHT11的存在//返回1:不存在//返回0:存在 u8DHT11_Init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //使能PG端口时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //PA4端口配置 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); //初始化IO口 GPIO_SetBits(GPIOB,GPIO_Pin_0); //PE11输出高 DHT11_Rst();//复位DHT11 returnDHT11_Check();//等待DHT11的回应}#include"esp8266.h"#include"delay.h"#include<stdarg.h>#include"tcp.h"#include"app.h"#include"port.h"#include"timer.h"u8wifi_success=0;#defineDMA_UART2_data_len256u8DMA_UART2_data[DMA_UART2_data_len];voiduart2_Init(u32bound)//串口2引脚为PA2PA3{//GPIO端口设置GPIO_InitTypeDefGPIO_InitStructure; USART_InitTypeDefUSART_InitStructure; NVIC_InitTypeDefNVIC_InitStructure; DMA_InitTypeDefDMA_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能USART1,GPIOA时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); //USART2_TXGPIOA.2GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//PA.2GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOA.2//USART2_RX GPIOA.3初始化GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;//PA3GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOA.3//Usart2NVIC配置NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//抢占优先级2 NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; //子优先级1 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //IRQ通道使能 NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化NVIC寄存器//USART初始化设置USART_DeInit(USART2); USART_InitStructure.USART_BaudRate=bound;//串口波特率 USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字长为8位数据格式 USART_InitStructure.USART_StopBits=USART_StopBits_1;//一个停止位 USART_InitStructure.USART_Parity=USART_Parity_No;//无奇偶校验位 USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//无硬件数据流控制 USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //收发模式USART_Init(USART2,&USART_InitStructure);//初始化串口1 USART_ITConfig(USART2,USART_IT_IDLE,ENABLE);//开启串口空闲 USART_DMACmd(USART2,USART_DMAReq_Rx,ENABLE);USART_Cmd(USART2,ENABLE);//使能串口2 DMA_DeInit(DMA1_Channel6); DMA_InitStructure.DMA_PeripheralBaseAddr=(u32)(&USART2->DR); DMA_InitStructure.DMA_MemoryBaseAddr=(u32)DMA_UART2_data; DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize=DMA_UART2_data_len; DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Byte; DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Byte; DMA_InitStructure.DMA_Mode=DMA_Mode_Normal; DMA_InitStructure.DMA_Priority=DMA_Priority_High; DMA_InitStructure.DMA_M2M=DMA_M2M_Disable; DMA_Init(DMA1_Channel6,&DMA_InitStructure); DMA_Cmd(DMA1_Channel6,ENABLE);}u8r_buff[256];u8w_youbiao=0;u8r_youbiao=0;voidUSART2_IRQHandler(void){ u8i=0; u16data_len; u8ls[5]; if(USART_GetITStatus(USART2,USART_IT_IDLE)!=RESET)//空闲中断 { data_len=USART2->SR;data_len=USART2->DR; DMA_Cmd(DMA1_Channel6,DISABLE); data_len=0; data_len=DMA_UART2_data_len-DMA_GetCurrDataCounter(DMA1_Channel6); if(ESP8266_Fram_Record_Struct.InfBit.FramLength<(RX_BUF_MAX_LEN-1)&&wifi_success==0) { for(i=0;i<data_len;i++) ESP8266_Fram_Record_Struct.Data_RX_BUF[ESP8266_Fram_Record_Struct.InfBit.FramLength++]=DMA_UART2_data[i]; } if(wifi_success) { if(data_len==5) { if(DMA_UART2_data[2]=='D') { if(DMA_UART2_data[3]=='0') DaoZhuan; elseif(DMA_UART2_data[3]=='1') ZhengZhuan; } elseif(DMA_UART2_data[2]=='J') { if(DMA_UART2_data[3]=='0') *IO.shajun=0; elseif(DMA_UART2_data[3]=='1') *IO.shajun=1; } } elseif(data_len==33) { memset(ls,0,5); ls[0]=DMA_UART2_data[3]; ls[1]=DMA_UART2_data[4]; wendu_max=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[7]; ls[1]=DMA_UART2_data[8]; wendu_min=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[11]; ls[1]=DMA_UART2_data[12]; shidu_max=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[15]; ls[1]=DMA_UART2_data[16]; shidu_min=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[18]; ls[1]=DMA_UART2_data[19]; ls[2]=DMA_UART2_data[20]; ls[3]=DMA_UART2_data[21]; fengsu_max=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[23]; ls[1]=DMA_UART2_data[24]; ls[2]=DMA_UART2_data[25]; ls[3]=DMA_UART2_data[26]; kongqi_max=atoi(ls); memset(ls,0,5); ls[0]=DMA_UART2_data[28]; ls[1]=DMA_UART2_data[29]; ls[2]=DMA_UART2_data[30]; ls[3]=DMA_UART2_data[31]; liangdu_max=atoi(ls); } } USART_ClearITPendingBit(USART2,USART_IT_IDLE); DMA_SetCurrDataCounter(DMA1_Channel6,DMA_UART2_data_len); DMA_Cmd(DMA1_Channel6,ENABLE); }//u8ucCh;//if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET)//{//ucCh=USART_ReceiveData(USART2);//// USART_SendData(USART3,ucCh);//if(ESP8266_Fram_Record_Struct.InfBit.FramLength<(RX_BUF_MAX_LEN-1)&&wifi_success==0)//{//ESP8266_Fram_Record_Struct.Data_RX_BUF[ESP8266_Fram_Record_Struct.InfBit.FramLength++]=ucCh;//}// if(wifi_success)// {// r_buff[w_youbiao]=ucCh;// w_youbiao++;// if(w_youbiao==r_youbiao)// {// r_youbiao++;// }// }// //}//if(USART_GetITStatus(USART2,USART_IT_IDLE)==SET)//如果总线空闲//{//ESP8266_Fram_Record_Struct.InfBit.FramFinishFlag=1;//ucCh=USART_ReceiveData(USART2);//由软件序列清除中断标志位(先读USART_SR,然后读USART_DR)//// USART_SendData(USART3,ucCh);//TcpClosedFlag=strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,"CLOSED\r\n")?1:0;//}}structSTRUCT_USART_FramESP8266_Fram_Record_Struct={0};//定义了一个数据帧结构体voidESP8266_Init(u32bound){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(ESP8266_RST_Pin_Periph_Clock|ESP8266_CH_PD_Pin_Periph_Clock,ENABLE);GPIO_InitStructure.GPIO_Pin=ESP8266_RST_Pin;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//复用推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(ESP8266_RST_Pin_Port,&GPIO_InitStructure);//GPIO_InitStructure.GPIO_Pin=ESP8266_CH_PD_Pin;//GPIO_Init(ESP8266_CH_PD_Pin_Port,&GPIO_InitStructure);uart2_Init(bound); ESP8266_Rst();// ESP8266_CH_PD_Pin_SetH; ESP8266_AT_Test(); printf("正在配置ESP8266\r\n");ESP8266_Net_Mode_Choose(STA);while(!ESP8266_JoinAP(User_ESP8266_SSID,User_ESP8266_PWD));ESP8266_Enable_MultipleId(DISABLE); while(!ESP8266_Link_Server(enumUDP,User_ESP8266_TCPServer_IP,User_ESP8266_TCPServer_PORT,Single_ID_0));//while(!ESP8266_Link_Server(enumTCP,User_ESP8266_TCPServer_IP,User_ESP8266_TCPServer_PORT,Single_ID_0));while(!ESP8266_UnvarnishSend()); printf("\r\n配置完成"); wifi_success=1;}//对ESP8266模块发送AT指令//cmd待发送的指令//ack1,ack2;期待的响应,为NULL表不需响应,两者为或逻辑关系//time等待响应时间//返回1发送成功,0失败boolESP8266_Send_AT_Cmd(char*cmd,char*ack1,char*ack2,u32time){ESP8266_Fram_Record_Struct.InfBit.FramLength=0;//重新接收新的数据包ESP8266_USART("%s\r\n",cmd);if(ack1==0&&ack2==0)//不需要接收数据{returntrue;}delay_ms(time);//延时 delay_ms(1000);ESP8266_Fram_Record_Struct.Data_RX_BUF[ESP8266_Fram_Record_Struct.InfBit.FramLength]='\0'; printf("%s",ESP8266_Fram_Record_Struct.Data_RX_BUF);if(ack1!=0&&ack2!=0){return((bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack1)||(bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack2));}elseif(ack1!=0)//strstr(s1,s2);检测s2是否为s1的一部分,是返回该位置,否则返回false,它强制转换为bool类型了return((bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack1));elsereturn((bool)strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF,ack2));}//复位重启voidESP8266_Rst(void){ESP8266_RST_Pin_SetL;delay_ms(500);ESP8266_RST_Pin_SetH;}//发送恢复出厂默认设置指令将模块恢复成出厂设置voidESP8266_AT_Test(void){charcount=0;delay_ms(1000);while(count<10){if(ESP8266_Send_AT_Cmd("AT+RESTORE","OK",NULL,500)){printf("OK\r\n");return;}++count;}}//选择ESP8266的工作模式//enumMode模式类型//成功返回true,失败返回falseboolESP8266_Net_Mode_Choose(ENUM_Net_ModeTypeDefenumMode){switch(enumMode){caseSTA:returnESP8266_Send_AT_Cmd("AT+CWMODE=1","OK","nochange",2500);caseAP:returnESP8266_Send_AT_Cmd("AT+CWMODE=2","OK","nochange",2500);caseSTA_AP:returnESP8266_Send_AT_Cmd("AT+CWMODE=3","OK","nochange",2500);default:returnfalse;}}//ESP8266连接外部的WIFI//pSSIDWiFi帐号//pPassWordWiFi密码//设置成功返回true反之falseboolESP8266_JoinAP(char*pSSID,char*pPassWord){charcCmd[120]; sprintf(cCmd,"AT+CWJAP=\"%s\",\"%s\"",pSSID,pPassWord);returnESP8266_Send_AT_Cmd(cCmd,"OK",NULL,5000);}//ESP8266透传使能//enumEnUnvarnishTx是否多连接,bool类型//设置成功返回true,反之falseboolESP8266_Enable_MultipleId(FunctionalStateenumEnUnvarnishTx){charcStr[20];sprintf(cStr,"AT+CIPMUX=%d",(enumEnUnvarnishTx?1:0));returnESP8266_Send_AT_Cmd(cStr,"OK",0,500);}//ESP8266连接服务器//enumE网络类型//ip,服务器IP//ComNum服务器端口//id,连接号,确保通信不受外界干扰//设置成功返回true,反之fasleboolESP8266_Link_Server(ENUM_NetPro_TypeDefenumE,char*ip,char*ComNum,ENUM_ID_NO_TypeDefid){charcStr[100]={0},cCmd[120];switch(enumE){caseenumTCP:sprintf(cStr,"\"%s\",\"%s\",%s","TCP",ip,ComNum);break;caseenumUDP:sprintf(cStr,"\"%s\",\"%s\",%s","UDP",ip,ComNum);break;default:break;}if(id<5)sprintf(cCmd,"AT+CIPSTART=%d,%s",id,cStr);elsesprintf(cCmd,"AT+CIPSTART=%s",cStr);returnESP8266_Send_AT_Cmd(cCmd,"OK","ALREAYCONNECT",4000);}//透传使能//设置成功返回true,反之falseboolESP8266_UnvarnishSend(void){if(!ESP8266_Send_AT_Cmd("AT+CIPMODE=1","OK",0,500))returnfalse;returnESP8266_Send_AT_Cmd("AT+CIPSEND","OK",">",500);}//ESP8266发送字符串//enumEnUnvarnishTx是否使能透传模式//pStr字符串//ulStrLength字符串长度//ucId连接号//设置成功返回true,反之falseboolESP8266_SendString(FunctionalStateenumEnUnvarnishTx,char*pStr,u32ulStrLength,ENUM_ID_NO_TypeDefucId){charcStr[20];boolbRet=false;if(enumEnUnvarnishTx){ESP8266_USART("%s",pStr);bRet=true;}else{if(ucId<5)sprintf(cStr,"AT+CIPSEND=%d,%d",ucId,ulStrLength+2);elsesprintf(cStr,"AT+CIPSEND=%d",ulStrLength+2);ESP8266_Send_AT_Cmd(cStr,">",0,1000);bRet=ESP8266_Send_AT_Cmd(pStr,"SENDOK",0,1000);}returnbRet;}//ESP8266退出透传模式voidESP8266_ExitUnvarnishSend(void){delay_ms(1000);ESP8266_USART("+++");d

温馨提示

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

评论

0/150

提交评论