怎么制作凡爱pm2.5检测仪仪

54被浏览7039分享邀请回答4628 条评论分享收藏感谢收起32 条评论分享收藏感谢收起查看更多回答评论-1197&
&&& 本篇文章详细讲解了如何利用SDS011激光式PM2.5传感器、HC-06蓝牙模块和Windows 10设备完成一个简单的PM2.5检测器及其应用程序的开发。该检测器使用蓝牙完成数据输出,方便设备连接,使用UWP模板创建的应用可以运行在Window 10 for PC、Window 10 for Mobile和树莓派(Window 10 IoT Core)平台,通过该应用查看PM2.5和PM10的动态数据。
1. 使用的硬件
&&& 首先,我们需要选择一款PM2.5的传感器,通过淘宝搜索发现,PM2.5传感器主要有两种,一种是利用红外原理,另一种是利用激光散射原理。使用红外原理的传感器价格相对便宜,如夏普GP2Y1010AU0F,其价格在20元以内,但是校准相对较难。激光散射原理的传感器在测量准确性和数据的一致性上较好,也无需用户进行数据校准的工作,使用简单方便。因此,这里选用了激光式的PM2.5传感器:SDS011。其外观如下。
&&& SDS011的输出有串口数据和PWM波两种形式,一般来说,使用串口比较方便,以下是其通信的数据协议。
&&& 其次,淘宝上拿到的SDS011是通过TTL-USB的方式输出信号的,在PC上只要有USB接口就可以虚拟一个串口出来,接收其输出的信号。但是,这对于很多应用场景都不大适合,原因就在于受限其USB的接口,需要设备具备该USB接口。目前,很多手机、PC和平板都具有蓝牙模块,因此,我考虑使用一个成本较低的蓝牙模块来替换原来的TTL-USB模块,将SDS011的TTL-UART输出直接接蓝牙模块,由蓝牙来发送数据。这样一来,很多没有USB接口的设备都可以连接检测器了。而且,蓝牙是短距离无线连接,可以在室内视距情况下完成数据的发送和接收,不受限于有线连接的形式。经过调研,发现HC-06模块可以满足要求,淘宝上价格一般在20元以下,可以拿来直接当串口蓝牙模块使用。其模块图如下。
2. 硬件连接
&&& 这里的硬件连接主要是SDS011和蓝牙模块的连接,以及整体的供电电源。通过查看模块说明得知,这两个模块的电源电压可以在一定范围内。手头正好有一个Arduino Uno R3,提供5V的输出。因此,这里就直接使用Arduino模块的电源作为整体的电源。另外一个需要注意的地方就是,HC-06模块的UART和SDS011的UART数据收发需要交叉,即其中一个的Tx需要连接另一个模块的Rx,Rx需要连接另一个模块的Tx。已经连接好的实物图如下,这里使用了一个小面包板和跳线。
&&& 目前,很多PC、平板和手机都包含了蓝牙模块,因此就可以直接与我们设计的模块通信,获取数据了。如果用户需要在没有蓝牙模块的PC上获取数据,需要在PC上插一个蓝牙USB Dongle,淘宝上也有的是,价格也不贵。另外,如果用户在Windows 10 IoT Core上运行应用程序,如树莓派2、MBM板子(高通410c除外,自带了蓝牙4.0模块),同样需要另加一个蓝牙USB Dongle。
3. UWP应用程序开发
&&& Windows 10 提供了通用应用模板,支持包含PC、Mobile和IoT平台的通用应用开发,真正做到了一次开发,全平台运行。因此,这里使用通用应用模板来开发程序,可以部署到多个Windows 10内核的平台。事实上,微软在Github平台上给出了通用应用的很多示例,拿来就能用。比如这里,我们可以直接下载IoT Core的串口示例,其链接为:。在该示例程序中,已经包含了串口设备的获取、参数的设置、数据的接收、数据的发送等基本功能。本应用中不同之处在于以下几点:首先,接收的数据编码不同,示例程序中默认是字符串,而SDS011模块发送的是16进制的数据;其次,SDS011的串口参数为9600波特率,每个一秒发送一次数据,我们的应用程序只负责打开串口,接收并处理数据就可以。因此,其具体处理如下:
&&& 在数据接收任务ReadAsync中,关键代码如下:
&&&&&&& private async Task ReadAsync(CancellationToken cancellationToken) &&&&&&& {
&&&&&&&&&&& Task&UInt32& loadAsyncT
&&&&&&&&&&& 。。。。&&&&&& //此处省略已有代码&&&&
&&&&&&&&&&& UInt32 bytesRead = await loadAsyncT
&&&&&&&&&&& if (bytesRead & 0)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& byte[] fileContent = new byte[dataReaderObject.UnconsumedBufferLength];
&&&&&&&&&&&&&&& try
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& //读取数据
&&&&&&&&&&&&&&&&&&& dataReaderObject.ReadBytes(fileContent);
&&&&&&&&&&&&&&&&&&& //数据转换为16进制
&&&&&&&&&&&&&&&&&&& for(int i=0;i& fileContent.Li++)
&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&& string recvdtxt1 = fileContent[i].ToString("X2");
&&&&&&&&&&&&&&&&&&&&&&& recvdtxt += recvdtxt1;
&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&& System.Diagnostics.Debug.WriteLine(recvdtxt);
&&&&&&&&&&&&&&&&&&& this.textBoxRecvdText.Text =
&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& catch (Exception ex)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& System.Diagnostics.Debug.WriteLine("ReadAsync: " + ex.Message);
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&& 在数据处理的定时Tick中,获取字符串数据,并进行数据解析和转换,同时显示到界面上,其关键代码如下:
&&&&&& private async void dataProcessTick(ThreadPoolTimer timer)
&&&&&&&&&& //分别获取PM2.5和PM10数据字符串
&&&&&&&&&& string str1 = recvdtxt.Substring(4,2);
&&&&&&&&&& string str2 = recvdtxt.Substring(6,2);
&&&&&&&&&& string str3 = recvdtxt.Substring(8, 2);
&&&&&&&&&& string str4 = recvdtxt.Substring(10, 2);
&&&&&&&&&& //完成数据计算
&&&&&&&&&& double pm25 = (Convert.ToInt32(str1,16) + (Convert.ToInt32(str2,16)) * 256) / 10.0;
&&&&&&&&&& double pm10 = (Convert.ToInt32(str3,16) + (Convert.ToInt32(str4,16)) * 256) / 10.0;
&&&&&&&&&& //完成数据显示&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&& await textBoxPM25Text.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =&
&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&& textBoxPM25Text.Text = Convert.ToString(pm25);
&&&&&&&&&&&&&& }
&&&&&&&&&& );
&&&&&&&&&& await textBoxPM10Text.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =&
&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&& textBoxPM10Text.Text = Convert.ToString(pm10);
&&&&&&&&&&&&&& }
&&&&&&&&&& );
&&&&&& 。。。。。
4. 程序调试和部署
&&& 在PC上调试时,先打开蓝牙模块,与HC-06进行绑定,默认密码为1234,对象选择x86,local machine,就可以部署到PC上进行调试了。我这里使用了SP3(自带蓝牙),其界面如下,
&&& 其中,1处为原始接收的16进制数据,2处为计算得到的PM2.5数据,3处为PM10的数据。
&&& 在Mobile上调试时,选择ARM-Device,其运行效果如前面2.硬件连接一节所示。
&&& 在树莓派上调试时,先插上蓝牙USB Dongle,如下图所示,
&&& 然后,参考《》,利用SSH或者Powershell与树莓派建立连接,使用指令将树莓派与HC-06建立绑定,绑定以后,可以通过设备页面查看,其效果如下,
&&& 之后,选择ARM,Remote Machine,输入树莓派的IP地址,点击调试,就可以看到应用程序在树莓派上运行了。其输出界面如下图所示。
参考链接:
阅读(...) 评论()红米手机 &
发烧级手机控
扫码下载App一键签到 升级加速
小米空气净化器FAQ汇总
自制PM2.5检测仪,顺便安利一波小米净化器
扫一扫!手机看帖更爽
由于笔者周围环境比较差,灰尘较多,所以最近买了台小米一代空气净化器,看了下原厂滤芯要129,了解了关于净化器的原理,发现非常简单,无非是滤网加上风机,于是动了自己制作滤网的念头。小米净化器使用的HEPA11东丽的滤纸,于是在网上查找,发现东丽、3M的滤纸较少,于是选择国产。同样是HEPA11,支持订做尺寸,买了展开长度三米,折高20mm,12mm的各一张,算上邮费总共45元,非常值得。而且店家服务态度不错。滤纸到了之后,就开始着手制作滤网,卸下原装滤网的上下两个塑料环,将买的滤纸放入折好放入,并用竹签作为支撑,热熔胶封底密封。(笔者一开始买的是没有折过的滤纸,准备自己折,发现太难,折不了几次就出现两端不平的情况,另胶水当时贪图便宜,买的是15元2L的得力普通液体胶,后果就是干得特别慢,而且粘的效果并不好,于是买了热熔胶。竹签买的是烧烤用竹签,长度30cm,3元100支包邮。)制作好滤网之后,由于要检测其效果,所以必须要有一个PM2.5仪器,百度和淘宝之后,决定使用Arduino mega2560的板子加攀藤科技的G5激光传感器以及Dht11温湿度模块。最后算上杜邦线,扩展板,显示屏的费用在170元左右。先上一张完成图(盒子是茶叶盒改造,整个一套使用充电宝供电)具体教程1、当然是买齐元件2、接线,简单的来说,就是将传感器的Pin口和板子上的pin口对应并用杜邦线连接。板子和传感器上都有注释,很简单。比如,DHT11模块正极与板子的5V口连接,负极与板子的GND口连接,out则与板子的Digital部分的pin口连接,笔者接的是22口,在下面的程序中会用到。3、所有的接线完成后,接下来就是写入程序,因为有很多大神都做过这些小玩意,一般都可以在论坛上找到相应的源码,加上库中有很多示例,所以一般在这些基础上改改就能解决。软件准备Arduino IDE下载 &&Dht11 库下载 & &&oled显示屏库下载 &安装好IDE后,将两个库解压缩后复制到Arduino安装文件夹下的 libraries下(C:Program Files (x86)Arduinolibraries)打开IDE,选择板子的型号和端口(端口是多少可在电脑设备管理器中查看)接下来就是论坛的源码了,在此要感谢大神们的无私分享,要不然我这样从没接触过程序和电子的小白到这就拜拜了。程序源码打开将它复制到IDE中,验证、上传就可以了。(勾是验证,箭头是上传)(笔者刚开始复制粘贴源码的时候,无法在显示屏上读出温度和湿度,询问当程序员的同学之后,不断试验后才修改解决。前前后后花了很多时间。)最后就是把这一整套装进小盒子里了,部件分别用热熔胶固定下,固定G5传感器的时候尤其要注意,进风口和出风口(四个小孔是进风,风扇是出风)所在平面一定要紧贴盒子壁面,如果留有空隙的话,有一部分被检测空气是盒子内部的,会导致数值偏低。到此仪器就做好了,检测了下小米空气净化器加原装滤芯的效果,pm2.5出口0。温湿度还是比较准确抽烟的PM2.5,峰值达到1478(这传感器上限是500)。但由此也可见一斑。室内30左右。
扫描二维码,手机查看本帖
DIY精神,很久不见了啊
caeser2 发表于
19:21:41楼主这个滤纸看上去不是大号的,价格应该也不会太便宜,我也找过很多家了,要不就是卖小张的,又贵又不划算,要不就是工厂店,让我成吨的买。。。你这样折叠,量太少了,用不了多久就会失效。。。是的,这是我自己手折的,后来我就买的折好的,展开三米。 &我也是工厂店买的,折高1.2和1.5的各三米,含运费45元。/item.htm?spm=a1z09.2.0.0.s0O6Ho&id=&_u=3ng8a640a78
论坛账号丶 发表于
07:22:15我把家里那个小米的报废滤芯拆了,对比了下原装与MATE滤芯的差别,发现原装有活性炭,MATE是纯HEpa,但是MATE的折高远高于原装,我没有办法测试过滤效率,活性炭层应该是除味和吸附甲醛,我现在是直接把炭包扔在里面。
·来自iPhone 6 Plus
我把家里那个小米的报废滤芯拆了,对比了下原装与MATE滤芯的差别,发现原装有活性炭,MATE是纯HEpa,但是MATE的折高远高于原装,我没有办法测试过滤效率,
·来自iPhone 6 Plus
目前性价比最高的就是购买米皮后,加速无忧无滤计划,109两个,含邮费,比自己做的便宜多了
楼主这个滤纸看上去不是大号的,价格应该也不会太便宜,我也找过很多家了,要不就是卖小张的,又贵又不划算,要不就是工厂店,让我成吨的买。。。你这样折叠,量太少了,用不了多久就会失效。。。
京ICP证110507号 京ICP备号用PM2.5传感器D一个显示空气质量的检测仪|创意DIY - 数码之家
查看完整版本: [--
赞助商链接
先声明,非广告贴,传感器有很多种,据说激光的好点,于是选了这个而已,弟兄们做的时候其实有很多选择的。为了避免广告嫌疑,抹去了厂商信息,请见谅。 最近北方地区很多地方都出现了严重雾霾,前一阶段把扔到角落里很久的空气净化器换了滤芯,重新开始通电运转,心理上感觉好多了。这个净化器买的比较早,有好几年了,担心净化效果不好,想定量的测试下到底怎么样。去某宝看了下,各种不同。。。 价格都不低啊。我只是想测测而已,就找个便宜的吧,于是发现了这种[attachment=7104613]
仔细了解了下,这个测试仪最重要的是一个PM2.5的激光传感器,想到手里正好有一个1602LCD,干脆单买个传感器自己做一个得了,于是买了这个[attachment=7104631]
价格是这样的[attachment=7104632] 只有测试仪价钱的一半。于是接到C51最简系统上(嘿嘿,用上了上次做的电源小板),写个小程序,读出值,然后显示出来[attachment=7104242] 这样用着不方便啊,于是找了个洞洞板,焊接起来,焊上一个usb接口,连上电源,就有了下面这个东东[attachment=7104243] 家里净化器是开着的,说明发挥作用了,空气质量还是有改善的。为了测试效果,跑到厨房点上一颗烟,PM2.5显示的值蹭蹭往上跑啊,看图[attachment=7104244] 又到楼道里,打开窗户,测了下窗户边的值,是这样的[attachment=7104245]
好了,可以拿着用了。
赞助商链接
卖给我一个吧&&:)
赞助商链接
yutoulp:卖给我一个吧  :) ( 23:24) 做吧,很简单的,其实就是C51最简系统+传感器+LCD1602,传感器是接口是TTL的串口,只用一个RTX接收数据就成。
这个传感器是串口的吧?
前几天也帮同学D了一个,传感器你这个要强悍一些 [attachment=7104504][attachment=7104505]
枫林雪影:这个传感器是串口的吧? ( 23:36) 是的,猜测传感器内部就有个单片机,把颗粒数统计做完了,再通过串口发出来
枫林雪影:前几天也帮同学D了一个,传感器你这个要强悍一些[图片]....... ( 23:40) 你的这个是夏普的传感器吧,搜过有特价17的,LZ的激光传感器售价118,有观点认为那个激光的更准,不清楚真实情况
枫林雪影:前几天也帮同学D了一个,传感器你这个要强悍一些[图片]....... ( 23:40) 传感器是夏普的? 做的真不错!
才128元,测量结果靠谱吗?
我是来看8楼的,屌爆了。
表示持续关注各位大神,能否出个套件啊
大金的整套5000
这玩意儿不准
出门还是只有吸雾霾。
cgbee:出门还是只有吸雾霾。[表情]  ( 14:56) 打开紧闭的大门,走出来深深的吸了一口醇厚的雾霾,感叹一声 ”兄弟所言即是啊&
hongo:才128元,测量结果靠谱吗? ( 00:22) 这种检测模式(激光散射),在这个价格范围的传感器还算不错的了,精度跟采用其它测量模式的应该还是有差距。市面上千元内的检测仪,基本上也都是这个档次的传感器,做个对比检测读取的数值跟几千块的也差别不大
我这里山清水秀,蓝天白云,不需要这个。但还是支持支持下楼主,同情下楼主。
高手呀。一时半会学不来。
这个是G3的,我买了G5的,直接TTL/USB连电脑的,数据很稳定。这个激光的比红外线的要准很多,原理不同
看着像攀藤的传感器
是攀藤的传感器 G3 吧
个人不能发布预报的。只能是自己知道,心里有数即可。
干得漂亮啊,能出个套件清单和程序么
枫林雪影:前几天也帮同学D了一个,传感器你这个要强悍一些[图片]....... ( 23:40) 查颗粒数和计算重量, 是两种方法。 国际好像是看颗粒数。国标应该是算重量。
期待楼主开源,让我等单片机小白也学习学习
其实也不需要很准,有个参考就行了。我买了汉王的,不然也学楼主d一个
从单位(ug/m3)上来说是是算重量,但传感器是做不到的,都是通过计数来间接得到
这种玩意只有帝都用的上,我等小山传感器很受伤
hozou:是攀藤的传感器 G3 吧 ( 13:00) 是的,刚翻了下,貌似他们家传感器还涨价了
山东激光:个人不能发布预报的。只能是自己知道,心里有数即可。[表情] [表情] [表情] [表情] [表情]  ( 13:54) 嗯,自己玩玩就好,不给xx添麻烦
买了一个,为了省事,买了套件,已经闲置好久不用了
查看完整版本: [--
Powered by
Time 0.061116 second(s),query:5 Gzip enabled

我要回帖

更多关于 小米pm2.5检测仪 评测 的文章

 

随机推荐