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

STM32项目分享:基于单片机的空气质量检测系统设计

“我们不做一锤子买卖,只做技术成长的长期伙伴!”

目录

一、视频展示

二、项目简介

三、原理图设计

四、PCB硬件设计

五、程序设计

六、资料分享


一、视频展示

基于单片机的空气质量检测系统设计-视频分享

二、项目简介

    该设计由STM32F103C8T6作为主控芯片,供电系统,0.96的OLED显示屏,
    烟雾传感器和PM2.5传感器,一个继电器,以及三个独立按键和蜂鸣器组成。
本设计的功能:
 1、 上电屏幕打开默认进入数据主页。
    该页面会显示当前测得数据包括PM2.5数值和烟雾浓度数值,其中PM2.5显示是每立方米含颗粒物数值。
 2、此时摁下按设置键时会进入阈值设置界面。
    
    共有两个阈值设置,都是通过摁下设置键并按顺序显示,方便调节阈值,其中分别为烟雾浓度阈值设置
    (设置其上限,测得烟雾浓度超过阈值数值,蜂鸣器就会报警,并且触发继电器,模拟风扇通风),
    PM2.5阈值设置(设置上限,和烟雾浓度阈值报警逻辑一致,也会触发继电器),其中最大值为0.66。
    
细节描述:当测得烟雾浓度数据跟阈值判断有冲突时会触发报警系统,并且打开继电器模拟通风,
    当数值恢复正常,继电器会关闭蜂鸣器也会关闭。

三、原理图设计

四、PCB硬件设计

五、程序设计

#include "stm32f10x.h"                  // 设备头文件
#include "delay.h"                      // 延迟函数库
#include "lcd.h"                        // LCD显示库
#include "IOput.h"                      // 输入输出控制库
#include "usart.h"                      // 串口通信库
#include "adc.h"                        // ADC转换库
#include "pwm.h"                        // PWM控制库
#include "timer.h"                      // 定时器库float pm;                                // PM2.5浓度
float AD_PM;                             // AD转换得到的PM2.5浓度float PM2, max_PM = 60;                // PM2.5相关变量
u8 show_flag, show1_flag, MQ2, max_YW = 60; // 显示标志和烟雾浓度相关变量void GetGP2Y(void)                       // 获取PM2.5浓度函数
{LED = 1;                             // LED关闭delay_us(280);                       // 延时280微秒AD_PM = Get_Adc_Average(6, 10) * 3.3 * 2/ 4095; // 获取并计算AD转换值delay_us(40);                        // 延时40微秒LED = 0;                             // LED打开delay_us(9680);                      // 延时9680微秒pm = AD_PM*100/0.37;              // 电压转换为PM2.5浓度值
}int main (void)
{delay_init();                        // 初始化延时函数NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级组Adc_Init();                          // 初始化ADCOLED_Init();                         // 初始化OLED显示屏delay_ms(1);                         // 延时1毫秒OLED_Clear();                        // 清屏output_init();                       // 初始化输出input_init();                        // 初始化输入while(1){GetGP2Y();                       // 获取PM2.5浓度MQ2 = Get_Adc_Average(1, 10) * 100 / 4096; // 获取并计算烟雾浓度key_scan(1, 0, 0);               // 扫描按键if(set_flag == 1 && show_flag != 1){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, 4, "PM2.5:");        // 显示PM2.5OLED_ShowNum(48, 4, pm, 4, 16);OLED_ShowCH(88, 4, "ug/m3");         // 显示单位OLED_ShowCH(0, 2, "烟雾浓度:");     // 显示烟雾浓度OLED_ShowNum(72, 2, MQ2, 3, 16);    // 显示烟雾浓度数值if(MQ2 >= max_YW || pm >= max_PM)   // 如果烟雾或PM2.5超过阈值{OLED_ShowCH(0, 6, "   已开启通风"); // 显示开启通风}else{OLED_ShowCH(0, 6, "   已关闭通风"); // 显示关闭通风}}if(show_flag == 1){OLED_ShowCH(0, 0, "最大烟雾:");    // 显示最大烟雾阈值OLED_ShowCH(0, 2, "最大PM2.5:");   // 显示最大PM2.5阈值OLED_ShowNum(90, 0, max_YW, 2, 16); // 显示最大烟雾阈值数值OLED_ShowNum(80, 2, max_PM, 4, 16); // 显示最大PM2.5阈值数值if(set_flag == 1){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){add_flag = 0;max_YW++;}if(dec_flag == 1){dec_flag = 0;max_YW--;}if(max_YW >= 100 || max_YW <= 0){max_YW = 0;}}if(show1_flag == 1){OLED_ShowCH(112, 2, "←");      // 显示箭头指示if(add_flag == 1){add_flag = 0;max_PM = max_PM + 1;}if(dec_flag == 1){dec_flag = 0;max_PM = max_PM -1;}if(max_PM >= 400 || max_PM <= 0){max_PM = 0;}}}if(MQ2 >= max_YW || pm >= max_PM)      // 如果烟雾或PM2.5超过阈值{jdq = 0;                           // 开启继电器BEEP = 0;                          // 蜂鸣器报警}else{jdq = 1;                           // 关闭继电器BEEP = 1;                          // 关闭蜂鸣器}}
}

六、资料分享

点击即可查看当前资料分享。

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

相关文章:

  • Windows 下PostgreSQL 数据库相关及 n8n .env文件的配置
  • jsp与网站开发期末试题做调查问卷赚钱哪个网站好
  • 在Centos7.9上安装配置zabbix proxy保姆级教程
  • 万能近似定理:神经网络「拟合万物」的理论基石
  • autofs自动挂载
  • 微软TinyTroupe“人格”模拟库:AI智能体市场调研-V3版本(五)
  • Opencv(九) : 图像旋转
  • 关键词解释:DAG 系统(Directed Acyclic Graph,有向无环图)
  • 【Linux】基础开发⼯具
  • 那些网站可以给产品做推广个人网站备案填写
  • 现代汽车确认遭遇数据泄露, 攻击者连续窃密9天获取用户驾照信息
  • 如何进行数据脱取
  • 将linux操作系统装入U盘20251107
  • 工业级部署指南:在西门子IOT2050(Debian 12)上搭建.NET 9.0环境与应用部署
  • ​AI大模型时代下的全栈技术架构:从深度学习到云原生部署实战
  • 手机版网站推荐银川网站建设哪家不错
  • maven与springBoot环境配置
  • C++程序设计实验(黑龙江大学)
  • 全屋智能家居定制小程序
  • 做电影网站需多大的空间网站建设意义
  • 拓普建站推广wordpress域名变更
  • 深度学习从入门到精通(一):深度学习的分类
  • 进制转换--c
  • opencv 学习: 05 像素操作
  • Mamba YOLO: 基于状态空间模型的目标检测简单基线
  • Java 大视界 --Java 大数据在智慧农业农产品市场价格预测与种植决策支持中的应用实战
  • K8s的标签应用和调度
  • 如何应用动作捕捉技术让户外重体力工作更安全
  • rust中的Cargo.toml文件
  • PD快充诱骗芯片 XSP15 支持获取快充电压可与外部MCU共用D+D-网络与电脑传输数据