当前位置: 首页 > news >正文

STM32项目分享:花房环境监测系统

目录

 一、前言

 二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

PCB图 

五、程序设计 

六、实验效果 ​编辑

 七、包含内容

  项目分享


 一、前言

项目成品图片:

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1NT1iBWEyJ/?spm_id_from=333.337.search-card.all.click&vd_source=a90461cae133c0c360a3780433efae62

(资料分享见文末) 

 二、项目简介

1.功能详解

基于STM32的花房环境监测系统

功能如下:

  1. 温湿度采集:使用DHT11温湿度传感器采集环境温湿度
  2. 光照强度采集:通过光敏传感器采集环境光照强度
  3. 土壤湿度采集:通过土壤湿度传感器采集土壤湿度
  4. LED照明灯控制:可自动模式下根据环境光强触发或手动模式下按键或APP开关
  5. 蜂鸣器报警:自动模式下土壤湿度过低触发
  6. 遮光帘控制:可自动模式下根据环境光强触发或手动模式下按键或APP开关
  7. OLED显示:将检测到的环境数据显示在OLED屏幕上。
  8. 阈值调节:可通过按键设置环境温度、光照上限、光照下限、土壤湿度阈值也可以通过手机APP进行调制
  9. 模式切换:可通过按键或APP切换模式
  10. 机智云APP:通过手机APP可以显示环境信息,可切换模式和控制指令下发以及阈值调节

2.主要器件

  • STM32F103C8T6最小系统板
  • DHT11温湿度传感器
  • 光敏电阻传感器
  • 土壤湿度传感器
  • OLED显示屏(4针IIC协议)
  • ESP8266-01S(WIFI模块)
  • 28BYJ51步进电机
  • 蜂鸣器
  • 大功率LED灯

三、原理图设计

四、PCB硬件设计

PCB图 

五、程序设计 

#include "stm32f10x.h"
#include "led.h"
#include "beep.h"
#include "usart.h"
#include "usart2.h"
#include "usart3.h"
#include "delay.h"
#include "dht11.h"
#include "bump.h"
#include "LDR.h"
#include "oled.h"
#include "key.h"
#include "Modules.h"
#include "TIM2.h"
#include "TIM3.h"
#include "adcx.h"
#include "flash.h"
#include "stepmotor.h"
#include "fan.h"
#include "gizwits_product.h"
#include "gizwits_protocol.h"
#include "stm32f10x_iwdg.h"/****************异方辰电子工作室*******************STM32*项目 		:    STM32智能花房环境监测系统
*版本		:    V2.0
*MCU		:    TM32F103C8T6
*接口		:    见代码
*BILIBILI	:    异方辰电子
*小红书		:    异方辰电子
*CSDN		:    异方辰电子
*授权IP		:    辰哥单片机设计、异方辰、YFC电子、北海单片机设计**********************BEGIN***********************/#define KEY_Long1	11#define KEY_1	1
#define KEY_2	2
#define KEY_3	3
#define KEY_4	4#define FLASH_START_ADDR	0x0801f000	//写入的起始地址//传感器变量声明
u8 temp;//温度变量
u8 humi;//湿度变量
u16 lux;//光照值变量
u16 soil_Humi;//土壤湿度变量
u16 CO2;//CO2变量SensorModules sensorData;								//声明传感器数据结构体变量
SensorThresholdValue Sensorthreshold;		//声明传感器阈值结构体变量
DriveModules driveData;									//声明驱动器状态结构体变量int mode = 0;	//系统模式  0自动  1手动  设置//系统静态变量
uint8_t count_a = 1;  //自动模式按键数
uint8_t count_m = 1;  //手动模式按键数
static uint8_t count_s = 1;	 //设置模式按键数
extern volatile uint8_t motor_busy;  // 电机忙标志
extern uint8_t valueFlashFlag;
/*** @brief  显示菜单内容* @param  无* @retval 无*/
enum 
{AUTO_MODE = 0,MANUAL_MODE,SETTINGS_MODE}MODE_PAGES;int main(void)
{ SystemInit();//配置系统时钟为72M	delay_init(72);ADCx_Init();//ADC初始化LED_Init();//LED初始化LED_On();//打开LEDKey_Init();//按键初始化MOTOR_Init();//步进电机初始化FAN_Init();//风扇初始化OLED_Init();//OLED初始化DHT11_Init();//温湿度初始化delay_ms(300);OLED_Clear();//OLED清屏LDR_Init();//光敏初始化BEEP_Init();//蜂鸣器初始化FLASH_ReadThreshold();BUMP_Init();//水泵初始化TS_Init();//土壤湿度传感器初始化TIM2_Init(72-1,1000-1);USART1_Config();//串口初始化USART2_Config();//串口2初始化TIM3_Int_Init(1000-1,72-1);		//定时1ms中断printf("Start \n");OLED_Clear();userInit();gizwitsInit();gizwitsHandle((dataPoint_t *)&currentDataPoint);//机智云协议处gizwitsSetMode(WIFI_AIRLINK_MODE); //默认一键配网ScanGizwitsMode();//机智云配网模式delay_ms(1000);OLED_Clear();while (1){	do{currentDataPoint.valuegz_max = Sensorthreshold.lux_Max;currentDataPoint.valuegz_min = Sensorthreshold.lux_Min;currentDataPoint.valuewd = Sensorthreshold.tempValue;currentDataPoint.valuetrsd = Sensorthreshold.soilHumiValue;}while(0);//阈值上传机智云SensorScan();	//获取传感器数据userHandle();//上报gizwitsHandle((dataPoint_t *)&currentDataPoint);//下发switch(mode)//模式选择{case AUTO_MODE://自动模式;OLED_autoPage1();	//显示主页面1固定信息SensorDataDisplay1();	//显示传感器1数据AutoControl();//自动模式控制/*按键1按下时切换模式*/if (KeyNum == KEY_1)   //系统模式mode  0自动  1手动  2设置{KeyNum = 0;//按键清零mode = MANUAL_MODE;//切换至手动模式count_m = 1;//手动模式下按键次数赋值OLED_Clear();//清屏}if (KeyNum == KEY_Long1)//长按按键1三秒{KeyNum = 0;//按键清零mode = SETTINGS_MODE;//切换至阈值调节模式count_s = 1;//阈值切换模式下按键次数赋值OLED_Clear();//清屏}Control_Manager();//控制函数执行相应的执行器break;case MANUAL_MODE://手动模式OLED_manualOption(SetManual());//显示手动模式界面的选择符号ManualControl(SetManual());//手动模式控制OLED_manualPage1();//显示手动模式设置界面ManualSettingsDisplay1();//显示手动模式设置参数界面if (KeyNum == KEY_1)   //系统模式mode  1手动  0自动(默认){KeyNum = 0;mode = AUTO_MODE;//切换至自动模式count_a = 1;//自动模式下按键次数赋值OLED_Clear();//清屏}Control_Manager();//控制函数执行相应的执行器break;case SETTINGS_MODE://阈值调节模式OLED_settingsOption(SetSelection());	//实现阈值设置页面的选择功能ThresholdSettings(SetSelection());	//实现阈值调节功能	OLED_settingsPage1();	//显示阈值设置界面1固定信息SettingsThresholdDisplay1();	//显示传感器阈值1数据						//判断是否退出阈值设置界面if (KeyNum == KEY_1){KeyNum = 0;driveData.Mode_Flag=0;  mode = AUTO_MODE;	//跳转到主界面count_a = 1;//自动模式下按键次数赋值OLED_Clear();	//清屏//存储修改的传感器阈值至flash内	FLASH_W(FLASH_START_ADDR, Sensorthreshold.tempValue,Sensorthreshold.lux_Max,Sensorthreshold.lux_Min,Sensorthreshold.soilHumiValue);}userHandle();//上报gizwitsHandle((dataPoint_t *)&currentDataPoint);//下发break;default: break;}if (valueFlashFlag){valueFlashFlag = 0;FLASH_W(FLASH_START_ADDR, Sensorthreshold.tempValue, Sensorthreshold.lux_Max,Sensorthreshold.lux_Min, Sensorthreshold.soilHumiValue);			}userHandle();//上报gizwitsHandle((dataPoint_t *)&currentDataPoint);//下发}
}

