你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】基于STM32单片机的农作物大棚灌溉系统设计

[复制链接]
STMCU小助手 发布时间:2022-5-11 13:37
一.硬件方案
本设计以STM32单片机作为主控芯片,实现对农作物大棚环境的温度、湿度、光强度和土壤湿度进行监测,并根据具体情况进行相应的补水和补光。
主要由STM32F103C8T6单片机最小系统+wifi模块+温湿度模块+1602液晶显示模块+光敏模块+土壤湿度检测模块+继电器模块+水泵电路+补光电路+按键电路+蜂鸣器报警+电源电路组成;如图:

LHRLOMZL3TS~V1RJIVD3.png

二.设计功能
(1)采用LCD1602显示屏进行显示,实时显示测量到的土壤湿度,空气温湿度,光照值。
(2)可使用Wifi模块实时将采集到的数据传递给手机app。手机app可设置浇水和光照阀值,低于阀值自动浇水和补光;同时也可通过手机app发送指令,直接进行补光和浇水。
(3)当任何一检测值低于阈值,蜂鸣器自动报警。
(4)可通过按键控制浇水补光;

三.设计原理图
原理图主要采用AD软件进行设计,如图:

Y$`@}1_C@17]2)H967V7XIT.png

四.软件设计
(1)程序流程图

VU]2M`SZL((YP]3(KGZKW18.png

(2)主程序源码

  1. int main(void)
  2. {
  3.         u16 adcx;
  4. //        float temp;
  5.         delay_init();                     //延时函数初始化         
  6.         uart_init(115200);                 //串口初始化为115200
  7.   TIM3_Int_Init(4999,5999);//50ms           
  8.          Adc_Init();                                  //ADC初始化            
  9.         Beep_Init();
  10.         Relay_Init();
  11.         Led_Init();
  12.         key_Init();
  13.         Lcd_Init();                  //初始化lcd屏幕
  14.         delay_ms(20);
  15.         Lcd_Puts(0,0,"Crop shed design");        //初始化显示         
  16.         delay_ms(1000);
  17.          delay_ms(1000);
  18.          delay_ms(1000);
  19.          delay_ms(1000);
  20.          delay_ms(1000);
  21.         while(1)
  22.         {
  23.                 if(ReadDhtFlag==1)//定时读取温湿度标志
  24.                 {                        
  25.                         
  26.                         sprintf(tab,"Temp:%02d DH:%02d",(u16)DHT11.Tem_H,(u16)DHT11.Hum_H);
  27.                         Lcd_Puts(0,0,(unsigned char *)tab);        //初始化显示

  28.                 }               

  29.                 if(readFlag == 1)// 定时读取标志
  30.                 {
  31.                         readFlag = 0;        
  32.                         soil =99 - (unsigned int)adcx*99/4096;// 浓度按照100算*100                                                        
  33.                         sprintf(tab,"soil:%02d",(unsigned int)soil);
  34.                         Lcd_Puts(0,1,(unsigned char *)tab);        //显示
  35.         
  36.                 }

  37.                 if(readDhtFlag == 1)// 定时读取标志
  38.                 {
  39.                         readDhtFlag = 0;        
  40.                         ligh_max = adcx*50.1/255;
  41.                         if(ligh_max>460)
  42.                                 ligh_max=460;
  43.                         ligh =475-ligh_max;// 浓度按照100算*100                        
  44.                         sprintf(tab,"ligh:%03d",(unsigned int)ligh);
  45.                         Lcd_Puts(8,1,(unsigned char *)tab);        //显示
  46.         
  47.                 }

  48.                 if(Key3==0)
  49.                 {
  50.                         delay_ms(10);
  51.                         if(Key3==0)
  52.                         {
  53.                                 HAS_Flag = !HAS_Flag;
  54.                                 Led=Led_before;
  55.                                 Relay=Relay_before;                                       
  56.                                 while(!Key3);  
  57.                         }
  58.                 }        
  59.                         
  60.                 if(DHT11.Tem_H>TEMP_Alarm||DHT11.Hum_H>HUMI_Alarm||soil>soilmax_Alarm||ligh>ligh_max_Alarm)
  61.                 {
  62.                         Beep=1;               
  63.                 }
  64.                 else
  65.                 {
  66.                         Beep=0;
  67.                 }
  68.         
  69.                 if(HAS_Flag==1)
  70.                 {
  71.                         sprintf(tab,"M:%01d",(u8)HAS_Flag);
  72.                         Lcd_Puts(13,0,(unsigned char *)tab);        //初始化显示                        
  73.                                 if(Key2==0)
  74.                                 {
  75.                                         delay_ms(10);
  76.                                         if(Key2==0)
  77.                                         {
  78.                                                 Relay =!Relay;        
  79.                                                 while(!Key2);  
  80.                                         }
  81.                                 }               
  82.                                 if(Key1==0)
  83.                                 {
  84.                                         delay_ms(10);
  85.                                         if(Key1==0)
  86.                                         {
  87.                                                 Led =!Led;        
  88.                                                 while(!Key1);  
  89.                                         }
  90.                                 }                        
  91.                 }
  92.                 else
  93.                 {
  94.                         sprintf(tab,"M:%01d",(u8)HAS_Flag);
  95.                         Lcd_Puts(13,0,(unsigned char *)tab);        //初始化显示                        
  96.                                 if(soil<soil_Alarm)
  97.                                 {
  98.                                         Relay =1;               
  99.                                 }
  100.                                 else
  101.                                 {
  102.                                         Relay =0;                        
  103.                                 }               
  104.                                 if(ligh<ligh_min_Alarm)
  105.                                 {
  106.                                         Led =1;               
  107.                                 }
  108.                                 else
  109.                                 {
  110.                                         Led =0;                        
  111.                                 }               
  112.                                 Led_before=Led;
  113.                                 Relay_before=Relay;                                
  114.                 }        
  115.         }                                                                                            
  116. }
复制代码




收藏 评论0 发布时间:2022-5-11 13:37

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版