自动浇花系统_第1页
自动浇花系统_第2页
自动浇花系统_第3页
自动浇花系统_第4页
自动浇花系统_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

自动浇花系统自动浇花系统自动浇花系统摘要本设计旨在研究一款小型的自动浇花系统,其可以同时完成温度、湿度等多变量监控,并完成存储工作。其体积小,操作简单,携带方便,可满足移动测量需求。同时,也可以实现联网数据传输与分析,形成多地点实时联网监控,是一种新型自动测控浇花系统。本设计以RaspberryPi3B+(树莓派3B+)为核心,通过MEC-10型温度、湿度多合一传感器进行数据采集,从而形成一个环境监控系统。该系统可以按照用户的设定,以一定的频率周期采集温度、湿度数据,从而实时监测花卉土壤的环境指标。指标数据存储在数据库中,通过数据分析判断花卉土壤环境状况,从而控制系统自动实现浇花操作。经测试验证,基于RaspberryPi3B核心的自动浇花系统可以顺利的采集数据,并存储数据在数据库中。并根据需求,定时定量进行浇花操作,其体积小,操作简单,性能强大,可满足日常自动化浇花的需求,未来也可以实现网络联网控制系统,是物联自动化控制领域的成功实践。关键词:RaspberryPi,树莓派,自动浇花系统,数据库,传感器

AbstractThisdesignisdesignedtostudyasmallautomaticwateringsystemthatcansimultaneouslyperformmulti-variablemonitoringoftemperature,humidity,andotherstoragetasks.Itssmallsize,simpleoperationandconvenientcarryingcanmeettheneedsofmobilemeasurement.Atthesametime,itcanalsorealizenetworkeddatatransmissionandanalysis,andformmulti-sitereal-timenetworkmonitoring.Itisanewtypeofautomaticmeasurementandcontrolwateringsystem.ThisdesignusesRaspberryPi3B+(RaspberryPi3B+)asthecore,andcollectsdatathroughMEC-10typetemperatureandhumidityall-in-onesensortoformanenvironmentalmonitoringsystem.Thesystemcancollecttemperatureandhumiditydataatacertainfrequencycycleaccordingtotheuser'ssettings,soastomonitortheenvironmentalindicatorsoftheflowersoilinrealtime.Theindicatordataisstoredinthedatabase,andtheenvironmentalconditionoftheflowersoilisjudgedbydataanalysis,sothatthecontrolsystemautomaticallyrealizesthewateringoperation.Testedandverified,theautomaticwateringsystembasedonRaspberryPi3Bcorecancollectdatasmoothlyandstoredatainthedatabase.Accordingtothedemand,thewateringoperationiscarriedoutatregularintervals.Thevolumeissmall,theoperationissimple,andtheperformanceisstrong.Itcanmeettheneedsofdailyautomaticwatering,andthenetworkedcontrolsystemcanberealizedinthefuture.ItisasuccessfulpracticeinthefieldofIOTautomationcontrol.Keywords:RaspberryPi,Automaticwateringsystem,Sensor,Database.

