基于STM32单片机大棚温湿度检测无线蓝牙APP控制设计
基于STM32单片机大棚温湿度检测无线蓝牙APP控制设计
1 系统功能介绍
本设计的目标是利用STM32单片机实现温室大棚环境的智能化监测与控制。大棚环境的温度和湿度直接影响作物的生长,因此需要一种实时、可靠且可远程控制的系统来辅助农户进行管理。本系统在设计上采用了模块化思路,将温湿度检测、数据展示、报警提示、风扇控制以及蓝牙无线通信功能结合在一起。
主要功能如下:
- 实时温湿度检测:利用温湿度传感器对大棚内部的环境进行检测,确保数据准确。
- 双重数据显示:温湿度值不仅在1602液晶显示器上进行本地显示,还可以通过蓝牙模块传输至手机APP端,实现远程可视化。
- 湿度报警功能:当检测到湿度超过75%时,APP端会主动发出报警信息,提示用户采取措施。
- 风扇智能控制:用户可通过APP端下发控制指令实现对风扇的开关控制。指令“O”表示开启风扇,指令“C”表示关闭风扇。
- 电源安全设计:系统采用稳定的电源电路,保证在大棚这种可能存在电压波动的环境中,电路稳定运行。
通过这些功能,农户可以随时随地掌握大棚内的温湿度情况,并远程控制风扇设备,从而提升农业生产的智能化和自动化水平。
2 系统电路设计
系统电路由多个功能模块组成,核心控制器为STM32单片机。各模块的功能和设计如下。
2.1 STM32单片机最小系统电路
STM32F103系列单片机被广泛应用于嵌入式系统设计中。本系统采用STM32F103C8T6作为主控芯片。
- 时钟电路:外接8MHz晶振和32.768kHz晶振,分别为主系统时钟和RTC时钟。
- 复位电路:通过上拉电阻与复位按键保证系统上电后进入稳定状态。
- 电源电路:STM32工作电压为3.3V,电源部分通过LDO稳压芯片将输入电压转换为3.3V供电。
单片机通过I/O口分别与温湿度传感器、LCD1602显示模块、蓝牙模块、风扇控制电路相连接,完成数据采集、处理和控制任务。
2.2 温湿度传感器电路
本系统选用 DHT11温湿度传感器。其特点是价格低廉、性能稳定,输出为数字信号,通信方式为单总线协议。
- DHT11内部包含NTC测温元件和湿敏电容元件,能够检测温度和相对湿度。
- 传感器通过数据线与STM32的GPIO口相连,单片机按照协议读取数据。
- 为保证传感器工作稳定,外围加上一个上拉电阻。
传感器实时采集到的大棚环境温湿度数据,将送入STM32进行处理。
2.3 1602液晶显示电路
LCD1602作为人机交互的显示设备,能直观地显示温度和湿度值。
- LCD1602通过并行方式与STM32连接,使用D0~D7作为数据总线,同时需要RS、RW、E控制信号。
- 显示内容包括:温度值(单位℃)、湿度值(单位%RH)。
- 在湿度超过75%时,屏幕上也会显示报警提示。
2.4 蓝牙模块电路
无线通信部分采用 HC-05蓝牙模块,其与STM32通过串口USART进行通信。
- 默认波特率为9600bps。
- STM32将采集到的温湿度数据通过蓝牙模块实时发送给手机APP。
- 用户通过APP发送“O”或“C”命令时,蓝牙模块接收数据并传输给STM32,STM32根据接收到的指令进行风扇控制。
2.5 风扇控制电路
风扇控制采用 继电器驱动电路。
- STM32的I/O口输出控制信号,经三极管放大后驱动继电器线圈吸合或释放。
- 继电器触点控制风扇电源,实现风扇的开启与关闭。
- 电路中加入续流二极管,避免继电器动作时产生的反向电动势干扰单片机。
2.6 电源电路
电源电路主要作用是将输入的5V或12V电压转换为STM32与外围模块所需的3.3V和5V电压。
- 通过AMS1117稳压芯片输出3.3V电压供给STM32和蓝牙模块。
- DHT11与LCD1602则使用5V供电。
- 电源部分增加电容滤波,防止大棚环境中电源波动导致系统死机。
3 程序设计
系统程序由主程序和各功能模块子程序组成。采用模块化编程,便于后期扩展和维护。
3.1 主程序设计
主程序负责初始化系统模块,并在主循环中完成数据采集、显示与控制逻辑。
#include "stm32f10x.h"
#include "dht11.h"
#include "lcd1602.h"
#include "bluetooth.h"
#include "relay.h"int main(void) {SystemInit();DHT11_Init();LCD1602_Init();USART1_Init(9600);Relay_Init();uint8_t temperature, humidity;while(1) {if(DHT11_ReadData(&temperature, &humidity) == SUCCESS) {LCD1602_Display(temperature, humidity);Bluetooth_SendData(temperature, humidity);if(humidity > 75) {Bluetooth_SendString("Warning: Humidity High!");LCD1602_ShowString(1,0,"Humidity>75%!!!");}}Bluetooth_ReceiveCommand(); // 检测APP下发的指令}
}
3.2 温湿度传感器程序设计
DHT11的通信采用时序方式,程序需严格按照协议读取温度与湿度。
uint8_t DHT11_ReadData(uint8_t *temp, uint8_t *humi) {uint8_t buf[5] = {0};if(DHT11_ReadBytes(buf) == SUCCESS) {*humi = buf[0];*temp = buf[2];return SUCCESS;}return ERROR;
}
3.3 LCD1602显示程序设计
LCD1602负责显示温湿度值。
void LCD1602_Display(uint8_t temp, uint8_t humi) {LCD_SetCursor(0,0);LCD_Printf("Temp:%dC", temp);LCD_SetCursor(1,0);LCD_Printf("Humi:%d%%", humi);
}
3.4 蓝牙通信程序设计
通过USART串口与HC-05通信,传输数据与接收指令。
void Bluetooth_SendData(uint8_t temp, uint8_t humi) {char buffer[32];sprintf(buffer,"T:%dC H:%d%%\r\n", temp, humi);USART1_SendString(buffer);
}void Bluetooth_ReceiveCommand() {char cmd = USART1_ReceiveChar();if(cmd == 'O') {Relay_On();USART1_SendString("Fan On\r\n");} else if(cmd == 'C') {Relay_Off();USART1_SendString("Fan Off\r\n");}
}
3.5 风扇控制程序设计
继电器驱动风扇的开启与关闭。
void Relay_On() {GPIO_ResetBits(GPIOB, GPIO_Pin_0); // 假设PB0控制继电器
}void Relay_Off() {GPIO_SetBits(GPIOB, GPIO_Pin_0);
}
4 总结
本设计基于STM32单片机,集成温湿度检测、液晶显示、蓝牙无线通信和风扇控制功能,形成一个完整的智能大棚环境监测与控制系统。通过温湿度传感器获取环境参数,实时在LCD和APP端显示,实现了信息的透明化;当湿度过高时,系统通过APP发出报警提示,提高了管理的智能化水平;用户可以通过APP远程控制风扇,达到自动化调节的效果。
该系统不仅能够提高农业生产效率和作物产量,还具有较高的推广价值,可广泛应用于温室大棚、仓储环境监测、家庭花卉种植等场景。其电路设计合理,程序模块化清晰,既具备实用性,也能作为嵌入式系统学习与毕业设计的优秀案例。