技术文档

pm2.5 单片机 毕业设计:单片机DIY-小型PM25系统,实际效果超乎想象

小编 2024-10-06 技术文档 23 0

毕业设计:单片机DIY-小型PM25系统,实际效果超乎想象

大家好,因为最近忙着考试,最近比较忙,可能更新的文章比较少,疫情期间请大家多多注意身体,尽量减少外出,在家学习。

其实我发现在家学习只要静下心来,效率还是蛮快的,只要持之以恒,定会有所收获。

好了我们言归正传,前几天和几个小伙伴去市区公园玩,看着公园对面空气检测系统的大屏幕上各种数据不断变化,于是突发奇想,我能不能自己也用单片机做一个PM2.5测试系统呢,虽然不知道能不能成功,但想到就要做。

于是我利用好久以前的一个开发板当载体,开始自己DIY,成功了以后-我测试了一下基本能实时显示各种颗粒物的含量,又和真实数据对比了一下,准确度基板满足要求。

老规矩废话不多说,先上实物图:

原理:其实就是一块显示屏加上单片机实时控制,再加上采集和显示代码就差不多了

实物图1

数据采集和接收模块

实测测量精度和准确率还是可以的。

PM2.5检测系统参考代码如下:

主程序

#include<reg52.h>

#include "delay.h"

#include "LCD12864.h"

#include "PM2_5.h"

#include "BMP180.h"

#include "DHT11.h"

#define uint unsigned int

#define uchar unsigned char

sbit waring=P1^3;

void main()

{ lcd_init();

Init_BMP085();

Init_PM2_5();

while(1)

{ bmp085Convert();

RH();

lcd_pos(0,0);

display_string("pm2.5:");

if(read_pm()>5)

display_num(read_pm());

else

display_num(5);

display_string("ug/m3");

display_string(" ");

lcd_pos(1,0);

display_string("T:");

display_num(temperature/10);

display_string(".");

display_num(temperature%10);

display_string("'C");

display_string(" ")

display_string("H:");

display_num(RHdataH);

display_string("%");

lcd_pos(2,0);

display_string("pre:");

display_num(pressure/1000);

display_string(".");

display_num(pressure%1000);

display_string("kpa");

lcd_pos(3,0);

display_string("smo:");

if(read_pm()>200)

{ display_string("High");

waring=0;

}

else

{ display_string("low");

display_string(" ");

waring=1;

}

display_string("Al:");

display_num(Altitude);

display_string("m");

display_string(" ");

delay_ms(200);

}

}

PM2.5

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

#define K_PM 820

void senddata(uchar dat);

uint read_pm();

uchar cal[7]={0};

// cal[0]:起始位 0xAA

// cal[1]:Vout(H)

// cal[2]:Vout(L)

// cal[3]:Vref(H)

// cal[4]:Vref(L)

// cal[5]:校验位

// cal[6]:结束位0xFF

uchar buf;

uchar sum;

int i=0;

float Vo;

void Init_PM2_5()

{ SCON=0x50;

PCON=0x00;

TMOD=0x20;

EA=1;

ES=1;

TL1=0xF4;

TH1=0xF4;

TR1=1;

}

uint read_pm()

{ return (uint)(K_PM*Vo);

}

void serial() interrupt 4

{ ES=0;

RI=0;

buf=SBUF;

senddata(buf);

ES=1;

}

void senddata(uchar dat)

{ if(dat==0xAA)

{ i=0;

cal[i]=dat;

}

else

{ i=i+1;

cal[i]=dat;

if(i==6)

{ sum=cal[1]+cal[2]+cal[3]+cal[4];

if(sum==cal[5]&&cal[6]==0xFF)

// for(i=0;i<=6;i++)

// {

// SBUF=cal[i];

// while(!TI);

// TI=0;

// }

Vo=(cal[1]*256+cal[2])/1024.0*5;

// SBUF=cal[1];

// while(!TI);

// TI=0;

// SBUF=cal[2];

// while(!TI);

// TI=0;

}

}

}

}

