0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

制作一个PM2.5测试仪

工程师 来源:未知 作者:姚远香 2019-05-17 15:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

雾霾已成常态,自己DIY一个PM2.5检测仪还是很有必要的。利用零基础入门开发板 Arduino UNO R3,只需很简单的电路和很少的代码就能自制一个PM2.5检测仪。为保证测量精度,这里选用激光粉尘传感器来测试空气中的雾霾污染程度,同时选用DHT11来检测环境温度和湿度,非常适合中小学生练习。

一、制作PM2.5检测仪所需的材料

Arduino UNO R3开发板,一个

激光PM2.5传感器,一个

1.3寸OLED屏,1个

湿度传感器DHT11,一个

面包板,一个

杜邦线,若干

电阻,阻值约5k,1个

二、元件介绍

1、Arduino UNO R3开发板

Arduino是一个开放源代码的设计平台,由硬件Arduino板和软件Arduino IDE集成开发环境两部分组成。Arduino板是一个以AVR单片机为核心的开源硬件平台,有多种型号和配套资源,其中最基础、最常用的是Arduino UNO R3板,价格低廉、售价约23元,体积小巧、使用方便。Arduino IDE是一款非常优秀的软件开发平台,界面简洁友好,上手快,具有很好的跨平台性。

Arduino编程是基于入门级的C语言,门槛低,最重要的是在Arduino环境中,很多功能均已封装成函数,可直接调用函数完成相应的功能,大大降低了编程复杂度,学生无需具备太多的单片机知识就可使用 Arduino板与各种传感器、电子元件连接,快速搭建出各种有趣的、实用的电路,实现丰富的功能。Arduino还支持第三方库和硬件等,灵活性和扩展性强。

2、激光PM2.5传感器

为保证测试精度,选用了一款激光PM2.5传感器,缺点是售价比较离谱,这东西成本不高,但因为缺乏竞争,所以价格一直居高不下。

该传感器接口有6个引脚,但实际上只用到4个,各引脚定义如下所示。

制作一个PM2.5测试仪

传感器采用异步串行通信方式(UART),以帧为单位进行通讯。帧格式固定,每一帧由9 个字节组成,分命令帧和应答帧。当外部设备向传感器发送命令帧时,传感器会回复外部设备对应的应答帧。

波特率:9600;

校验位:无;

停止位:1 位;

数据位:8;

制作一个PM2.5测试仪

3、OLED屏

OLED显示屏采用有机发光二极管,不需背光源,是一种较新型的显示屏,缺点是价格较高,不如LCD寿命长。

有机发光显示技术由非常薄的有机材料涂层和玻璃基板构成。当有电荷通过时这些有机材料就会发光。OLED发光的颜色取决于有机发光层的材料,故厂商可由改变发光层的材料而得到所需之颜色。有源阵列有机发光显示屏具有内置的电子电路系统因此每个像素都由一个对应的电路独立驱动。OLED具备有构造简单、自发光不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广等优点。

本例程采用128x64的1.3寸OLED单色显示屏,IIC接口

接线时,请务必仔细核对电源和地线,不要接反。

4、温湿度传感器

DHT11 是一款廉价的温湿度传感器,利用湿敏电阻测量湿度,采用数字温度传感器测试温度,并由单片机处理后采用串行输出。DHT11 售价约4元,就是略丑。DHT22 售价约15元,虽然颜色变白了,但颜值依然很低。二者管脚定义一样,但操作时序不同在应用时需要注意。这里,我们选用DTH11型号。

制作一个PM2.5测试仪

DHT11的硬件连接非常简单,原理图如下:

制作一个PM2.5测试仪

三、软件环境配置

安装

双击arduino-1.8.3-windows.exe,出现安装导向,依次确认,默认安装即可。安装完成后,桌面上会出现Arduino软件的logo,下次使用时双击。

配置开发环境

插入Arduino UNO R3开发板,系统自动安装USB驱动。

选择相应的板卡

制作一个PM2.5测试仪

选择端口

可以通过设备管理器查看设备对应的端口情况,本机对应的是COM5。

制作一个PM2.5测试仪

验证

打开文件,示例,找到Blink程序

制作一个PM2.5测试仪

