基于单片机的自动浇花系统设计

news2024/12/27 12:57:47

摘要:快节奏的生活导致人们忙于工作而无暇顾及家中植物的及时浇水,影响了植物的生长发育,
也降低了其种植成功率。针对上述问题,该文设计了一种自动浇花系统,该系统能在无人环境下
根据土壤湿度情况自动启动,完成浇水动作,解决种植户的后顾之忧。该系统采用土壤湿度传感
器对土壤湿度进行实时采集,同时在LCD上显示,采用AT89C52单片机对数据进行处理,根据预设好的湿度上下限,控制水泵驱动电路,启动浇水执行单元执行浇水动作,使植物的土壤湿度能够保持在其生长所需水分的合适范围内,保证其健康生长。通过Keil C51软件编写源代码,使用Proteus进行仿真测试,研究结果表明,该系统可根据预设土壤湿度值进行自动植物喷淋。
关键词:湿度传感器;ADC0832;浇花;自动控制

随着人们对美好生活标准的不断提高,许多居民为美化生活环境和净化空气,在家里种植了盆栽植物。但忙碌的生活使得人们很多时候无法及时给盆栽植物浇水,大大影响植物的正常生长和存活
率。为保证家中绿植的生命活力,研制并开发一种自动浇花装置就很有必要。目前,市面上的自动浇水装置,一般通过人为在定时器上设定时间,计时清零时执行浇水动作实现,时间的设定依赖于种植户对绿植的养植经验,并不能根据植物所需和实际土壤状况实施较为精准的浇水动作。为解决上述问题,保证自动浇水的及时性和精确性,该文设计了一种以土壤湿度为依据的自动浇花系统,可使土壤湿度保持在合适的范围内,有利于绿色植物的健康成长。

1 硬件系统设计

自动浇花系统设计采用AT89C52 单片机为核心,其中按键电路、ADC0832 采样电路是输入模块,输出模块为水泵控制电路和LCD 液晶显示电路,总电源电路为各模块供电。
土壤湿度传感器可以获取当前的土壤水分信息,将采集到的模拟量转换成数字量,通过单片机进行传输,然后在LCD液晶屏上显示。通过单片机内置的判断程序语句来选择是否浇水。当湿度低于预设的湿度值时,单片机系统发出浇水信号,驱动水泵开始浇水,达到智能浇水的目的。系统硬件框图如图1所示。

1.1 电源电路设计

电源电路使用的硬件接口是直流电源插座DC,可连接USB 电源线接5 V 电源。LED 作为系统运行的指示灯,其中串联的电阻R7大小为1 kΩ,对LED灯起到限流保护的作用,可防止灯泡因电流过大而烧坏,导致系统故障。自锁开关SW的功能是按下开关红灯亮,同时输出5 V电源,电源电路如图2所示。

1.2 水泵控制电路设计

微型水泵的作用主要是将水输送到花盆里面[5],水泵控制电路如图3所示。水泵是将电机的机械能转化为抽送液体的动能从而达到抽送液体目的。在该电路中,LED 灯是黄颜色的,它的亮与暗可以反馈水泵是否正常工作。限流电阻R8大小为1 kΩ,作用是保护LED 灯不会因过流而烧坏,保证系统的正常运行。当单片机对应的控制引脚为低电平时,三极管打开,水泵正常工作。另外,电解电容的作用是滤除泵电源的低频参数,使水泵工作更加稳定,水泵为水流的传输提供了渠道,使得浇花变得更加方便。

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

土壤湿度检测电路如图4所示。其中ADC0832是一种8位A/D转换芯片,芯片转换时间短,转换速度快。土壤湿度传感器先检测土壤湿度,采集的实时土壤湿度会与单片机预先设定的湿度相比较,作为是否发出浇水信号的重要依据。ADC0832选择模拟输入通道CH0 作为土壤湿度检测信号采集口,将土壤湿度传感器采集的数字信号转换为模拟电压信号,经过STC89C52 单片机传输到LCD 液晶显示屏上实时显示土壤湿度。

1.4 LCD 液晶显示电路设计

LCD1602液晶屏驱动电路模块的作用是将显示字符的ASCII 码写入内部的显示数据存储器,通过LCD 液晶屏显示该字符[9]。LCD液晶显示电路如图5所示。

选用的LCD 具有14条引脚线,其各引脚的作用如表1所示。

LCD 显示的每个字符都是由点阵组成的,在编程显示时只需将对应的点置1,就可以显示字符。通过LCD 液晶接收显示信号,每个字符点都会保持其原始颜色和亮度,并继续发光。这与数码管显示的机制不同,数码管动态显示时由于人眼的视觉暂留效果,通过循环扫描每一位数码管实现。因此,选用LCD显示器可以提高图像显示效果并且不会闪烁。

1.5 按键电路设计

这个轻触按键起着电子开关的作用,其功能主要是通过按钮内部的金属弹片力来实现的。初始化情况下,单片机的按键控制引脚为高电平。当按键被按下时,单片机的相关引脚由高电平变为低电平,同时运行该键的功能程序,所以系统可以通过按键手动配置湿度信息。按键电路如图6所示。

1.6 AT89C52 单片机

选用AT89C52 单片机作为整个系统的控制核心,其具有8 位CPU,为自动浇花系统的运行提供高速运算支撑,8k 的Flash 存储器可以反复擦写,有利于该系统的优化改良。内部存储器用于储存土壤湿度信息,按下设置键后预设的土壤湿度值由中断系统实现。定时计数器为预设湿度值的增减作计数支撑,32个双向的I/O是单片机数据流动的桥梁。该单片机具有高度集成性,拥有掉电存储功能,适用于自动浇花系统的开发,其单片机引脚图如图7所示。

2 系统程序设计

土壤湿度检测与自动灌溉系统流程图如图8所示。根据绿色植物品种对土壤湿度的实际需求,提前设定土壤含水量的预设值,如30%。将土壤湿度传感器实时检测的湿度含量与预设的湿度值进行比较,判断是否需要进行浇水。

2.1 部分代码

部分代码如下:
#include <reg52.h>//程序头函数
#include <intrins.h>//包含头文件
#include <display.h> //显示函数
#include "eeprom52.h"
#define uint unsigned int //宏定义
#define uchar unsigned char
//管脚声明
sbit CS = P1^4;
sbit Clk = P1^2;

sbit DATO = P1^3;//ADC0832引脚
sbit san=P3^4;//继电器
sbit Key1=P2^6;//按键
sbit Key2=P2^7;
sbit Key3=P3^7;
//定义全局变量
unsigned char dat = 0;//AD值
unsigned char CH=0;//通道变量
unsigned int sum=0;//平均值计算时的总数
unsigned char m=0;
bit bdata flag;//定义位变量
uchar set;//设置变量
uchar full_range=153;
//函数声明
extern void Key();
char MH=70,ML=30;//上下限变量
//把数据保存到单片机内部eeprom中
void write_eeprom()
{ SectorErase(0x2000);
byte_write(0x2000, MH);
byte_write(0x2001, ML);
byte_write(0x2060, a_a);
}/
/把数据从单片机内部eeprom中读出来
void read_eeprom()
{ MH = byte_read(0x2000);
ML = byte_read(0x2001);
a_a = byte_read(0x2060);
}/
/开机自检eeprom初始化
void init_eeprom()
{ read_eeprom();//先读
if(a_a != 1)
}/
/新的单片机初始化,访问eeprom
{ MH = 70;
ML = 30;
a_a = 1;
write_eeprom();//保存数据
}/
/定时器设定
void init() //定时器初始化函数
{ TMOD=0x01;//定时器工作方式
TL0=0xb0;
TH0=0x3c;//赋初值50ms
EA=1;//打开中断总开关
ET0=1;//打开定时器0中断允许开关
TR0=1;//打开定时器0定时开关
}

2.2 系统仿真测试

系统初始化后采集当前环境的湿度值。完成A/D转换后,设置好预置湿度值,传输到LCD液晶屏上显示信息,系统确定当前土壤湿度和预设土壤湿度之间的关系。如果低于设定值的30%,继电器驱动水泵进行灌溉;如果高于设定值的70%,则继电器和水泵不工作。湿度传感器可以实时获取当前的土壤湿度。当浇水过程中土壤含水量大于设定值时,浇水过程结束。LCD显示湿度图如图9所示,LCD1602第一行显示了土壤当前湿度,第二行显示人为预设值,可以通过设置键调整土壤湿度上下限,按下增大键湿度加一,反之按下减少键湿度减一,再次按下设置键退出设置程序。

Proteus 仿真测试结果表明,进入自动浇花系统后,先预设土壤的湿度值。根据土壤湿度传感器采集的数据与预设湿度值对比进行判断,再进入程序处理。当湿度值小于预设值时,进入水泵电机驱动程序并启动浇花功能,直到达到预设湿度。自动浇水系统能对绿色植物进行监测,并能准确反馈土壤湿度信息,根据植物对土壤湿度的实际需求进行实时浇水。

3 结束语

该设计主要研究了土壤湿度与植物所需水分灌溉量之间的关系,使得绿色植物在生长过程中,其土
壤湿度一直保持在合适的范围内。选用AT89C52型单片机,在Keil软件上采用C51语言编写程序,最后运用Proteus进行仿真测试,验证了系统的可行性和稳定性。当湿度低于预设值时,单片机发出浇水信号,水泵系统开始浇水,达到预设土壤湿度值后停止浇水。它适用于没有时间照顾花草的用户,为绿色植物的管理提供了方便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1420379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第16章_网络编程(网络通信要素,TCP与UDP协议,网络编程API,TCP网络编程,UDP网络编程,URL编程)

文章目录 第16章_网络编程本章专题与脉络1. 网络编程概述1.1 软件架构1.2 网络基础 2. 网络通信要素2.1 如何实现网络中的主机互相通信2.2 通信要素一&#xff1a;IP地址和域名2.2.1 IP地址2.2.2 域名 2.3 通信要素二&#xff1a;端口号2.4 通信要素三&#xff1a;网络通信协议…

Centos 7.9 安装 Veracrypt-1.26.7

1 下载 veracrypt-1.26.7-CentOS-7-x86_64.rpm VeraCrypt - Free Open source disk encryption with strong security for the Paranoid 2 切换到下载目录&#xff0c;打开终端&#xff0c;切换到管理员用户 运行 yum install veracrypt-1.26.7-CentOS-7-x86_64.rpm 3 安装完…

一文掌握 Golang 加密:crypto/cipher 标准库全面指南

一文掌握 Golang 加密&#xff1a;crypto/cipher 标准库全面指南 引言Golang 和加密简介crypto/cipher 库概览使用 crypto/cipher 实现加密高级功能和技巧最佳实践和性能优化总结资源推荐 引言 在现代软件开发领域&#xff0c;安全性是一个不容忽视的重要议题。随着信息技术的…

Java开发分析中文 ---- JProfiler 13

JProfiler 13是一款专业的Java应用程序性能分析工具&#xff0c;可以快速诊断和优化Java应用程序的性能问题。它支持多种操作系统和应用服务器&#xff0c;提供实时性能监控、CPU分析、内存分析、线程分析和数据库访问分析等功能。使用JProfiler 13可以深入了解应用程序的性能和…

修复TabbarButton 中标题展示不完全的问题

遇到一个问题&#xff0c;就是从列表页跳转到详情页之后&#xff0c;再返回的时候&#xff0c;tabbarbutton 中的文字变成…了 打开图层&#xff0c;如图所示&#xff0c; 标题的宽度不够了&#xff0c;本来是23的&#xff0c;返回之后变成20了。 这里就添加了一个容错&#…

Qt/C++音视频开发64-共享解码线程/重复利用解码/极低CPU占用/画面同步/进度同步

一、前言 共享解码线程主要是为了降低CPU占用&#xff0c;重复利用解码&#xff0c;毕竟在一个监控系统中&#xff0c;很可能打开了同一个地址&#xff0c;需要在多个不同的窗口中播放&#xff0c;形成多屏渲染的效果&#xff0c;做到真正的完全的画面同步&#xff0c;在主解码…

Linux(CentOS7)常见指令的常见用法(上)

指令功能hostname查看当前的主机名hostnamectl set-hostname修改主机名adduser添加用户passwd给用户设置密码userdel -r 删除用户ls显示某路径下的文件名ls -l ll 显示某路径下每个文件及其属性ls -la ls -al 显示某路径下所有文件包括隐藏文件及属性ls -d只看指定文件夹&…

作业车间调度问题:P还是NP

获取更多资讯&#xff0c;赶快关注上面的公众号吧&#xff01; 文章目录 基本概念多项式时间指数时间 P问题&#xff08;多项式问题&#xff09;NP问题&#xff08;非确定性多项式问题&#xff09;暴力穷举法动态规划 P与NP关系&#xff1a;作业车间调度问题是典型的NP难问题 …

源码篇--Redis 通信协议

文章目录 前言一、Redis 的通信过程&#xff1a;二、RESP 协议&#xff1a;三、客户端模拟RESP 通信&#xff1a;总结 前言 在我们知道redis 的网络模型后&#xff0c;继续看下 redis 的通信协议。 一、Redis 的通信过程&#xff1a; Redis是一个CS架构的软件&#xff0c;通信…

[GXYCTF2019]禁止套娃(特详解)

刚打开页面什么都没有&#xff0c;抓包也什么都没有 那就dirsaerch扫一下&#xff0c;发现状态码都是429&#xff0c;访问太快了&#xff08;这里很多师傅都没有说明或者说清楚&#xff09; 这里改了一下线程&#xff08;kali自带的&#xff0c;如果用的脚本要加前面要加python…

【vue】图片加载骨架

一、前言 在网速较低或者网站的服务器宽带只有几MB的情况下&#xff0c;网页中的图片加载时&#xff0c;要么空白&#xff0c;要么像打印机一样一行一行地“扫描”出来&#xff0c;为了提升用户体验&#xff0c;可以给图片标签外加一层骨架。 无骨架 有骨架 二、详细设计 每张…

Mysql 删除数据

从数据表中删除数据使用DELETE语句&#xff0c;DELETE语句允许WHERE子句指定删除条件。DELETE语句基本语法格式如下&#xff1a; DELETE FROM table_name [WHERE <condition>]; table_name指定要执行删除操作的表&#xff1b;“[WHERE <condition>]”为可选参数&a…

宠物用品/宠物自动饮水机方案

宠物自动饮水机方案原理 宠物自动饮水机&#xff0c;也叫做智能宠物饮水机&#xff0c;是一种为宠物设计的智能化饮水器。应用核心主要在于智能化水泵控制&#xff0c;以及外围传感器电路。 宠物自动饮水机使用方便&#xff0c;不用频繁的换水。另外&#xff0c;自来水的水质可…

二阶魔方、四阶魔方 还原公式图文教程

二阶魔方 四阶魔方 在家无聊&#xff0c;翻东西的时候看到了以前买的4阶魔方&#xff0c;就随便在网上复制了一个4阶魔方的教程&#xff0c;以免忘记。 本文四阶魔方公式图解是针对四阶魔方教程的降阶法做更多的解释和说明。 四阶魔方被认为是2-5阶魔方玩法中最不好复原的,虽…

一文说清楚仿真与数字孪生的关系

获取更多资讯&#xff0c;赶快关注上面的公众号吧&#xff01; 文章目录 何为仿真何为数字孪生 最近看群里的小伙伴在疯狂讨论数字孪生&#xff0c;今天我也谈谈自己的理解。 之前还在北航读博的时候&#xff0c;北航陶飞教授已经算是数字孪生领域的领军人物&#xff0c;也专门…

Ubuntu 隐藏Telnet主机SSH服务时显示版本信息问题

一、背景 默认情况下&#xff0c;我们通过telnet服务器的22端口&#xff0c;能够获取OpenSSH服务的banner信息(如下图所示)。而低版本的OpenSSH存在许多高危漏洞。。为了安全我们要隐藏这个信息。 二、隐藏Telnet版本信息 当使用telnet命令&#xff0c;telnet 192.168.31.20…

SeaTunnel Web安装 一把成

安装相关jar包&#xff0c;以及SeaTunnel 和Web 打成的包&#xff0c;可以直接使用&#xff0c;但是需要安装MySQL客户端的分享&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1qrt1RAX38SgIpNklbQJ7pA 提取码&#xff1a;0kmf 1. 环境准备 环境名称版本系统环境C…

WPOpenSocial实现WordPress的QQ登录

个人建站不可避免的需要自己搭建用户数据库的问题&#xff0c;可用户却往往因为注册繁琐而放弃浏览您的网站&#xff0c;由此可见&#xff0c;一个社交账号一键登录方式尤为重要。选择适合您网站需求的社交插件&#xff0c;可以提升用户互动&#xff0c;增加社交分享&#xff0…

高端车规MCU的破局之路

目录 1 低质量的无效内卷 2 高端车规MCU产品共性 2.1 支持标定测量 2.2 低延迟通信加速 2.3 完备的网络安全解决方案 2.4虚拟化 3 国产替代的囚徒困境 1 低质量的无效内卷 近几年&#xff0c;车规MCU国产替代的呼声此消彼长&#xff0c;但仍然集中在低端产品。 从产…

后序遍历的线索化二叉树

对于后序遍历&#xff0c;需要明确&#xff0c;往往叶子结点&#xff0c;只能指向右子树&#xff08;如果右子树存在的情况&#xff09;&#xff0c;或者指向该结点&#xff08;因为这才是后序遍历&#xff09;&#xff0c;同样在进行退出到前一次递归的时候&#xff0c;我们要…