当前位置:首页 > 消费电子 > 消费电子
[导读]在精准农业与物联网技术的推动下,智慧农业大棚正逐步取代传统种植模式。其核心在于对环境参数的实时感知与智能调控,其中温湿度作为影响作物生长的关键因子,直接决定灌溉、通风与补光策略。本文基于STM32微控制器,结合DHT11温湿度传感器、PWM执行机构控制与PWM驱动的人机交互界面,构建一套低成本、高可靠性的全链路监控系统,实现从数据采集、处理、控制到交互的闭环管理。

在精准农业与物联网技术的推动下,智慧农业大棚正逐步取代传统种植模式。其核心在于对环境参数的实时感知与智能调控,其中温湿度作为影响作物生长的关键因子,直接决定灌溉、通风与补光策略。本文基于STM32微控制器,结合DHT11温湿度传感器、PWM执行机构控制与PWM驱动的人机交互界面,构建一套低成本、高可靠性的全链路监控系统,实现从数据采集、处理、控制到交互的闭环管理。

系统架构与程序原理

系统采用分层架构设计,分为感知层、控制层与交互层:

感知层:DHT11传感器通过单总线协议采集环境温湿度,数据经STM32解析后上传。

控制层:STM32根据预设阈值,通过PWM信号控制风机(降温)、加湿器(增湿)等执行机构。

交互层:采用PWM调光的LED阵列与OLED显示屏构成人机界面,实时显示环境状态并支持阈值设置。

DHT11通信原理:DHT11采用单总线(One-Wire)协议,通信过程包括主机启动信号、传感器响应、40位数据传输(湿度整数+小数+温度整数+小数+校验和)。STM32通过精确延时模拟时序,读取数据并校验。

PWM控制原理:STM32的定时器(如TIM3)配置为PWM模式,通过调节占空比控制外设功率。例如,风机转速与PWM占空比成正比,实现无级调速,避免频繁启停造成的能耗与机械损耗。

PWM人机交互原理:利用PWM调节LED亮度,实现状态指示(如绿色常亮为正常,红色闪烁为报警);OLED屏幕通过I²C接口显示温湿度曲线与系统状态,提升可视化体验。

程序实现关键代码

1. DHT11数据采集

uint8_t DHT11_ReadData(uint8_t *temp, uint8_t *humi) {

uint8_t buffer[5] = {0};

DHT11_GPIO_Init(); // 配置GPIO为输出

DHT11_Start(); // 发送启动信号

if (DHT11_CheckResponse() == 0) return 1; // 检测响应

for (int i = 0; i < 5; i++) {

buffer[i] = DHT11_ReadByte(); // 读取40位数据

}

if (buffer[4] == (buffer[0] + buffer[1] + buffer[2] + buffer[3])) {

*humi = buffer[0];

*temp = buffer[2];

return 0; // 校验通过

}

return 1; // 校验失败

}

2. PWM控制风机与加湿器

void PWM_Control_Init(void) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

// 配置TIM3为PWM模式,频率1kHz

TIM_TimeBaseStructure.TIM_Period = 999;

TIM_TimeBaseStructure.TIM_Prescaler = 71;

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_Pulse = 0;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OC1Init(TIM3, &TIM_OCInitStructure); // CH1控制风机

TIM_OC2Init(TIM3, &TIM_OCInitStructure); // CH2控制加湿器

TIM_Cmd(TIM3, ENABLE);

}

void Set_Fan_Speed(uint16_t duty) {

TIM_SetCompare1(TIM3, duty); // 占空比0-999

}

3. PWM驱动LED状态指示

void LED_Status_Update(uint8_t status) {

switch (status) {

case STATUS_NORMAL:

TIM_SetCompare3(TIM3, 800); // 绿灯高亮

TIM_SetCompare4(TIM3, 0); // 红灯灭

break;

case STATUS_ALARM:

static uint8_t toggle = 0;

toggle = !toggle;

TIM_SetCompare3(TIM3, toggle ? 800 : 0); // 绿灯闪烁

TIM_SetCompare4(TIM3, toggle ? 0 : 800); // 红灯闪烁

break;

}

}

4. 主控制逻辑

int main(void) {

System_Init(); // 初始化时钟、GPIO、定时器

PWM_Control_Init();

OLED_Init();

uint8_t temp, humi;

while (1) {

if (DHT11_ReadData(&temp, &humi) == 0) {

OLED_ShowTempHumi(temp, humi);

if (temp > TEMP_THRESHOLD) {

Set_Fan_Speed(800); // 高温,风机高速

} else if (temp < TEMP_THRESHOLD - 5) {

Set_Fan_Speed(200); // 低温,风机低速或停

}

if (humi < HUMI_THRESHOLD) {

TIM_SetCompare2(TIM3, 700); // 低湿,加湿器开启

} else {

TIM_SetCompare2(TIM3, 0); // 湿度达标,关闭

}

LED_Status_Update(STATUS_NORMAL);

} else {

LED_Status_Update(STATUS_ALARM); // 传感器故障

}

delay_ms(2000); // 2秒采集一次

}

}

应用实现与优化

系统部署于实际农业大棚中,STM32F103C8T6作为主控,DHT11安装于作物冠层高度,风机与加湿器通过继电器模块连接PWM输出。OLED屏幕实时显示温湿度趋势图,支持按键设置阈值。

优化措施:

数据滤波:对连续3次DHT11读数取中值,消除偶然误差。

PWM软启动:风机启动时占空比从0渐变至目标值,避免电流冲击。

低功耗设计:在夜间或无人时段,降低采集频率至5分钟一次,延长系统寿命。

总结

本系统以STM32为核心,融合DHT11传感、PWM控制与人机交互技术,实现了农业大棚温湿度的智能监控。通过硬件协同与软件算法优化,系统具备响应快、控制准、交互友好等优点,为中小型农业设施提供了可落地的智能化解决方案。未来可接入LoRa或NB-IoT模块,实现远程监控与云平台管理,进一步拓展智慧农业的应用边界。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