DIY空气检测仪:增强篇——二氧化碳检测很重要(附代码)
起因
自上一篇DIY空气检测仪以来,已经过去了一整年,期间收到了很多询问。在这期间文中方案工作稳定,但是室内污染物除了甲醛、PM2.5呀,还有因密闭空间产生的二氧化碳超标问题,通常建议室内二氧化碳保持在1000ppm以下比较好,通常办公室和家里会处在1000以上一点点,如果是人多的话可能会到2000甚至3000ppm,那就会感觉很闷了。
这不,空调季节~开窗通风时间变少,所以开始着手给我那方案增加一个二氧化碳检测功能。
增强方案
原先因为考虑尽可能少的购买额外设备,所以把路由器作为了主控,去读取串口传感器数据并上传,当我选型定了使用攀藤的CO2传感器时,发现我如果需要再读取一个串口传感器的数据,那我还需要再买个USB串口的连接器,这样看起来复杂度变的很高,而且花费也不小。
又考虑到原先方案如果人就在家,因为没有显示屏,想直接看当前数据还得登录网站去看也是颇为麻烦,以及路由器有时候重启呀,折腾刷机呀都要重新折腾下脚本,也是麻烦事,传感器还必须和路由器放一起。正好前阵子Arduino很火,不如就玩玩Arduino吧!
所以先定了这样的组合方案:G5ST+DS-CO2-20+Arduino+12864 OLED显示屏
那么问题又来了,这样彻底就只能本地显示了,完全没法联网上传数据,看了眼Arduino的联网方案价格……刚好看到esp8266的wifi方案,于是直接转投了nodemcu
nodemcu是基于esp8266开发的板子,所以天生自带WiFi,如果运算量和外接设备不多的话完全够用,所以最终定下这样的方案:
G5ST+DS-CO2-20+Nodemcu+12864 OLED显示屏
这里显示屏可以自己随便换着玩,但是普通LCD看着挺Low的…… 所以还是选OLED的好一些,就是尺寸很小,不过能看就行了……
零件开箱
由于之前一直没玩过Arduino之类的东西,所以基本是啥配件都没有……没有杜邦线……没有面包板……电源也没有,所以全部马云爸爸家购买,一共添置了以下东西,共计大约300大洋不到
1. MB102 面包板+电源模块+65条面包线
2. NodeMCU Lua WiFi 测试板 开发板 基于ESP8266WiFi模块 CP2102
3. 攀藤 二氧化碳 传感器 CO2 DS-CO2-20 + 转2.54mm排针 转接板
4. 0.96寸白色 I2C IIC通信 128*64 OLED液晶屏模块
5. 开关电源 适配器 9V/1A
由于算是个伪开箱……所以直接上个最终成品图好了
接线方法
首先把面板包放在桌子上
然后把电源模块插上去,最好正负极按面包板提示放
然后在另一头插上nodemcu,为啥在另一个头插呢,因为方便连usb呀!
接下去中间就是安放OLED显示屏和留给2个传感器的位置了,爱咋放咋放,注意自己面包板哪行哪列是连通的就可以。
放完器件就是接线,这里所用到的器件都可以用5V供电,所以把电源模块那一侧切换到5V
然后把各自的VCC和GND接到面包板上的这一侧即可
显示屏是I2C的,所以只需要2条IO接线,我是这样接的SCL->nodemcu D1,SDA->nodemcu D2,这样可以直接用自带demo跑起来,因为demo内定义的就是这2个引脚为I2C
传感器因为是串口的,所以也很简单,对于G5ST只需要把TX接到nodemcu上即可,而DS-CO2-20是查询式的传感器,所以TX RX都要接上,这里我这样接(想直接套用我代码的就按我这样接吧。。)
G5ST TX -> nodemcu D7
DS-CO2-20 TX -> nodemcu D5,RX -> nodemcu D6
程序设计思路
由于之前没接触过这类东西,尤其对Lua也不熟悉,所以对于nodemcu来说Lua对我是没任何优势的……
直接拿起了Arduino IDE + nodemcu的配置包,下载好一些必用库(比如Adafruit_GFX和Adafruit_SSD1306),用起了C语言
首先我们用到的资源:2个软串口,1个显示屏,1个WiFi
问题点发生在下面几个模块:
显示屏I2C地址到底是多少?
根据卖家说明,I2C可在显示屏背面进行焊接选择,默认是0x78,所以傻傻的打开了demo把地址改成了0x78结果啥都没亮……经过网上搜寻。。。原来在这里给显示库的I2C地址应该要右移一位……也就是应该写0x3C
双软串口怎么玩?
Arduino内可以使用softwareserial.listen()方法来切换到某一个软串口,但这个方法在nodemcu不可用。
正确方法是需要使用某个软串口时,应该关闭所有其他软串口xxxxx.enableRx(false);只打开当前软串口xxxxxx.enableRx(true);
串口校验数据要不要管?
对于DS-CO2-20这种查询式的我觉得可以不管,但对于G5ST返回数据最好还是校验一下,不然很容易有异常数据,导致结果不可靠。
其它的就自己阅读代码吧,写的也很烂,仍然是用的lewei的平台保存数据,不过跑了一天没啥问题就这样吧。
二氧化碳检测结果和通风必要性
跑了一天来说说结果吧~
可能是房间密闭性也不太好,二氧化碳浓度最高只有1400ppm,除非直接对着传感器哈气
中间开窗,开空气循环扇强制通风了20分钟,可以看到20分钟就能显著下降到与户外接近水平(大气中好像400多ppm?)
大约关窗后2小时回到1000ppm,再过4小时到达通风前效果。
经过一个晚上,加上一个无人的白天,可以看到按我房间密闭条件大约最高就1200左右了,人离开后1个小时达到1000以下,8个小时后达到与室外基本平衡
总结来说就是通风20分钟,维持6小时 ,所以夏季还是得多开窗通风呀,每日一通都不是太足够,最好三通,然后睡觉前也通个风, 当然最好的方案还是上新风机了
附:程序代码
值个大头鬼
校验提示文案
导演我演到哪了
校验提示文案
值友6501666076
校验提示文案
gerb2007
校验提示文案
大名-
校验提示文案
景齐童
校验提示文案
囧囧熊
校验提示文案
大钢蹦
校验提示文案
leoncici
校验提示文案
coo_u
校验提示文案
乐乐lele
校验提示文案
云栖隐者
校验提示文案
xs2013
校验提示文案
FebIdiot
校验提示文案
小熊哈哈哈哈
校验提示文案
樂乆
校验提示文案
朱小厨
校验提示文案
霓虹初上
校验提示文案
dieselchan
校验提示文案
skyman
校验提示文案
觅凤的梧桐
校验提示文案
值友2056980134
校验提示文案
囧囧熊
校验提示文案
囧囧熊
校验提示文案
囧囧熊
校验提示文案
MGuKing
校验提示文案
yumaomao
校验提示文案
值友5090123637
校验提示文案
老土365
校验提示文案
老土365
校验提示文案
老土365
校验提示文案
gerb2007
校验提示文案
cccccfgg
校验提示文案
0伪装者0
校验提示文案
值友6501666076
校验提示文案
morok2008
校验提示文案
小豆儿3
校验提示文案
爱丶深藏
校验提示文案
那种幸福L
校验提示文案
不信你不服
校验提示文案