点击对号验证程序能否通过编译,如果一切正常;点击向右的箭头将编译好的程序上传至Arduino UNO R3的AVR单片机中;也可以直接点击该箭头,IDE会先执行验证,通过验证后直接上传。

如果看到LED灯闪烁,说明一切正常。恭喜你,安装成功,板卡正常。

添加第三方库

启动Adruino IDE

项目-》加载库-》管理库,搜索DHT,安装 DHT sensor library,以支持DHT11

项目-》加载库-》管理库,搜索U8GLIB,安装 U8GLIB,以支持OLED

四、开始动手实践

操作温湿度传感器

1、先把Arduino UNO R3板子上的电源和地引到面包板上

2、把温湿度传感器连接好,其中传感器的数据输出SDA接Arduino板的A0口。温湿度的连接方式非常简单,如本文前面的原理图所示,除了电源和地,只有一根SDA线经5-10k电阻上拉至5V,同时接Arduino板的A0口即可。

3、调入例程

文件-》示例-》DHT sensor library -》DHTtester

4、修改数据输入端

#define DHTPIN A0// what digital pin we‘re connected to

5、修改例程,支持 DHT11,去掉该行前面的//

#define DHTTYPE DHT11 // DHT 11

6、上传程序,打开串口监视器,设置9600波特率,观察环境温湿度。

操作OLED屏

1、断开Arduino UNO R3板子的电源

2、把OLED屏连接好,由于是IIC接口,电路连接很简单,OLED屏除了连接好电源和地,只需将SCL接Arduino板的A5端,SDA接Arduino板的A4端即可。

3、调入例程

文件-》示例-》U8glib -》helloword

4、修改例程,支持OLED,去掉该行前面的//

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);// I2C / TWI

5、上传程序,观察OLED屏的显示是否正确。

操作PM2.5传感器

该传感器是一款激光数字式PM2.5传感器,内置激光器和光电接收组件,采用光散射原理,激光在颗粒物上产生散射光,由光电接收器转变为电信号,再通过特定算法计算出PM2.5值和PM10值。

该传感器采用串口输出,除了1脚接地,2脚接电源,再将3脚TXD和4脚RXD分别接Arduino板的D5、D6端口,当然,您也可以接别的端口,只要程序做相应的修改即可。

常用指令只需要三条,分别是开机指令、读取PM2.5值指令和关机指令,不妨根据手册自己编写试试,简单起见,可以用串口监视器显示结果。

五、编写程序,实现PM2.5检测仪

由于硬件电路已经逐步连接完毕,下面可以针对整个电路编写程序了,把各部分功能统一起来,软件示例代码如下:

#include 《DHT.h》

#include “U8glib.h”

#include 《SoftwareSerial.h》

// 说明,这仅是一个简单的示例程序,目的是帮助初学者入门

#define DHTPIN A0 // 接温湿度传感器的数据端

// 选择合适的温湿度传感器型号

#define DHTTYPE DHT11 // DHT 11

//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

uint8_t PM25_OPEN[] = {0xAA,0x01,0x00,0x00,0x00,0x00,0x01,0x66,0xBB}; //开机指令

uint8_t PM25_CLOSE[] = {0xAA,0x03,0x00,0x00,0x00,0x00,0x01,0x68,0xBB}; //关机指令

uint8_t PM25_DATA[] = {0xAA,0x02,0x00,0x00,0x00,0x00,0x01,0x67,0xBB}; //读数据指令

DHT dht(DHTPIN, DHTTYPE);

// 软串口定义格式 SoftwareSerial(rxPin, txPin, inverse_logic

SoftwareSerial mySerial(5, 6); //定义软串口,D5、D6分别连接PM2.5传感器的3(TXD)、4(RXD)

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI OLED屏定义

uint16_t pm25, pm10;

float h, t, hic;

void setup() {

mySerial.begin(9600); //设置软串口波特率与PM2.5传感器一致

if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {

u8g.setColorIndex(255); // white

}

else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {

u8g.setColorIndex(3); // max intensity

}

else if ( u8g.getMode() == U8G_MODE_BW ) {

u8g.setColorIndex(1); // pixel on

}

else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {

u8g.setHiColorByRGB(255,255,255);

}

pmOn();

delay(2000);

}

