一、基本介绍
项目名:基于单片机的大棚环境监测系统
项目编号:mcuclub-dz-661
单片机类型:STM32F103C8T6
具体功能:
1、通过SGP30测量CO2浓度,CO2浓度高于设置最大值进行风扇通风,并声光报警
2、通过光照检测模块5516测量光照强度,光照强度低于设置最小值进行补光
3、通过土壤环境模块检测当前土壤的温度、水分、PH、电导率、氮磷钾,检测到土壤的氮磷钾不在设置的范围之内,分别自动控制继电器控制氮磷钾水溶液打开
4、通过按键设置上下限值、手动控制氮磷钾水溶液、切换模式
5、通过显示屏OLED显示数据
6、通过蓝牙模块ECB02将测量数据发送到手机端,并可以控制风扇、补光、氮磷钾水溶液、切换模式
二、资料总览
实物资料
三、32单片机部分资料展示
1、实物图展示
单片机型号:STM32F103C8T6
供电接口:TYPE-C
板子类型:PCB集成板,厚度1.2,两层板(上下层覆铜接地)
器件类型:元器件基本上为插针式,个别降压芯片会使用贴片式。
2、原理图展示
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构图
3、PCB图展示
由原理图导出,中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。
两层板,上下覆铜接地。
四、系统框图
绘制软件:VISIO
此次设计是基于STM32F103C8T6单片机的大棚环境监测的设计,该设计主要可以分为三部分:输入、输出和中控。中控部分采用STM32F103C8T6单片机作为主控芯片,主要是对输入进行处理然后控制输出。输入由五部分组成:第一部分是CO2检测模块,通过该模块可以测量CO2浓度;第二部分是光照检测模块,通过该模块可以测量光照值;第三部分是土壤环境检测模块,通过该模块可以检测土壤中的温度、湿度、PH值、氮磷钾;第四部分是按键模块,通过按键可以设置各阈值;第五部分是供电电路,通过该模块给整个系统进行供电。输出由三部分组成,第一部分是显示模块,通过显示模块显示测量数据;第二部分是继电器模块,通过该模块控制风扇、补光、加水、加中和液、加营养液;第三部分是声光报警模块,当CO2浓度异常时进行声光报警提醒。除此之外蓝牙模块即作为输入也作为输出,将监测到的数据发送到手机端,手机端同时可远程控制继电器开关。
五、部分程序展示
软件版本:keil5
注意:逻辑程序和驱动程序分开,分布于main.c和其他.c文件
*******处理函数
*****/
void Manage_function(void)
{
if(flag_display == 0) //测量界面
{
if(flag_mode == 0) //如果处于自动模式
{
if(co2_value > co2_max) //CO2大于设置最大值,通风继电器闭合,并声光报警提醒
{
RELAY_TF = 1;
if(time_num % 2 == 0)
{
LED = ~LED;
BEEP = ~BEEP;
}
}
else //否则,通风继电器断开,关闭声光报警
{
RELAY_TF= 0;
LED = 1;
BEEP = 0;
}
if(light_value < light_min) //光照小于设置最小值,补光继电器闭合
{
RELAY_BG = 1;
}
else //否则,补光继电器断开
{
RELAY_BG = 0;
}
if(water_value < water_min*10) //水分小于设置最小值,补水继电器闭合
{
RELAY_JS = 1;
}
else //否则,补水继电器断开
{
RELAY_JS = 0;
}
if(ph_value < ph_min || ph_value > ph_max) //PH不在设置的区间内,中和液继电器闭合
{
RELAY_ZHY = 1;
}
else //否则,中和液继电器断开
{
RELAY_ZHY = 0;
}
if(nitrogen_value < nitrogen_min || phosphorus_value < phosphorus_min || potassium_value < potassium_min) //氮磷钾含量小于设置最小值,营养液继电器闭合
{
RELAY_YYY = 1;
}
else //否则,营养液继电器断开
{
RELAY_YYY = 0;
}
}
else //手动模式下,关闭声光报警
{
LED = 1;
BEEP = 0;
}
}
else //设置界面,关闭所有继电器及声光报警
{
LED = 1;
BEEP = 0;
RELAY_TF = 0;
RELAY_BG = 0;
RELAY_JS = 0;
RELAY_ZHY = 0;
RELAY_YYY = 0;
}
}