鉴于篇幅有限,只能写这么多了。

最后,如果有什么意见或者建议欢迎您留言给我,让我们共同学习一起进步,

文章不能上传附件,如果需要完整代码或设计文件,请私信我或者给我留言,看到后会第一时间回复。

谢谢!

基于单片机光伏控制 温度 PM25 光照检测 蓝牙传输#单片机开发

stm32光伏控制器。

大家好,今天给大家介绍一款基于STM32单片机光伏控制器。

·首先点击这,上电之后单边机完成测试环,液晶显示温度值,PM2.5风速,温度通过DS18B20检测。

·这两个箭头可以改变温度的大小,温度发生了变化。这个是模拟PM2.5的,这个箭头可以模拟风速的。

·同样的这两个箭头,这个是模拟蓝牙模块,它将测量的数字发送到蓝牙模块上面进行显示。

·这个按钮按下去,切换光照的显示。这是第一路光照,第二路、第三路、第四路。

·当第一路小于光照2的时候,它是在正转90度的位置,大于它的时候反转。看下,它朝这边,小于时候的它正转,3也是一样的,小于的时候停止。

本设计主要功能就这些,谢谢大家。

相关问答

python可以 单片机 编程吗,怎么样?

MicroPython以微控制器作为目标,从而使得Python可以用来控制硬件。说到MicroPython,也许有人会感到陌生。而说到和它密切相关的Python,是否会恍然大悟呢?Pyt...

什么是iot,阿里小米华为这些公司都在做iot,如果要学习iot,要学习什么知识?

根据我所知道的回答一下这个问题。我的回答适合于初学者,或者IOT爱好者,在业余时间鼓捣鼓捣的那种。对于IOT的专业人士,有可能过于肤浅了。我以前用各种传感...

深圳华强北哪里有卖2手电脑主板的?-ZOL问答

题目:单片机控制步进电机系统摘要很多工业控制设备对位移和角度的控制精度要求较高,一般电机很难实现,而步进电机可精确实现所设定的角度和转数。本设计...

什么是共享白酒售酒机?

方麦科技物联网大数据管理控制系统精典案例:智慧城市环卫管理系统、智慧校园管理系统、水电表集抄管理系统、智能设备远程追溯系统、智能设备大数据...

智能共享足疗机是怎么样的?

方麦科技物联网大数据管理控制系统精典案例:智慧城市环卫管理系统、智慧校园管理系统、水电表集抄管理系统、智能设备远程追溯系统、智能设备大数据...

智能家居包括哪些东西? - 小红薯3697D633 的回答 - 懂得

首先我们来了解智能家居是什么概念,欧派克这样理解:对智能家居产品来说,最重要的是以实用为核心,摒弃掉那些华而不实,只能充作摆设的功能,产品以实...

智能共享共享碾米机哪家好?

[回答]方麦科技累计开发物联网软硬件产品应用设计方案近百种。目前为客户提供理念超前物联系网技术应用:(包含:手机app、小程序、公众号、生活号H5开发、...

智能共享共享碾米机是怎么样的?

[回答]方麦科技物联网大数据管理控制系统精典案例:智慧城市环卫管理系统、智慧校园管理系统、水电表集抄管理系统、智能设备远程追溯系统、智能设备大数据...

ip是什么意思

[回答]IP有以下这些意思:1、网络之间互连的协议(IPAddress)。缩写为IP地址(英语:IPAddress),是分配给用户上网使用的网际协议(英语:InternetProtocol,...

只用51 单片机 ,不用语音芯片能播放录音吗?怎么实现?

简单的做法就是,你去买个语音芯片。控制语音芯片放音即可。PM66或者ISD1700的芯片都可以不过这些语音芯片都需要类似“编程器”的设备将语音事先烧录进去。...

猜你喜欢