当前位置: 首页 > news >正文

基于STM32的智能温室控制系统设计

1 系统功能介绍

本设计为 基于 STM32 单片机的智能温室控制系统,旨在利用现代嵌入式控制技术与物联网通信技术,实现对温室内部环境的实时监控与智能调控。温室是植物生长的重要场所,合理的温度与湿度环境对于作物的健康成长至关重要,而人工管理往往效率低、准确性差。通过本系统,用户不仅可以在本地通过液晶屏直观查看温湿度信息,还能够借助蓝牙模块与手机 APP 实现远程监控与控制,达到节能高效、智能便捷的目标。

系统的主要功能包括:

  1. 环境参数检测与显示:通过温湿度传感器采集环境温湿度数据,实时显示在 1602 液晶屏 上,同时通过蓝牙模块传输至手机 APP。

  2. 报警功能:当湿度超过 75%RH 时,系统会自动向手机 APP 发送报警信息,提醒用户采取措施。

  3. 风扇智能控制:用户可以通过手机 APP 发送指令实现风扇远程控制:

    • 发送字符 “O”:风扇启动;
    • 发送字符 “C”:风扇关闭。
  4. 自动化与交互结合:系统既具备自动监测与报警功能,又能通过 APP 交互进行手动调控,保证了灵活性与可靠性。

该系统在实际应用中可广泛应用于智能农业、温室种植、仓储环境调节等场合,为绿色农业与物联网结合提供了良好的实践样例。


2 系统电路设计

2.1 单片机最小系统电路

核心控制器选用 STM32F103C8T6 单片机,其具有 32 位 ARM Cortex-M3 内核,主频可达 72MHz,拥有丰富的外设接口与强大的运算能力。

  • 时钟电路:采用 8MHz 晶振,通过倍频获得系统主频;
  • 复位电路:采用上电复位与按键复位双重方式,保证系统稳定启动;
  • 电源电路:单片机工作电压为 3.3V,通过 AMS1117-3.3 稳压芯片由 5V 电源转换而来。

2.2 温湿度传感器电路

系统采用 DHT11 或 DHT22 温湿度传感器

  • 传感器通过单总线与 STM32 通信,周期性输出当前温湿度数据;
  • 湿度检测范围在 20%RH~90%RH,精度满足温室应用需求;
  • 数据读取通过定时器与 IO 捕捉实现可靠通信。

2.3 1602 液晶显示电路

  • 1602 液晶用于实时显示温湿度数据;
  • 数据接口模式选择 4 位总线方式,节省 IO 口;
  • 第一行显示温度,第二行显示湿度,界面简洁直观。

2.4 风扇控制电路

  • 采用 NPN 三极管+继电器驱动电路
  • STM32 输出高低电平控制三极管,继电器吸合与断开控制风扇电源;
  • 驱动电路中加入反向二极管保护,防止继电器产生的感应电压损坏电路。

2.5 蓝牙通信电路

  • 系统采用 HC-05 蓝牙串口模块,与 STM32 的 USART 串口通信;
  • 波特率设置为 9600bps,满足数据传输需求;
  • 手机 APP 通过蓝牙连接至系统,实现数据接收与命令发送。

2.6 电源电路

  • 整个系统供电电压为 5V;
  • 1602 液晶、蓝牙模块均可直接使用 5V;
  • STM32 与 DHT11 工作电压为 3.3V,由 AMS1117-3.3 稳压模块提供;
  • 电路中增加电源滤波电容,保证电源稳定,减少干扰。

3 程序设计

3.1 主程序设计

主程序负责系统的整体调度,包括初始化、数据采集、数据显示、蓝牙通信与风扇控制。

#include "stm32f10x.h"
#include "lcd1602.h"
#include "dht11.h"
#include "usart.h"
#include "fan.h"uint8_t humidity, temperature;
uint8_t rxData;int main(void)
{LCD1602_Init();DHT11_Init();USART1_Init(9600);Fan_Init();while(1){if(DHT11_Read_Data(&temperature, &humidity) == SUCCESS){LCD1602_ShowString(0,0,"Temp: ");LCD1602_ShowNum(6,0,temperature,2);LCD1602_ShowString(0,1,"Humi: ");LCD1602_ShowNum(6,1,humidity,2);USART1_SendString("T:");USART1_SendNum(temperature);USART1_SendString(" H:");USART1_SendNum(humidity);USART1_SendString("\r\n");if(humidity > 75){USART1_SendString("ALARM: HUMI HIGH!\r\n");}}if(USART1_Receive(&rxData) == SUCCESS){if(rxData == 'O') Fan_On();else if(rxData == 'C') Fan_Off();}Delay_ms(1000);}
}

