文章目录
- 前言
- 资料获取
- 设计介绍
- 功能介绍
- 程序代码部分参考
- 设计清单
- 具体实现截图
- 参考文献
- 设计获取
前言
💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗
👇🏻 精彩专栏 推荐订阅👇🏻
单片机设计精品实战案例✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
资料获取
文章底部名片,详细资料联系我。
设计介绍
随着科技的不断发展,人们的生活水平逐步上升,对自身的健康有越来越重视,故而绿色食品成了人们的追捧,但是绿色食品的参量却不尽人意。蔬菜大棚种植可以完美得解决了人们的需求,但是传统的蔬菜大棚有许多明显的缺点,因此设计了基于STM32单片机蔬菜大棚温控系统。
在本设计中,通过使用STM32作为中央处理器,同时使用了层次化和模块化的电路设计理念,将软件与硬件巧妙的融合在一起,硬件为主,软件为辅。通过各种传感器对蔬菜大棚的内部环境因子进行采集,如空气的温度与湿度、光照的强度、土壤的温度与湿度,这些环境因子的数据就会被采集,通过加热片模块与java语言编译的客户端网站进行对接,客户端对数据进行处理后对STM32单片机反馈,STM32单片机反馈的信息进行处理。试验证实,此设计可以对蔬菜大棚的温度,土壤的湿度与温度,以及光照的强度进行检测并对其做出反应,如进行通风,洒水,补光。均实现了预期的效果.
功能介绍
1.可通过温湿度传感器,采集当前环境的温度、湿度数值。
2.可通过光敏传感器,采集当前的光照数值。
3.可通过继电器控制加热片实现种植环境温度恒温控制。
4.可通过继电器控制启水泵进行浇水,实现种植环境水量饱和。
5.可通过LED灯实现种植植物光照吸收充足
6.蜂鸣器警报
程序代码部分参考
#include "sys.h"
#include "adc.h"
#include "delay.h"
#include "lcd1602.h"
#include "ds18b20.h"
#include "timer.h"
#include "usart1.h"
#include "gpio.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define STM32_RX1_BUF Usart1RecBuf
#define STM32_Rx1Counter RxCounter
#define STM32_RX1BUFF_SIZE USART1_RXBUFF_SIZE
unsigned int light=0;
unsigned char temperature=0;
unsigned char setTempValue=35; //温度设置值
unsigned int setSoilMoisture=10;
unsigned char setLightValue=20; //光照设置值
unsigned int soilMoisture; //土壤湿度
bool usart_send_flag = 0;
bool mode = 0; //0是自动模式,1是手动模式
bool shuaxin = 0;
bool shanshuo = 0;
bool sendFlag = 1;
unsigned char setn=0;//记录设置键按下的次数
void displayLight(void)//显示光照
{
u16 test_adc=0;
/获取光线值
test_adc = Get_Adc_Average(ADC_Channel_8,10);//读取通道9的5次AD平均值
light = test_adc*99/4096;//转换成0-99百分比
light = light >= 99? 99: light;//最大只能到百分之99
if(light<=setLightValue && shanshuo)
{
void displaySoilMoisture(void)//显示土壤湿度
{
float voltage = 0.0;
voltage = Get_Adc_Average(ADC_Channel_9,10)*3.3/4096;
if(voltage > 3.3)voltage = 3.3;
if(voltage < 1.0) soilMoisture=99;
else
{
soilMoisture = (3.3 - voltage) / 0.023;
if(soilMoisture > 99)soilMoisture = 99; //最大取百分之99
}
if(soilMoisture<=setSoilMoisture && shanshuo)
{
LCD_Write_Char(9,0,' ');
LCD_Write_Char(10,0,' ');
}
else
{
LCD_Write_Char(9,0,soilMoisture/10+'0');
LCD_Write_Char(10,0,soilMoisture%10+'0');
}
}
void displaySetValue(void)
{
if(setn == 1)
{
LCD_Write_Char(7,1,setSoilMoisture/10+'0');
LCD_Write_Char(8,1,setSoilMoisture%10+'0');
}
if(setn == 2)
{
LCD_Write_Char(7,1,setTempValue/10+'0');
LCD_Write_Char(8,1,setTempValue%10+'0');
}
if(setn == 3)
{
LCD_Write_Char(7,1,setLightValue/10+'0');
LCD_Write_Char(8,1,setLightValue%10+'0');
}
}
void keyscan(void)
{
if(KEY1 == 0)//模式切换按键
{
delay_ms(20);//消抖
if(RELAY2==1)delay_ms(50);
if(KEY1 == 0)
{
while(KEY1 == 0);//等待按键松开
if(setn == 0)
{
mode = !mode;
if(mode==0)LCD_Write_String(13,0,"ZD");else LCD_Write_String(13,0,"SD");
}
}
}
if(KEY2 == 0)//模式切换按键
{
delay_ms(20);
if(RELAY2==1)delay_ms(50);
if(KEY2 == 0)
{
while(KEY2 == 0);
BEEP=0;
setn ++;
if(setn == 1)
{
LCD_Write_String(0,0,"set the Moisture");//显示字符串
LCD_Write_String(0,1," 00% ");
}
if(setn == 2)
{
LCD_Write_String(0,0," set the Temp ");//显示字符串
LCD_Write_String(0,1," 00 C ");
LCD_Write_Char(9,1,0xdf);
}
displaySetValue();
if(setn >= 4)
{
setn = 0;
LCD_Write_String(0,0,"Moisture: % ");//显示字符串
LCD_Write_String(0,1,"Gx: % Temp: C");
LCD_Write_Char(14,1,0xdf);
if(mode==0)LCD_Write_String(13,0,"ZD");else LCD_Write_String(13,0,"SD");
}
}
}
if(KEY3 == 0)//加键
{
delay_ms(20);
if(RELAY2==1)delay_ms(50);
if(KEY3 == 0 )
{
while(KEY3 == 0);
{
if(setSoilMoisture<99)setSoilMoisture++;
}
if(setn == 2)
{
if(setTempValue<99)setTempValue++;
}
if(setn == 3)
{
if(setLightValue<99)setLightValue++;
}
displaySetValue();
}
}
if(KEY4 == 0)//减键
{
delay_ms(20);
if(RELAY2==1)delay_ms(50);
if(KEY4 == 0 )
{
{
if(setLightValue>0)setLightValue--;
}
displaySetValue();
}
}
}
void UsartSendReceiveData(void)
{
char *str1=0,i;
int setValue=0;
char setvalue[5]={0};
if(STM32_Rx1Counter > 0)
{
delay_ms(20);
if(strstr(STM32_RX1_BUF,"light:")!=NULL)
{
BEEP = 1;
delay_ms(80);
BEEP = 0;
str1 = strstr(STM32_RX1_BUF,"light:");
while(*str1 >= '0' && *str1 <= '9') //判断是不是0到9有效数字
{
setvalue[i] = *str1;
i ++; str1 ++;
if(*str1 == ',')break; //换行符,直接退出while循环
ak; //换行符,直接退出while循环
delay_ms(10);
}
setvalue[i] = '\0'; //加上结尾符
setValue = atoi(setvalue);
if(setValue>=0 && setValue<=99)
int main(void)
{
delay_init(); //延时函数初始化
NVIC_Configuration();
delay_ms(500); //上电瞬间加入一定延时在初始化
DS18B20_GPIO_Init();
Adc_Init(); //ADC初始化
KEY_GPIO_Init(); //按键初始化
LCD_Init(); //屏幕初始化
DS18B20_Init();
uart1_Init(9600);
LCD_Write_String(0,0,"Moisture:00% ZD ");//显示字符串
LCD_Write_String(0,1,"Gx:00% Temp:00 C");
LCD_Write_Char(14,1,0xdf);
TIM3_Init(99,719); //定时器初始化,定时1ms
//Tout = ((arr+1)*(psc+1))/Tclk ;
//Tclk:定时器输入频率(单位MHZ)
//Tout:定时器溢出时间(单位us)
while(1)
{
keyscan();
if(setn == 0)
{
if(shuaxin == 1)
{
shuaxin = 0;
displayLight(); //显示光照
displaySoilMoisture(); //显示土壤湿度
displayTemperature(); //显示温度
if(mode==0)
{
if(light<=setLightValue)RELAY1=1;else RELAY1=0; //光线暗开灯
if(temperature>=setTempValue||soilMoisture<=setSoilMoisture)RELAY2=1;else RELAY2=0; //温度高或者湿度低开水泵
if(light<=setLightValue||temperature>=setTempValue||soilMoisture<=setSoilMoisture)BEEP=1;else BEEP=0; //蜂鸣器提醒
}
else
{
BEEP=0;
}
}
}
UsartSendReceiveData(); //串口发送接收数据
delay_ms(20);
}
}
设计清单
步进电机元件清单 |
---|
1.7*9万用板 |
2.四位一体共阳.36数码管 |
3.STC89C51 |
4.步进电机 |
具体实现截图
参考文献
[1] 嵌入式温室环境智能控制系统设计与实现[D]. 王惠.安徽大学,2020
[2] 基于STM32的物联网温室控制管理系统设计[D]. 王鹏辉.合肥工业大学,2019
[3] 基于嵌入式系统的蔬菜大棚管控系统设计[J]. 朱婧玮.南方农机,2023(05)
[4] 基于STM32蔬菜大棚控制系统设计[J]. 赵圆圆.智慧中国,2022(02)
[5] 基于STM32的蔬菜大棚控制系统设计[J]. 潘澳;周丽丽;何源长;谢欣秀.南方农机,2020(24)
[6] 基于STM32的蔬菜大棚环境监测系统设计[J]. 郑洋;宋振凯;赵婧.无线互联科技,2022(19)
[7] 智能蔬菜大棚生产环境调控系统[J]. 刘灿;朱晓坤;丁奇;邢康慧;伍刚.智慧农业导刊,2022(17)
[8] 基于物联网的农业蔬菜大棚环境监控系统设计[J]. 陈根;易治国.南方农机,2022(16)
[9] 我国设施农业发展现状、障碍及对策研究[J]. 李浩.南方农机,2021(23)
[10] 设施农业发展现状及对策[J]. 张小燕.甘肃农业,2021(04)
[11] 基于STM32单片机的仓库温度监测系统设计与控制[J]. 占华林;陈亮亮;张配阳;诸丽芳;于子正.科技创新与应用,2021(29)
[12] 基于物联网和雾计算的温室智能感控系统设计[J]. 苑光明;王曼娜;丁承君;冯玉伯.传感器与微系统,2020(08)
[13] 基于物联网技术的农业环境监控系统设计[J]. 潘新元;刘志强;张礼麟;段海军;韩勇.无线互联科技,2020(04)
[14]基于STM32的智慧蔬菜大棚系统设计[J] 冼进 冼允廷 华南理工大学计算机科学与工程学院 2023(04)
[15] 现代智慧农业设施大棚环境监测系统设计[J]. 张玮.计算机测量与控制,2020(08)
[16] Intelligent Temperature Control System of Greenhouse Based on STM32 Single Chip Microcomputer
设计获取
文章下方名片联系我即可~
精彩专栏推荐订阅:在下方专栏👇🏻
毕业设计精品实战案例
收藏关注不迷路!!
🌟文末获取设计🌟