一、系统架构设计本智能大棚控制系统采用STM32F401CC作为核心控制器,通过多传感器采集环境参数,并驱动执行机构实现自动调控。系统硬件架构如下:

传感器模块:DHT11温湿度传感器(PA0)

土壤湿度传感器(PA3 ADC)

LDR光照传感器(MCP3008 CH0)

显示模块:LM016L LCD显示屏(PB0-PB10)

执行机构:通风/除湿电机(L298N驱动,PA14-PA15)水泵电机(第二片L298N驱动,PC14-PC15)加光灯(PA11)

通信接口:SPI接口连接MCP3008 ADC(PA5-PA8)

二、STM32CubeMX详细配置

1. 引脚配置表

引脚    功能    配置模式

PA0   DHT11数据线   GPIO_Input

PA3   土壤湿度传感器  ADC1_IN3

PA5   SPI1_SCK (MCP3008)  SPI1_SCKPA6SPI1_MISO (MCP3008) SPI1_MISOPA7SPI1_MOSI (MCP3008) SPI1_MOSIPA8MCP3008 CSGPIO_Output

PB0-PB7LCD数据线D0-D7GPIO_Output

PB8LCD EGPIO_OutputPB9LCD RWGPIO_Output

PB10LCD RSGPIO_Output

PA12 15L298N IN1-IN4GPIO_OutputPC14-15水泵L298N控制GPIO_Output

PA11加光灯控制GPIO_Output

2. 外设参数配置SPI1配置:

Mode: Full-Duplex Master

Hardware NSS: Disable

Prescaler: 16 (得到2.5MHz时钟)

Data Size: 8 bitsFirst Bit: MSB

First

Clock Polarity: LowClock Phase: 1 Edge

生成IAR工程代码

三、IAR工程代码实现编写应用程序,编译生成HEX文件。#include "main.h"/* Private includes ----------------------------------------------------------*//* USER CODE BEGIN Includes */

#include "uart.h"#include "DHT11.h"#include "uart.h"#include "stdio.h"#include "string.h"#include "LCD1602.h" #include "MCP3008.h"/* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*//* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*//* USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------*//* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*/SPI_HandleTypeDef hspi1;UART_HandleTypeDef huart1;/* USER CODE BEGIN PV */char textT[100];char textH[100];unsigned int DHT11_TEMP;// Declarar en al mainunsigned int DHT11_HUM;  //declarar en el mainchar texto[100];MCP3008_SPI spi_mpc3008;uint16_t adc0;float result_0;/* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/void SystemClock_Config(void);static void MX_GPIO_Init(void);static void MX_USART1_UART_Init(void);static void MX_SPI1_Init(void);/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 */void FAN_ON(void){  HAL_GPIO_WritePin (GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);   HAL_GPIO_WritePin (GPIOA, GPIO_PIN_13, GPIO_PIN_SET); }void FAN_OFF(void){  HAL_GPIO_WritePin (GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);   HAL_GPIO_WritePin (GPIOA, GPIO_PIN_13, GPIO_PIN_RESET); }void DehumidificationMotor_ON(void){  HAL_GPIO_WritePin (GPIOA, GPIO_PIN_14, GPIO_PIN_RESET);   HAL_GPIO_WritePin (GPIOA, GPIO_PIN_15, GPIO_PIN_SET); }void DehumidificationMotor_OFF(void){  HAL_GPIO_WritePin (GPIOA, GPIO_PIN_14, GPIO_PIN_RESET);   HAL_GPIO_WritePin (GPIOA, GPIO_PIN_15, GPIO_PIN_RESET); }void Lighting_ON(void){   HAL_GPIO_WritePin (GPIOA, GPIO_PIN_11, GPIO_PIN_SET); }void Lighting_OFF(void){   HAL_GPIO_WritePin (GPIOA, GPIO_PIN_11, GPIO_PIN_RESET); }void SoilMotor_ON(void){  HAL_GPIO_WritePin (GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);   HAL_GPIO_WritePin (GPIOC, GPIO_PIN_14, GPIO_PIN_SET); }void SoilMotor_OFF(void){  HAL_GPIO_WritePin (GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);   HAL_GPIO_WritePin (GPIOC, GPIO_PIN_14, GPIO_PIN_RESET); }

四、Proteus仿真设计1. 仿真电路关键元件连接传感器部分:DHT11连接PA0土壤湿度传感器使用电位器模拟,

连接PA3LDR通过MCP3008 CH0采集显示部分:LM016L数据线连接PB0-

B7控制线E/RW/RS连接PB8-PB10执行机构:

L298N驱动通风/除湿电机(PA12-PA15)

第二片L298N驱动水泵(PC14-PC15)

加光灯使用LED模拟(PA11)

 

2. 仿真调试技巧传感器模拟:

调节DHT11箭头设置温湿度值观察LCD显示变化及通风电机和除湿电机动作

调节土壤传感器的箭头模拟不同土壤湿度观察水泵电机动作

修改LDR箭头改变光照强度运行监测:

 

添加电压探针观察电机控制信号使用虚拟终端查看调试信息添加图表记录参数变化曲线故障测试:

可添加模拟传感器断开情况检查可添加测试极端环境值下的系统响应可添加验证各执行机构的互锁逻辑五、系统优化建议增加软件滤波:

添加状态指示灯使用不同颜色LED指示系统状态

报警状态时闪烁提示引入PID控制增加通信接口

添加UART接口连接WiFi模块实现手机APP远程

监控本方案完整实现了基于STM32F401CC的智能大棚控制系统,包含传感器数据采集、环境参数显示和自动控制功能,并通过Proteus仿真验证了系统设计的正确性。实际部署时可根据具体需求调整控制参数和扩展更多功能模块。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