【Funpack2-3】基于ESP32-E的水质检测仪
该检测仪基于于ESP32-E开发板,能够同时检测水体的浊度以及溶解性固体含量,并通过MQTT发布IoT数据,在手机端接受数据并实时查看
标签
Funpack活动
温湿度
ESP32-E
MQTT
水质
HonestQiao
更新2023-01-04
1240

项目总结报告:

· 项目描述:

本项目使用DFRobot提供的FireBeetle ESP32-E开发板作为主控板,通过模拟接口,从浊度传感器和溶解性固体含量传感器读取模拟量数据,然后将读取到的数据发送到MQTT服务,在手机上,通过MQTT DashBoard应用,接收对应的数据,并进行呈现。

 

所使用的FireBeetle ESP32-E开发板如下:

FvOVjIZldKNOmPSGMEyymghfiER_

同时,使用了针对该开发板的专属扩展板,具体如下:

兼容上千种Gravity传感器 ,无需焊接即可使用

在该扩展板上,提供了数字引脚接口、模拟引脚接口、I2C接口,并且接口都提供了对应的VCC和GND,方便直插对应的传感器。

 

在本项目中,测量水体浊度,使用的是DFRobot提供的Turbidity sensor浊度传感器模块,具体如下:

水质浊度传感器

在该模块的介绍信息中,有详细的浊度测量的原理说明:

浊度传感器是利用光学原理,通过液体溶液中的透光率和散射率来综合判断浊度情况。传感器内部是一个红外线对管,当光线穿过一定量的水时,光线的透过量取决于该水的污浊程度,水越污浊,透过的光就越少。光接收端把透过的光强度转换为对应的电流大小,透过的光多,电流大,反之透过的光少,电流小,再通过电阻将流过的电流转换为电压信号。

其使用方式如下:

本传感器模块通过数模切换开关,可以选择输出的是模拟量或者数字量。如果选择输出是模拟量,利用A/D转换器进行采样处理,单片机就可以获知当前水的污浊度。如果选择输出是数字量,通过模块上的电位器调节触发阈值,当浊度达到设置好的阈值后,Dout指示灯会被点亮,传感器模块输出由高电平变成低电平,单片机通过监测该电平的变化,就可以知道水的浊度超标,从而预警或者联动其他设备。

在本项目中,需要读取浊度数值,并进行呈现,所以使用的是模拟量模式。

将其连接到FireBeetle ESP32-E扩展板上时,使用的是A0接口。

 

在本项目中,测量水体溶解性固体,使用的是DFRobot提供的模拟TDS传感器,具体如下:

FnoCC19NN5_5Es8GPQnHOFlt_Kec

在该模块的介绍信息中,有详细的浊度测量的原理说明:

TDS(Total Dissolved Solids),中文名总溶解固体,又称溶解性固体总量,表明1升水中溶有多少毫克溶解性固体。一般来说,TDS值越高,表示水中含有的溶解物越多,水就越不洁净。因此,TDS值的大小,可作为反映水的洁净程度的依据之一。

其使用方式如下:

我们专门推出了这款arduino兼容的TDS传感器,连接至arduino控制器后,就可用于测量水的TDS值。 该产品专为arduino设计,即插即用,使用简单方便。3.3~5.5V的宽电压供电,0~2.3V的模拟信号输出,使得这款产品兼容5V、3.3V控制系统,能非常方便的接到现成的控制系统中使用。测量用的激励源采用交流信号,可有效防止探头极化,延长探头寿命的同时,也增加了输出信号的稳定性。TDS探头为防水探头,可长期浸入水中测量。

在本项目中,将其连接到FireBeetle ESP32-E扩展板上时,使用的是A1接口。

 

另外,在本项目中,还使用了一个SHT3X温湿度模块,用于现场环境的温湿度测量,具体如下:

SHT30.png

这款SHT3X温湿度传感器,使用的是I2C接口,将其连接到FireBeetle ESP32-E扩展板上时,直接插到I2C接口上即可。

 

根据规划,最终连线如下:

FkpEQLcBKsgB05IxxYMMDEWsgn7s

实物连线如下:

Fo4OYjgwEapz_HX-hAj0CuxUpEW0

