基于stm32单片机毕业设计----物联网app控制智慧农业大棚项目源代码程序+原理图+DHT11温湿度传感器-光敏电阻-土壤湿度检测+WiFi模块esp8266+继电器水泵+自动补光

一、设计简介

该毕业设计项目利用STM32F103C8T6微控制器为核心,结合DHT11温湿度传感器、光敏电阻、土壤湿度检测模块、WiFi模块ESP8266、继电器以及水泵等设备,构建一个智慧大棚系统。该系统能够实时采集大棚内部的温湿度、光照强度以及土壤湿度数据,并通过WiFi模块将数据传输至云端或手机APP,实现远程监控。同时,系统具备自动补光、自动灌溉等功能,能够根据环境参数自动调节大棚内的环境条件,为作物生长提供最佳的生长环境。

百度网盘源码资料下载链接

二、功能设计

  1. STM32f103c8t6单片机:核心控制单元,负责数据采集、处理和控制指令的发送。
  2. DHT11温湿度传感器:用于实时采集大棚内的温度和湿度数据,具有高精度和长期稳定性。
  3. 光敏电阻:用于测量大棚内的光照强度,根据光照强度自动调节LED补光灯的亮度。
  4. 土壤湿度检测模块:用于实时检测土壤湿度,根据土壤湿度自动调节水泵的开关,实现自动灌溉。
  5. WiFi模块ESP8266:用于将采集到的环境参数数据传输至云端或手机APP,实现远程监控和数据分析。
  6. 继电器:用于控制水泵和LED补光灯的开关,实现自动灌溉和补光功能。
  7. 水泵:用于灌溉大棚内的作物,根据土壤湿度自动调节灌溉量。
  8. LED补光灯:用于提供光照,根据光照强度自动调节亮度,为作物提供足够的光照条件。

  1. 实时数据采集:系统能够实时采集大棚内的温湿度、光照强度和土壤湿度数据,并通过OLED屏幕或云端平台实时显示。
  2. 自动报警:当环境参数超出预设范围时,系统会触发报警功能,通过蜂鸣器或云端平台发送报警信息,提醒用户及时采取措施。
  3. 自动灌溉:根据土壤湿度数据,系统自动调节水泵的开关,实现自动灌溉功能,确保作物获得足够的水分。
  4. 自动补光:根据光照强度数据,系统自动调节LED补光灯的亮度,为作物提供足够的光照条件,促进作物生长。
  5. 远程监控:用户可以通过手机APP或云端平台远程监控大棚内的环境参数,实时了解作物的生长环境,并可以根据需要调整系统参数。

三、软件环境

Keil5 MDK:stm32单片机源代码程序编写及下载代码

ST-Link 驱动程序:用于下载程序到 STM32。

四、所需硬件以及传感器模块

 1.1 stm32f103c8t6(1个)

  STM32F103C8T6单片机是一款非常用的单片机型号,可以方便灵活的进行嵌入式系统开发。首先,它的处理器基于Cortex-M3内核,最高工作频率达72MHz。STM32F103C8T6拥有64KB闪存和20KB SRAM,非常适合中小型单片机开发项目。

具有非常丰富的外设接口,如串口USART、SPI通信、I2C通讯、CAN通讯和USB,在与单片机外设通信方面非常方便。有多个GPIO通用IO口,定时器,中断系统,灵活配置为输入,输出、模拟输入或PWM输出,可以连接各类传感器和模块。

内部集成的12位逐次逼近型ADC和DAC,支持高精度模拟信号处理。STM32F103C8T6还支持低功耗模式,适合电池供电的应用场景。结合强大的STM32开发生态,包括库函数和工具链,可以让开发者很方便的完成单片机项目的开发。

1.2 wifi模块ESP8266(ESP01s)(1个)

