STM32项目分享:智能大棚/智慧农业系统

news2025/6/24 17:05:26

 

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

1.PCB图 

 2.PCB板打样焊接图

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1FZ421m7Zd/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2

(资料分享见文末) 

二、项目简介

1.功能详解

基于STM32的智能大棚/智慧农业系统。功能如下:

  1. 温湿度采集:使用DHT11温湿度传感器采集环境温湿度
  2. 土壤湿度采集:通过土壤湿度模块采集土壤湿度
  3. 光照强度采集:通过BH1750模块采集环境光照强度
  4. 二氧化碳浓度采集:通过CCS811模块采集环境二氧化碳浓度
  5. 风扇控制:可自动模式下根据环境温度触发或手动模式下按键开闭
  6. 水泵控制:可自动模式下根据土壤湿度触发或手动模式下按键开闭
  7. LED照明灯控制:可自动模式下根据环境光强触发或手动模式下按键开闭
  8. 蜂鸣器报警:二氧化碳浓度超标时蜂鸣器报警
  9. TFT显示屏显示:显示环境温湿度、土壤湿度、光照强度、二氧化碳浓度和工作模式等信息。
  10. 工作模式选择:按键选择工作模式为自动、手动或者云端
  11. OneNET云端:通过旧版OneNET网页平台查看设备上报的实时数据。

2.主要器件

  • STM32F103C8T6最小系统板
  • 1.8寸TFT显示屏
  • DHT11温湿度传感器
  • BH1750光照传感器
  • 土壤湿度传感器
  • CCS811二氧化碳传感器
  • WiFi模块(ESP8266-01s)
  • 大功率LED照明灯模块
  • 5V风扇模块
  • 5V水泵模块
  • 继电器
  • 蜂鸣器

三、原理图设计

四、PCB硬件设计

1.PCB图 

 2.PCB板打样焊接图

五、程序设计 

int main(void)
 {
	unsigned char *dataPtr = 0;
	delay_init();	    	 //延时函数初始化	  
	SWITCH_Init();		  	 	//初始化与LED连接的硬件接口 水泵 风扇
	Usart2_Init(115200);    //wifi模块串口
	uart_init(115200);  //串口1
    I2C_GPIO_Config();   //iic初始化  ccs811,模块初始化  检测CO2 
    CS_EN();  //对ccs811 配置
  	delay_ms(100);
	ON_CS();
	delay_ms(100);
    Single_ReadI2C(CCS811_Add,0x20,Information,1);  //Read CCS's information  ,ID,0x81
    Single_ReadI2C(CCS811_Add,0x23,&Information[1],2);	//FW_Boot_Version  
	Single_ReadI2C(CCS811_Add,0x24,&Information[3],2); 	//FW_App_Version
  	Single_ReadI2C(CCS811_Add,0x00,&Status,1);
	if(Status&0x10)	 Single_MWriteI2C_byte(CCS811_Add,0xF4,&temp,0);	//Used to transition the CCS811 state from boot to application mode, a write with no data is required.
	Single_ReadI2C(CCS811_Add,0x00,&Status,1);
	Single_ReadI2C(CCS811_Add,0x01,&MeasureMode,1);
    Single_WriteI2C_byte(CCS811_Add,0x01,0x10); //Write Measure Mode Register,sensor measurement every second,no interrupt
    OFF_CS(); 	
	//二氧化碳模块初始化
		
		
    KEY_Init();//按键初始化
	Lcd_Init();//st7735 LCD屏幕初始化
	LCD_LED_SET;//通过IO控制背光亮		
	Lcd_Clear(WHITE);  //清屏
	Adc_Init();  //ADc初始化,采集土壤湿度模块的模拟量
	init_data();  //初始阈值参数设置
   	while(DHT11_Init())	//DHT11初始化	温湿度
	{
 		delay_ms(200);
	}
	//TIM4_Int_Init(999,7199);
	bh1750_iic_init();///光照模块初始化
	Gui_DrawFont_GBK16(10,60,BLACK,WHITE,"正在连接ONENET");
	ESP8266_Init();					//初始化ESP8266 wifi
	while(OneNet_DevLink())			//接入OneNET
	delay_ms(500);
	Onenet_succes=1;  ///表示接入成功
	Lcd_Clear(WHITE);//清屏
	Shuju();//获取环境数据
	Gui_DrawFont_GBK16(10,144,BLACK,WHITE,"WIFI:");
	if(Onenet_succes)
	Gui_DrawFont_GBK16(60,144,BLACK,WHITE,"已连接:");
	else
	Gui_DrawFont_GBK16(60,144,BLACK,WHITE,"未连接:");
	while(1)
	{		
   	    key=KEY_Scan(0);//检测按键
		threshold_value();  //界面和按键处理
		counts++;//累加,用于onenet数据上传计时
		control_set();//控制处理
	    if(counts>20)   //counts>90  向云平台发送数据
		{
			OneNet_SendData();	//发送数据
			ESP8266_Clear();   //清理esp8266 wifi模块数据缓存  
	        counts=0;
			Shuju();    //数据采集
		}
		dataPtr = ESP8266_GetIPD(0);//检测onenet是否下发数据
		if(dataPtr != NULL)
	    OneNet_RevPro(dataPtr);//处理下发数据
		delay_ms(2);//延迟
	}
 }

六、实验效果 

七、资料内容

项目分享

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

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

相关文章

有四个数字,1,2,3,4能组成多少个互不相同且无重复的三位数?各是多少?(Python)

1. 思路 使用嵌套循环实现,第一层循环取百位数字,第二层循环取十位数字,第三层循环取个位数字,判断三个位置的数字是否互不相同且无重复。1,2,3,4可以组成24个互不相同且无重复的三位数,如下所示:123, 124,…

【C++进阶学习】第一弹——继承(上)——探索代码复用的乐趣

前言: 在前面,我们已经将C的初阶部分全部讲完了,包括类与对象、STL、栈和队列等众多内容,今天我们就进入C进阶部分的学习,今天先来学习第一弹——继承 目录 一、什么是继承?为什么会有继承? 二…

使用ShinyCell展示你的单细胞数据

在我参与发表我的第一篇植物单细胞文章中,我用Shiny开发了一个简单的单细胞可视化网站,目前已经运行了5年了,有上万的访问,唯一的不足就是太简陋。我一直想着能不能找个一个更好的工具进行展示,最近发现了一个工具&…

JavaScript快速入门系列-3(函数基础)

第三章:函数基础 3.1 函数定义与调用3.1.1 函数声明3.1.2 函数表达式3.2 参数与返回值3.3 匿名函数与立即执行函数表达式(IIFE)3.3.1 匿名函数3.3.2 立即执行函数表达式3.4 箭头函数3.4.1 箭头函数与this3.5 函数的高级话题3.5.1 闭包3.5.2 函数柯里化3.5.3 高阶函数小结在Jav…

【Linux】基础IO——系统文件IO

我之前是讲过c语言的文件操作的,但是说实话我压根就不知道它在干什么,后面c语言/c,数据结构的学习过程中也没用过文件操作,今天我们就来会会这个文件操作 1.回顾c语言文件接口 1.1.fopen r :只读模式打开,文件流指针…

多类型图像OCR:基于Dify的多模态Agent实现

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模…

用Python处理Excel的资源

用Python处理Excel的资源 python-excel 读写Excel文件 openpyxl openpyx文档l 读写Excel2010文件(即xlsx) openpyxl示例: from openpyxl import Workbook wb Workbook()# 获取active worksheet ws wb.active# 给单元格赋值 ws[A1] 4…

创邻科技张晨:期待解锁图技术在供应链中的关联力

近日,创邻科技创始人兼CEO张晨博士受浙江省首席信息官协会邀请,参加数字化转型与企业出海研讨会。 此次研讨会旨在深入探讨数字经济时代下,企业如何有效应对成本提升与环境变化所带来的挑战,通过数字化转型实现提效增益&#xff…

