一、本文将具体说明基于STM32的自动养花系统设计开发详情和流程,该系统可实现以下这些功能:
本系统采用器件核心为STM32F103C8T6最小核心板。搭有Water Sensor水位传感器、土壤湿度传感器、光敏电阻、jw二氧化碳传感器、水泵、存储器模块等
系统可实现的功能:
可实时检测植物的生长环境,检测土壤的湿度、空气中的二氧化碳、光照强度,并在OLED屏幕上展现。设有湿度、二氧化碳浓度、光照强度等阈值,当检测到的数据异常,则执行相应的操作,如:当土壤湿度过低,则打开水泵进行浇水,二氧化碳浓度过高则打开通风口,进行减低二氧化碳浓度处理;光照强度过低则进行补光。系统对于给植物浇花的水箱设有水位传感器实时检测含水量,过低则进行抽水补充,且设有阈值存储器,可实时的调整阈值范围,适应各种植物的养护。
系统还搭有联网功能,使用的是机智云app云平台,可通过手机远程实时监测植物的环境参数,并可远程打开养护操作如:补光、抽水等功能。
植物养护系统(阉割版)
设计方向:系统含有两个操作模式,自动模式和手动模式。
自动模式:系统自动检测各种环境参量,参数异常则自动执行对应操作功能。
养花系统自动检测模式
手动模式:可人为在单片机通过按键查看各种环境参数,并执行对应的操作功能,每一功能模块为单独成立。
界面美化:为了美化操作界面,本系统对oled的界面显示进行了优化,每个功能进行单独分类,并通过按键选择对应的功能,减少操作冗杂。
界面美化显示
二、代码部分展示
Water Sensor水位传感器
检测水箱是否有水:
#include "water.h"
#include "delay.h"#define WA GPIO_Pin_11/*************** 配置LED用到的I/O口 *******************/void Water_GPIO_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); // 使能端口时钟 GPIO_InitStructure.GPIO_Pin = WA; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化端口//GPIO_SetBits(GPIOB, WA); // 关闭所有LED
}
int Water_state(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin_x)
{Delay_ms(10);if( GPIO_ReadInputDataBit(GPIOx, GPIO_Pin_x) == 0){return 1;}else{return 0; }
}
if( Water_state(GPIOB, GPIO_Pin_11)== 0){printf("rn有水");}elseprintf("rn无水");
界面美化:
//选择界面
void Select_Show(void)
{u8 key,num=0;OLED_Clear(0x00);//清屏while(1){Wifi_date();//机智云接收数据包if(num<7){Admin_show();//各大功能页面}if(num>=7){num=1;}key=key_scan();if(key==1){num++;}if(key==3){OLED_Clear(0x00);//清屏Smart_Greenhouse();//回到主页面}///空气温湿度单独页面if(num==1){OLED_Clear(0x00);//清屏while(1){Wifi_date();//机智云接收数据包Oled_ShowPic(0,32,64,64,(u8 *)pic4);//天气key=key_scan();if(key==1){num++;break;}if(key==2){Weather_Show();//天气温湿度}if(key==3){num=0;OLED_Clear(0x00);//清屏break;}}}
///土壤湿度单独页面if(num==2){OLED_Clear(0x00);//清屏while(1){Wifi_date();//机智云接收数据包Oled_ShowPic(0,32,64,64,(u8 *)pic10);//土壤湿度key=key_scan();if(key==1){num++;break;}if(key==2){Soil_Show();//土壤湿度展示}if(key==3){num=0;OLED_Clear(0x00);//清屏break;}}}///光照强度单独页面if(num==3){OLED_Clear(0x00);//清屏while(1){Wifi_date();//机智云接收数据包Oled_ShowPic(0,32,64,64,(u8 *)pic15);//光照强度key=key_scan();if(key==1){num++;break;}if(key==2){Light_Show();//光照强度展示}if(key==3){num=0;OLED_Clear(0x00);//清屏break;}}}///二氧化碳浓度单独页面if(num==4){OLED_Clear(0x00);//清屏while(1){Wifi_date();//机智云接收数据包Oled_ShowPic(0,32,64,64,(u8 *)pic18);//光照强度key=key_scan();if(key==1){num++;break;}if(key==2){C02_Show();//光照强度展示}if(key==3){num=0;OLED_Clear(0x00);//清屏break;}}}///阈值设置单独页面if(num==5){OLED_Clear(0x00);//清屏while(1){Wifi_date();//机智云接收数据包Oled_ShowPic(0,32,64,64,(u8 *)pic24);//设置图标key=key_scan();if(key==1){num++;break;}if(key==2){Set_Show();//设置展示}if(key==3){num=0;OLED_Clear(0x00);//清屏break;}}}//wifi单独页面if(num==6){OLED_Clear(0x00);//清屏while(1){Wifi_date();//机智云接收数据包Oled_ShowPic(0,32,64,64,(u8 *)pic28);//wifikey=key_scan();if(key==1){num++;break;}if(key ==2)//进入窗帘页面{Wifi_Show();}if(key==3){num=0;OLED_Clear(0x00);//清屏break;}}}}}
如想获取整个代码的同学,可添加本人QQ1972218606。
本人可接单片机系统设计,学生价,有兴趣的可联系本人。
如本文章所设计的系统,淘宝上设计做出实物至少要8百左右,本人则需要一半的价格便可,如果只需要代码则更便宜,可自行上淘宝查看对比,欢迎有兴趣的朋友联系。
本文发布于:2024-01-28 05:25:11,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063907175104.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |