STM32项目分享:智能植物灌溉系统
“我们不做一锤子买卖,只做技术成长的长期伙伴!”
目录
一、视频展示
二、项目简介
三、原理图设计
四、PCB硬件设计
五、程序设计
六、资料分享
一、视频展示
智能植物灌溉系统 -视频分享
二、项目简介
题目:智能植物灌溉系统
主控:STM32
土壤湿度传感器
DS18B20温度传感器
oled显示
蓝牙模块
三按键
灌溉继电器
DC供电
功能如下:
1、屏幕实时显示当前土壤湿度,温度等数据。
2、可按键设置温湿度阈值。
3、当土壤湿度低于最低湿度阈值时或土壤温度高于最大温度阈值时,打开灌溉继电器进行灌溉,
直到数据恢复正常即可关闭。
4、手机连接蓝牙,可得到单片机传来的的数据。
三、原理图设计

四、PCB硬件设计


五、程序设计
#include "stm32f10x.h" // Device header
#include "delay.h"
#include "lcd.h"
#include "IOput.h"
#include "usart.h"
#include "adc.h"
#include "ds18b20.h"extern u8 res,ress;
extern u8 receiving_flag; // 新增一个标志,用于标记是否开始接收数组
extern u16 buf[20];
u8 mode,controlState;u8 gz,sw;
u8 show_flag,show1_flag,f,dec_gz=30,dec_ts=20,count=0,ph,mode_flag=0;void wifi(){if(res=='a'){res=0;set_flag=1;}else if(res=='b'){res=0;add_flag=1;}else if(res=='c'){res=0;dec_flag=1;}}int main (void)
{delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);OLED_Init();delay_ms(1);OLED_Clear();output_init();input_init();Usart1_Init(9600);Usart2_Init(9600);DS18B20_Init();Adc_Init();while(1){wifi();temp_get();count++;sw=100-Get_Adc_Average(1,10)*100/4096; key_scan(1,0,0);if((set_flag==1 && show_flag!=1) || res=='a'){res=0;OLED_Clear();show1_flag=0;set_flag=0;show_flag++;if(show_flag>=2){show_flag=0;}}if(show_flag==0){OLED_ShowCH(0,0,"智能植物灌溉系统");OLED_ShowCH(0,2,"温度:");OLED_ShowNum(40,2,wd,2,16);OLED_ShowCH(64,2,"土湿:");OLED_ShowNum(104,2,sw,2,16);OLED_ShowCH(0,4,"灌溉:");if(jdq1==0){OLED_ShowCH(40,4,"打开");}else{OLED_ShowCH(40,4,"关闭");}if(add_flag==1){mode_flag++;add_flag=0;if(mode_flag>=2)mode_flag=0;}if(mode_flag==0){BEEP=1;OLED_ShowCH(0,6,"手动模式");if(dec_flag==1){dec_flag=0;jdq1=~jdq1;}}else{OLED_ShowCH(0,6,"自动模式");if(sw<=dec_ts || wd>=dec_gz){jdq1=0;BEEP=0;}else{jdq1=1;BEEP=1;}}}if(show_flag==1){OLED_ShowCH(0,0,"最高温度:");OLED_ShowCH(0,2,"最低土湿:");OLED_ShowNum(72,0,dec_gz,2,16);OLED_ShowNum(72,2,dec_ts,2,16);if((set_flag==1 && show_flag==1) || res=='b'){res=0;set_flag=0;show1_flag++;if(show1_flag>=2){show_flag=0; OLED_Clear();}}if(show1_flag==0){OLED_ShowCH(112,0,"←");if(add_flag==1 || res=='c'){res=0;add_flag=0;dec_gz++;}if(dec_flag==1 || res=='d'){res=0;dec_flag=0;dec_gz--;}if(dec_gz>=100 || dec_gz<=0){dec_gz=0;}}if(show1_flag==1){OLED_ShowCH(112,2,"←");if(add_flag==1 || res=='c'){res=0;add_flag=0;dec_ts++;}if(dec_flag==1 || res=='d'){res=0;dec_flag=0;dec_ts--;}if(dec_ts>=100 || dec_ts<=0){dec_ts=0;}}}if(count>=50){count=0;UsartPrintf(USART1,"温度:%f\r\n",wd);UsartPrintf(USART1,"土湿:%d\r\n",sw);if(jdq1==0)UsartPrintf(USART1,"灌溉继电器已打开\r\n");elseUsartPrintf(USART1,"灌溉继电器已关闭\r\n");UsartPrintf(USART1,"\r\n");}}
}
六、资料分享
点击即可查看当前资料分享。