3.2 DHT11 温湿度采集程序

uint8_t DHT11_Read_Data(uint8_t *temp, uint8_t *humi)
{uint8_t buf[5];// 按照时序读取40位数据if(DHT11_Read(buf) == SUCCESS){*humi = buf[0];*temp = buf[2];return SUCCESS;}return ERROR;
}

3.3 液晶显示程序

void LCD1602_ShowNum(uint8_t x, uint8_t y, uint16_t num, uint8_t len)
{char str[5];sprintf(str,"%d",num);LCD1602_ShowString(x,y,str);
}

3.4 蓝牙串口通信程序

void USART1_Init(uint32_t baudrate)
{// 配置USART1:波特率9600, 8N1格式// 开启接收中断,处理蓝牙指令
}void USART1_SendString(char *str)
{while(*str){USART_SendData(USART1, *str++);while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);}
}

3.5 风扇控制程序

void Fan_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_ResetBits(GPIOB, GPIO_Pin_0);
}void Fan_On(void)
{GPIO_SetBits(GPIOB, GPIO_Pin_0);
}void Fan_Off(void)
{GPIO_ResetBits(GPIOB, GPIO_Pin_0);
}

4 总结

本设计的 基于 STM32 的智能温室控制系统,实现了对温湿度的实时监测与风扇的智能控制,能够在本地与远程(手机 APP)两种方式下使用。系统不仅可以直观显示温湿度信息,还能够在湿度过高时及时报警,避免作物因环境不适而生长受阻。

其优点主要体现在:

  1. 实时性强:传感器检测频率高,信息即时更新。
  2. 交互性好:液晶显示与 APP 通信结合,用户体验友好。
  3. 控制灵活:支持自动报警与手动远程控制相结合。
  4. 扩展性强:未来可接入 Wi-Fi 模块,实现互联网远程控制。

该系统在现代智能农业和温室管理中具有广泛的应用前景,为实现智慧农业与节能管理提供了可靠的技术支撑。

http://www.dtcms.com/a/347840.html

相关文章:

  • 【yocto】Yocto Project 配置层(.conf)文件语法详解
  • Service详解
  • 鸿蒙异步处理从入门到实战:Promise、async/await、并发池、超时重试全套攻略
  • 【C++】全局变量/静态变量的初始化时机
  • 基于电力电子变压器的高压脉冲电源方案复现
  • 最小覆盖子串+滑动窗口
  • 【JVM内存结构系列】二、线程私有区域详解:程序计数器、虚拟机栈、本地方法栈——搞懂栈溢出与线程隔离
  • mysql为什么使用b+树不使用红黑树
  • tcpdump命令打印抓包信息
  • 用vscode使用git工具
  • 深度优先搜索(DFS)和广度优先搜索(BFS)
  • 【内网渗透】Relay2LDAP之NTLMKerberos两种利用
  • windows中bat脚本的一些操作(三)
  • 如和在不同目录之间引用模块-python
  • 微调系列:LoRA原理
  • MVC模式在个人博客系统中的应用
  • 【通俗易懂】TypeScript 增加了 JavaScript 的可选链 (?.) 和空值合并运算符 (??)理解
  • 【集合和映射】USACO Bronze 2019 December - 我在哪Where Am I?
  • 机器学习案例——预测矿物类型(模型训练)
  • DS18B20温度传感器详解
  • 电阻的功率
  • 多光谱相机检测石油石化行业的跑冒滴漏的可行性分析
  • 电蚊拍的原理及电压电容参数深度解析:从高频振荡到倍压整流的完整技术剖析
  • 决策树基础学习教育第二课:量化最优分裂——信息熵与基尼系数
  • 01_Python的in运算符判断列表等是否包含特定元素
  • [Vid-LLM] 创建和训练Vid-LLMs的各种方法体系
  • crypto.randomUUID is not a function
  • 一个备份、去除、新增k8s的node标签脚本
  • Redis(八股二弹)
  • 玳瑁的嵌入式日记D24-0823(数据结构)