一、基本信息

  • ESP-01S是安信可出品的一款功能强大的Wi-Fi模块采用ESP8266处理器,ESP-01S模块需要与主控制器(如Arduino、STM32等)进行连接,通过串口通信UART接口与单片机进行数据传输。ESP-01S是一款功能强大、易于使用的Wi-Fi模块,适用于各种物联网和智能家居应用。
  • Wi-Fi功能:支持标准的IEEE802.11 b/g/n协议和完整的TCP/IP协议栈,可以方便地与其他设备或网络进行通信。
  • 工作模式:支持STA模式和AP模式。在STA模式下,可以通过路由器连接到互联网,使手机或电脑能够实现对设备的远程控制。在AP模式下,可以作为热点,使其他设备能够连接到它。
  • AT指令支持:初始情况下,ESP-01S通常预装了Espressif提供的AT指令固件,这意味着可以通过发送简单的AT指令来控制模块的Wi-Fi连接和数据传输。
  • 1.3 温湿度传感器DHT11(1个)

DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数

字模块采集技术和温湿度传感技术,确保产品具有枀高的可靠性与卓越的长期稳定性。

传感器包括一 个电容式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接。

引脚说明

1、VDD 供电 3.3~5.5V DC

2、DATA 串行数据,单总线

3、NC 空脚

4、GND 接地,电源负

1.4 光敏电阻(1个)

光敏电阻(也称为光导电阻或光敏元件)是一种基于光电效应的传感器,其电阻值会随着光照强度的变化而变化。当光照增强时,光敏电阻的阻值减小;当光照减弱时,阻值增大。

ADC(模数转换器)是单片机中的一个重要外设,用于将模拟信号转换为数字信号。在采集光敏电阻信号时,ADC的作用是将光敏电阻产生的模拟电压信号转换为数字信号,以便单片机进行后续处理。

  1. 电路连接

    • 将光敏电阻与固定电阻(通常为几千欧姆)串联,形成一个分压电路。
    • 将分压电路的输出端连接到单片机的ADC输入通道。
    • 确保电路连接正确,避免短路或断路。

五、原理图及设计流程图

六、程序代码


#include "sys.h"

#define uchar unsigned char
#define uint unsigned int

unsigned char i ;	
uchar table1[]="Crop shed design";			 	//
char tab[16];
char dis0[16];	 //暂存
char dis1[16];	 //暂存

char tabData[42];//打印时间数组

unsigned int ligh ;        //光照
unsigned int ligh_max ;        //光照
u8 ReadDhtFlag;		//读取温湿度标志  定时器中处理
u8 readDhtFlag;
u8 readFlag;//定时读取标志
u8 SendFlag;//定时读取标志
u8 HAS_Flag=0;

u8 Led_before=0;
u8 Relay_before=0;
unsigned int soil = 0;//土壤湿度
unsigned int TEMP_Alarm=26;										//温度发送短信标志位,=1表示已经发送,=0表示没有发送
unsigned int HUMI_Alarm=70;										//防盗发送短信标志位,=1表示已经发送,=0表示没有发送
unsigned int soil_Alarm=55;										//烟雾发送短信标志位,=1表示已经发送,=0表示没有发送
unsigned int soilmax_Alarm=63;										//烟雾发送短信标志位,=1表示已经发送,=0表示没有发送
unsigned int ligh_min_Alarm=150;										//烟雾发送短信标志位,=1表示已经发送,=0表示没有发送
unsigned int ligh_max_Alarm=400;										//烟雾发送短信标志位,=1表示已经发送,=0表示没有发送