int i=0;

void loop() {

u8g.firstPage();

if (i==0) pmRead();

if(i》=5) i=0;else i++;

dhtRead();

do {

draw();

} while( u8g.nextPage() );

delay(500);

}

void pmOn(){

mySerial.write(PM25_OPEN,9);

}

void pmOff(){

mySerial.write(PM25_CLOSE,9);

}

void pmRead(){

uint8_t data[9];

//while(mySerial.available());

mySerial.write(PM25_DATA,9);

delay(100);

for(int i=0;i《9;i++){

if (mySerial.available()) {

data[i] = mySerial.read();

}

}

if(data[0]==0xAA && data[8]== 0xBB){

pm25 = data[4]*256 + data[5];

pm10 = data[2]*256 + data[3];

}

}

void dhtRead(){

// Reading temperature or humidity takes about 250 milliseconds!

// Sensor readings may also be up to 2 seconds ‘old’ (its a very slow sensor)

h = dht.readHumidity();

// Read temperature as Celsius (the default)

t = dht.readTemperature();

// Compute heat index in Celsius (isFahreheit = false)

hic = dht.computeHeatIndex(t, h, false);

}

void draw(void) {

// graphic commands to redraw the complete screen should be placed here

char sendBuff[20];

u8g.setFont(u8g_font_unifont_78_79);

sprintf(sendBuff,“%c”,14);

u8g.drawStr( 0, 18, sendBuff);

u8g.setFont(u8g_font_unifont);

sprintf(sendBuff,“H:%2d%% T:%2d%cC”,(int)h,(int)t,0xB0);

u8g.drawStr( 20, 18, sendBuff);

u8g.setFont(u8g_font_profont22);

sprintf(sendBuff,“PM2.5:%4d”,pm25);

u8g.drawStr( 6, 42, sendBuff);

sprintf(sendBuff,“PM 10:%4d”,pm10);

u8g.drawStr( 6, 64, sendBuff);

}

运行结果

六、工匠精神

为使这款PM2.5检测仪更具有实用性,你也可以动手制作印刷电路板,为便于初学者使用,主控芯片可以采用与Arduino UNO R3板子一样的CPU

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试仪
    +关注

    关注

    6

    文章

    4299

    浏览量

    61651
  • PM2.5
    +关注

    关注

    0

    文章

    59

    浏览量

    27037
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    航智新代高精度直流测试仪台搞定电芯/模组/PACK电池充放电测试仪的校准

    在电池测试领域,从电芯→模组→PACK,充放电测试仪器规格愈发多样化:·电芯充放电测试仪的常用规格:5V/5A~1000A(±0.05%FS)·模组充放电测试仪的常用规格:60V~20
    的头像 发表于 04-22 16:30 8524次阅读
    航智新<b class='flag-5'>一</b>代高精度直流<b class='flag-5'>测试仪</b>,<b class='flag-5'>一</b>台搞定电芯/模组/PACK电池充放电<b class='flag-5'>测试仪</b>的校准

    励磁系统开环小电流测试仪:技术原理与现场应用

    。 二、开环测试的原理拆解 励磁系统开环小电流测试的基本原理,可以分为以下几个层面来理解: 信号注入与回路隔离 测试仪从励磁调节器输出端取样,同时向励磁变压器原边注入
    发表于 04-15 08:52

    继保测试仪接线,这五地方最容易出错

    上个月去现场,老师傅接线接了俩小时,保护装置就是不动作。最后发现是电流回路极性接反了。这种低级错误,老手也会犯。 、接线前必须做的三件事 第件事:断电 别嫌我啰嗦,真有不信邪的
    发表于 04-13 10:27

    电池测试仪:电池性能大考验,这款测试仪来“打怪”

    在新能源汽车、储能系统、消费电子等产业高速迭代的当下,电池作为核心能量载体,其性能稳定性、安全性与致性直接决定终端产品的品质与使用寿命。电池测试仪作为集成多参数测量、性能评估与安全验证的精密设备
    的头像 发表于 03-25 11:23 1041次阅读

    高精度PM2.5/PM10/TSP检测单元BM400-PM数据手册

    高精度PM2.5/PM10/TSP检测单元:BM400系列高精度空气PM2.5PM10、TSP检 测单元是专门针对潮湿多尘的环境,针对性设计 的
    发表于 03-20 11:08 0次下载

    导热系数测试仪在金属材料的测试应用

    的导热系数已成为科研与生产中的重要环节。南京大展仪器新推出款采用瞬态热源法的DZDR-AS导热系数测试仪,被广泛应用在金属材料的测试应用。导热系数
    的头像 发表于 03-02 11:30 241次阅读
    导热系数<b class='flag-5'>测试仪</b>在金属材料的<b class='flag-5'>测试</b>应用

    真空试漏测试仪是密封检测吗-岳信仪器

    在工业生产质量把控环节,真空试漏测试仪与密封检测是常被提及的设备,不少人会疑惑:真空试漏测试仪是密封检测吗?答案是肯定的,二者只是叫法不
    的头像 发表于 12-31 14:11 371次阅读
    真空试漏<b class='flag-5'>测试仪</b>是密封检测<b class='flag-5'>仪</b>吗-岳信仪器

    GD32VF103串口读取PM2.5传感器

    的。串口速率 9600 8 N 1 2. 串口获取32字节数据,存入buffer中 3.根据手册计算checksum,若传输正常,则计算PM2.5浓度。以CF=1 PM2.5浓度为例,根据手册,第8号
    发表于 11-05 08:34

    华科智源IGBT静态参数测试仪

    HUSTEC华科智源HUSTEC-1600A-MTIGBT功率器件测试仪:IGBT功率器件测试仪主要特点华科智源HUSTEC-1600A-MT静态测试仪可用于多种封装形式的IGBT
    的头像 发表于 10-29 10:39 2558次阅读
    华科智源IGBT静态参数<b class='flag-5'>测试仪</b>

    认识成品电池综合测试仪

    检测。 测试仪是做什么的? 简单来说,成品电池综合测试仪就像位给电池做全面体检的“医生”。它不是只检查方面,而是对电池进行
    的头像 发表于 10-20 16:57 921次阅读

    光伏IV测试仪原理:实现太阳能电池测试的关键技术

    在太阳能领域的研究和应用中,光伏IV测试仪种非常重要的设备。通过测试光伏电池的电流和电压特性,可以评估其性能和效率。本文将详细介绍光伏IV测试仪的原理和工作方式,以及其在太阳能行业
    的头像 发表于 09-22 16:54 1292次阅读
    光伏IV<b class='flag-5'>测试仪</b>原理:实现太阳能电池<b class='flag-5'>测试</b>的关键技术

    LCR测试仪测量电阻的快速准确技巧

    与数据可靠性。   、LCR测试仪电阻测量原理:四线法的核心应用 LCR测试仪通过施加交流信号并测量电压与电流关系计算电阻值,其核心在于四线法(四端测量法)的应用。该方法通过独立的两对测试
    的头像 发表于 09-09 11:29 9534次阅读
    LCR<b class='flag-5'>测试仪</b>测量电阻的快速准确技巧

    LCR测试仪在电容器老化测试中的应用

    测试仪)凭借其高精度、多参数测试能力,成为电容器老化分析的重要工具。本文从测试原理、老化机制、测试方法、数据分析及实际应用等方面,系统阐述LCR测试
    的头像 发表于 08-18 17:17 1321次阅读
    LCR<b class='flag-5'>测试仪</b>在电容器老化<b class='flag-5'>测试</b>中的应用

    LCR测试仪如何实现智能化与AI融合

    的研发和生产带来了革命性的变化。以下是LCR测试仪如何实现智能化与AI融合的详细探讨。   、智能化与AI融合的背景 LCR测试仪主要用于测量电感(L)、电容(C)和电阻(R)等电子元器件的参数。传统的LCR
    的头像 发表于 08-08 16:49 1169次阅读
    LCR<b class='flag-5'>测试仪</b>如何实现智能化与AI融合

    IGBT静态参数测试仪系统

    HUSTEC华科智源 HUSTEC-1600A-MT IGBT功率器件测试仪 :IGBT功率器件测试仪主要特点 华科智源HUSTEC-1600A-MT静态测试仪可用于多种封装形式的
    的头像 发表于 07-08 17:31 2377次阅读