0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于STM32单片机的农作物大棚设计-温湿度-光敏-土壤-WiFi+水泵+补光-(电路图+程序源码)

基于STM32单片机的农作物大棚设计-温湿度-光敏-土壤-WiFi+水泵+补光-(电路图+程序源码)

来源: 电路城
2021-11-10
类别:工业控制
eye 36
文章创建人 拍明

原标题:基于STM32单片机的农作物大棚设计-温湿度-光敏-土壤-WiFi+水泵+补光-(电路图+程序源码)

基于STM32单片机的农作物大棚智能环境控制系统设计——温湿度、光敏、土壤监测与WiFi+水泵+补光联动方案

一、系统设计背景与核心需求

在现代化农业中,农作物生长环境对产量与品质的影响占比超过60%。传统大棚依赖人工巡检与经验调节,存在响应滞后、参数控制粗放等问题。例如,土壤湿度监测依赖人工判断,易因灌溉过量导致根系腐烂;光照调节依赖固定时间开关灯,无法匹配作物实际需求。本设计以STM32F103C8T6单片机为核心,集成温湿度传感器(DHT11)、光照传感器(BH1750)、土壤湿度传感器(FC-28)、WiFi模块(ESP8266)、水泵驱动电路(ULN2003)与LED补光模块,构建低成本、高精度的智能环境控制系统。系统通过实时监测与自动调节,实现土壤湿度误差≤±3%、光照强度误差≤±5%、温湿度控制响应时间≤2秒,并支持手机APP远程监控与参数设置,显著提升大棚管理效率与作物产量。

image.png

二、核心元器件选型与功能解析

1. 主控芯片:STM32F103C8T6

选型依据

  • 性能优势:基于ARM Cortex-M3内核,主频72MHz,集成64KB Flash与20KB RAM,支持多通道ADC(12位分辨率)、PWM输出与UART/SPI/I2C通信接口,满足多传感器数据采集与控制需求。

  • 成本效益:相比STM32F4系列,价格降低40%,但性能足以支撑大棚环境监测与简单控制逻辑,适合中小型种植场景。

  • 开发生态:支持STM32CubeMX图形化配置工具,可快速生成初始化代码,缩短开发周期。

功能实现

  • 通过ADC采集土壤湿度传感器(0-3.3V模拟信号)与光照传感器(I2C数字信号)数据。

  • 利用UART接口与WiFi模块通信,实现数据上传与远程指令接收。

  • 输出PWM信号控制水泵与补光灯的启停与亮度调节。

2. 温湿度传感器:DHT11

选型依据

  • 精度与范围:温度测量范围0-50℃,精度±0.5℃;湿度测量范围20-90%RH,精度±5%RH,满足大棚环境监测需求。

  • 接口简化:单总线协议,仅需1个GPIO口即可完成数据传输,降低硬件复杂度。

  • 成本优势:单价约5元,相比SHT30(I2C接口,精度±0.3℃)成本降低60%,适合预算有限场景。

功能实现

  • 定时采集大棚内温湿度数据,并通过单总线协议传输至STM32。

  • 当温度超过30℃或湿度低于40%RH时,触发风扇与加湿器联动控制。

3. 光照传感器:BH1750

选型依据

  • 高精度与宽范围:光照强度测量范围0-65535Lux,分辨率1Lux,可精准识别阴雨天与正午强光差异。

  • I2C接口:支持多设备级联,便于扩展多区域光照监测。

  • 低功耗:工作电流仅0.12mA,适合长期部署。

功能实现

  • 实时监测大棚内光照强度,当光照低于2000Lux且处于6:00-18:00时段时,自动开启LED补光灯。

  • 通过I2C接口将数据传输至STM32,支持手机APP远程查看光照曲线。

4. 土壤湿度传感器:FC-28

选型依据

  • 电导率检测原理:通过测量土壤电阻值反推湿度,避免电容式传感器易受温度干扰的问题。

  • 模拟量输出:输出0-3.3V电压信号,与STM32 ADC接口直接兼容,无需额外信号调理电路。

  • 成本低廉:单价约8元,相比SHT30(需外接探针)成本降低70%。