目录1绪论 11.1 题目背景及目的 11.2 国内外研究现状 11.3论文主要研究方法 21.4论文主要内容和结构安排 32 自动浇花系统整体方案设计 42.1 系统设计要求 42.2 系统研究思路和主要功能 42.3 系统方案的论证与选择 42.3.1传感器的选用 42.3.2控制核心的选择 63 自动浇花系统硬件电路设计 83.1硬件电路总体设计 83.2硬件电路各模块设计 93.2.1RaspberryPi3B核心 93.2.2MEC-10型温度、电导率、盐度多合一传感器 103.2.3SG-90舵机 113.2.4液晶串口屏幕 124 自动浇花系统软件程序设计 134.1软件程序整体设计 134.2传感器采集程序详解 134.2.1Modbus标准协议简介 134.2.2串口数据传输控制 144.3舵机转向程序详解 164.4串口屏控制程序详解 175 自动浇花系统实现 205.1 硬件成果 205.2 功能效果展示展示效果 21结论 23参考文献 251绪论题目背景及目的现代人们的生活水平不断提高,也同时付出着更加繁重的劳动,生活节奏加快、工作压力大是现代城市工作者的通病。相对的,就没有时间去提高生活体验,类似种植花草美化家庭环境这种事情也十分困难。没有多余的时间和精力去定期打理花卉植物,导致植物枯萎死亡。近年来,随着微电子科技的不断发展与进步,电子器件发展更趋向小型化、集成化。同样大小的微型芯片能够提供的功能日益强大,许多领域的产品都在不断革新,不断改进,涉及到生活的方方面面,自动浇花系统也不例外。本设计旨在研究一款微型的自动浇花系统,其可以同时完成土壤温度、湿度等多变量数据收集与监控,可放置在室内监测家庭花卉植物的土壤环境状况,根据预先设定的花卉浇灌喷淋规则,自动实现浇花操作。此系统体积小,操作简单,并可以实现联网数据交互,是一种新型的自动浇花系统。本设计以RaspberryPi3B+(树莓派3B+)为核心,通过MEC-10型温度、湿度多合一传感器进行数据采集,从而形成一个环境监控系统。该系统可以按照用户的设定,以一定的频率周期采集温度、湿度数据,从而实时监测花卉土壤的环境指标。指标数据存储在数据库中,通过数据分析判断花卉土壤环境状况,从而控制系统自动实现浇花操作。同时,本系统硬件还可以实现联网操作,未来可以实现物联搭建,具有巨大的集成开发空间。国内外研究现状在国内,生活中常见的是自动喷淋系统以及自动滴灌系统,大量运用于城市道路绿化、公园草坪种植以及大棚温室农作物的浇灌上。在最近几年,传统滴灌技术的应用领域出现了新的变化趋势,由温室大棚等小单位滴灌向室外露天大单元滴灌发展,公路铁路沿线和荒漠风沙治理也开始使用滴灌技术。自动化滴灌技术已经是高效农业、林业维护节水灌溉的重要措施之一。通过采用遥感、遥测信号传感器来实时监测土壤动态环境和作物生长状况,对植物灌溉目标进行实时监测,实现滴灌用水的全自动控制系统,实现监测到灌溉作业全线自动化。特别是在风沙管理等干旱或者半干旱地区,自动化滴灌技术可以提高水资源的利用率,降低农作物、林作物的种植成本、人力成本。大型的自动化滴灌技术是比较成熟的,大部分运用于温室大棚等及以上更大型的场合,有专门的厂家进行制作与售后服务跟踪。但是小型的自动滴灌浇花系统还是不怎么普及也不怎么智能化的。小型的家用自动浇花系统普遍功能比较单一,主要类别如下:1、定时器驱动系统:使用物理水管及浇灌喷头,预先埋设好水管位置和喷头位置,连接上定时器装置和电源。在定时器中设定循环时间,系统自动按照定时器所设置的浇灌周期定时作业。2、全物理系统:使用机械装置,全天候进行渗水浇灌。其中定时器驱动有许多都是通过微型单片机为核心,类似ST89C51等,其功能不多,可扩展性不强,浇灌模式单一。即使有使用土壤温度、湿度传感器去监测土壤环境,都是普通的电阻传感器,使用AD转换模块进行数据转化,没有经过精确标定,且传感器耐久不足,精确度无法长期保证。在国外,德国、日本、加拿大、美国均有进口自动浇花系统,但大多数都是定时控制类型,不过其控制的精度更加精确,参数更加复杂,管线系统的耐久度和可用性更强。国家地理环境和人口密度决定了国外的家庭花卉草地用地宽广,大部分草坪花卉处于室外,所以自动浇灌系统也较为大型,符合露天、可移动场景。1.3论文主要研究方法本设计、论文的主要研究方法是调查法、实验法和文件研究法。调查法是科学研究中最常用的方法之一。它是有目的、有计划、有系统地搜集有关研究对象现实状况或历史状况的材料的方法。调查方法是科学研究中常用的基本研究方法,它综合运用历史法、观察法等方法以及谈话、问卷、个案研究、测验等科学方式,对教育现象进行有计划的、周密的和系统的了解,并对调查搜集到的大量资料进行分析、综合、比较、归纳,从而为人们提供规律性的知识。实验法是通过主支变革、控制研究对象来发现与确认事物间的因果联系的一种科研方法。其主要特点是:第一、主动变革性。观察与调查都是在不干预研究对象的前提下去认识研究对象,发现其中的问题。而实验却要求主动操纵实验条件,人为地改变对象的存在方式、变化过程,使它服从于科学认识的需要。第二、控制性。科学实验要求根据研究的需要,借助各种方法技术,减少或消除各种可能影响科学的无关因素的干扰,在简化、纯化的状态下认识研究对象。第三,因果性。实验以发现、确认事物之间的因果联系的有效工具和必要途径。文献研究法是根据一定的研究目的或课题,通过调查文献来获得资料,从而全面地、正确地了解掌握所要研究问题的一种方法。文献研究法被子广泛用于各种学科研究中。其作用有:(1)能了解有关问题的历史和现状,帮助确定研究课题。(2)能形成关于研究对象的一般印象,有助于观察和访问。(3)能得到现实资料的比较资料。(4)有助于了解事物的全貌。1.4论文主要内容和结构安排本文详细介绍了基于RaspberryPi3B(树莓派3B)为核心的自动浇花系统的设计,通过MEC-10型温度、电导率、液位多合一传感器进行温度、湿度数据采集,从而形成一个花卉土壤监测系统。本论文共5章,其结构安排和主要内容如下:第一章“绪论”重点介绍了物联信息时代,现代家庭化、小型化、集成化的自动浇花系统的使用需求,以及国内外相关花卉林业浇灌、滴灌系统的研究状况,还有本文的主要内容和结构安排。第二章“自动浇花系统整体设计方案”阐述了本设计的整个设计的研究思路和设计方案以及传感器方案和核心控制器方案的选用等。第三章“自动浇花系统硬件电路设计”主要描述了本设计的硬件组成以及各个模块的硬件具体状况和详细介绍。第四章“自动浇花系统软件程序设计”给出了本设计的总体软件流程思路,以及各个模块控制程序和数据程序的具体详解。第五章“自动浇花系统实现”对该系统实物进行了展示,包括整个系统的实物展示以及测量结果的图像展示。

