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

2024-06-15 03:52

本文主要是介绍STM32项目分享:智能大棚/智慧农业系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

目录

一、前言

二、项目简介

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);  //串口1I2C_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,0x81Single_ReadI2C(CCS811_Add,0x23,&Information[1],2);	//FW_Boot_Version  Single_ReadI2C(CCS811_Add,0x24,&Information[3],2); 	//FW_App_VersionSingle_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 interruptOFF_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 wifiwhile(OneNet_DevLink())			//接入OneNETdelay_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,"已连接:");elseGui_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);//延迟}}

六、实验效果 

七、资料内容

项目分享

这篇关于STM32项目分享:智能大棚/智慧农业系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062361

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热