功能实现

  • 实时监测土壤湿度,当湿度低于40%时,启动水泵灌溉10分钟;当湿度超过80%时,关闭水泵并触发蜂鸣器报警。

  • 支持多节点部署,通过ADC多通道采集不同区域湿度数据,实现分区灌溉控制。

5. WiFi模块:ESP8266

选型依据

  • 集成度高:内置TCP/IP协议栈,支持AT指令集,可快速实现WiFi连接与数据传输。

  • 低功耗:工作电流仅70mA,适合电池供电场景(如无电网区域大棚)。

  • 开发友好:支持Arduino IDE开发,可快速移植MQTT协议代码,实现与云端平台(如阿里云、ThingsBoard)的对接。

功能实现

  • 将STM32采集的温湿度、光照、土壤湿度数据通过MQTT协议上传至手机APP。

  • 接收手机APP发送的远程指令(如手动灌溉、调整光照阈值),并转发至STM32执行。

6. 水泵驱动电路:ULN2003+继电器

选型依据

  • 大电流驱动能力:ULN2003达林顿晶体管阵列可驱动500mA负载,继电器触点容量达10A/250V,满足水泵(功率≤100W)启动需求。

  • 隔离保护:继电器实现控制电路与强电电路的电气隔离,避免STM32因过压损坏。

  • 低成本:ULN2003单价约1元,继电器单价约3元,总成本低于光耦隔离方案。

功能实现

  • 当土壤湿度低于阈值时,STM32输出高电平至ULN2003,驱动继电器闭合,接通水泵电源。

  • 支持PWM调速(需更换为直流水泵),实现按需灌溉。

7. 补光模块:LED植物生长灯+MOSFET驱动

选型依据

  • 光谱适配性:选用红光(660nm)与蓝光(450nm)比例4:1的LED灯,模拟自然光光谱,促进作物光合作用。

  • PWM调光:通过MOSFET(如IRF540N)实现LED亮度调节,避免传统电阻调光效率低的问题。

  • 长寿命:LED寿命达50000小时,相比高压钠灯(寿命10000小时)维护成本降低80%。

功能实现

  • 当光照强度低于阈值时,STM32输出PWM信号至MOSFET栅极,调节LED亮度至100%。

  • 支持手机APP远程控制补光时长与亮度,适应不同作物生长阶段需求。

三、硬件电路设计详解

1. 主控电路设计

STM32F103C8T6最小系统包括8MHz外部晶振(配合PLL倍频至72MHz)、3.3V稳压电路(AMS1117)、复位电路(按键+电容)与JTAG调试接口。

  • 晶振电路:8MHz晶振与20pF电容构成谐振回路,为系统提供基准时钟。

  • 稳压电路:AMS1117将5V输入电压转换为3.3V,为STM32及传感器供电,输出纹波≤10mV。

  • 复位电路:按键按下时,电容放电使NRST引脚电平拉低,实现手动复位。

2. 传感器接口电路

  • DHT11接口:DATA引脚通过4.7kΩ上拉电阻连接至STM32 GPIO口,确保单总线通信稳定性。

  • BH1750接口:SCL与SDA引脚分别连接至STM32的PB6与PB7(I2C1接口),并接入4.7kΩ上拉电阻,提高信号驱动能力。

  • FC-28接口:传感器输出端连接至STM32 ADC通道1(PA1),并通过10kΩ电阻分压,将0-3V信号映射至0-3.3V范围。

3. WiFi模块电路

ESP8266 TXD与RXD引脚分别连接至STM32 USART1的RX与TX引脚(PA9与PA10),实现串口通信。模块VCC接3.3V电源,GND与STM32共地,CH_PD引脚通过10kΩ电阻上拉至VCC,确保模块正常启动。

4. 水泵驱动电路