自动浇花系统整体方案设计系统设计要求要求设计一个基于Raspberry,Pi3B的自动浇花系统,其可以实现对温度、湿度数据的采集以及数据的存储功能,并按照一定的预设规则实现多花卉的自动浇灌作业。根据设计要求,本设计以RaspberryPi3B芯片为核心,MEC-10型温度、电导率、液位多合一传感器进行数据采集,从而形成一个观测存储系统。系统可实现对温度、湿度数据的采集并实时经由液晶屏经行显示,同时根据所采集的数据进行土壤环境分析,实现自动花卉浇灌作业。系统研究思路和主要功能本设计以RaspberryPi3B芯片为核心,在系统上电后,会自动采集传感器数据进行分析,根据预设定浇灌规则进行浇花作业。本设计主要内容如下:1、用户可使用软件预设浇花规则;2、树莓派通过软件程序控制,以Modbus协议与传感器链接进行数据采集;3、采集到的实时温湿度数据会显示在液晶屏幕中;4、系统会根据规则进行自动浇花作业;5、用户可以液晶屏查看历史浇花数据记录。系统方案的论证与选择2.3.1传感器的选用本设计需要一种传感器能够同时测量土壤温度、湿度。本次有两种传感器待选:常用小车温湿度土壤模块这种模块是一个简易的水分传感器,利用电阻的变化测量水分湿度,需要外接AD转换电压信号,土壤越干燥,输出电压越小,越湿润输出电压越大。使用电压模拟量输出,未经过专业标定。 2、EMC-10三合一温度、湿度、电导率传感器这款三合一传感器是大连哲勤科技有限公司的EMC-10三合一温度、湿度、电导率传感器(如图2.1所示)。其可以对不同土壤进行标定,可见产家传感器性能优越,相应速度小于1s,符合采样频率要求,输出信号稳定,不会出现温度跳变和温度漂移现象。其探针采用316L不锈钢钢针,隔离探头设计,防止探头点解以及土壤盐分的腐蚀。其内部芯片采用进口芯片原件,保证测量的精确度(具体参数请见表3.1)。同时,采用防水设计以及防水传输线设计,防水等级为IP68。传感器信号输出采用RS-485数字信号输出,支持Modbus协议。图2.1常用小车传感器(左)MEC-10型温度、电导率、盐度多合一传感器(右)表3.1MEC-10型温度、电导率、盐度多合一传感器参数详情输出类型RS-485电源范围3.6-30V/DC功耗(静态)6mA@24V/DC电导率量程0-10000us/cm,精度±3%电导率温度补偿内置温度补偿传感器,补偿范围0-50°温度测量量程-40-80°C,分辨率0.1°C,精度±0.5°防护登记IP68可长期浸没在液体中使用运行环境-40~85°

