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

STM32项目分享:家庭环境监测系统

 目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板打样焊接图

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片: 

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1oi42117dp/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2

(资料分享见文末) 

二、项目简介

1.功能详解

基于STM32的家庭环境监测系统。功能如下:

  1. 温湿度采集:使用DHT11温湿度传感器采集环境温湿度
  2. 烟雾浓度采集:通过MQ-2烟雾传感器采集环境烟雾浓度
  3. PM2.5浓度采集:通过粉尘传感器采集环境PM2.5浓度
  4. 二氧化碳浓度采集:通过CO2气敏传感器检测二氧化碳浓度
  5. 风扇控制:可自动模式下根据环境温度触发或手动模式下APP开闭
  6. 加湿器控制:可自动模式下根据环境湿度触发或手动模式下APP开闭
  7. 窗户:可自动模式下根据PM2.5浓度触发或手动模式下APP开闭
  8. OLED显示:将检测到的环境数据显示在oled屏幕上。
  9. 蜂鸣器报警:异常情况下本地蜂鸣器触发报警
  10. APP功能:使用机智云APP,包括功能有自动模式和手动模式切换,控制并显示风扇、加湿器和窗户状态,查看蜂鸣器报警状态,显示当前环境温湿度、烟雾浓度和PM2,5浓度信息

2.主要器件

  • STM32F103C8T6最小系统板
  • DHT11温湿度传感器
  • OLED显示屏(4针I2C协议)
  • WiFi模块(ESP8266-01s)
  • MQ-2烟雾浓度传感器
  • PM2.5模块
  • 28BYJ51步进电机
  • 5V风扇模块
  • 加湿器模块及驱动板
  • 继电器
  • 蜂鸣器
  • LED灯

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板打样焊接图

五、程序设计 

int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);OLED_Init();ADCX_Init();GP2Y_Init();MQ2_Init();DHT11_UserConfig();MOTOR_UserConfig();Key_Init();Relay_Init();Buzzer_Init();Timer2_Init(9,14398);uart2_init(9600);uart1_init(115200);GENERAL_TIM_Init();userInit();		//完成机智云初始赋值gizwitsInit();	//开辟一个环形缓冲区Delay_ms(500);gizwitsSetMode(WIFI_AIRLINK_MODE);IWDG_Init();	//初始化看门狗while (1){IWDG_ReloadCounter(); //重新加载计数值 喂狗		switch(Menu){case 1:	Menu1();//判断步进电机是否需要进行旋转if(Window_Flag_ON == 1){MOTOR_Direction_Angle(1,0,90,1);	//顺时针旋转90度MOTOR_STOP();Window_Flag_ON = 0;}if(Window_Flag_OFF == 1){MOTOR_Direction_Angle(0,0,90,1);	//逆时针旋转90度MOTOR_STOP();Window_Flag_OFF = 0;}break;case 2: OLED_Clear();Menu2();Menu = 3;//用于判断阈值数据有没有被更改old_Temp_value = Temp_value;old_Humi_value = Humi_value;old_Smog_value = Smog_value;old_PM25_value = PM25_value;break;case 3: //显示传感器阈值OLED_ShowNum(1,13,Temp_value,2);OLED_ShowNum(2,13,Humi_value,2);OLED_ShowNum(3,13,Smog_value,4);OLED_ShowNum(4,13,PM25_value,4);//进行阈值选择if(KeyNum == 1){KeyNum = 0;value_Option_Num++;if(value_Option_Num > 4){value_Option_Num = 1;}}//显示选择标识符“>”OLED_Option(value_Option_Num);//检测阈值数值的调节switch(value_Option_Num){case 1: if(KeyNum == 3){KeyNum = 0;Temp_value++;if(Temp_value >= 100){Temp_value = 1;}}if(KeyNum == 4){KeyNum = 0;Temp_value--;if(Temp_value >= 100){Temp_value = 99;}}break;case 2: if(KeyNum == 3){KeyNum = 0;Humi_value++;if(Humi_value >= 100){Humi_value = 1;}}if(KeyNum == 4){KeyNum = 0;Humi_value--;if(Humi_value >= 100){Humi_value = 99;}}break;case 3: if(KeyNum == 3){KeyNum = 0;Smog_value++;if(Smog_value >= 501){Smog_value = 1;}}if(KeyNum == 4){KeyNum = 0;Smog_value--;if(Smog_value >= 5001){Smog_value = 500;}}break;case 4: if(KeyNum == 3){KeyNum = 0;PM25_value++;if(PM25_value >= 501){PM25_value = 1;}}if(KeyNum == 4){KeyNum = 0;PM25_value--;if(PM25_value >= 501){PM25_value = 500;}									}break;}//退出阈值设置界面if(KeyNum == 2){KeyNum = 0;//当阈值数据被更改后,才会写入FLASH中if((old_Temp_value != Temp_value) || (old_Humi_value != Humi_value) || (old_Smog_value != Smog_value) || (old_PM25_value != PM25_value)){//写入传感器阈值数据FLASH_W(FLASH_START_ADDR,Temp_value,Humi_value,Smog_value,PM25_value);				}Menu = 1;	//回到主菜单OLED_Clear();	//清屏}break;			}userHandle();	//更新机智云数据点变量存储的值gizwitsHandle((dataPoint_t *)&currentDataPoint);	//数据上传至机智云					}
}

六、实验效果 

七、资料内容

项目分享

相关文章:

  • 【mysql】关键词搜索实现
  • Highcharts 饼图
  • Python爬虫-贝壳二手房“改进版”
  • 深入了解 Android 中的 ViewStub
  • yolov8训练初体验
  • CSS的 text-decoration
  • 八大排序浅入浅出
  • Instagram APIj接口——快速获取Ins帖子媒体内容下载链接
  • python脚本获取本机IP的方式
  • Flume基础教程
  • 使用python下载图片且批量将图片插入word文档
  • 如何设置MySQL远程访问权限?
  • [学习笔记]-MyBatis-Plus简介
  • Minillama3->dpo训练
  • OCR识别
  • [NodeJS] 关于Buffer
  • 2019.2.20 c++ 知识梳理
  • crontab执行失败的多种原因
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • JavaScript类型识别
  • JavaWeb(学习笔记二)
  • Laravel Mix运行时关于es2015报错解决方案
  • SAP云平台里Global Account和Sub Account的关系
  • Sass 快速入门教程
  • socket.io+express实现聊天室的思考(三)
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Spring Boot快速入门(一):Hello Spring Boot
  • SpringBoot 实战 (三) | 配置文件详解
  • Spring核心 Bean的高级装配
  • 初探 Vue 生命周期和钩子函数
  • 从0到1:PostCSS 插件开发最佳实践
  • 反思总结然后整装待发
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 给Prometheus造假数据的方法
  • 看域名解析域名安全对SEO的影响
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 判断客户端类型,Android,iOS,PC
  • nb
  • Java数据解析之JSON
  • zabbix3.2监控linux磁盘IO
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • (2)STL算法之元素计数
  • (30)数组元素和与数字和的绝对差
  • (42)STM32——LCD显示屏实验笔记
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Note)C++中的继承方式
  • (pojstep1.3.1)1017(构造法模拟)
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307