六、实验效果 

 七、包含内容

  项目分享

http://www.dtcms.com/a/601430.html

相关文章:

  • 第1章 认识Qt
  • JDK 25 重大兼容性 Bug
  • MyBatis多表联查返回List仅一条数据?主键冲突BUG排查与解决
  • c 做网站方便吗手机企业wap网站
  • el-table有固定列时样式bug
  • Vue项目中 安装及使用Sass(scss)
  • 珠海本地网站设计公司什么网站可以发布信息
  • UEFI+GPT平台一键安装Windows方法
  • GPT‑5 全面解析与开发者接入指南
  • 站优云seo优化页面模板这样选
  • dism++功能实操备份与还原
  • 动态型网站建设哪里便宜app开发需要用到哪些工具
  • 网站建设的什么是网站建设的第一阶段佛山市房产信息网
  • React 18
  • CVPR 2025|电子科大提出渐进聚焦Transformer:显著降低超分辨率计算开销
  • CTFHub Web进阶-Linux:动态装载
  • Nginx域名与SSL证书配置完整流程
  • 美食网站要怎么做自己做相册的网站
  • 全国 网站备案 数量电子设计工程官网
  • 一、UDP以太网帧格式
  • 网络协议设计原则简介和资料推荐
  • 有哪些程序网站品牌和商标的区别
  • C语言编译器选择指南 | 初学者实用教程
  • 小智机器人MCP
  • 对于给不良网站发律师函如何做收银系统哪个软件好
  • 网站管理工作总结安阳县事业单位招聘2021
  • RK-Android11-修改系统的鼠标光标
  • vs2022 IDE扩展无法卸载/VSI 插件卸载及实例清理
  • 华为OD机试 双机位A卷 - 智能驾驶 (JAVA Python C++ JS GO)
  • 广州网站制作实力乐云seo怎么提高网站的流量