基于ESP8266做一个空气质量监测站

2018-10-043.6万
精华项目
AI 快速预览详细 收起
本文介绍了如何使用ESP8266和空气质量传感器模组制作一个空气质量监测站。项目所需物料包括ESP8266板卡、空气质量传感器模组、LCD2004液晶屏等。通过详细的接线图和代码示例,用户可以轻松搭建并实现远程监控。特别适合家庭环境监测,尤其是新装修后的甲醛检测。
女朋友的寝室刚刚翻新好,味道很大
同学们都说,甲醛肯定超标
常言道,没数据说个(哔---)
那就测一测甲醛到底有多少

----------【物料清单】----------
外壳(3D打印
空气质量传感器模组
ESP8266板卡(我用的是NodeMCU的)
LCD2004液晶屏(I2C接口)
Arduino板卡(可选)
杜邦线若干
XH2.54接插件制作套件(包括插头塑壳,簧片,冷压钳)
五金件(螺丝螺母铜柱)若干
---------------------------------------------------
外壳:外壳这种嘛大家随意~

空气质量传感器买的现成模组
是炜盛科技生产的
淘宝上直接有直营店铺
为了避免打广告嫌疑,就不说具体型号了,大家自己根据我的图对比下就知道了~
这个模块是直接串口输出数据的,具体数据格式手册上已经说得很清楚了,也可以参考我的程序来移植

液晶屏我用的2004,刚好可以显示所有数据
如果手头只有1602的小伙伴也可以用哒
就是自己要稍微修改下显示界面,然后定期翻页
哦对,建议用I2C接口的液晶屏
淘宝上有原生I2C接口的,那种贼拉贵。直接买用转接板就行的
基于ESP8266做一个空气质量监测站图1
就是这样的,转接板淘宝上四五块钱一个
其实我本来有一块原生的,然后刚好被同学顺走了,换用转接板的是一样的
I2C有一个好,就是线数少,真的是非常舒服了。
后面有个骚操作,不用Arduino直接用ESP8266做主控如果直接用原生的16pin接口,就算用4bit数据模式,IO口也会很捉急

传感器模组接口是6pin的XH2.54插座,我刚好有做XH2.54头子的全套家伙,所以直接剪了两根杜邦线,然后做成XH2.54头子
没条件的小伙伴,直接淘宝上买做好的线吧~
emmmm好像淘宝上这样的线很少,要定制。其实可以直接买6pinXH2.54头子的线,然后自己搞几根杜邦线,中间剪开接上。

---------【V1.0版本】-----------

基于ESP8266做一个空气质量监测站图2

接线挺简单的。这一版本是用Arduino做主控,那么Arduino就需要用到两个串口,分别和ESP8266以及传感器模组通讯。正好手头有块Mega就用上了,用UNO或者nano一类的也行的,搞个软串口就是了~
Arduino的两个串口分别接传感器模组和ESP8266,I2C接口接液晶屏~so easy
然后此处要感慨一下DF真的良心,OBLOQ的固件映像在github上面有。
地址在这里  https://github.com/DFRobot/Obloq/tree/master/Firmware
我的ESP8266本来是NodeMCU的,然后刷了上面链接里的bin文件以后,成功变身OBLOQ~
当然已经有OBLOQ的小伙伴就不用费事刷固件啦~

---------【V2.0版本】-----------
1.0版本做完以后,我就在想,放着ESP8266这么强个处理器不用,还搞个Arduino也是有点浪费,于是就开始了一通骚操作~
【此处省略焊接时的N多句粗口】【此处省略写bug的NaN字】
反正结果就是酱紫滴
基于ESP8266做一个空气质量监测站图3
是不是简单了很多!
其实线路原理很简单,电源(5V)进来分三路,一路接到ESP8266板卡的VIN,一路接到传感器模组,一路接到液晶屏。
此处要注意,ESP8266是3.3V的,接5V会烧,所以一定要接到板卡的VIN引脚上,让5V通过板载的线性稳压器降到3.3V再供给8266
然后就是传感器模组接串口,液晶屏接I2C接口。
基于ESP8266做一个空气质量监测站图4基于ESP8266做一个空气质量监测站图5
具体引脚定义在这里了

基于ESP8266做一个空气质量监测站图6基于ESP8266做一个空气质量监测站图7
【焊接的真是差】【捂脸逃】
啊这边说明一下,ESP8266有线烧写代码时,也是通过串口的,所以会和传感器模组冲突。
所以我做了个拨码开关,在烧程序的时候断开串口和串口模组的连接~
然后翻了一圈只有8位拨码开关,只能硬着头皮用了Orz
然后拨码开关上还接了一个IO口,可以用来启动OTA功能(无线烧写程序)。
当程序侦测到这个IO口为低电平(即拨码开关打开),就会启动OTA服务器
平时是关闭OTA服务器的,一方面防止恶意烧写,一方面也可以降低功耗。

具体的代码都附在后面啦~经测试稳健的一比~
下面放图镇楼
基于ESP8266做一个空气质量监测站图8
基于ESP8266做一个空气质量监测站图9基于ESP8266做一个空气质量监测站图10

---------【碎碎念】-----------
ESP8266的代码是用ArduinoIDE开发的,具体怎么部署开发环境就不多说了,论坛里有~
https://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=24368&fromuid=820173


云平台就是DF家的,真的好使~需要自己修改的几个地方:(在iot.h或者network.cpp里面)
自家wifi热点的ssid和密码
云平台上的账号密码
用来publish消息的topic
具体可以参照论坛上OBLOQ使用教程~



有任何问题,欢迎回帖~我会尽力帮助~


简略说一下OTA烧写法。拉低对应IO(就是打开拨码开关),然后复位板卡。确保你的电脑和板卡连接了同一wifi热点,然后打开浏览器,输入液晶屏提示的网址,然后把编译出来的bin文件通过网页上传上去。等板卡自动重启以后,恢复拨码开关,复位板卡。完成~


对了,用Arduino做主控的话,就没有OTA功能啦~

附件里包含了两个版本的代码,以及传感器模组的参考手册~

ps:欢迎转载,注明出处及作者即可~不得商用!
作者:XiaoFishGan




HCHO-IOT.rar

409.55 KB, 下载次数: 49

售价: 30 创造力  [记录]

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(16)
花生编程
花生编程
厉害厉害
花生编程
花生编程
赞!!!
花生编程
花生编程
不错!!
三春牛-创客
三春牛-创客
厉害厉害
zhouzhuofeng
zhouzhuofeng
不错的项目
黑白讲讲不清黑白
黑白讲讲不清黑白
大神,厉害
leovs
leovs
是不是用了这个模块,代码串口调试就不能用了呢?
FishGan
FishGan
作者
回复leovs
要看你配合具体哪一块主控板了。例如Arduino Mega是有多个串口的,就完全不影响。如果是Arduino UNO这种只有一个串口的,那就是没法用。如果是ESP8266,实际上是有一个半串口,另外的半个串口是调试专用,只有TX没有RX,但是需要你自己用杜邦线接出来,然后配合USB转串口模块使用。
OPPS
OPPS
师兄你太厉害了,我也是买了这个传感器,自己写了个测试代码,但开了半小时后数据就停掉了:'(
马上要试试你写的这个,感谢分享。
以下是我的测试码,如有空帮忙看看;P
[mw_shl_code=cpp,true]#include
SoftwareSerial ZPHS01_Serial(3,2);
byte readData[] = {0x11, 0X02, 0X01, 0X00, 0XEC};
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
ZPHS01_Serial.begin(9600);
ZPHS01_Serial.write(readData,sizeof(readData));
delay(500);
}
void loop() {
// put your main code here, to run repeatedly:
for (int i=0; i<14; i++) {
while(!ZPHS01_Serial.available()); // wait for a character
int incomingByte = ZPHS01_Serial.read();
Serial.print(incomingByte,HEX);
Serial.print(' ');
}
Serial.println();
delay(1000);
}[/mw_shl_code]
OPPS
OPPS回复FishGan
感谢楼主,确实我加了一行再发送就好了:handshake
FishGan
FishGan
作者
回复OPPS
这个传感器的确是有bug
就是数据会莫名自己停掉
遇到这种情况,直接通过串口再发送一遍请求指令就行啦
我的代码里加了超时判断,一段时间没新数据来就发送一遍请求指令
你的代码没啥问题的~
gada888
gada888
不错的项目
范yJ
范yJ
uno wifi就有OTA
FishGan
FishGan
作者
回复范yJ
UNO WIFI已经凉了Orz在官网上是Retired
其实从一开始UNO WIFI就感觉没什么存在感,各种社区支持也很少
价格贵不说,i2c也是个坑
官网上现在倒是有了个UNO WIFI REV2
不过用的是u-blox NINA-W13 Wi-Fi Module
价格也是挺感人的。。。
页里
页里
这个很实用啊,感谢分享,就是我作为一个刚接触的人做起来可能费一些时间,希望自己能完成
页里
页里回复FishGan
哇,收到回复好感动!我要先学习到无压力能看懂然后要是做的过程中有问题再请教您!
FishGan
FishGan
作者
回复页里
哈哈~加油!
dalao也是从新人过来的呀
遇到问题欢迎提问,我会尽力帮你解答哒~
M_J
M_J
可以出个心愿单
加油
M_J
M_J
这种事情,给我一个MEGA就够了
M_J
M_J回复FishGan
话说最近买了个NANO玩
FishGan
FishGan
作者
回复M_J
我倒是非常不喜欢5V电平
而且Arduino也可以在3.3V运行的啊,改改BootLoader让MCU运行到8Mhz就行了
不过实测有些体质好的片子3.3V跑16M也没事
8266也不贵啊,你焊功可以的话,淘宝上邮票孔的那种模块,10块不到就能买一个。要么就是我用的这种,长得像Arduino nano的,也就十几二十块一个。。。
共5条回复,已加载2条,点击查看更多共5条回复,已加载全部
hnyzcj
hnyzcj
不错的项目
俗人
俗人
厉害厉害666
rzyzzxw
rzyzzxw
哈哈,很棒的小伙。
- 没有更多了 -