自制arduino空气检测器(大神手工DIY了一个空气检测仪)
自制arduino空气检测器(大神手工DIY了一个空气检测仪)NodeMcu洞洞板新手、入门、高手快速自检:一、准备材料1、硬件材料
右边的鸣人是后P上去的,平时可以放个便签、照片什么的。
想做这个东西,其实已经有段时间了,零件早就买了,然后,因为各种原因,一直吃灰中。这次做出来,实在是因为最近时间比较充裕,闲的无聊。这个空气检测仪可以说是堆料,有什么用什么,最后就成这个样子了,当然,你也可以根据自己的想法更改零件的摆放位置、删减功能。
这个检测仪是基于 EspEasy固件的,主要功能是检测 CO2和 PM2.5,同时还可以检测温度,湿度,气压,光照,但是由于甲醛传感器的结果受各种条件影响较大,没有加入。
EspEasy是一款免费的开源物联网 MCU固件,最初由 letscontroit. com社区(原名 esp8266. nu社区)开发。它运行在基于 ESP8266的硬件平台上 “EspEasy”是指固件 而不是硬件。它提供了一个非常简单的操作系统,用户只需连接传感器,便可以通过 Web页面读取和控制,而无需编写任何代码,并且可以通过 ota更新固件。 刷入 EspEasy固件的设备可以轻松接入智能家庭系统,通过 Web页面配置完成以后,基于 ESP8266的硬件便可以成为无线传感器,或者控制设备。本着零基础,少折腾的原则,选件以简单粗暴、方便实用为主,尽量少留选择的余地,防止给新手挖坑。如果是新手,最好按推荐的型号买,可以无脑接线。入门级别的,可以按 EspEasy官方支持传感器型号来选件,更多的可以参考官方的插件列表。高手请直接关闭,全文无技术含量。
新手、入门、高手快速自检:
- 新手:一看到上面的图就蒙了;
- 入门:用过 EspEasy,了解它的插件;
- 高手:对 EspEasy十分了解(由于是基于 EspEasy完成的,所以这里的高手就这样定义了);
一、准备材料
1、硬件材料
洞洞板
NodeMcu
WeMos D1 mini
SD1306主控,I2C接口 OLED
SenseAir S8 CO2传感器
Plantower PMS 7003 粉尘传感器
BH1750 3.3V光线传感器
BME280 3.3V温湿度压力传感器
WS2812 RGB LED
有啥用啥的原则
杜邦线
按钮开关,有啥样的用啥样的
- 洞洞板(尽量厚点,防止变形,选配。)
- NodeMcu(或者 WeMos D1 mini也行,这里是 EspEasy的官方硬件支持列表,有基础的可以随意,没基础的,最好跟着脚印走。)
- OLED显示屏(驱动芯片 SD1306或者 SH1106,分辨率最好128X64,I2C接口,颜色根据个人喜好,选配。)
- SenseAir S8 CO2传感器(根据个人需要选配)
- Plantower PMS X003(“X”代表数字,我这用的是7003,根据个人需要选配。)
- BH1750 3.3V光线传感器(选配)
- BME280 3.3V温湿度压力传感器(选配)
- WS2812 RGB LED(我用的是1颗灯珠的,选配)
- LED三个(根据个人喜好,最好不要用透明高亮的,选配)
- 母头杜邦线(如果用烙铁可以选配,否则必备)
- 按钮开关(可以从旧鼠标上拆)
- 电阻四个(可有可无)
- 漆包线(可有可无)
2、工具
- 偏口钳
- 电烙铁(可选,但是,最好有)
- 焊锡丝(如果用烙铁,必备)
- 热熔胶及胶枪(根据个人需要,可能会用到,不必须)
3、软件
- 串口驱动 (CP2102或CH340,如果其他型号,可以向买家要或自己搜)
- EspEasy(可以去官网下载,也可以用我编译的版本,应该是基于11月底的版本,去掉了一些这里没用的插件。文章末尾有下载连接。)
- 图片取模软件(用于自己编译固件,修改 OLED的启动画面。)
二、软件设置
所用到的软件会在文章最下方提供下载
1、刷写 EspEasy固件
刷写 EspEasy固件非常方便,首先先确定串口芯片型号,安装对应驱动,一般常见的就是 CP2102和 CH340,如果不是,可以向商家索取或者百度搜索,我的下载包里提供了 CP2102和 CH340的驱动。
↑最简单的区分方法就是看芯片形状,最准确的就是看芯片上的字
安装完驱动以后,重新插拔下设备,就可以在设备管理器里看到新的串口设备了,记住串口号。
查看方法:桌面→我的电脑→右键属性→设备管理器→端口
在下载的文件夹中打开 EspEasy文件夹,找到里面的 FlashESP8266.exe双击打开。打开软件后,选择对应的串口,Firmware选择 GeekAir4096.bin,然后点击 Flash,会弹出一个 CMD窗口,显示刷写进度,刷完以后,重新插拔一下,重启 Esp。
文件夹里面的三个 blank文件是用来清空 flash的,尤其是当 EspEasy设置登录密码,而又忘记的时候,用于初始化还原(建议刷固件之前先用 blank清空一下)。
还是习惯老版的工具
2、设置 EspEasy
刷完重启以后,就可以搜索 SSID了,手机或电脑都行,搜索 WIFI,找到 Geek_Air_0,链接,密码 configesp,如果链接后没有自动弹出设置页面,就手动访问 192.168.4.1,设备的 IP地址需要是自动获取的,如果不是,先更改自动获取,再链接 Esp。
链接成功后,会看到 Esp的登录地址
保证访问设备和 ESP在同一个路由下,并且可以访问,使用前面得到的 IP地址,登录 Esp,我编译的固件已经打开了 Rules,NTP,时区也设置好了,并且关闭了串口,如果是官方版本,可以手动修改。
参考配置
如果网络中存在 MQTT Broker,可以在 Controllers中添加 Broker信息。
参考配置,我用的是 HomeAssistant平台
打开 EspEasy文件夹下的 rules1.txt和 rules2.txt,分别复制、粘贴到 EspEasy的 rules Set1、Set2里面,别忘提交保存。
文章末尾会有相关设置说明
3、添加设备
为了可以少动脑子,坑越少越好,建议无脑添加,名字不能改,如果哪个传感器没有,可以空过去,前面的编号一定不要变,比如1、2、3、6、7、8,如果有基础,可以自己更改名字和顺序,但是同时需要对应的修改 Rules。
IO口用全了
下面是插件的设置界面
SenseAir S8 二氧化碳传感器
如果没有 Controller,可以不用勾选“Sent to Controller”选项,“Interval”可以自己设定,下同。
BME280 温度、湿度、压力传感器,offset可以根据自己的实际情况调整。
BH1750 光线传感器
SD1306 OLED屏幕,主要设置说明,见文章结尾
PLANTOWER PMS7003 粉尘传感器
按键
虚拟设备,用来记录设备状态
三、硬件连接
接口对应表
- OLED显示屏----[VCC→3.3V,GND→GND,SCL→GPIO5,SDA→GPIO4]
CO2传感器背面为进气口,不可阻挡
- SenseAir S8 CO2传感器----[G →Vin,G0→GND,UART_RxD→GPIO12,UART_TxD→GPIO13]
PMS 7003转接板
- Plantower PMS 7003----[VCC→Vin,GND→GND,RX→GPIO12,TX→GPIO13]
- BH1750 3.3V光线传感器----[VCC→3.3V,GND→GND,SCL→GPIO5,SDA→GPIO4]
- BME280 3.3V温湿度压力传感器----[VCC→3.3V,GND→GND,SCL→GPIO5,SDA→GPIO4]
接3.3V,千万别直接接5V
- WS2812 RGB LED----[DI→GPIO14,5V→3.3V,GND→GND]
- LED三个----[红长脚→GPIO1,黄长脚→GPIO16,绿长脚→GPIO15,三短脚→GND]
- 按钮开关----[按下接通的两脚,一脚GND,一脚GPIO3]
粗体字为 NodeMcu接口,电阻可以串入 led,或者直接做装饰用,不接入电路,可以直接在老旧电器上找,如果想接入电路,直接串入 led看亮度合适就行,不用去管阻值。漆包线是用来代替导线,主要也是装饰用,也可以用来制作检测仪的支架。
如果用焊接的方式,接线会比较方便,焊完之后,用偏口钳把长出来的引脚简短。但是如果想用杜邦线直接插,可能会麻烦点,需要剥线,最好是相同功能针脚用相同颜色,这样接线的时候不容易接错。如果使用洞洞板,还用杜邦线直插的话,由于洞洞板的厚度,可能会插得不实,需要用偏口钳子把前面的塑料剪掉一点。
四、外观设计
上面有了软件的设置方法,也有了硬件的接线方法,这个空气检测仪就可以工作了,这一步要做的就是您想要它是什么样子了。
可以类似于这样,随便放个地方就行
也可以像积木一样,放在洞洞板上
或者用积木拼个底座
S8的进气口在背面,一定要留出空间,由于它的外壳是透明的,我就把 RGBLed放在它旁边,根据空气质量不同,显示不同颜色。
粉尘传感器的进气出气口也不能阻挡,尽量通风顺畅,有助于结果的准确性。
外观自己喜欢什么风格,可以随意发挥,像这样裸奔,或者淘个漂亮点的 CPU粘上做装饰,一个极客风的检测仪;或者用亚克力板和细漆包线 DIY一个透明的“洞洞板”,板上再雕刻个名字啥的,侧面加个 LED,做个科幻风格的;或者 3D打印个外壳;或者把任务交给孩子,用积木拼个外壳,总之一共就这些东西,您想怎么放置都行,但是注意通风。也可以把这个检测仪做成分体的,屏幕分离出来,通过 MQTT接收数据,传感器放到需要用的地方,随意发挥。
五、功能设计
1、基本功能
开机
手动点亮屏幕
手动关灯,板载 LED不包括在内
手动开灯
OLED用来显示基本的信息,可以自动息屏。红色 LED是 WiFi指示灯,当 WiFi断开的时候,红灯闪烁。黄色 LED是 MQTT指示灯,断开的时候,黄灯闪烁,绿色是模式切换指示灯,长按按钮,绿灯连续闪烁3次,长按事件触发。按钮短按时,点亮熄灭的 OLED屏幕,长按时,用于开关 LED灯。由于没有多余的可用端口,板载 LED在系统运行时会亮,就当个电源灯用吧,如果实在觉得碍眼,用烙铁卸了它,或者,偏口钳剪碎,再清理干净。
根据空气质量不同,显示不同的颜色
OLED的启动画面
如果会自己编译的话,可以修改 OLED的启动画面,文件路径为 libesp8266-oled-ssd1306OLED_SSD1306_SH1106_images.h
2、代码修改
这里主要是对 Rules文件做些说明,方便自己修改配置参数。
Rules1里面的部分代码
说明:
- 红色有下划线标记的数值可以根据自己需求修改。
- 屏幕显示时间只能在这里修改,不可以在插件里修改 Timeout,插件的自动息屏不会更改虚拟设备里的 OLED状态。
- 如果没有 MQTT需求,可按图中修改代码,删除黄色高亮代码,添加红色高亮代码。
Rules2里面的代码
说明:
- 红色下划线为空气质量阈值,可根据自己感受更改区间。
- 黄色高亮代码为不同空气质量区间 RGBLed的颜色值,可根据个人喜好更改。
- 绿色下划线为光照阈值
- 红色高亮代码为不同亮度区间,RGBLed的亮度,可按需要更改。
- 蓝色下划线为定时重启时间,如果不需要重启,可将蓝色高亮代码删除。
OLED设置界面
说明:
可根据自己需求修改,这里是官方的数值调用说明及特殊字符,这里是可调用的系统变量。
六、结语
做这个空气检测仪还是很容易的,建议没有排错能力的新手,完全按照脚印走,防止掉坑;稍微有点基础的,就可以按这个思路随意发挥了;如果是高手,应该看不到这里,前面第一段看完就已经关闭了,最后,欢迎交流,不喜勿喷。