int main(void)
 { 
	u16 adcx;
//	float temp;
	delay_init();	    	 //延时函数初始化	  
	uart_init(115200);	 	//串口初始化为115200
  TIM3_Int_Init(4999,5999);//50ms  	 
 	Adc_Init();		  		//ADC初始化	    
	Beep_Init();
	Relay_Init();
	Led_Init();
	key_Init();
	Lcd_Init();		  //初始化lcd屏幕
	delay_ms(20);
	Lcd_Puts(0,0,"Crop shed design");	//初始化显示	 
	delay_ms(1000); 
	 delay_ms(1000); 
	 delay_ms(1000); 
	 delay_ms(1000); 
	 delay_ms(1000); 
	while(1)
	{
		if(ReadDhtFlag==1)//定时读取温湿度标志
		{			
			
			sprintf(tab,"Temp:%02d DH:%02d",(u16)DHT11.Tem_H,(u16)DHT11.Hum_H);
			Lcd_Puts(0,0,(unsigned char *)tab);	//初始化显示 

		}		

		if(readFlag == 1)// 定时读取标志
		{
			readFlag = 0;	
			soil =99 - (unsigned int)adcx*99/4096;// 浓度按照100算*100							
			sprintf(tab,"soil:%02d",(unsigned int)soil);
			Lcd_Puts(0,1,(unsigned char *)tab);	//显示
	
		}

		if(readDhtFlag == 1)// 定时读取标志
		{
			readDhtFlag = 0;	
			ligh_max = adcx*50.1/255;
			if(ligh_max>460)
				ligh_max=460;
			ligh =475-ligh_max;// 浓度按照100算*100			
			sprintf(tab,"ligh:%03d",(unsigned int)ligh);
			Lcd_Puts(8,1,(unsigned char *)tab);	//显示
	
		}

		if(Key3==0)
		{
			delay_ms(10);
			if(Key3==0)
			{
				HAS_Flag = !HAS_Flag;
				Led=Led_before;
				Relay=Relay_before;					
				while(!Key3);  
			}
		}	
			
		if(DHT11.Tem_H>TEMP_Alarm||DHT11.Hum_H>HUMI_Alarm||soil>soilmax_Alarm||ligh>ligh_max_Alarm)
		{
			Beep=1;		
		}
		else
		{
			Beep=0;
		}
	
		if(HAS_Flag==1)
		{
			sprintf(tab,"M:%01d",(u8)HAS_Flag);
			Lcd_Puts(13,0,(unsigned char *)tab);	//初始化显示 			
				if(Key2==0)
				{
					delay_ms(10);
					if(Key2==0)
					{
						Relay =!Relay;	
						while(!Key2);  
					}
				}		
				if(Key1==0)
				{
					delay_ms(10);
					if(Key1==0)
					{
						Led =!Led;	
						while(!Key1);  
					}
				}			
		}
		else
		{
			sprintf(tab,"M:%01d",(u8)HAS_Flag);
			Lcd_Puts(13,0,(unsigned char *)tab);	//初始化显示 			
				if(soil<soil_Alarm)
				{
					Relay =1;		
				}
				else
				{
					Relay =0;			
				}		
				if(ligh<ligh_min_Alarm)
				{
					Led =1;		
				}
				else
				{
					Led =0;			
				}		
				Led_before=Led;
				Relay_before=Relay;				
		}	
		

	
	}											    
}

七、实物图片

 八、资料内容清单

百度网盘源码资料下载链接icon-default.png?t=O83Ahttps://pan.baidu.com/s/1nQiyiGZ312H94mEHEeIf_Q?pwd=soou