生命在于学习——Python人工智能原理(3.3)

三、深度学习 4、激活函数 激活函数的主要作用是对神经元获得的输入进行非线性变换,以此反映神经元的非线性特性。常见的激活函数有线性激活函数、符号激活函数、Sigmod激活函数、双曲正切激活函数、高斯激活函数、ReLU激活函数。 (1)线性…

推流工具OBS的下载使用

一、下载安装 OBS,windows版本官网下载地址 二、推流步骤 安装好之后,打开软件 1、右下角,打开设置 2、输入推流地址,一般为rtmp格式开头的推流地址 输入完成后,应用并确定关闭窗口 3、“来源”里面新建媒体源、新…

RK3566调试VI5301

VI5301是南京芯视界推出的一款直接飞行时间(dToF)传感器,与ST的VL53L0x兼容。 一、开发平台 系统:linux 4.19(buidroot) 二、驱动移植 解压厂家提供的驱动文件:VI5301_Linux_General_M40_V202,目录结构…

4、视觉里程计:特征点法、直接法和半直接法

先说一下我自己的总体理解: 特征点法,基于最小化重投影误。 提取特征点,计算描述子,匹配,运动估计。 计算描述子和匹配部分可以用光流法跟踪替代 总体上先知道像素之间的关系,在估计运动(最…

【C语言】一篇文章带你深度理解函数

目录 1. 函数的概念 2. 库函数 2.1 标准库和头文件 2.2 库函数的使用方法 2.2.1 举例 sqrt 2.2.2 库函数文档的一般格式 3. 自定义函数 3.1 函数的语法形式 3.2 函数的举例 4. 形参和实参 4.1 实参 4.2 形参 4.3 实参和形参的关系 5. …

【区块链】记账的千年演化:从泥板到区块链

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 记账的千年演化:从泥板到区块链引言一、古代记账:泥板与…

ComfyUI-全民舞王-MusePose

musepose-demo 项目介绍 https://github.com/TMElyralab/MusePose发布的模型能够根据给定的姿势序列,生成参考图中人物的舞蹈视频,结果质量超越了同一主题中几乎所有当前开源的模型。发布pose align算法,以便用户可以将任意舞蹈视频与任意参…

基于Matlab的纸币币值检测系统设计(GUI界面) 【含Matlab源码 MX_004期】

简介: 基于Matlab的纸币币值检测系统是一种利用数字图像处理技术来自动识别和鉴别纸币面额的系统。 图像获取:获取纸币的图像。 预处理:对获取到的图像进行预处理,包括去噪、灰度化、边缘检测等操作,以便后续的处理。…

电脑找不到vcruntime140_1.dll的原因分析及5种解决方法分享

电脑已经成为我们生活和工作中不可或缺的工具。然而,在使用电脑的过程中,我们常常会遇到一些常见的问题,其中之一就是电脑显示vcruntime140_1.dll丢失。那么,这个问题是怎么回事呢?又有哪些解决方法呢?如何…

首期“软件企业 AI 开发提效实战营”成功举办

人工智能是国家战略的重要组成部分,是未来国际竞争的焦点和经济发展的新引擎。随着人工智能科技的飞速发展,软件企业如何借助 AI 工具辅助编程,提升开发效率,成为业界关注的焦点。此前,浙江省软件行业协会携手阿里云成…

GitCode热门开源项目推荐:Spider网络爬虫框架

在数字化高速发展时代,数据已成为企业决策和个人研究的重要资源。网络爬虫作为一种强大的数据采集工具受到了广泛的关注和应用。在GitCode这一优秀的开源平台上,Spider网络爬虫框架凭借其简洁、高效和易用性,成为了众多开发者的首选。 一、系…

网络编程---Java飞机大战联机

解析服务器端代码 代码是放在app/lib下的src下的main/java,而与之前放在app/src/main下路径不同 Main函数 Main函数里只放着创建MyServer类的一行 public static void main(String args[]){new MyServer();} MyServer构造函数 1.获取本机IP地址 //获取本机IP地…