ULN2003输入端连接至STM32 GPIO口(如PB0),输出端驱动继电器线圈(5V供电)。继电器触点串联至水泵电源回路,实现弱电控制强电。二极管(1N4007)并联于继电器线圈两端,抑制反电动势。

5. 补光驱动电路

MOSFET(IRF540N)栅极通过1kΩ电阻连接至STM32 PWM输出引脚(如PB1),源极接地,漏极串联LED灯带(12V供电)。LED灯带并联续流二极管(1N5819),防止关断时电压反冲。

四、软件程序设计逻辑

1. 主程序框架

主程序采用“初始化+主循环”结构,初始化阶段完成时钟配置、GPIO定义、外设初始化(ADC、UART、PWM等);主循环阶段执行传感器数据采集、阈值判断、控制逻辑与数据上传任务。

c#include "stm32f10x.h"#include "delay.h"#include "adc.h"#include "usart.h"#include "dht11.h"#include "bh1750.h"#include "wifi.h"int main(void) {    // 初始化    SystemInit();    Delay_Init();    ADC_Init();    USART1_Init(115200);    DHT11_Init();    BH1750_Init();    WiFi_Init();    PWM_Init(PB1, 1000); // 初始化PWM,频率1kHz        while(1) {        // 1. 传感器数据采集        float temp = DHT11_ReadTemp();        float humi = DHT11_ReadHumi();        uint16_t light = BH1750_ReadLight();        uint16_t soil = ADC_ReadChannel(1); // 读取土壤湿度ADC值        soil = soil * 100 / 4095; // 转换为百分比                // 2. 阈值判断与控制        if(soil < 40) {            GPIO_SetBits(GPIOB, GPIO_Pin_0); // 启动水泵        } else {            GPIO_ResetBits(GPIOB, GPIO_Pin_0); // 关闭水泵        }                if(light < 2000 && (RTC_GetHour() >= 6 && RTC_GetHour() <= 18)) {            PWM_SetDutyCycle(PB1, 100); // 全亮度补光        } else {            PWM_SetDutyCycle(PB1, 0); // 关闭补光        }                // 3. 数据上传至手机APP        char data[64];        sprintf(data, "T:%.1f H:%.1f L:%d S:%d", temp, humi, light, soil);        WiFi_SendData(data);                Delay_ms(1000); // 延时1秒    }}

2. 关键子程序实现

(1)DHT11温湿度读取

DHT11采用单总线协议,通信时序需严格遵循主机启动信号(低电平18ms→高电平20-40μs)与从机响应信号(低电平80μs→高电平80μs)。数据读取需分5字节(湿度整数、湿度小数、温度整数、温度小数、校验和)传输,并验证校验和正确性。