在保证测量精准的前提下,我们优先选用了EMC-10传感器。EMC-10有三种输出类型规格,分别是:1、电压型输出传感器;2、电流型输出传感器;3、RS-485智能型输出传感器。电流输出、电压输出的传感器都是非常常见的,但是就目前发展趋势来看,电压输出正在逐渐淘汰,另一方面,现在数字输出的传感器也正在被客户接收,数字输出的传感器信号容易处理,便于集成,未来更多的传感器将会选择数字输出的。数字输出型传感器已经集成了小型的采集芯片在传感器上,把所采集到的数据转换为数字信号输出。其具有以下优点:第一,抗干扰。总有人认为总线通信反而没有模拟信号抗干扰这实际上是个很大的误区。从基本原理上,首先数字信号只有两个状态,并且大多数总线的物理层协议都要求两个状态的触发阈值电平离得比较远。例如1是0.5~1V,而0是4.5~5V,这样随机噪声就有了很大的缓冲区间。即使是真的发生了真假颠倒的错误,链路层以上各层的校验机制也会发现错误丢弃有问题的数据,出发协议中相应的机制重传或延迟刷新。可以说总线系统是不会在通信环节引入噪声干扰的。第二,可靠性高。总线系统的物理层协议对从设计到安装的各个环节提出了标准化要求。抗干扰,有些是为了可靠性和耐久性,有些是为了元件质量或安装工艺的标准化。这些都是无数工程应用经过多年的经验结晶。第三,串行通信,可中继交换大大减少了电气系统中的线束,并扩展了范围。模拟信号一百个传感器就要有一百根线缆,像蜘蛛网一样从四面八方汇集到IO所在的电柜,而对,总线系统来说合理的拓扑设计会使布线非常简单,不管多少传感器,总是就近汇集到一根或两根(环状拓扑)线缆上。不管多复杂的系统都是一样简洁。这对布线和电柜设计非常有利。同时,通过符合要求的中继设备,传感器可以距离IO非常远。综上,本设计选择RS-485智能型输出的EMC-10传感器作为本设计的土壤温湿度传感器。2.3.2控制核心的选择对于控制核心芯片,有以下三个方案:1、AT89C52核心;2、STM32核心;3、树莓派3B型核心。AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。STM32集成嵌入式Flash和SRAM存储器的ARMCortex-M3内核。和8/16位设备相比,ARMCortex-M332位RISC处理器提供了更高的代码效率。STM32F103xx微控制器带有一个嵌入式的ARM核,所以可以兼容所有的ARM工具和软件。嵌入式Flash存储器和RAM存储器:内置多达512KB的嵌入式Flash,可用于存储程序和数据。多达64KB的嵌入式SRAM可以以CPU的时钟速度进行读写(不待等待状态)。树莓派3B+(RaspberryPi3B)是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有4个USB接口和一个100M以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。本设计需要采集并存储数据,AT89C52的容量不足以存储数据,且扩展容量操作复杂,芯片功能过于单一,故不考虑。STM32和RaspberryPi3B搭载的都是ARM芯片,STM32搭载的是ARM7,而RaspberryPi3B搭载的是ARM11芯片,显然RaspberryPi3B芯片的计算能力和处理频率优于STM32。同时,RaspberryPi3B具有比STM32更多的外设接口和外设设备,具有更全面的可扩展空间。结合整个设计及其未来的发展方向,本设计选择RaspberryPi3B作为系统核心,其可集成性高,未来有较大的可扩展应用空间,可以设计满足多样化的需求,丰富整个自动浇花系统。

