基于 STM32 的智慧农业温室控制系统设计与实现

摘要

本文提出一种基于 STM32 微控制器的智慧农业温室控制系统设计方案,通过集成多类型环境传感器、执行机构及无线通信模块,实现对温室内温湿度、光照、土壤湿度等参数的实时监测与自动调控。文中详细阐述硬件选型、电路连接及软件实现流程,并附关键代码示例,为智慧农业领域提供低成本、高可靠性的温室控制解决方案。

一、硬件系统设计

1. 核心芯片选型

芯片型号:STM32F103C8T6(Cortex-M3 内核,64KB Flash,20KB SRAM,37 个 GPIO 引脚,支持 USART/I2C/SPI 通信)
优势:低功耗、性价比高,适合物联网终端设备开发,支持 DMA 和硬件 I2C 提升数据传输效率。

2. 功能模块选型与功能

模块名称 型号 功能描述 通信方式
温湿度传感器 DHT11 采集温室内温度(0-50℃)、湿度(20%-90% RH) 单总线
光照强度传感器 BH1750 测量光照强度(1-65535 lx) I2C
土壤湿度传感器 YL-69 检测土壤湿度(0-100% 相对湿度) 模拟量
继电器模块 SRD-05VDC-SL 控制风扇、灌溉泵、补光灯等执行设备 数字量
无线通信模块 ESP8266-01S 支持 WiFi 联网,实现数据上传云端 USART
电源模块 LM2596+LM1117 提供 5V/3.3V 稳定电源

3. 硬件接线图

STM32F103C8T6       传感器/执行器       接线说明
--------------------------------------------------
PA0                DHT11 DATA         单总线连接(上拉10K电阻)
PB6/PB7            BH1750 SCL/SDA     I2C总线(4.7K上拉电阻)
PA1                YL-69 AO           模拟量输入(接ADC通道1)
PA2                ESP8266 TX         USART2_TX(波特率115200)
PA3                ESP8266 RX         USART2_RX
PA4-PA7            继电器模块IN1-IN4  数字输出(控制风扇、加热、灌溉、补光)
3.3V/GND           模块电源           共地连接

二、软件系统设计

1. 软件流程图

2. 软件架构说明

初始化模块:配置 GPIO、ADC、I2C、USART、定时器等外设。
数据采集模块:定时读取 DHT11、BH1750、YL-69 数据,进行数字滤波。
控制逻辑模块:基于阈值法实现环境调控(如温度 > 30℃开风扇,土壤湿度 < 30% 启动灌溉)。
通信模块:通过 ESP8266 将数据上传至云端平台(如阿里云 IoT),支持远程监控。

3. 关键代码示例

(1)传感器驱动:DHT11 读取(单总线协议)
uint8_t DHT11_ReadData(uint8_t *temp, uint8_t *humi) {
  uint8_t buf[5] = {0};
  uint8_t i, j, retry = 0;
  
  // 主机发起起始信号
  DHT11_GPIO_Port->BSRR = DHT11_Pin; // 拉高
  HAL_Delay(1);
  DHT11_GPIO_Port->BRR = DHT11_Pin; // 拉低
  HAL_Delay(20);
  DHT11_GPIO_Port->BSRR = DHT11_Pin; // 拉高
  HAL_Delay(30);
  
  // 等待从机响应
  if (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_SET) return 1;
  while (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_RESET && retry < 100) { retry++; HAL_Delay(1); }
  retry = 0;
  while (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_SET && retry < 100) { retry++; HAL_Delay(1); }
  
  // 读取40位数据(湿度整数+湿度小数+温度整数+温度小数+校验和)
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 8; j++) {
      while (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_RESET);
      HAL_Delay(4);
      buf[i] <<= 1;
      if (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_SET) buf[i] |= 1;
      while (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_SET);
    }
  }
  
  // 校验和验证
  if (buf[0] + buf[1] + buf[2] + buf[3] == buf[4]) {
    *humi = buf[0];
    *temp = buf[2];
    return 0; // 成功
  } else {
    return 2; // 校验失败
  }
}
(2)控制逻辑:环境调节函数
void Environment_Control(void) {
  // 温度控制:>30℃开风扇,<15℃开加热
  if (current_temp > 30) HAL_GPIO_WritePin(RELAY_FAN_GPIO_Port, RELAY_FAN_Pin, GPIO_PIN_RESET); // 风扇启动
  else if (current_temp < 15) HAL_GPIO_WritePin(RELAY_HEATER_GPIO_Port, RELAY_HEATER_Pin, GPIO_PIN_RESET); // 加热启动
  else {
    HAL_GPIO_WritePin(RELAY_FAN_GPIO_Port, RELAY_FAN_Pin, GPIO_PIN_SET);
    HAL_GPIO_WritePin(RELAY_HEATER_GPIO_Port, RELAY_HEATER_Pin, GPIO_PIN_SET);
  }

  // 光照控制:<500 lx开补光灯
  if (current_light < 500) HAL_GPIO_WritePin(RELAY_LIGHT_GPIO_Port, RELAY_LIGHT_Pin, GPIO_PIN_RESET);
  else HAL_GPIO_WritePin(RELAY_LIGHT_GPIO_Port, RELAY_LIGHT_Pin, GPIO_PIN_SET);

  // 土壤湿度控制:<30%启动灌溉
  if (soil_humi < 30) HAL_GPIO_WritePin(RELAY_WATER_GPIO_Port, RELAY_WATER_Pin, GPIO_PIN_RESET); // 灌溉
  else HAL_GPIO_WritePin(RELAY_WATER_GPIO_Port, RELAY_WATER_Pin, GPIO_PIN_SET);
}
(3)主函数流程
int main(void) {
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  MX_I2C1_Init();
  MX_ADC1_Init();

  while (1) {
    // 采集数据
    DHT11_ReadData(&humi, &temp);
    current_light = BH1750_Read(); // I2C读取光照强度
    soil_humi = HAL_ADC_GetValue(&hadc1); // ADC读取土壤湿度(需转换为百分比)
    
    // 控制执行器
    Environment_Control();
    
    // 数据上传(示例:通过ESP8266发送JSON数据)
    char data_buf[128];
    sprintf(data_buf, "{"temp":%d,"humi":%d,"light":%d,"soil":%d}", temp, humi, current_light, soil_humi);
    HAL_UART_Transmit(&huart2, (uint8_t*)data_buf, strlen(data_buf), 100);
    
    HAL_Delay(5000); // 5秒采集一次
  }
}

三、系统测试与扩展

1. 功能验证

手动测试:通过模拟传感器数据(如加热 / 冷却模块),验证风扇、加热、补光等设备是否按预设阈值启动。
远程监控:通过云端平台查看实时数据曲线,测试 WiFi 通信稳定性。

2. 扩展方向

增加 PID 算法优化温湿度控制精度;
集成摄像头实现作物生长图像监测;
接入语音控制或手机 APP 远程操控功能。

结论

本文设计的智慧农业温室控制系统基于 STM32 平台,实现了环境参数的精准采集与自动化调控,具备成本低、扩展性强的特点。通过硬件模块化设计与软件分层架构,可灵活适配不同规模的温室场景,为智慧农业的数字化升级提供了可行方案。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
小张想要超能力的头像 - 宋马
评论 抢沙发

请登录后发表评论

    暂无评论内容