实际测量时,将两个传感器的测量部分,放入水中即可进行测量:

Fh4W0khlNq6UGvCT3Jdej9ZnaU-3

 

· 各功能对应的主要代码片段及说明:

根据前面的规划,具体的代码,使用Arduino IDE进行编写。因为Arduino IDE对ESP32开发板提供了较好的支持,对于上面所使用的传感器,都提供了操作库。

具体的代码如下:【可使用的代码见附件】

FngaFioDl5v5oh1O725048kopgdRFkrNJzmx79iQT4rJ4SFDTVCUVOT2

在该项目代码中,使用了第三方库为EspMQTTClient和Adafruit_SHT31,需要提前进行安装:

FjdIMsee1A9OLOk8EgZ3t2GoXGKdFkn1Z60i3bVoMoNnjzYnPQiTyTa3

代码中,做了详细的说明,所以这里不再对代码意义进行解析,仅说明主要逻辑。

代码的主要逻辑为:

  • 定义EspMQTTClient连接信息;注意要根据具体环境修改设置
  • 初始化串口、SHT3X、连接MQTT服务器
  • 读取溶解性固体含量传感器(TDS)的模拟值
  • 读取浊度传感器(TD)的模拟值
  • 读取SHT3X的温湿度数据
  • 读取后,将上面的数据通过MQTT进行发布

发布到MQTT时,使用如下的topic:

  • 溶解性固体含量TDS:mytopic/data/tds
  • 浊度TD:mytopic/data/td
  • 温度:mytopic/data/temp
  • 湿度:mytopic/data/humi

 

在手机上的MQTT DashBoard应用中,接收各topic的数据:

Fp3KgiFzlfl-ZIRubFo9Q7zwrpN9Fvh08XuTGlCCWgzqEYqiCHqlUEtB

参考上面温度数据设置,一次设置好各topic的对应设置即可。

 

· 功能展示及说明:

实际使用过程中,具体步骤如下:

1. 准备两杯测量用的水:

其中一杯为清水,标为1号杯;

另一杯为浊水,标为2号杯。

 

Fl-2OGeb7sMidHRqVlPlXMQpuVgk

 

2. 将两个传感器,放置到1号杯中,也就是清水杯中,进行测量:

FtyzKM19fZZBKQLPXf5dV03D-aES

 

3. 到手机应用上,查看对应的数据,具体如下:

FlvMim8wYYMaRdtd__ePQjcrWj0B

 

4. 然后将两个传感器,放置到2号杯,也就是浊水杯中,进行测量:

Fqw8tyH0bGbrFXRqmeYIzBmiOzak

 

5. 再到手机APP查看测量结果:

Fo4JN3zDI4LkwqauGDVI2lY3P7ir

 

6. 测量结果分析:

两次测量结果数据对比如下:

FkNoclKtXKEgbx3_aHSUCwBi6hFa

 

 

· 对本活动的心得体会:

本次活动,使用的是DFRobot的FireBeetle ESP32-E开发板以及对应的扩展板,真的是非常的方便,扩展板上提供了数字接口、模拟接口、I2C接口,并一并提供了VCC和GND,使得传感器连接的时候,可以很方便的使用3线或者4线连接。同时,使用了DFRobot的传感器,更加方便在DFRobot的扩展板上使用了。

DFRobot也对开发板和传感器,都提供了详细的说明文档,使得基于Arduino的开发,能够快速的进行。

开发版基于ESP32,不仅提供了众多的接口,而且还能够很方便的进行联网,从而使得采集到的数据,可以很方便的发布到MQTT,再使用手机APp进行查看,即使没有使用屏幕,数据的呈现也是非常的方便。

总体来说,这一次的开发体验,非常的好,感谢硬禾提供这次活动的机会,也感谢得捷和DFRobot提供硬件。

附件下载
水质检测仪.zip
水质检测仪Arduino代码
团队介绍
一个狂热的开源爱好者和传播者,同时也是一名极客爱好者,长期关注嵌入式发展和少儿创客教育,既擅长互联网系统架构设计与研发,又拥有丰富的嵌入式研发经验。为人精力充沛,古道热肠,圈内人称乔大妈、乔帮主。
团队成员
HonestQiao
狂热的开源爱好者和传播者
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号