标题:
stm32+攀藤G1空气质量检测源码与参考资料下载
[打印本页]
作者:
Samloa
时间:
2018-4-16 14:23
标题:
stm32+攀藤G1空气质量检测源码与参考资料下载
攀藤G1是一款数字式通用颗粒浓度传感器,可以用于获得单位体积内空气中悬浮颗粒物个数及质量,即颗粒物浓度,并以数字接口形式输出。传感器采用激光散射原理。即令激光照射在空气中的悬浮颗粒物上产生散射,同时在某一特定角度收集散射光,得到散射光强随时间变化的曲线。进而微处理器利用基于米氏(MIE)理论的算法,得出颗粒物的等效粒径及单位体积内不同粒径的颗粒物数量。输出为单位体积内各浓度颗粒物质量及个数。
攀藤G1传感器传输协议串口默认波特率:9600bps,校验位:无,停止位:1位。模块工作在连续采样方式下,模块在每一次采样结束后主动发送采样数据,采样响应时间小于600毫秒,数据更新时间小于2秒。模块发送数据包定义32个字节。控制器只要读取串口中数据,处理、传唤得到需要的数值。
屏幕显示的污染级别对应的颜色,严格按照这个配色来的,照片颜色显示质量不如实际显示颜色鲜艳。照不出效果。
0.jpg
(34.55 KB, 下载次数: 45)
下载附件
2018-4-17 02:04 上传
合体到一块了,内部空间。
电路原理图如下:
0.jpg
(81.96 KB, 下载次数: 50)
下载附件
2018-4-17 02:06 上传
stm32单片机源程序如下:
#include"led.h"
#include"LCD.h"
#include"delay.h"
extern u16 Conce_PM1_0; // PM1.0浓度
extern u16 Conce_PM2_5; // PM2.5浓度
extern u16 Conce_PM10; // PM10浓度
u16 IAQI[8]={0,50,100,150,200,300,400,500};
u16 PM10[8]={0,50,150,250,350,420,500,600};
u16 PM25[8]={0,35,75,115,150,250,350,500};
u16 IAQIPM10; //PM10空气质量分指数
u16 IAQIPM25; //PM2.5空气质量分指数
u16 CpPM10; //PM10浓度
u16 CpPM25; //PM2.5浓度
u16 BpHi; //与Cp相近的污染物浓度限值的高值
u16 BpLo; //与Cp相近的污染物浓度限值的低值
u16 IAQIHi; //与BpHi对应的空气质量分指数
u16 IAQILo; //与BpLo对应的空气质量分指数
u16 AQI; //空气质量指数
u8 Max=10; //Max=0,首要污染物为PM25,Max=1,为PM10,Max=2双重污染
void delay_BUSY(void) // 触摸显示屏 发送延时
{
u16 a;
for (a=0; a<100; a++) ;
while(HMI_BUSY); // 当发送完之后,等待BUSY为0
}
void Window(void)
{
printf("CLS(0);");
printf("DS48(10,12,'唐山',7,0);");
printf("DS32(110,28,'实时空气质量指数(AQI)',7,0);");
printf("CIR(92,160,56,4);");
printf("CIR(92,160,55,4);");
printf("DS24(55,198,'AQI指数',4,0);");
printf("CIR(239,160,55,4);");
printf("CIR(239,160,56,4);");
printf("DS24(180,198,'首要污染物',4,0);");
printf("CIR(386,160,55,4);");
printf("CIR(386,160,56,4);");
printf("DS24(340,198,'PM2.5浓度',4,0);");
printf("BOXF(50,265,100,280,2);"); //绿色
printf("BOXF(100,265,150,280,4);"); //黄色
printf("SCC(37,64480);");
printf("BOXF(150,265,200,280,37);"); //橙色
printf("BOXF(200,265,250,280,1);"); //红色
printf("SCC(19,38921);");
printf("BOXF(250,265,300,280,19);"); //紫色
printf("SCC(18,30724);");
printf("BOXF(300,265,350,280,18);"); //褐红色
printf("DS16(48,285,'0',7,0);");
printf("DS16(91,285,'50',7,0);");
printf("DS16(140,285,'100',7);");
printf("DS16(190,285,'150',7);");
printf("DS16(240,285,'200',7);");
printf("DS16(290,285,'300',7);");
printf("DS16(340,285,'500',7);");
printf("DS16(369,178,'ug/m3',7,0);");
printf("CBOX(0,0,479,318,5,4);");
printf("PL(0,76,479,76,4);");
printf("DS16(400,265,'13:20:36',7);");
printf("DS16(395,285,'2016-5-18',7,0);");
printf("\r\n");
// delay_BUSY(); //当发送完之后,等待BUSY为0
}
void AQI_Count(void) //计算AQI指数,判断首要污染物
{
u8 i=0;
u8 j=0;
CpPM10=Conce_PM10;
for(i=0;i<7;i++)
{
if((CpPM10>PM10[i])&&(CpPM10<PM10[i+1]))
{
BpHi=PM10[i+1];
BpLo=PM10[i];
IAQIHi=IAQI[i+1];
IAQILo=IAQI[i];
IAQIPM10=(IAQIHi-IAQILo)*(CpPM10-BpLo)/(BpHi-BpLo)+IAQILo;
}
else if(CpPM10==PM10[i])
{
IAQIPM10=IAQI[i];
}
else if(CpPM10>=600)
{
IAQIPM10=((50/6)*(CpPM10-600))/10+500; //爆表
}
}
CpPM25=Conce_PM2_5;
for(j=0;j<7;j++)
{
if((CpPM25>PM25[j])&&(CpPM25<PM25[j+1]))
{
BpHi=PM25[j+1];
BpLo=PM25[j];
IAQIHi=IAQI[j+1];
IAQILo=IAQI[j];
IAQIPM25=(IAQIHi-IAQILo)*(CpPM25-BpLo)/(BpHi-BpLo)+IAQILo;
}
else if(CpPM25==PM25[j])
{
IAQIPM25=IAQI[j];
}
else if(CpPM25>=500)
{
IAQIPM25=CpPM25; //爆表
}
}
if(IAQIPM10>IAQIPM25)
{
AQI=IAQIPM10;
Max=1;
}
else if(IAQIPM10<IAQIPM25)
{
AQI=IAQIPM25;
Max=0;
}else if(IAQIPM10==IAQIPM25)
{
AQI=IAQIPM10;
Max=2;
}
}
void Display(void)
{
// printf("CLS(0);\r\n"); //清屏
// printf("PIC(0,0,1);"); //画图
// printf("SBC(2);"); //设置背景色
// printf("TPN(2);"); //触摸屏模式
// printf("BTN(6,396,278,475,315,0);"); //热点区域按钮
// printf("BTN(7,0,0,479,274,0);\r\n");
printf("DS48(350,132,'%4d ',7);",Conce_PM2_5); // PM2.5输出
// printf("PS64(0,10,100,'PM1.0:%5d',2);\r\n",Conce_PM1_0); // PM1.0输出
// printf("DS48(0,10,240,'PM10 :%5d',3);\r\n",Conce_PM10); // PM10 输出
// delay_BUSY(); //当发送完之后,等待BUSY为0
// printf("DS48(0,0,'PM2.5:%4d ',1);",Conce_PM2_5); // PM2.5输出
// printf("DS48(0,60,'PM10 :%4d ',2);",Conce_PM10); // PM10 输出
printf("DS48(55,135,'%4d ',3;",AQI); // AQI
// printf("DS48(0,240,'IAQIPM10:%4d ',5;",IAQIPM10); // PM2.5输出
if(Max==0)
{
printf("DS32(203,145,'PM2.5',14);"); // PM2.5 输出
}
else if(Max==1)
{
printf("DS32(203,145,' PM10',14);"); // PM10 输出
}else if(Max==2)
{
// printf("DS32(203,135,'PM2.5',14)");
// printf("DS32(203,160,' PM10',14)");
}
if(AQI<=50)
{
printf("DS24(60,235,' 优 ',5)");
}
else if((AQI>50)&&(AQI<=100))
{
printf("DS24(60,235,' 良 ',5)");
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
设计说明.doc
(460 KB, 下载次数: 40)
2018-4-16 14:23 上传
点击文件名下载附件
下载积分: 黑币 -5
激光PM2.5 传感器攀藤G1资料包.zip
(6.95 MB, 下载次数: 32)
2018-4-16 14:23 上传
点击文件名下载附件
下载积分: 黑币 -5
STM32F103C8T6-2原理图.pdf
(54.8 KB, 下载次数: 24)
2018-4-16 14:23 上传
点击文件名下载附件
下载积分: 黑币 -5
PM2.5 Program.zip
(913.7 KB, 下载次数: 50)
2018-4-16 14:23 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
littl
时间:
2019-5-16 16:13
求源码
作者:
jemery1030
时间:
2019-9-9 13:57
感謝分享
作者:
glennxu
时间:
2020-1-29 19:07
求源码下载。谢谢分享
作者:
yuancat
时间:
2020-1-30 13:37
感谢分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1