自动浇花系统硬件电路设计3.1硬件电路总体设计系统硬件如图3.1所示,主要包括供电电路、树莓派3B(搭载ARM11)、MEC-10型温度、电导率、盐度多合一传感器、SG-90舵机、水泵电机、液晶串口显示屏,树莓派3B是整个系统的控制核心。图3.1硬件电路总体设计框图自动浇花系统核心RaspberryPi3B通过RS485总线实时获取MEC-10型温度、电导率、盐度多合一传感器的土壤温湿度数据,并将获取到的数据实时显示在液晶串口显示屏上。同时,根据系统需求,判断土壤状况是否需要喷淋浇灌,,并驱动SG-90舵机以及水泵电机完成自动浇花作业。3.2硬件电路各模块设计3.2.1RaspberryPi3B核心本设计选用的核心是RaspberryPi3BE14英国版(如图3.2、3.3所示)。RaspberryPi3B的生产是通过有生产许可的三家公司Element14/PremierFarnell、RSComponents及Egoman。国内销售常见的是E14版和RS版,各类网站测评后认为两个版本的具体性能参数没有太大的区别,E14在板子的做工和原件焊接上要比RS版要精致一些,各方面品质略优,所以本设计选择了E14版本。之所以选择RaspberryPi3B,主要考量在RaspberryPi3B具有成熟的系统,其稳定性高于STM32和AT9C52,后两者的外设电路需要自己去设计,其精度不稳定。同时,RaspberryPi3B作为一款成熟的“黑科技”产品,可以在一块信用卡大小的主板上完成普通PC机的基本功能,就像其他任何一台运行Linux系统的台式计算机或者便携式计算机那样,利用RaspberryPi可以做很多事情。当然,也难免有一点点不同。普通的计算机主板都是依靠硬盘来存储数据,但是RaspberryPi来说使用microSD卡作为“硬盘”,也可以外接USB硬盘。利用RaspberryPi可以编辑Office文档、浏览网页、玩游戏,即使玩需要强大的图形加速器支持的游戏也没有问题。拥有linux系统的RaspberryPi可以完成的更多的集成开发,拥抱开源资源的linux系统可以使用许多的开源程序,方便开发者进一步研究开发添加功能,也可以远距离部署系统。相对于RaspberryPi2来说RaspberryPi3有了以下升级:1、在CPU上做了全方位的升级,从32位A7(BCM2836)升级到64位A53(BCM2837)主频从900MHz升级到1.2GHz;2、GPU核心没变,但是主频从250MHz提升到400MHz3、增加802.11b/g/n无线网卡;4、增加低功耗蓝牙4.1适配器;5、供电电路升级到2.5A@5V,增加了扩展更多模块的可能性;6、两颗指示灯也因天线的布局移到了电源一侧。因为拥有了wifi无线网卡功能,才能够实现局域网内方便快捷的通信,以实现整个系统在传感器出水之后可以无缝链接传输数据,而不需要进一步进行连线传输。图3.2RaspberryPi3B+正面图3.3RaspberryPi3B+背面3.2.2MEC-10型温度、电导率、盐度多合一传感器本设计选择了一款三合一传感器进行温度和电导率的测量。这款三合一传感器是大连哲勤科技有限公司的EMC-10三合一温度、湿度、电导率传感器(如图3.4所示)。其可以对不同土壤进行标定,可见产家传感器性能优越,相应速度小于1s,符合采样频率要求,输出信号稳定,不会出现温度跳变和温度漂移现象。其探针采用316L不锈钢钢针,隔离探头设计,防止探头点解以及土壤盐分的腐蚀。其内部芯片采用进口芯片原件,保证测量的精确度(具体参数请见表3.1)。同时,采用防水设计以及防水传输线设计,防水等级为IP68。传感器信号输出采用RS-485数字信号输出,支持Modbus协议。图3.4MEC-10型温度、电导率、盐度多合一传感器3.2.3SG-90舵机舵机,是指在自动驾驶仪中操纵飞机舵面(操纵面)转动的一种执行部件。分有:(1)电动舵机,由电动机、传动部件和离合器组成。接受自动驾驶仪的指令信号而工作,当人工驾驶飞机时,由于离合器保持脱开而传动部件不发生作用。(2)液压舵机,由液压作动器和旁通活门组成。当人工驾驶飞机时,旁通活门打开,由于作动器活塞两边的液压互相连通而不妨害人工操纵。此外,还有电动液压舵机,简称“电液舵机”。舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机的控制信号实际上是一个脉冲宽度调制信号(PWM信号),该信号可由FP-GA器件、模拟电路或单片机产生。舵机主要是由外壳、电路板、驱动马达、减速器与位置检测元件所构成。其工作原理是由接收机发出讯号给舵机,经由电路板上的IC驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回讯号,判断是否已经到达定位。位置检测器其实就是可变电阻,当舵机转动时电阻值也会随之改变,藉由检测电阻值便可知转动的角度。一般的伺服马达是将细铜线缠绕在三极转子上,当电流流经线圈时便会产生磁场,与转子外围的磁铁产生排斥作用,进而产生转动的作用力。依据物理学原理,物体的转动惯量与质量成正比,因此要转动质量愈大的物体,所需的作用力也愈大。舵机为求转速快、耗电小,于是将细铜线缠绕成极薄的中空圆柱体,形成一个重量极轻的无极中空转子,并将磁铁置於圆柱体内,这就是空心杯马达。控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。当然我们可以不用去了解它的具体工作原理,知道它的控制原理就够了。就象我们使用晶体管一样,知道可以拿它来做开关管或放大管就行了,至于管内的电子具体怎么流动是可以完全不用去考虑的。本设计选用SG-90经典舵机来控制浇花水管口的方向,继而选择不同的浇花目标。其具体参数如下:重量:9g尺寸:23x12.2x29mm无负载操作速度:0.12s/60度(4.8V);0.10s/60度(6.0V)扭矩:1.6Kg·cm(4.8V)使用温度:-30~+60摄氏度死区设定:5微秒工作电压:3.5V~6V其接线共有3根,分别是橙色的信号线、红色(VCC)正极、棕色(GND)地线。本设计将电机直接接在树莓派主机上,用树莓派BCM模式的21pin对其输出PWN脉冲进行控制,让其在180度的转角内活动,并于左右分别60度的位置进行浇花作业。3.2.4液晶串口屏幕串口屏是由液晶屏+单片机+存储器三部分构成的,由计算机将图片和汉字点阵通过程序预先存储到串口屏的存储器中,然后由单片机通过串口发送指令调用显示就可以串口是单片机中最普遍的一种接口,几乎99%的单片机系统都支持串口,串口开发在单片机开发中成为一种基础中的基础,具有广泛的用户基础和资料普及度;而另一方面,TFT彩色液晶屏的控制显示却复杂的多,不仅每家甚至每种屏接口都不一致,且还需要自己处理汉字点阵以及图形点阵,您看到的彩色界面实际上是一个点一个点绘制出来的,需要高档的单片机才能做到,且实现是非常复杂的。所以串口屏就将复杂的事情简单化,将彩色液晶屏的控制预先处理,并内置到串口屏的存储器中,这样单片机就可以通过简单的字符串指令去控制串口屏幕显示。

