24960| 27
|
基于ESP8266做一个空气质量监测站 |
女朋友的寝室刚刚翻新好,味道很大 同学们都说,甲醛肯定超标 常言道,没数据说个(哔---) 那就测一测甲醛到底有多少 ----------【物料清单】---------- 外壳(3D打印) 空气质量传感器模组 ESP8266板卡(我用的是NodeMCU的) LCD2004液晶屏(I2C接口) Arduino板卡(可选) 杜邦线若干 XH2.54接插件制作套件(包括插头塑壳,簧片,冷压钳) 五金件(螺丝螺母铜柱)若干 --------------------------------------------------- 外壳:外壳这种嘛大家随意~ 空气质量传感器买的现成模组 是炜盛科技生产的 淘宝上直接有直营店铺 为了避免打广告嫌疑,就不说具体型号了,大家自己根据我的图对比下就知道了~ 这个模块是直接串口输出数据的,具体数据格式手册上已经说得很清楚了,也可以参考我的程序来移植 液晶屏我用的2004,刚好可以显示所有数据 如果手头只有1602的小伙伴也可以用哒 就是自己要稍微修改下显示界面,然后定期翻页 哦对,建议用I2C接口的液晶屏 淘宝上有原生I2C接口的,那种贼拉贵。直接买用转接板就行的 就是这样的,转接板淘宝上四五块钱一个 其实我本来有一块原生的,然后刚好被同学顺走了,换用转接板的是一样的 I2C有一个好,就是线数少,真的是非常舒服了。 后面有个骚操作,不用Arduino直接用ESP8266做主控如果直接用原生的16pin接口,就算用4bit数据模式,IO口也会很捉急 传感器模组接口是6pin的XH2.54插座,我刚好有做XH2.54头子的全套家伙,所以直接剪了两根杜邦线,然后做成XH2.54头子 没条件的小伙伴,直接淘宝上买做好的线吧~ emmmm好像淘宝上这样的线很少,要定制。其实可以直接买6pinXH2.54头子的线,然后自己搞几根杜邦线,中间剪开接上。 ---------【V1.0版本】----------- 接线挺简单的。这一版本是用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字】 反正结果就是酱紫滴 是不是简单了很多! 其实线路原理很简单,电源(5V)进来分三路,一路接到ESP8266板卡的VIN,一路接到传感器模组,一路接到液晶屏。 此处要注意,ESP8266是3.3V的,接5V会烧,所以一定要接到板卡的VIN引脚上,让5V通过板载的线性稳压器降到3.3V再供给8266 然后就是传感器模组接串口,液晶屏接I2C接口。 具体引脚定义在这里了 【焊接的真是差】【捂脸逃】 啊这边说明一下,ESP8266有线烧写代码时,也是通过串口的,所以会和传感器模组冲突。 所以我做了个拨码开关,在烧程序的时候断开串口和串口模组的连接~ 然后翻了一圈只有8位拨码开关,只能硬着头皮用了Orz 然后拨码开关上还接了一个IO口,可以用来启动OTA功能(无线烧写程序)。 当程序侦测到这个IO口为低电平(即拨码开关打开),就会启动OTA服务器 平时是关闭OTA服务器的,一方面防止恶意烧写,一方面也可以降低功耗。 具体的代码都附在后面啦~经测试稳健的一比~ 下面放图镇楼 ---------【碎碎念】----------- 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 |
409.55 KB, 下载次数: 49
售价: 30 创造力 [记录]
师兄你太厉害了,我也是买了这个传感器,自己写了个测试代码,但开了半小时后数据就停掉了:'( 马上要试试你写的这个,感谢分享。 以下是我的测试码,如有空帮忙看看;P [mw_shl_code=cpp,true]#include <SoftwareSerial.h> 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] |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed