51单片机项目(18)——基于51单片机的大棚环境监测系统

1.功能描述

        首先使用DS18B20,测量土壤温度,并显示在OLED屏幕左边。然后使用土壤湿度传感器测量土壤湿度,因为这个传感器输出的值是模拟量,所以需要使用AD转换模块。本次使用ADC0832,这是一个8位精度的AD转换模块,将土壤湿度传感器输出的模拟量转换为数字量,并送给单片机读取。因为AD的精度为8位,所以转换得到的数字量的范围是0-255.用这个数据量除以256再乘以100就可以得到湿度的百分数(0%-%100)。测出的土壤湿度数据显示在OLED第一行右边。
        然后使用DHT11模块,测空气温度、空气湿度,分别显示在OLED左边、右边。
        最后,系统定义了一个空气温度阈值,显示在屏幕第三行。如果检测到空气温度大于阈值,那么蜂鸣器响,风扇打开。否则蜂鸣器不响,风扇关。系统还定义了一个土壤湿度阈值,如果检测到的土壤湿度阈值低于此阈值,那么打开水泵。

/*
   接线:
   
   DHT11-DAT----->P2.0
   DS18B20-DAT----->P3.7
   
   OLED-SCL----->P1.4
   OLED-SDA----->P1.3
   
   蜂鸣器---->P1.5
   
   风扇---->P2.6
   水泵----->P2.7
   
   ADC0832-CS---->P1.0
   ADC0832-CLK---->P1.1
   ADC0832-DAT---->P1.2
   
   土壤湿度传感器的模拟输出口--->ADC0832的CH0

   L298N需要额外供电,也就是需要另一个电源。
   接线方式:
   L298N的电源端: 12V接 12V/5V  GND接GND
   L298N的IN1---->P2.6
         IN2 不接
         IN3---->P2.7
     IN4 不接
  L298N左边输出端接风扇
    右边输出端接水泵
*/

2.实物图

3.课题意义

        基于51单片机的大棚环境监测系统具有以下几个重要的课题意义:

        1. 提高大棚种植效率:大棚是一种封闭式的种植环境,通过监测和控制关键参数,如温度、湿度、光照等,可以优化植物生长环境,提高种植效率。通过51单片机实时监测环境参数并作出反应,可以及时调整大棚内部的光照、通风、加热等设备,创造适宜的生长环境,提高植物的生长速度和产量。

        2. 降低资源消耗:大棚环境监测系统可以实时监测大棚内部环境的温度、湿度等参数,并根据监测结果自动调整灌溉、通风等设备的运行状态,从而避免资源的浪费和能源的过度消耗。这样不仅能节约水和电,还有助于减少农药的使用,对环境保护起到积极的作用。

        3. 提高农作物质量和口感:通过大棚环境监测系统,可以及时掌握大棚内部环境的变化,并实时调整环境参数,为农作物提供最适宜的生长环境。这样可以提高农作物的质量和口感,使其在市场上具有竞争力。

        4. 实现智能化管理:大棚环境监测系统可以利用51单片机作为中央控制单元,通过传感器收集大棚内部的环境数据,并将数据发送到中央控制单元进行处理和分析。通过网络连接,可以实现对大棚环境的远程监控和控制,实现智能化管理,提高农作物的管理水平和生产效益。

        综上所述,基于51单片机的大棚环境监测系统的课题意义在于提高大棚种植效率,降低资源消耗,提高农作物质量和口感,实现智能化管理。这对于推动农业的可持续发展和提高农民收入具有重要的意义。

4.代码

整个工程的结构如下:

main.c的代码如下

#include "reg51.h"
#include "oled.h"
#include "DHT11.h"
#include "delay.h"
#include "temp.h"	
#include "adc0832.h"/*接线:DHT11-DAT----->P2.0DS18B20-DAT----->P3.7OLED-SCL----->P1.4OLED-SDA----->P1.3蜂鸣器---->P1.5风扇---->P2.6水泵----->P2.7ADC0832-CS---->P1.0ADC0832-CLK---->P1.1ADC0832-DAT---->P1.2土壤湿度传感器的模拟输出口--->ADC0832的CH0L298N需要额外供电,也就是需要另一个电源。接线方式:L298N的电源端: 12V接 12V/5V  GND接GNDL298N的IN1---->P2.6IN2 不接IN3---->P2.7IN4 不接L298N左边输出端接风扇右边输出端接水泵
*/sbit beep=P1^5;         //蜂鸣器sbit fengshan=P2^6;      //风扇控制引脚
sbit shuibeng=P2^7;     //水泵控制引脚extern uchar temp;      //温度
extern uchar humi;      //湿度int t=0;            //在定时器中记录1S时间int wendu_yuzhi=30;        //空气温度阈值    大于此阈值  开风扇  低于  关
int turang_yuzhi=20;       //土壤湿度阈值    小于此阈值  开水泵  大于  关int datapros(int temp) 	 
{float tp;  if(temp< 0)				//当温度值为负数{//因为读取的温度是实际温度的补码,所以减1,再取反求出原码temp=temp-1;temp=~temp;tp=temp;temp=tp*0.0625*100+0.5;	//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就//算加上0.5,还是在小数点后面。}else{		tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量//如果温度是正的那么,那么正数的原码就是补码它本身temp=tp*0.0625*100+0.5;	//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就//算加上0.5,还是在小数点后面。}return temp;
}void Int0Init()             //定时器初始化 
{  TMOD=0X01;                  //定时器工作在方式1下,即16位定时器TH0=(65536-50000)/256;TL0=(65536-50000)%256;   TR0=1;                     //打开定时器0ET0=1;                     //使能定时器0EA=1;                     //打开总中断}main()
{  int turang_tempe=0;         //土壤温度数据int turang_humi=0;     //土壤湿度数据OLED_Init();			//初始化OLED  OLED_Clear();Int0Init() ; while(1){turang_tempe=datapros(Ds18b20ReadTemp())/100;	 //数据处理函数   处理温度数据 turang_humi=100-(read_ad(0)/256.0)*100;                     //获取土壤湿度数据OLED_ShowString(3*8,0,"T:",16);OLED_ShowNum(5*8,0,turang_tempe,3,16);        //显示土壤温度OLED_ShowString(10*8,0,"H:",16); OLED_ShowNum(12*8,0,turang_humi,3,16);        //土壤湿度OLED_ShowString(3*8,2,"T:",16); OLED_ShowNum(5*8,2,temp,2,16);        //空气温度OLED_ShowString(10*8,2,"H:",16); OLED_ShowNum(12*8,2,humi,2,16);        //空气湿度//显示空气温度阈值OLED_ShowString(3*8,4,"T_Y:",16);OLED_ShowNum(7*8,4,wendu_yuzhi,3,16);   //显示土壤湿度阈值OLED_ShowString(3*8,6,"S_Y:",16);OLED_ShowNum(7*8,6,turang_yuzhi,3,16);   if(temp>wendu_yuzhi)         //如果空气温度大于空气温度阈值  那么蜂鸣器响 风扇开{beep=1;fengshan=1;}else                             //否则 蜂鸣器不响  风扇关{beep=0;fengshan=0;}if(turang_humi<turang_yuzhi)     //如果土壤湿度小于土壤湿度阈值  那么开水泵{shuibeng=1;}else{shuibeng=0;}Delay(180);              //延时180ms}
}void time0() interrupt 1		//定时器0的中断服务函数
{   t++;                          //t为20时,计数满1sif(t==20){receive(); 				// 检测温湿度数据 t=0; }  TH0=(65536-50000)/256;TL0=(65536-50000)%256;         //重新给定时器赋值}

5.完整工程

        具体实现过程就不介绍了,需要完整项目工程的可以私信我!!!

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

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

相关文章

大数据技术学习笔记(七)—— Zookeeper

目录 1 Zookeeper 概述1.1 Zookeeper 定义1.2 Zookeeper 工作机制1.3 Zookeeper 特点1.4 数据结构1.5 应用场景 2 Zookeeper 安装3 客户端命令行操作4 Zookeeper 的 Java 客户端操作4.1 IDEA 环境搭建4.2 初始化 ZooKeeper 客户端4.3 创建子节点4.4 获取子节点4.5 判断Znode是否…

深入理解 Kafka 集群搭建与管理

Apache Kafka 作为分布式流处理平台的核心&#xff0c;其集群搭建与管理是确保高可用性和高性能的关键。本文将深入研究 Kafka 集群的构建、配置、工作原理、节点角色以及一些高级管理策略&#xff0c;以助力读者更深层次地理解和灵活运用 Kafka 集群。 Kafka 集群基础 1 集群…

智能优化算法应用:基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.供需算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

Flume 安装部署

文章目录 Flume 概述Flume 安装部署官方网址下载安装配置文件启动 Flume 进程启动报错输出文件乱码问题 Flume 概述 Flume&#xff08;Apache Flume&#xff09;是一个开源的分布式日志收集、聚合和传输系统&#xff0c;属于 Apache 软件基金会的项目之一。其主要目标是简化大…

预约系统源码解析:打造智能定制化预约服务的技术奇迹

在当今数字化时代&#xff0c;预约系统的重要性日益凸显&#xff0c;而预约系统源码的开放将为各行业带来更加灵活、智能的预约解决方案。本文将深入探讨预约系统源码的技术内幕&#xff0c;为开发者提供实用的代码示例&#xff0c;助力打造智能定制化的预约服务。 技术栈概览…

【字符串匹配】【KMP算法】Leetcode 28 找出字符串中第一个匹配项的下标☆

【字符串匹配】【KMP算法】Leetcode 28 找出字符串中第一个匹配项的下标 &#xff08;1&#xff09;前缀和后缀&#xff08;2&#xff09;前缀表&#xff08;最长相同的前缀和后缀的长度&#xff09;&#xff08;3&#xff09;匹配过程示意&#xff08;4&#xff09;next数组的…

Python----练习:使用面向对象实现报名系统开发

第一步&#xff1a;分析哪些动作是由哪些实体发出的 学生提出报名 学生提供相关资料 学生缴费 机构收费 教师分配教室 班级增加学生信息 于是&#xff0c;在整个过程中&#xff0c;一共有四个实体&#xff1a;学生、机构、教师、班级&#xff01;在现实中的一个具体的实…

xxl-job(分布式调度任务)

简介 针对分布式任务调度的需求&#xff0c;市场上出现了很多的产品&#xff1a; 1)TBSchedule&#xff1a;淘宝推出的一款非常优秀的高性能分布式调度框架&#xff0c;目前被应用于阿里&#xff0c;京东&#xff0c;支付宝&#xff0c;国美等很多互联网企业的流程调度系统中。…

【深度学习】Adversarial Diffusion Distillation,SDXL-Turbo 一步出图

代码&#xff1a; https://huggingface.co/stabilityai/sdxl-turbo 使用 SDXL-Turbo 是SDXL 1.0的精炼版本&#xff0c;经过实时合成训练。SDXL-Turbo 基于一种称为对抗扩散蒸馏 (ADD) 的新颖训练方法&#xff08;请参阅技术报告&#xff09;&#xff0c;该方法允许在高图像质…

GPT实现开放式世界游戏实践【生化危机】

最近开始研究如何基于GPT构建一个游戏引擎&#xff0c;于是先从简单的文字游戏开始探索。 从最简单的选择机制、故事机制&#xff0c;完善成一个包括天气、事件、技能、属性、伙伴、建造系统的-生化危机版文字游戏-。 我唯一的体验是&#xff1a;AI游戏&#xff0c;大有可为! …

Linux socket编程(9):IO复用之poll和epoll详解

在之前的文章中&#xff0c;我们学习了IO复用模型之select原理及例子&#xff0c;但是select有监听描述符个数的限制&#xff0c;而且select的效率并不高&#xff0c;所以这篇文章就来学习效率更高的poll和Linux特有的epoll方法。 文章目录 1 select/poll/epoll对比2 poll2.1 p…

《小满生活》连续8天收视破2,生活剧怎么拍才好看?

拍生活剧从不失手的导演汪俊回归统治区&#xff0c;新剧《小满生活》以连续8天收视率破2的骄人成绩笑傲国产剧市场。 ​秦昊、蒋欣主演的《小满生活》是“小系列”的第四部作品&#xff0c;聚焦都市中年夫妻为了二胎换新房的社会问题&#xff0c;这次没有和老搭档黄磊合作&…

Day49力扣打卡

打卡记录 需要添加的硬币的最小数量&#xff08;归纳法&#xff09; 链接 按着已经加入的数&#xff0c;以此偏移对应距离&#xff0c;从而得到新的连续数&#xff0c;若是出现断层则计入最小次数中&#xff0c;再以此偏移对应距离。 class Solution:def minimumAddedCoins(s…

国际语音通知系统有哪些优点?国际语音通知系统有哪些应用场景?

国际语音通知是一种全球性的通信工具&#xff0c;它通过语音方式向用户发送各种重要信息和提示。无论是快递到货的取件提醒、机场航班的延误通知&#xff0c;还是银行账户的余额提醒&#xff0c;国际语音通知都能准确、迅速地将信息传达给用户。 三、国际语音通知系统有哪些优…

排序算法介绍(二)冒泡排序

0. 简介 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排…

unordered_map与unordered_set的实现(含迭代器)

unordered_map与unordered_set的实现 文章目录 unordered_map与unordered_set的实现前言一、问题一HashTable.h 二、问题二&问题三1.封装时如何取出key2.不同类型key如何建立对应关系 三、问题四&问题五问题四问题五 四、实现代码MyUnorderedSet.hMyUnorderedMap.hHash…

WebGL笔记:矩阵缩放的数学原理和实现

矩阵缩放的数学原理 和平移一样&#xff0c;以同样的原理&#xff0c;也可以理解缩放矩阵让向量OA基于原点进行缩放 x方向上缩放&#xff1a;sxy方向上缩放&#xff1a;syz方向上缩放&#xff1a;sz 最终得到向量OB 矩阵缩放的应用 比如我要让顶点在x轴向缩放2&#xff0c;y轴…

python爬虫AES魔改案例:某音乐素材下载网

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 一、找出需要加密的参数 js运行 atob(‘aHR0cHM6Ly93d3cuYWlnZWkuY29tL3NvdW5kL2NsYXNzLw’) 拿到网址&#xff0c;F12打开调…

html动漫网页设计分享 紫罗兰永恒花园网页作业成品带视频,注册登录,表格,表单

html5静态网页设计要是用HTML DIVCSS JS等来完成页面的排版设计,一般的网页作业需要融入以下知识点&#xff1a;div布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点&#xff0c;学生网页作业源码可以…

数据挖掘实战-基于word2vec的短文本情感分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…