自动浇花系统软件程序设计4.1软件程序整体设计本系统的主要运行程序采用C语言及python语言编写,采用模块化设计,整体程序由传感器数据采集程序、液晶串口屏控制程序和舵机、电机控制程序三个部分组成。在主程序完成初始化之后,系统会自动开始传感器数据采集,将收集到的温湿度数据实时显示在串口显示屏中。同时,判断土壤环境是否超越阈值,更改控制位状态。舵机、电机控制程序会根据控制位信息去驱动舵机转向,朝向相对应需要浇灌作业的花卉植物,并驱动水泵电机进行浇灌作业。图4.1整体采集程序流程图4.2传感器采集程序详解4.2.1Modbus标准协议简介MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。它还将串行链路上的协议标准化,以便在一个主站和一个或多个从站之间交换Modbus请求。其有两种串行传输模式被定义:RTU模式和ASCII模式。Modbus串行链路上所有设备的传输模式(和串行口参数)必须相同,本设计选用RTU模式。当设备使用RTU(RemoteTerminalUnit)模式在Modbus串行链路通信,报文中每个8位字节含有两个4位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII模式有更高的吞吐率。每个报文必须以连续的字符流传送。RTU模式每个字节(11位)的格式为:编码系统: 8–位二进制报文中每个8位字节含有两个4位十六进制字符(0–9,A–F)BitsperByte: 1起始位8数据位,首先发送最低有效位1位作为奇偶校验1停止位 本设计选用8-N-1模式传输数据,8位二进制编码-无校验-1停止位模式。 其各帧数据描述如下图4.2所示:图4.2RTU报文帧其中,子节点地址标识了各传感器地址,各自设备依据功能代码相应服务,其后跟随数据,数据后会添加2字节CRC校验码,以供校验数据。4.2.2串口数据传输控制本设计中的传感器使用的是RS485数字量输出,通过USB转RS485接口连接在RaspberryPi3B处理器上,需要通过USB接口收发数据。一般USB转串口接头在linux内核系统中显示为/dev/ttyUSB,linu下的串口设备以设备文件的形式存在,对其操作就如同读写普通文件一般简单。在系统程序启动时,应当对接口进行初始化,设置串口参数,其中包括串口使能设置、串口数据位数模式设置、奇偶数校验模式设置、串口波特率模式设置以及停止位模式设置,这样设置后的串口可以与各种各样的硬件设备进行通信。其基本的设置模式如下:1、打开串口(open)在linux系统中,USB转串口一般是/dev/ttyUSB文件,对该文件操作即视为对硬件设备进行操作指令。进行串口操作之前,首先需要打开串口设备文件。对于串口文件的打开操作与一般的文件操作有很大的不同。其不同之处主要体现在open系统调用的flags参数,串口文件打开需要配置的flags包括如下几个:(1)O_RDWR:串口设备为全双工的,所以其读写模式应该为可读、可写;(2)O_NOCTTY:该属性告知UNIX系统,该程序不想成为对于该串口的“控制终端”。如果不配置该属性,任何输入事件(键盘事件)都会影响到你的进程;(3)O_NDELAY:该属性表示串口设备文件以非阻塞的方式打开(通知linux系统不关心DCD信号线所处的状态(端口的另一端是否激活或者停止));也可以通过fcntl设置ON_ONBLOCK来达到同样的效果。本设计以O_RDWR全双工模式打开串口,打开串口后还需要isatty进一步测试打开的设备文件描述是否位终端设备。2、串口属性设置(tcsetattr)对于普通的UART串口来说,一般只会使用其进行数据的传输功能,对于其他终端类属性一般不会涉及到。串口相关的几个最为基本属性包括:波特率、字符大小掩码、校验方式、停止位。大部分串口属性操作函数都会包含structtermios参数,下面就简单介绍一下该结构:tcflag_tc_iflag;/*inputmodes*/tcflag_tc_oflag;/*outputmodes*/tcflag_tc_cflag;/*controlmodes*/tcflag_tc_lflag;/*localmodes*/cc_tc_cc[NCCS];/*specialcharacters*/以上结构体分别对应了串口属性中的输入属性、输出属性、控制属性、控制字符模式等。其中我们主要讨论c_cflag字段,它主要负责设置接口的控制属性,串口数据位、奇偶校验位、串口比特率和停止位模式设置都在此字段中完成。(1)串口接受使能newtio.c_cflag|=CLOCAL|CREAD;newtio.c_cflag&=~CSIZE;newtio.c_cflag&=~CRTSCTS;以上参数基本以固定写入,类似STM32和51单片机中的串口总开关,设置该串口工作于原始模式。(2)设置串口数据位这是衡量通信中实际数据位的參数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、6、7和8位。怎样设置取决于你想传送的信息。比方。标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。假设数据使用简单的文本(标准ASCII码),那么每一个数据包使用7位数据。每一个包是指一个字节,包含開始/停止位。数据位和奇偶校验位。因为实际数据位取决于通信协议的选取。术语“包”指不论什么通信的情况。本设计中使用8位数据为模式,故newtio.c_cflag|=CS8;(3)奇偶校验位在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。比如。假设数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。假设是奇校验。校验位为1,这样就有3个逻辑高位。高位和低位不是真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备可以知道一个位的状态。有机会推断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。本设计中使用‘N’校验模式,故newtio.c_cflag&=~PARENB;(4)波特率波特率指数据信号对载波的调制速率。它用单位时间内载波调制状态改变次数来表示,其单位为波特(Baud)。波特率与比特率的关系为:比特率=波特率X单个调制状态相应的二进制位数。本设计使用的波特率为9600。故cfsetispeed(&newtio,B9600);cfsetospeed(&newtio,B9600);3、读取数据(read)|写入数据(write)在串口设置好之后,linux就可以像读写普通文件一样读写串口文件,所有的控制指令都会以字符串的形式向硬件设备下发。本设计中通过Modbus协议承载指令下发,num=getCommand(comstr,2,3,0,2)既采集MEC-10型温度、电导率、盐度多合一传感器数据,其代表的含义是选取MEC-10的第0号寄存器(温度数据寄存器)作为起始寄存器,向后读取2个寄存器,分别为温度数据寄存器和水分寄存器,获取相应的寄存器数据。4.3舵机转向程序详解本设计中,舵机通过改变转角的大小,带动水管头部运动,进而使水管转向需要浇水作业的盆栽,完成浇水动作。本设计中使用SG-90舵机,使用PWN脉冲控制其运转。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:0.5ms0度;1.0ms45度;1.5ms90度;2.0ms135度;2.5ms180度;SG90脉冲周期为20毫秒(millisecond),也就是说最多1秒钟内可以转动50次,但是考虑到每次转动还要耗时,所以实际达不到50次。PWM控制信号周期20ms,脉宽0.5ms-2.5ms对应的角度-90到+90度,范围180度(3度左右偏差),当脉宽1.5ms时舵机在中立点(0度),我们直接用python的GPIO提供的PWM控制。脉宽0.5ms-2.5ms对应的占空比为2.5%-12.5%.