### 基于STM32智慧农业大棚实现方案 #### 一、硬件选型与配置 在构建基于STM32的智能温室大棚控制系统时,选用STM32F103C8T6作为核心控制器。该型号具备丰富的外设接口资源以及强大的处理能力,能够满足多传感器数据采集及远程通信的需求[^1]。 #### 二、功能模块介绍 整个系统实现了多项自动化管理功能: - **温湿度监测**:利用DHT11传感器获取空气中的温度和相对湿度信息; - **土壤水分检测**:采用专门设计用于测量介质含水量变化特性的探针式感应元件来感知植物根部周围基质湿润程度; - **光照度量测**:借助高精度光学感测组件BH1750完成对自然光源强度数值化表征的任务; - **CO₂浓度监控**:集成CCS811气体分析单元负责识别并量化空气中存在的微量成分——特别是对于作物生长至关重要的二氧化碳水平; - **通风降温装置调控**:当室内气温超过预设阈值时启动风扇进行强制散热操作;反之则停止运行以节省能源消耗; - **灌溉供水机制指挥**:依据埋入土层深处探测头反馈回来的数据判断是否开启喷淋设施给农作物补水保湿; - **补光灯具开关指令下发**:按照当前时段内接收到的日光照射情况决定要不要打开人工辅助照明源补充不足部分; - **可视化界面呈现**:经由图形液晶屏直观展示各项参数指标及其变动趋势供现场人员参考决策之用; - **网络传输协议适配**:配合Wi-Fi模组接入互联网服务平台(如阿里云IoT套件),使得远端用户也能随时随地掌握最新动态[^2]。 #### 三、软件架构概述 为了确保各个子系统的协调运作,程序逻辑遵循分层设计理念展开编码实践。具体而言就是把整体流程拆解成若干独立却又相互关联的功能块,再分别编写对应的驱动函数和服务例程予以支持。下面给出一段简化后的Python伪代码片段用来说明这一过程: ```python import time from machine import Pin, I2C from dht import DHT11 from bh1750 import BH1750 from ccs811 import CCS811 def setup(): global i2c_bus, temp_humi_sensor, light_level_meter, co2_detector # 初始化IIC总线对象实例 i2c_bus = I2C(scl=Pin(5), sda=Pin(4)) # 创建各类传感设备的操作句柄 temp_humi_sensor = DHT11(Pin(2)) # 温湿计位于GPIO2引脚上 light_level_meter = BH1750(i2c_bus) # 光照仪挂载到上述定义好的I²C通道里 co2_detector = CCS811(i2c_bus) # CO₂测试盒同样如此连接起来 while True: try: temperature, humidity = read_temperature_and_humidity(temp_humi_sensor) lux_value = measure_illuminance(light_level_meter) ppm_concentration = detect_carbon_dioxide(co2_detector) adjust_fan_speed_based_on_temperature(temperature) control_watering_system_according_to_soil_moisture() toggle_supplemental_lighting(lux_value) update_display_with_latest_readings( temperature, humidity, lux_value, ppm_concentration ) check_for_excessive_gas_levels(ppm_concentration) upload_data_to_cloud_server({ 'temp': temperature, 'humi': humidity, 'lux' : lux_value, 'ppm' : ppm_concentration }) sleep_interval_between_measurements() except Exception as e: handle_error(e) # 下面是一些假设已经实现的具体方法声明... def read_temperature_and_humidity(sensor): ... def measure_illuminance(meter): ... def detect_carbon_dioxide(detector): ... def adjust_fan_speed_based_on_temperature(t): ... def control_watering_system_according_to_soil_moisture(): ... def toggle_supplemental_lighting(brightness): ... def update_display_with_latest_readings(*args): ... def check_for_excessive_gas_levels(concentration): ... def upload_data_to_cloud_server(data_dict): ... def sleep_interval_between_measurements(): ... def handle_error(exception_obj): ... ``` 请注意以上仅为示意性质而非可以直接执行的真实语法结构。实际开发过程中还需要考虑更多细节问题比如错误恢复策略制定、电源管理模式切换等方面的内容。 #### 四、电路布局规划 针对所提及的主要元器件之间的电气连接关系绘制出清晰易懂的原理图有助于提高组装效率降低调试难度。这里提供了一个简化的框图表示法以便快速理解各部件间的交互方式: ![Smart Greenhouse Block Diagram](https://example.com/block_diagram.png) 其中包含了但不限于以下几个要点: - STM32微处理器为核心节点与其他外围电路建立稳定可靠的通讯链路; - 各类模拟信号输入端口需经过适当滤波处理后再送至AD转换器内部做进一步加工; - 数字IO管脚分配应充分考虑到抗干扰能力和兼容性因素的影响; - 动力输出级的设计要兼顾安全性和效能最优化原则; - 数据交换路径尽可能缩短减少延迟时间提升响应速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值