水质监测系统
组件和用品
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
![]() |
|
应用和在线服务
![]() |
| |||
![]() |
|
关于这个项目
简介
2016 年 9 月,一家水处理厂因污水流入工厂而不得不关闭。供水公司无法确定污染源,这导致供水服务严重中断。
我的大学课程要求学生建立一个系统来解决社区问题。自动水质监测系统将简化查找污染源的工作!
系统概览

4 个传感器连接到 Arduino Genuino 101。它们都需要一些接口电路,因为它们是电流输出传感器。 Arduino Genuino 101 定期收集测量数据,获取 GPS 坐标,并使用 GPRS 数据链路将数据包上传到数据库中。用户可以到网站查看结果如下图。
传感器探头

三个电流输出传感器来自 Global Water,由指导讲师提供。我在这个项目中使用了温度、pH 值和溶解氧水平传感器。不幸的是,溶解氧水平传感器有问题。
另一个传感器是浊度传感器,它输出的电压水平与水中悬浮固体颗粒的数量成正比。
连接传感器和 Arduino
电阻器将电流输出转换为可测量的电压电平。
A7 GPRS和GPS模块

我选择这款 A7 模块是因为它比 SIM900 版本相对便宜,并且它在一个包中结合了 GPRS 和 GPS!
然而,更便宜的价格确实是有代价的。首先,模块自带的GPS天线并不是真正的GPS天线,需要自己购买。其次,它默认只支持115200 bps UART通信,即使你用软件改变它,重启后它也会恢复到默认波特率,而115200 bps的Software Serial非常非常不可靠。为了这个问题,我拉了两天的头发。之后我在Arduino代码中实现了波特率变化功能。
而且,由于这是一个新模块,我需要为此模块创建自己的库。源代码是从各种地方收集的,比如SIM900,和Adafruit GPS 模块。它很乱,但它有效,请不要谴责我。
必须设计一个电路来接通模块。它有两个引脚,RESET 引脚和 PWR_KEY 引脚需要控制。给 PWR_KEY 施加电压至少 2s 以启动模块。要复位,请将 RESET 引脚拉至 GND。否则,应将 RESET 引脚上拉至 5V。我首先重置模块,然后继续给模块加电以确保其正常启动。
电源
由于电流输出传感器,电源在这里值得特别提及(我认为?)。它们需要至少 10V 的电压才能运行,高于我们心爱的 5V。由于我想展示该系统远程工作的能力,我选择了锂离子电池。

2 个串联的锂离子电池将提供 7.4-8.4V,一个降压转换器将其降至 5V,用于我们的 Arduino 和 A7 模块,另一个升压转换器为这些水传感器提供 11V 电源轨。通过这种设置,系统不会运行很长时间,但这不是这个原型的主要问题。
董事会
该系统建立在原型板上。电路板和 Arduino Genuino 101 非常适合装入外壳。

外壳
讲师还提供了一个旧外壳,上面有以前学生为与水传感器相关的项目钻的孔。精彩的!

注意传感器的连接器。我发现它们连接到传感器上,因此我四处寻找可以与它们配合的连接器。我用代码 GX16 找到了它们。它们用途广泛,肯定会在未来的项目中派上用场!
网页
最后,我花了数周时间从头开始构建的部分。我在服务器、网站方面的知识为零,在整个项目中我学习了 PHP、SQL 查询、JavaScript、CSS 和 HTML。
我在 Microsoft Azure 上托管了该网站,因为它们为学生提供免费服务。它有局限性,但对于此应用程序来说已经足够了。
该数据库由 ClearDB 提供,也与 Azure 合作提供。同样,内存限制,但对于这个项目来说已经足够了。
代码在 repo 中提供,但请记住将您的凭据添加到 username_password.php 文件中。
log.php 将从 Arduino 收到的所有数据转储到数据库中。
然后网页显示一个谷歌地图,在有测量数据的位置显示标记。其他的php文件都是访问数据库、检索数据库中数据的“工具”。
网站的反应很慢,因为我只是把这些都混在一起,所以我想改进一下。非常欢迎提出建议。 :)
代码
水质监测系统
/Website中的网站代码,/Arduino中的Arduino草图和A7模块库https://github.com/JohnHJ01/Water-Quality-Monitoring-System示意图
整个系统的原理图制造工艺