主页 > 案例大全 > 论文知识案例-基于STM32的智能花卉养殖系统

论文知识案例-基于STM32的智能花卉养殖系统

2021-04-30 15:32:42

  随着我国经济的发展物联网技术的提高,人们对生活品质的要求越来越高。花卉作为一种提高生活品质的物品逐渐走进人们的生活。然而现阶段年轻人的工作较为繁忙,工作时间长压力大,往往没有过多的时间去养殖花卉,为满足年轻人对生活品质的追求,家庭花卉的养殖必然走向自动化。设计和实现一种智能自动养殖花卉的灌溉系统是非常必要的。结合单片机技术,针对多品种花卉、复杂养殖环境,系统可智能调控养殖方式。从而达到不花时间或花极少量时间即可养殖任何品种的花卉的效果,有效提高人们的生活品质。本文主要内容如下:

  (1)结合STM32单片机技术,采用传感器获取环境信息,设计并实现多品种花卉养殖模式,实现花卉养殖的智能化。

  (2)结合模块化思想,设计功能模块开发传感器,保证养殖花卉的所有功能可正常工作。

  (3)结合环境状态分析和土壤蒸发量分析设计需水量算法,保证复杂环境下的水量供应。

  从功能和模式两个方面对整个系统进行测试。

  随着社会的发展人们生活水平的提高,我国越来越的年轻人开始养殖花卉陶冶情操。但是因为生活压力大、工作强度高等原因,现在年轻人虽有养殖更多花卉的心思,却没有打理灌溉花卉的时间,甚至于加班数天不回家,导致目前年轻人的家中以仙人掌仙人球类旱性植物为多,没有赏心悦目的中性花卉。

  现在阶段虽已有部分自动灌溉花卉的养殖系统在网购网站上贩卖,但大多结构简单功能单一,单纯以传感器传输电平控制继电器驱动水泵,浇水量始终与土壤湿度有关,并未对植物的种类进行分类,无法灌溉水性植物和旱性植物。且因为同一株花卉在不同季节不同温度下所需要的灌溉的水量不同,该自动灌溉养殖系统无法满足不同季节下的花卉灌溉要求。

  本课题使用模块化思想,利用多传感器测量环境参数,根据环境的不同对植物进行智能灌溉,同时在系统内内置水性植物、中性植物、旱性植物的三种灌溉模式,保证该智能花卉养殖系统可以适用于各类植物的灌溉养殖。

  1.2国内外现状

  1.2.1国内现状

  目前,我国已有类似创意,但是制作并不精细也不够实用。现阶段网上所售的自动灌溉系统只有简单的土壤湿度传感器、继电器和水泵。只能通过土壤湿度传感器传回的高低电平直接操作继电器控制水泵出水。这样的灌溉系统有很大问题。如果土壤湿度传感器插入土中不够深入,则水泵出水量少,水只在土壤表面;如果传感器插入土壤太深会导致水泵出水量过大致使植物根茎腐烂。且夏季和冬季因温度的不同水的蒸发量不同,相同的水量在夏季和冬季会出现夏季蒸发冬季下渗的情况,现阶段的自动灌溉系统并不能解决不同季节的花卉灌溉问题。且植物的种类繁多,但就灌溉而言可分为水性植物、中性植物、旱性植物。传统的自动灌溉系统并不能满足水性植物和旱性植物的养殖要求。

  1.2.2国外现状

  目前,国外因为人少地多,不断改进农业机械技术,用农用机械代替人力畜力。2004年农业物联网被列入日本政府计划,提出了U-Japan计划力求实现人与人、物与物、人与物相连,现阶段日本已经利用数字技术、传感技术和远程控制等技术让消费者可以自主远程控制已有农产品生产。美国应用“5S技术”,智能化农机技术形成农业精细化、规模化发展只会农业生产线系统。但是国外大多技术都是着重于农业生产,量产农产品,并没有针对个人家庭的观赏性植物的养殖系统。

  1.3课题的关键技术

  1.3.1 STM32单片机

  本设计中使用到了STM32单片机。STM32单片机的诞生是因为现阶段的市场竞争激烈,传统八位51单片机已经不能完全满足产品的需求。研发人员急需一种功耗低、功能多、易使用的新单片机。而ARM公司推出的Cortex-M3内核,由意法半导体ST公司研发推出的MCU-STM32便应运而生。现在市面上流通的单片机主要是STM32F0、STM32F1、STM32F2三种类型的单片机。STM32单片机的功能极其强大可以制作智能手环、四轴飞行器、平衡车等产品。而其开发步骤也比较简单一半分为4个步骤:

  (1)功能设计

  功能设计是基于目标产品的功能,将产品所需传感器模块化,设计每一部分所需要的功能,并将传感器的位置所需引脚接口设计好。

  提前将所有的传感器引脚接口设计好,可防止开发途中出现引脚接口冲突的情况。

  (2)制作传感器库文件

  将传感器的功能通过数据手册编写好,并测试。将所有的传感器功能全部编写成各自的库文件,便于开发时的直接调用所需的功能,避免开发途中再去编写功能函数造成时间上的浪费。

  提前完成库函数制作可大大缩短开发时间。

  (3)功能组合

  将所有的传感器库函数集中到开发项目中,通过调用库文件和库文件中的方法使用各类传感器,并将传感器传回的数据收集起来进行数据分析,通过数据分析对工作组件进行调整或输出数据。

  (4)编译和烧录

  Keil5软件可将所完成的程序进行编译生成axf文件和hex文件,该文件可烧录入STM32单片机中。根据开发人员的不同需求,可利用仿真器烧录或串口烧录完成程序开发。

  图1.1 STM32开发设计流程图

  本系统使用的是STM32F1型单片机。

  1.3.2 STM32库开发

  STM32的开发分为寄存器开发和库开发。本项目使用库开发。STM32库开发本质上是对外设寄存器直接编程,为了方便应用封装成库。在开发时同样需要将传感器的操作函数编写成库方便开发。

  新建一个库函数开发工程该工程会有一下几个文件夹:

  Libraries:含有库文件CMSIS和FWLIB,CMSIS是CM3 kernel,FWLIB是BSP软件包;

  Project:是开发工具Keil5创建工程需要保存的目录;

  User:开发者创建.c文件和.h文件存放目录;

  Output:生成的axf文件hex文件存放目录。

  应用程序的调动过程如下:

  图1.2应用程序的调动过程

  1.4课题主要研究内容和章节安排

  本课题设计主要利用STM32开发板、土壤湿度检测传感器、DHT11温湿度传感器,3-6V水泵、OLED显示等设计与实现。本课题的研究过程中需要完成如下工作:

  (1)外设电路的硬件设计:使用Altium Designer Realese10软件在电脑上实现外设电路的原理图和PCB设计,然后根据PCB图纸制作电路板,焊接所需的各种元器件。并对该电路板进行硬件的检测和调试,使外设电路板稳定可靠。

  (2)水位监测系统的设计:使用土壤湿度传感器放入水槽下部,通过该传感器返回的数值判定水位的高低。

  (3)灌溉系统设计:使用土壤湿度传感器对花卉的根系土壤监测,根据其返回至STM32单片机的数据调控水泵的工作。

  (4)环境监控设计:使用DHT11温湿度传感器对环境温湿度监控,通过分析传感器传回的数据确定花卉所处的环境温湿度并调节水泵工作。

  (5)显示设计:使用OLED显示器显示当前的环境温湿度并显示当前的模式(水性植物“water plants”,中性植物“indelerminate”,旱性植物“dry plants”)和水位信息(水槽有水显示为“enough”,水槽缺水显示为“scarce”),同时在水槽缺水时利用流水灯显示报警信息。

  (6)模式设计:使用按键和逻辑算法设计可人为根据花卉种类更改的花卉灌溉养殖模式,不同模式下工作的方式均有区别。

  本论文共分为六个章节,以下是各个章节的简单介绍:

  第一章为绪论。主要介绍课题课题研究的意义、课题研究的国内外研究现状、课题的关键技术、课题的应用背景以及论文的总体安排。

  第二章为STM32智能花卉养殖系统的总体设计方案,比较系统地介绍了设计的定位、设计框架。

  第三章为硬件系统的设计与实现,该章节主要分析作者是如何实现本课题硬件开发的具体设计。

  第四章为数据分析算法及模式设计,该章节主要介绍了对传感器传回数据的分析,并设计算法分析系统所应用的环境及水泵合理的工作量,且可通过按键调整和更改该智能花卉养殖系统的工作模式。

  第五章为智能花卉养殖系统的软硬件调试,主要介绍调试阶段产生的现象。

  第六章为总结,主要对本课题所作的研究工作进行总结。

  2总体设计方案

  2.1总体设计

  总体设计方案包括:应用场景、设计定位、土壤湿度及蒸发量数据分析框架设计、环境温湿度及环境状态数据分析四个部分,以自顶向下的方式逐步分析本设计方案的具体内容。

  2.1.1课题的应用场景

  本课题应用于家庭等室内少量花卉养殖,要求小巧方便使用,且能适用于各类花卉的养殖。以下是智能花卉养殖系统的大致工作流程:

  智能花卉养殖系统分为三大部分:STM32MCU;环境检测及数据分析;灌溉系统。STM32MCU为系统的核心负责系统的电源供给,数据计算。环境检测利用DHT11温湿度传感器,功能齐全,根据李博宇、庞旭龙等人的研究[1]可以通过对温度及水蒸发量的计算判断是否属于干旱环境,再根据植物特性调整灌溉水量。灌溉系统为一个3-6V直流泵机可保证绝对安全同时不会出现因为出水量过大导致水漫出的情况。

  本课题是对室内花卉养殖的场景设计的,故所有需求和实现均结合室内花卉养殖的条件下设计并实现的。

  智能花卉养殖系统的工作流程如下:

  (1)用户设置针对所需要灌溉养殖的花卉品种的模式(水性植物/中性植物/旱性植物);

  (2)DHT11传感器获取环境温湿度,STM32MCU分析数据并判断植物所处环境;

  (3)土壤湿度传感器对土壤湿度进行测量,STM32MCU分析是否需要启动水泵;

  (4)若需要启动水泵灌溉,数据分析的结果决定水泵需要启动多长时间出水量是多少;

  (5)水槽水位由土壤湿度进行测量,测量结果分为有水和无水,若有水传出有水的信息,若无水则传出无水的信息;

  (6)OLED显示器会显示当前灌溉模式、水槽水量、环境温湿度和水槽是否报警的信息。[]

  2.1.2设计定位

  本文介绍的是针对室内的植物养殖的智能养殖系统,其工作流程如下图:

  图2.1智能花卉养殖系统模块工作流程图

  2.1.3土壤湿度及蒸发量数据分析框架

  本设计是根据张兴娟,王志敏等人对土壤蒸发量的研究[2],对中性植物不以传感器传回彻底干燥的信息为启动水泵的信号,以蒸发量为依据并对当前土壤含水量经行数据分析,得到结果后才会发出启动水泵的信号。

  2.1.4环境温湿度及环境状态数据分析框架

  DHT11环境温湿度传感器可精确测量环境的温度与湿度。根据邱振存等人的研究[3]可以分析出当前的环境是属于什么类型的环境(冷湿型、冷干型等),再根据其环境的不同获取蒸腾量范围,通过数据分析得到净需水量。

  3硬件系统的设计与实现

  本系统是先对传感器电路进行设计,再通过写传感器所需库文件,再利用库函数调用传感器方法完成传感器系统的设计。

  3.1电路设计

  3.1.1DHT11电路设计

  如上图所示,DHT11总共有4个接口,其中NC口悬空,VCC口为STM32单片机的3.3V接口,GND为STM32单片机的GND接口。数据口为DATA,根据设计要求进行更改。本设计中,将DHT11的数据接口放置于STM32B8口采集数据。

  3.1.2土壤湿度传感器电路设计

  如上图所示,土壤湿度传感器分为两个部分:其一为叉形双头镀镍传感器,是直接接触土壤获取湿度的传感器,该传感器有两个引脚无正负极直接接到比较器中。比较器为4引脚输出,其中DO口悬空,VCC口为STM32单片机的3.3V接口,GND为STTM32单片机的GND接口。AO口为数据口,根据设计要求更改。本设计中,将土壤湿度传感器的数据口放置于STM32C1口采集数据。

  3.1.3OLED7针显示器电路设计

  如上图所示,OLED为7针显示传感器。共7个接口,其中GND接STM32的GND接口,VCC接STM323.3V接口,D0口为时钟接口,D1口为主输出从输入接口,RES为复位接口,DC口为数据/控制接口,CS为片选接口。所有接口课根据设计要求更改。本设计中,时钟接口D0放置于STM32A7口,主输入从输出接口D1放置于STM32A8口,复位接口RES放置于STM32A5口,数据/控制接口DC放置于STM32A6口,片选接口CS放置于STM32A4口,用于传输数据。

  3.2传感器库文件的编写

  STM32单片机使用传感器需要对寄存器进行配置,过程较为繁琐且寄存器操作较多,如果在开发时配置寄存器然后再写方法会大大降低代码的健壮性,影响开发进度降低开发效率,也易出错。故在设计完所有的传感器的位置功能后就开始编写库文件设计传感器的功能函数,以便后续开发的快速有效进行。

  3.2.1DHT11库文件编写

  DHT11为单线双向传感器,每次传输数据时间为4ms,分为整数部分和小数部分,每次传输的数据为40bit,高位优先。数据格式为8bit的湿度整数部分数据、8bit的湿度小数部分数据、8bit温度整数部分数据、8bit温度小数部分数据、8bit校验位。

  数字信号0和1的区别为数据0的高电平持续时间为26-28us,数据1的高电平持续时间为70us。

  库文件中定义无符号char类型humi_int、humi_deci、temp_int、temp_deci分别对应上述湿度整数部分、湿度小数部分、温度整数部分、温度小数部分,最后定义一个check_sum用于存放校验。

  工作方式为主机设为输入判断从传感器传回的响应信号,传感器相应80us低电平响应信号80us高电平标置信号,响应信号结束标置信号结束开始接收数据,所有数据接收完毕判断校验位,校验位数据为温湿度所有数据的数据和,如正确,输出数据;若不正确,输出出错。

  图3.1DHT11数据传输过程图

  库文件定义了DHT11的初始化函数DHT11_Init,配置I/O口的方法DHT11_GPIO_Config,改变引脚输入输出模式的方法DHT11_Mode_IPU/DHT11_Mode_Out_PP,高先行先行读取一个字节数据的方法DHT11_ReadByte,高位先出读取完整40bit数据的方法DHT11_Read_TempAndHumidity。

  3.2.2OLED显示器库文件编写

  OLED显示器为7针OLED显示屏支持IIC或SPI数据传输。D0口为时钟线(IIC/SPI时钟线),D1口为数据线(IIC/SPI数据线),RES为复位脚,DCSPI数据/命令选择脚或IIC接口设置地址脚、CSOLEDSPI片选低电平有效。显存存放格式为竖方向[0]-[8]位数组,每一个数组范围为8个像素点,每个数组内存在0-127个数据值,指代横方向128个像素点。

  库文件中编写写字节命令OLED_WR_Byte,坐标判断方法OLED_Set_Pos,开关OLED显示命令OLED_Display_On/OLED_Display_Off,清屏命令OLED_Clear,显示字符方法OLED_ShowChar,显示数字方法OLED_ShowNum,显示字符串方法OLED_ShowString。显示汉字方法OLED_ShowCHinese,显示图片方法OLED_DrawBMP,初始化命令OLED_Init。

  3.3传感器实施

  调用库函数实施各类传感器的功能。完成环境温湿度数据采集,获得土壤湿度,监测水位高度,操作供水水泵,OLED上显示当前的环境温湿度土壤湿度。

  3.3.1DHT11的实现

  DHT11传感器传回humi_int、humi_deci、temp_int、temp_deci数据。数据校验为check_sum的数值等于humi_int、humi_deci、temp_int、temp_deci四个数值的和,经校验数据无误后,将数据传入OLED显示器显示。

  3.3.2土壤湿度传感器的实现

  土壤湿度传感器传回数据根据所测土壤的导电性强弱判断湿度不同,湿度不同传回不同电平以此来判断土壤的湿度。当湿度低于阈值时D0传回高电平,湿度高于阈值时D0传回低电平。故使用ADC电路获取传回的电平的具体电压,根据具体电压获得土壤湿度。

  3.3.3水泵的实现

  智能花卉养殖系统服务的花卉需水量并不大,故使用3-6V直流泵机,stm32单片机推挽输出可以输出3.3V高电平,开漏输出可以输出5V高电平,推挽输出、开漏输出皆可输出1.3V低电平,但是添加水泵后推挽输出的高电平会因为有负载降低成0.3V,低电平会降低到0.05V;开漏输出的高电平会降低到1.3V,无法驱动水泵的启动。故使用推挽输出的输出模式,外接三节电池盒4.5V电源供电,使用低电平触发继电器控制水泵的启动与关闭。

  3.3.4供水壶水位检测器的实现

  供水壶的水位监测由另一个土壤湿度传感器监测。土壤湿度传感器的原理是传感器之间是否导电来确定土壤是否湿润,根据导电性强弱判断土壤湿度的具体数值。故该传感器只要两个引脚之间可以导电就可以触发传感器传回信息,由此该传感器可以应用于其他有关导电性的功能中比如可用于测量供水壶的水位高度。

  将土壤湿度传感器放入供水壶内,水位下降时由于重力作用土壤湿度传感器两个传感脚呈现一上一下的位置,当水位下降到一定程度,下方传感脚被水浸没上方传感脚悬空时土壤湿度传感器判定此时不导电,意味着水位不足,流水灯开始闪烁报警提示用户需要给供水壶加水。

  4数据分析算法及模式设计

  传感器传回的数据只有单一的数值,必须经由算法分析才能获得该系统所需要的信息。温湿度传感器传回温度和湿度,需要进行数据分析算法转换后获得具体的环境状态(湿冷、干冷、湿热、干热等);土壤湿度传感器传回数据为具体电压值,在湿度非常高几乎浸没于水中的状态下土壤湿度传感器传回电压为1.3V,干燥状态下土壤湿度传感器传回电压为3V,单纯的电压并不能说明什么,需要使用数据分析算法获得当前状态下土壤的湿度状态(水中、湿、润、半干、干等)。

  模式设计方面,由于智能花卉养殖系统考虑到家庭植物养殖种类繁多,存在水仙、风信子等水性植物;海棠、兰花等中性植物;仙人掌、景天等旱性植物。故针对常见的植物种类制作了智能花卉养殖系统的工作模式。

  4.1环境状态数据分析及需水量算法设计

  气候类型根据环境不同可分为冷湿型、冷干型、暖湿型、暖干型、热湿型、热干型。环境类型类型区别为温度小于21℃为冷型,温度大于等于21℃小于小于32℃为暖型,大于32℃为热型。环境湿度类型区别为湿度大于50%为湿型,湿度小于50%为干型。

  根据植物需水量计算方式:

  WR=ET×K(1)

  其中WR为植物需水量单位为mm/d;ET为参考作物腾发量单位为mm/d;K为园林系数。参考作物腾发量如下表:

  图4.1参考作物腾发量

  园林系数主要是由植物种类因子Ks、密度因子Kd、小气候因子Km综合影响。影响计算式如下:

  K=KsKdKm(2)

  其中K为园林系数,Ks为植物种类因子Kd为密度因子Km为小气候因子。三者参考量如下表:

  图4.2植物种类系数

  图4.3密度因子

  图4.4小气候因子

  由于使用环境为家庭养殖故植物种类为地被植物区平均量,种植密度区最低量家庭养殖除温度湿度气候影响外其余小气候影响低小气候因子取最低值。K值为0.25。需水量根据温湿度传感器传回数据由(1)式计算获取。

  经过实践考察发现水性植物在环境温度的影响下需水量变化较大,但是环境湿度对其需水量基本没有影响。而中性植物和旱性植物经实践考察发现环境温湿度对其需水量均有影响。

  4.2土壤蒸发量数据分析算法设计

  土壤相对蒸发量RE(Relative Evaporation)为时段内一次性供水处理土壤蒸发所消耗能量与充分供水处理土壤表层水量蒸发消耗能量的比值,公式如下:

  图4.5土壤相对蒸发量RE公式

  λ为汽化热潜能单位为KJ/Kg;、为一次性供水处理土壤表层蒸发速率级其时段蒸发量单位为mm;、为充分供水处理土壤表层蒸发速率及其时段蒸发量单位为mm;t1、t2为时段初末时刻。

  家庭植物养殖主要使用泥炭土透气性好颗粒大腐殖质多,类似粉壤土,黏粒约占10%粉粒约占71%沙粒约占19%。根据土壤蒸发量于土壤表层温度的研究[4]在灌溉后五天内蒸发量保持在0.8左右,随后第5天到第10天蒸发速率岁土壤含水率的减小而减小,最后为水汽扩散阶段相对蒸发量位置在0.1左右。

  此算法针对中性植物养殖,土壤湿度传感器采集土壤湿度信息,该信息传回STM32单片机,STM32单片机由土壤蒸发量的计算结合环境温湿度和气候类型及需水量操作水泵的启动时间和工作时间。

  4.3环境模式

  根据DHT11温湿度传感器获得的温湿度,STM32根据已获得的数据将环境分为冷湿型、冷干型、暖湿型、暖干型、热湿型、热干型6种。其中环境湿度达到50%以上的湿型气候时,土壤蒸发量会减少,植物需水量较少;环境湿度达到50%以下的干性气候时,土壤蒸发量会增加,植物需水量也会增加。

  温度在21℃以下时气候环境为冷型此时植物需水量会降低;温度在21℃到32℃之间气候环境为暖型,植物需水量在正常的范围之间;温度在32℃以上时气候环境为热型,土壤蒸发量和植物需水量升高。

  环境湿度和温度二者对土壤蒸发量和植物需水量的影响中温度的影响较比湿度影响更大,故模式设计中先考虑温度影响再考虑湿度影响。温度在冷的环境下需水量阈值整体偏低,温度在暖的环境下需水量阈值在居中状态,温度在热的环境下需水量阈值整体偏高;环境湿度高的状态下需水量在温度确定的需水量状态下略微减少,环境湿度低的状态下下需水量在温度确定的需水量状态下略微增加。

  4.4养殖类型模式

  智能花卉养殖系统内置三重养殖模式,需要手动调整。调整为水性植物的模式时需水量整体增加,水泵启动(停止)保证土壤湿度传感器传回的土壤湿度保持在最高水平;调整为中性植物时需水量趋于平均水平,水泵启动(停止)保证土壤湿度处于平均水平;调整为旱性植物时需水量整体减少,水泵启动(停止)保证土壤湿度传感器传回的土壤湿度保持在中等偏下的水平。

  智能花卉养殖系统更改模式的方式为按住按键一秒钟更改当前模式。初始状态即开机时状态为无,随后根据花卉类型通过按键人为调整模式。调整模式后OLED显示屏上会显示出当前的模式,内容为“please choose the pattern”(初始模式)、“water plants”(水性植物模式)、“indelerminate”(中性植物模式)、“dry plants”(旱性植物模式)。

  图5.1初始模式屏幕显示

  图5.2水性植物模式屏幕显示

  图5.1中性植物模式屏幕显示

  图5.1旱性植物模式屏幕显示

  5.运行及调试

  5.1初始模式测试

  本次测试为刚开机没有选择任何状态的测试。测试结果为传感器继续接收数据信息,OLED显示器显示“Please choose the pattern”,水泵不工作。

  图6.1初始状态测试

  5.2养殖模式测试

  本次测试为三组养殖模式的分别测试。测试结果为传感器继续接受数据信息,OLED显示器显示当前环境温湿度、养殖模式及当前供水壶的水位状态。

  5.2.1水性植物养殖模式测试

  本次测试为水性养殖模式测试。测试结果为传感器继续接收数据信息,OLED显示器显示当前环境温湿度,养殖模式“water plants”,显示水位信息“enough”或“scarce”,若显示为“scarce”则LED灯会不断闪烁报警,水泵根据算法反馈结果工作。

  图6.1水性植物模式供水壶缺水状态

  图6.2水性植物模式供水壶有水状态

  5.2.2中性植物养殖模式测试

  本次测试为中性养殖模式测试。测试结果为传感器继续接收数据信息,OLED显示器显示当前环境温湿度,养殖模式“indelerminate”,显示水位信息“enough”或“scarce”,若显示为“scarce”则LED灯会不断闪烁报警,水泵根据算法反馈结果工作。

  图6.3中性植物模式供水壶缺水状态

  图6.4中性植物模式供水壶有水状态

  5.2.3旱性植物养殖模式测试

  本次测试为中性养殖模式测试。测试结果为传感器继续接收数据信息,OLED显示器显示当前环境温湿度,养殖模式“dry plants”,显示水位信息“enough”或“scarce”,若显示为“scarce”则LED灯会不断闪烁报警,水泵根据算法反馈结果工作。