理论上,10%的空间可以提供180度的线性分割。那么我们就将2.5%~12.5%的占空比等比例分割为180个分量,那么每次转动所需要的角度及其所需的PWN脉冲占空比就有如下关系:设转动角度数为i,则占空比X=2.5+i/180,其中(0<i<180)这样,就可以按照所需转角直接计算出所需占空比大小,再按照占空比大小去调制脉冲周期为20ms的PWN脉冲电流,进而控制舵机转角变化。foriinrange(0,181,10):p.ChangeDutyCycle(2.5+10*i/180) #设置转动角度time.sleep(0.02) #等该20ms周期结束p.ChangeDutyCycle(0)#归零信号time.sleep(0.2)foriinrange(181,0,-10):p.ChangeDutyCycle(2.5+10*i/180)time.sleep(0.02)p.ChangeDutyCycle(0)time.sleep(0.2)例子程序中,通过如上控制方法控制电机按10度步长连续转动,由0度转到180度,再从180度转回0度。4.4串口屏控制程序详解串口屏由USB转TTL电平模块连接在树莓派主机上,和USB转RS485接口一样,对于树莓派主机来说是相同的串口设备,具体的串口接入和4.2.2章节中所述相同,在此不再详细说明。本节主要讲述串口屏显示的控制。串口屏的控制是通过串口向串口屏发送用于控制的字符串来完成的。intserial_send(intfd,constchar*Data,intstrlen){intstring_num; intnum=0; printf("string_num:%d\n",strlen);num=write(fd,Data,strlen); if(num<=0){ printf("Writefderror:%d\n",num); return0; } else returnnum;}本设计中,串口屏的控制指令通过改函数发送,其会将输入的字符串以文件形式写入串口设备中。具体的控制指令类似如下形式:stringcmd1="CLS(0);DS32(2,2,'土壤温湿度数据:',2);BOXF(0,38,140,40,2);DS24(0,50,'温度:',15);DS64(70,80,'28.5°',10);BOXF(0,38,140,40,2);DS24(0,180,'湿度:',15);DS64(70,210,'100%',10);SXY(256,260);BTN(1,0,0,60,30,1,140);DS24(7,3,'上页',1);BTN(2,65,0,125,30,1,142);DS24(72,3,'下页',1);SXY(0,0);TPN(2);\r\n";其中DS24、DS32、DS48、DS64分别是24、42、48、64汉字点阵文字的显示指令;BOXF类则标明了矩阵图案的具体参数。一个屏幕能显示多少信息是和屏幕分辨率有关的,比如320X240分辨率的屏幕,就是表明横向有320点,纵向有240点,也就是说,显示16点阵的汉字,横向可以显示20个汉字,纵向可以显示15行;在尺寸上,同样320X240分辨率的屏,最小有2.0吋的,最大有3.5吋的,因此,对于软件来说,屏的尺寸和软件是无关的,有关的只要分辨率;确定了分辨率,就可以根据分辨率制定一套坐标体系,左上角的坐标是(0,0);向右X方向增加,最大319;向下y方向增加,做大239;有了坐标,我们就可以在屏幕指定的位置,做显示汉字,显示图片等操作;本设计使用的串口屏的所有指令都是和坐标有关的,靠坐标确定相应的位置;故DS32(2,2,'土壤温湿度数据:',2);这样一个指令代表在X坐标(横向位置)第二像素点,Y坐标(纵向位置)显示一个32位点阵的汉字“土壤温湿度数据:”。当温度、湿度数据从传感器回传至树莓派主机后,树莓派主机会根据回传的数据信息解析出具体的温度、湿度值,并将这些值与预先设定的控制语句拼接,通过串口发送到串口屏来控制串口屏刷新显示,继而显

温馨提示

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

评论

0/150

提交评论