STM32项目分享:机智云智慧农业系统

描述

 

项目成品图片:


 

智慧农业

 


 

01

项目简介

 

1.功能详解

 

基于STM32的机智云智慧农业系统。

功能如下:

 

温湿度采集:使用DHT11温湿度传感器采集环境温湿度

土壤湿度采集:通过土壤湿度模块采集土壤湿度

光照强度采集:通过光敏电阻采集环境光照强度

二氧化碳浓度采集:通过CO2气敏传感器检测二氧化碳浓度

土壤温度采集:通过DS18B20传感器采集土壤温度

风扇控制:可自动模式下根据环境温度触发或手动模式下APP开闭

水泵控制:可自动模式下根据土壤湿度触发或手动模式下APP开闭

LED照明灯控制:可自动模式下根据环境光强触发或手动模式下按键开闭

通风口:通过步进电机模拟通风口

OLED显示:将检测到的环境数据显示在oled屏幕上

蜂鸣器报警:危险情况下本地蜂鸣器触发报警

APP功能:使用机智云APP,包括功能有控制并显示风扇、水泵、通风口和补光灯状态,选择工作模式为手动或自动模式,显示当前环境温湿度、土壤温湿度以及光照强度和二氧化碳浓度信息

 

2.材料清单

STM32F103C8T6最小系统板

DHT11温湿度传感器

OLED显示屏(4针I2C协议)

WiFi模块(ESP8266-01s)

土壤湿度传感器

DS18B20温度传感器

28BYJ51步进电机

二氧化碳传感器

光敏传感器

5V风扇模块

5V水泵模块

蜂鸣器

LED灯

 

02


 

原理图设计

 

智慧农业

 

03


 

PCB硬件设计

 

1.PCB图
 


 

智慧农业智慧农业

 


 

04


 

程序设计

 

 

  •  

int main(void){ ADCX_Init(); Timer2_Init(9,14398); Uart2_Init(9600); Uart1_Init(115200); Uart3_Init(); IWDG_Init(); //初始化看门狗 LDR_Init(); YL69_Init(); OLED_Init(); DHT11_Init(); LED_Init(); Buzzer_Init(); Relay_Init(); MOTOR_Init(); Key_Init(); Sensorthreshold.CO2Value = FLASH_R(FLASH_START_ADDR); //从指定页的地址读FLASH Sensorthreshold.luxValue = FLASH_R(FLASH_START_ADDR+2); //从指定页的地址读FLASH Sensorthreshold.tempValue = FLASH_R(FLASH_START_ADDR+4); //从指定页的地址读FLASH Sensorthreshold.humiValue = FLASH_R(FLASH_START_ADDR+6); //从指定页的地址读FLASH Sensorthreshold.soilTempValue = FLASH_R(FLASH_START_ADDR+8); //从指定页的地址读FLASH Sensorthreshold.soilHumiValue = FLASH_R(FLASH_START_ADDR+10); //从指定页的地址读FLASH GENERAL_TIM_Init(); userInit(); //完成机智云初始赋值 gizwitsInit(); //开辟一个环形缓冲区 while (1) { IWDG_ReloadCounter(); //重新加载计数值 喂狗 SensorScan(); //获取传感器数据 switch (menu) { case display_page1:            SensorDataDisplay1(); //显示传感器1数据            OLED_Menu1(); //显示主页面1固定信息            if (KeyNum == KEY_2) //是否按下按键2            { KeyNum = 0; OLED_Clear(); //清屏 menu = display_page2; //menu = 主页面2 } MotorOperation(); break; case display_page2: SensorDataDisplay2(); //显示传感器2数据 OLED_Menu2(); //显示主页面2固定信息 if (KeyNum == KEY_2) //是否按下按键2 { KeyNum = 0; OLED_Clear(); //清屏 menu = display_page1; //menu = 主页面1 } MotorOperation(); break; case settingsPage: //从主页面跳转至设置页面时进行一次清屏 if (OLED_Clear_Flag) { OLED_Clear_Flag = 0; //清除清屏标志位 OLED_Clear(); //清屏 } ThresholdModification(SetSelection()); //调节传感器阈值 OLED_Option(SetSelection()); //获取按键次数,从而判断“>”显示位置 //按键次数小于等于4时,显示设置页面1 if (SetSelection() <= 4) { settingsThresholdDisplay1(); //显示传感器阈值1数据 OLED_settingsPage1(); //显示阈值设置界面1固定信息 } else //否则显示设置页面2 { settingsThresholdDisplay2(); //显示传感器阈值2数据 OLED_settingsPage2(); //显示阈值设置界面2固定信息 } if (KeyNum == KEY_2) //判断用户是否按下退出按键 { KeyNum = 0; OLED_Clear(); //清屏 menu = display_page1; //回到主页面1 //存储修改的传感器阈值至flash内 FLASH_W(FLASH_START_ADDR, Sensorthreshold.CO2Value, Sensorthreshold.luxValue, Sensorthreshold.tempValue, Sensorthreshold.humiValue, Sensorthreshold.soilTempValue, Sensorthreshold.soilHumiValue); } break; default: break; } userHandle(); //更新机智云数据点变量存储的值 gizwitsHandle((dataPoint_t *)¤tDataPoint); //数据上传至机智云 }}

 

 


 

05


 

实验效果

 

智慧农业智慧农业


 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分