DIY空气检测仪——攀藤G5ST+OpenWrt(附代码)
前言
看过我前几篇租房布置的文章就知道,这房间的污染源也不算小了,为了给自己安个心,DIY检测下空气那是必须的(
魂淡,不就是想玩DIY吗)
生活不是租来的——单身公寓初步布置简记追加修改(2016-06-0616:41:50):解释一下公租房的概念,并不需要使什么手段啊……新就业的异地务工人员申请公共租赁住房,应当具备下列条件:1、具有...配件选购
其实一开始只是想检测下甲醛这玩意,某宝几块钱的显色检测方式感觉不是很靠谱,所以一开始的方案定的是Ardunio+甲醛传感器,Ardunio都知道很便宜啦,山寨板的话十几块就可以搞定,然而靠谱的甲醛传感器看来看去就英国Dart一家,大约要200+RMB。
此时!突然想起来之前有看过几眼国产攀藤出的激光PM2.5传感器广受好评(很多空气净化器使用这款),那么他们家有没有甲醛传感器卖呢,一看还真有,大约150+RMB,同样宣称出厂已经标定,看起来就比其他不知道谁生产几十块的靠谱嘛(
没错就是那么容易被广告忽悠)。
就在快剁手的时候,发现攀藤还同时销售一款PM2.5传感器还集成了甲醛传感器的产品……价格也差不多是两者相加,但是接线方便呐!虽然珠海的空气好到爆炸没啥测PM2.5的必要,不过手痒痒还是决定要来一个PM2.5的传感器。
又是在快剁手的时候……发现还有卖三合一传感器,就是PM2.5+甲醛+温湿度,只要再加10块!好好好,不就是加钱嘛!加!
PMS5003ST_淘宝搜索淘宝搜索是最智能的商品搜索引擎,通过大数据的运营,准确的理解商品与用户,提供精准的个性化搜索体验。传感器是搞定了,转头要选Arduino的时候……脑袋一转,我既然只接这一个传感器,这传感器输出还是串口TTL的,我为何不接在电脑上呢?对啊,为啥不接电脑呢?那就接电脑上吧……只需要一款USB TTL的东西就可以了,买的时候注意VCC要5V的,TX RX都要TTL电平的(3.3V)
FT232_淘宝搜索淘宝搜索是最智能的商品搜索引擎,通过大数据的运营,准确的理解商品与用户,提供精准的个性化搜索体验。
于是剁手到此结束,就等着收货了。(喂喂喂,标题不是说OpenWrt吗!别急别急……)
**的开发
USB-TTL的模块很快就收到了,然而三合一传感器据说是需要定制,所以要等一周~
传感器就长这样,外面蓝色的是一层膜,我还没正式使用,所以也就不撕了吧。
拿到手就马上**了……USB-TTL的针脚是2.54mm间距的4Pin,传感器是1.25mm间距的8Pin,手头只有传感器卖家送的两头都是母口的线。没办法只能破坏这根线啦,把必需的VCC GND TX RX都剪下来,剥开外面的绝缘层,插进USB TTL的口里(这里要注意传感器PIN的定义……比如按G5ST的定义蓝色这根才是VCC)
接线就绪后把USB-TTL模块插到电脑USB,装一下FT232的驱动就算是第一步完成咯。
结果我的Win10系统死活都是拒绝访问COM口……借着偶尔成功一次的机会用C#写了个读取串口的程序。然而只用过一次后系统又拒绝访问COM口了……找了半天也不知道如何解决。(图中程序的关键代码:戳我)
难道真的要再买一个Arduino来专门读取这个数据吗!并不需要
扭头一看,就看到了我的裸路由器~Pandorabox M1(曾经写了晒单……但苦于不是正规厂商产品不允许发布)
简单介绍下就是一款MT7621的路由器,这款由于偏向于,所以连外壳……都没有,还引出了很多PIN可以自己接个屏幕啥的(虽然我懒的玩……)
路由器上很自然一般都会带有TTL口,但是如果我用TTL口就不是那么通用了……挪到别的路由器上岂不是还要拆机器了。所以还是以USB方式连接。
先把USB-TTL模块插上去,然后在OpenWrt上安装coreutils-stty, kmod-usb-serial-ftdi(这个根据USB-TTL模块芯片决定) 这两个软件包看了下大多数源都是提供的,直接opkg install这两货就好了。
安装完后要手动加载USB-TTL的内核模块,执行modprobe ftdi_sio,此时dmesg会如下提示
[45321.774000] usb 1-2: new full-speed USB device number 4 using xhci-hcd
[45321.866000] usb 1-2: New USB device found, idVendor=0403, idProduct=6001
[45321.947000] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[45322.044000] usb 1-2: Product: USB <-> Serial
[45322.095000] usb 1-2: Manufacturer: FTDI
[45322.144000] ftdi_sio 1-2:1.0: FTDI USB Serial Device converter detected
[45322.224000] usb 1-2: Detected FT232BM
[45322.268000] usb 1-2: Number of endpoints 2
[45322.317000] usb 1-2: Endpoint 1 MaxPacketSize 64
[45322.372000] usb 1-2: Endpoint 2 MaxPacketSize 64
[45322.428000] usb 1-2: Setting MaxPacketSize 64
[45322.481000] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB0
然后要根据传感器手册设置一下串口波特率为9600bps,无校验,1bit停止位,这里就用到了stty
stty -F /dev/ttyUSB0 speed 9600 raw cs8 -parenb -cstopb
接着其实直接访问/dev/ttyUSB0这个设备就可以读取串口数据了。但是在OpenWrt上如何读取数据更方便简洁呢?用C语言写的话还要有编译环境,显然我懒得折腾,用Python还要装运行环境,显然我也懒
。
而OpenWrt实际自带了lua,那么用lua来编写就是最方便的了(啥都不用装!)
作为之前从来没接触过lua的菜鸟来说……lua的二进制操作难度出乎了想象,不过最终还是折腾出了一个读取传感器数据并上传到物联网平台的脚本
只是写的很挫罢了(代码:戳我)
接下来只要执行脚本,环境中有curl,就可以自动的读取传感器数据并上传啦!
总结
三合一传感器比较节省空间,接线方便
攀藤G5ST的温度传感器准确度似乎不太好,比我室内其他温度计都低了3度左右,但湿度还是比较准确
甲醛传感器易受酒精等物质干扰,所以数字也不全代表是甲醛含量(Dart那款也是一样)
接到路由器上后不明原因的串口间歇性丢数据,所以必须完善数据校验功能(C#版的代码里我就没写校验)
总共花费300RMB左右,玩的开心就好~








DavidChiang
校验提示文案
Liteos
校验提示文案
baobao1994
校验提示文案
liuwei027
校验提示文案
jetsun2k
回头也在张大妈上发个帖子。
校验提示文案
氮化镓
校验提示文案
slg_
校验提示文案
Edwinxu
校验提示文案
Anonymous
校验提示文案
超乎想象
只想知道卤煮的床垫滚床单舒服吗
校验提示文案
wzh406
校验提示文案
Candy的大灰狼
校验提示文案
DDDDDennis
是师兄吗
校验提示文案
Ps小熊
校验提示文案
vasto
校验提示文案
摸达人
校验提示文案
liseguo
校验提示文案
安卓中国区总代
校验提示文案
嘎嘎嘎嘎嘎嘎哥
校验提示文案
ouowow
校验提示文案
值友7360732384
校验提示文案
盐老湿
校验提示文案
老土365
校验提示文案
楠斯基
校验提示文案
jetsun2k
回头也在张大妈上发个帖子。
校验提示文案
civen
校验提示文案
baobao1994
校验提示文案
Nyarlathote
校验提示文案
橙子滚天下
校验提示文案
ouowow
校验提示文案
嘎嘎嘎嘎嘎嘎哥
校验提示文案
Edwinxu
校验提示文案
安卓中国区总代
校验提示文案
Liteos
校验提示文案
liseguo
校验提示文案
摸达人
校验提示文案
vasto
校验提示文案
Ps小熊
校验提示文案
DavidChiang
校验提示文案
liuwei027
校验提示文案