项目总结报告:
· 项目描述:
本项目使用DFRobot提供的FireBeetle ESP32-E开发板作为主控板,通过模拟接口,从浊度传感器和溶解性固体含量传感器读取模拟量数据,然后将读取到的数据发送到MQTT服务,在手机上,通过MQTT DashBoard应用,接收对应的数据,并进行呈现。
所使用的FireBeetle ESP32-E开发板如下:
同时,使用了针对该开发板的专属扩展板,具体如下:
在该扩展板上,提供了数字引脚接口、模拟引脚接口、I2C接口,并且接口都提供了对应的VCC和GND,方便直插对应的传感器。
在本项目中,测量水体浊度,使用的是DFRobot提供的Turbidity sensor浊度传感器模块,具体如下:
在该模块的介绍信息中,有详细的浊度测量的原理说明:
浊度传感器是利用光学原理,通过液体溶液中的透光率和散射率来综合判断浊度情况。传感器内部是一个红外线对管,当光线穿过一定量的水时,光线的透过量取决于该水的污浊程度,水越污浊,透过的光就越少。光接收端把透过的光强度转换为对应的电流大小,透过的光多,电流大,反之透过的光少,电流小,再通过电阻将流过的电流转换为电压信号。
其使用方式如下:
本传感器模块通过数模切换开关,可以选择输出的是模拟量或者数字量。如果选择输出是模拟量,利用A/D转换器进行采样处理,单片机就可以获知当前水的污浊度。如果选择输出是数字量,通过模块上的电位器调节触发阈值,当浊度达到设置好的阈值后,Dout指示灯会被点亮,传感器模块输出由高电平变成低电平,单片机通过监测该电平的变化,就可以知道水的浊度超标,从而预警或者联动其他设备。
在本项目中,需要读取浊度数值,并进行呈现,所以使用的是模拟量模式。
将其连接到FireBeetle ESP32-E扩展板上时,使用的是A0接口。
在本项目中,测量水体溶解性固体,使用的是DFRobot提供的模拟TDS传感器,具体如下:
在该模块的介绍信息中,有详细的浊度测量的原理说明:
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温湿度模块,用于现场环境的温湿度测量,具体如下:
这款SHT3X温湿度传感器,使用的是I2C接口,将其连接到FireBeetle ESP32-E扩展板上时,直接插到I2C接口上即可。
根据规划,最终连线如下:
实物连线如下:
实际测量时,将两个传感器的测量部分,放入水中即可进行测量:
· 各功能对应的主要代码片段及说明:
根据前面的规划,具体的代码,使用Arduino IDE进行编写。因为Arduino IDE对ESP32开发板提供了较好的支持,对于上面所使用的传感器,都提供了操作库。
具体的代码如下:【可使用的代码见附件】
在该项目代码中,使用了第三方库为EspMQTTClient和Adafruit_SHT31,需要提前进行安装:
代码中,做了详细的说明,所以这里不再对代码意义进行解析,仅说明主要逻辑。
代码的主要逻辑为:
- 定义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的数据:
参考上面温度数据设置,一次设置好各topic的对应设置即可。
· 功能展示及说明:
实际使用过程中,具体步骤如下:
1. 准备两杯测量用的水:
其中一杯为清水,标为1号杯;
另一杯为浊水,标为2号杯。
2. 将两个传感器,放置到1号杯中,也就是清水杯中,进行测量:
3. 到手机应用上,查看对应的数据,具体如下:
4. 然后将两个传感器,放置到2号杯,也就是浊水杯中,进行测量:
5. 再到手机APP查看测量结果:
6. 测量结果分析:
两次测量结果数据对比如下:
· 对本活动的心得体会:
本次活动,使用的是DFRobot的FireBeetle ESP32-E开发板以及对应的扩展板,真的是非常的方便,扩展板上提供了数字接口、模拟接口、I2C接口,并一并提供了VCC和GND,使得传感器连接的时候,可以很方便的使用3线或者4线连接。同时,使用了DFRobot的传感器,更加方便在DFRobot的扩展板上使用了。
DFRobot也对开发板和传感器,都提供了详细的说明文档,使得基于Arduino的开发,能够快速的进行。
开发版基于ESP32,不仅提供了众多的接口,而且还能够很方便的进行联网,从而使得采集到的数据,可以很方便的发布到MQTT,再使用手机APp进行查看,即使没有使用屏幕,数据的呈现也是非常的方便。
总体来说,这一次的开发体验,非常的好,感谢硬禾提供这次活动的机会,也感谢得捷和DFRobot提供硬件。