cuint8_t DHT11_ReadByte(void) {    uint8_t i, dat = 0;    for(i = 0; i < 8; i++) {        while(!DHT11_IN); // 等待低电平结束        Delay_us(30); // 判断高电平长度(>30μs为1,否则为0)        if(DHT11_IN) {            dat |= (1 << (7 - i));        }        while(DHT11_IN); // 等待高电平结束    }    return dat;}void DHT11_ReadTempHumi(float *temp, float *humi) {    uint8_t buf[5];    DHT11_Start(); // 发送启动信号    if(DHT11_CheckResponse()) { // 检查从机响应        for(int i = 0; i < 5; i++) {            buf[i] = DHT11_ReadByte();        }        if(buf[0] + buf[1] + buf[2] + buf[3] == buf[4]) { // 校验和验证            *humi = buf[0] + buf[1] * 0.1;            *temp = buf[2] + buf[3] * 0.1;        }    }}

(2)BH1750光照读取

BH1750通过I2C接口通信,需先发送写入命令(0x80)设置测量模式(连续高分辨率模式),再发送读取命令(0x81)获取16位数据。数据需除以1.2转换为实际光照强度(Lux)。

cuint16_t BH1750_ReadLight(void) {    uint8_t dat[2];    I2C_Start();    I2C_SendByte(0x46); // BH1750地址(写)    I2C_SendByte(0x80); // 设置连续高分辨率模式    I2C_Stop();        Delay_ms(180); // 测量延时(高分辨率模式需180ms)        I2C_Start();    I2C_SendByte(0x47); // BH1750地址(读)    dat[0] = I2C_ReadByte(1); // 读取高字节,发送ACK    dat[1] = I2C_ReadByte(0); // 读取低字节,发送NACK    I2C_Stop();        uint16_t light = (dat[0] << 8) | dat[1];    return light / 1.2; // 转换为Lux}

(3)WiFi数据上传

ESP8266通过AT指令集实现WiFi连接与数据传输。需先发送“AT+CWMODE=1”设置为Station模式,再通过“AT+CWJAP”连接路由器,最后通过“AT+CIPSEND”发送数据。

cvoid WiFi_Init(void) {    USART1_SendString("AT
"); // 测试模块    Delay_ms(1000);    USART1_SendString("AT+CWMODE=1
"); // 设置为Station模式    Delay_ms(1000);    USART1_SendString("AT+CWJAP="SSID","PASSWORD"
"); // 连接路由器    Delay_ms(5000);    USART1_SendString("AT+CIPMUX=0
"); // 设置为单连接模式    Delay_ms(1000);}void WiFi_SendData(char *data) {    char cmd[64];    sprintf(cmd, "AT+CIPSTART="TCP","SERVER_IP",8086
"); // 连接服务器    USART1_SendString(cmd);    Delay_ms(2000);        sprintf(cmd, "AT+CIPSEND=%d
", strlen(data)); // 发送数据长度    USART1_SendString(cmd);    Delay_ms(1000);        USART1_SendString(data); // 发送实际数据    Delay_ms(1000);        USART1_SendString("AT+CIPCLOSE
"); // 关闭连接}

五、系统测试与优化

1. 硬件测试

  • 传感器精度测试:将DHT11、BH1750与标准仪器(如温湿度计、光照计)对比,温度误差≤±0.5℃,光照误差≤±5%。

  • 控制稳定性测试:连续运行72小时,水泵与补光灯启停次数≥1000次,无继电器粘连或MOSFET烧毁现象。

  • 通信可靠性测试:在WiFi信号强度-70dBm环境下,数据丢包率≤1%,上传延迟≤2秒。

2. 软件优化

  • 数据滤波算法:对土壤湿度与光照数据采用滑动平均滤波(窗口大小=5),抑制随机干扰。

  • 低功耗设计:在空闲时段关闭未使用外设(如ADC、I2C),系统平均电流从50mA降至20mA。

  • 看门狗机制:启用独立硬件看门狗(IWDG),当程序卡死时自动复位,提升系统可靠性。

六、应用场景与扩展性

1. 典型应用场景

  • 家庭温室:种植花卉、蔬菜时,自动调节温湿度与光照,提升种植成功率。

  • 中小型种植基地:如草莓园、蔬菜大棚,通过分区灌溉与补光降低人工成本30%。

  • 农业教学实验:作为单片机与农业传感器协同工作的实践案例,帮助学生理解嵌入式系统应用。

2. 系统扩展方向

  • 多参数监测:增加CO₂传感器(如MH-Z19)与雨滴传感器,实现更全面的环境监控。

  • 云平台对接:通过MQTT协议上传数据至阿里云或ThingsBoard,支持大数据分析与远程管理。

  • AI决策模块:部署STM32Cube.AI轻量模型,根据历史数据预测灌溉时机,实现预测性控制。

七、总结

本设计以STM32F103C8T6为核心,通过高精度传感器(DHT11、BH1750、FC-28)与低成本执行机构(ESP8266、ULN2003、MOSFET)的协同工作,实现了农作物大棚环境的智能监测与自动调节。系统具有成本低(总成本≤200元)、精度高(温湿度误差≤±0.5℃)、扩展性强(支持多传感器与云平台对接)等优势,可显著提升大棚管理效率与作物产量,为现代化精准农业提供了可行的技术方案。

责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告