1. 引言
地下水是地球表面水循环的重要组成部分,它在其中起着重要的调节和平衡作用,是人类生活、工农业生产和环境保护的重要资源。海水入侵 [1] [2] 是指由于人类活动或气候变化等原因,使得海水逐渐向内陆渗透,影响到地下水质量和可用性的现象。海水入侵对地下水造成的影响很大,对于地下水的质量:当地下水含盐量超过一定阈值时,会严重影响地下水的可用性,使得地下水失去很多使用价值。另外,高盐度的地下水还可能对土地造成腐蚀,导致土壤退化和生态环境恶化。除了对于环境的影响,海水入侵对于工农业生产也是一种难以防治的自然灾害。对于农业,海水入侵会直接导致土地盐渍化,从而使环境资源受影响、水资源利用效率降低增加水资源管理的难度等。对于工业发展来说,地下水入侵容易造成工业水资源不足、工业成本投入加大,地下水盐化容易造成机井报废,产生不必要的工业损失。因此,需加大对地下水资源的管理,加强对海水入侵的监测和综合治理 [3] 。
基于上述分析,本文基于NB-IoT完成海水入侵检测与预警控制系统设计,以期实现对海水入侵进行实时检测并提供远程预警。系统在硬件设计方面主要包括电源模块、单片机最小系统、TDS (电导率)传感器模块、水温传感器模块、液晶模块等,为数据测量提供硬件支持。同时运用NB-IoT模块,为数据信号传输提供支持。在软件设计上,采用Keil 5完成程序设计、各模块算法设计,最终系统将测得数据上传云平台实现检测数据的实时显示及历史数据查看等功能。在完成系统设计的基础上,采用溶质主要碳酸氢钠的苏打水溶液,以及模拟海水检测融入一定量氯化钠的清水溶液。测试结果显示:当系统TDS检测数据超过程序设定值时,预警功能触发,蜂鸣器产生蜂鸣开始报警,且系统具备将测得数据上传云平台实现检测数据的实时显示及历史数据查看等功能,在实际应用中具有一定的应用价值。
2. 系统方案设计
本文基于NB-IoT的海水入侵检测与预警控制系统,以监测海水各项参数完成海水入侵实时检测与数据远程传输为最终目标。系统主要包括硬件设计及软件编程两个方面,其中硬件主要由电源模块、单片机最小系统、TDS (电导率)传感器模块、水温传感器模块、液晶模块、NB-IoT模块等组成。系统总体流程为:电源模块为系统供电,单片机最小系统采样TDS (电导率)传感器模块及水温传感器模块检测所得数据,并通过液晶模块实现检测数据的实时显示;当检测数据超过系统设定阈值时,系统通过蜂鸣器进行报警;NB-IoT模块用于实现将检测数据的上传至云平台,从而实现数据的实时在线及历史数据查询等功能,如图1所示。

Figure 1. Overview of system workflow
图1. 系统工作流程概述图
3. 系统硬件设计与实现
该系统硬件部分主要由电源模块、单片机最小系统、TDS (电导率)传感器模块、水温传感器模块、NB-IoT模块、液晶模块等组成。
3.1. 电源模块
电源模块主要由稳压电路实现DC 5 V电源的稳定输出 [4] 。稳压电路可以用来稳定电源输出电压,确保电路中所需的电压不会受到电源波动的影响而发生变化。电源模块电气原理图如图2所示。

Figure 2. Electrical schematic diagram of power module
图2. 电源模块电气原理图
3.2. 单片机最小系统
单片机最小系统选用STM32F103单片机作为主控单元 [5] 。STM32单片机是一种基于ARM Cortex-M架构的32位微控制器,具有高性能、低功耗、高集成度、强大的外设和灵活的软件支持等特点,电气原理图如图3所示。

Figure 3. Minimum system diagram of single chip microcomputer
图3. 单片机最小系统图
3.3. TDS (电导率)/水温传感器模块
TDS (电导率)/水温传感器模块,采用TDS检测模块,采用3.3~5.5 V左右的供电电压、0~2.3 V左右的模拟信号输出 [6] 。该模块可与TDS探针进行连接,同时也有DS18B20温度传感器接口,方便进行软件温度补偿设计。其有以下工作特点:可进行宽电压工作、兼容5 V与3.3 V两种控制系统、防水探头可长期浸入水中。TDS的单位是ppm,为百万分比浓度。在本系统中,使电源与VDD引脚相连接,为模块提供电压;VSS接地;PA0在STM32单片机中属于GPIO引脚,与TDS模块引脚A0相连,对模块起唤醒作用,其电气原理图如图4所示。
水温传感器模块的型号为DS18B20 [7] 。DS18B20是一种高精度单总线的数字温度测量芯片,它的抗干扰能力强。它的测温范围为−55摄氏度到125摄氏度,误差范围约为0.4摄氏度。DQ引脚作为温度传感器的输入输出端,在本系统中,与单片机的PB10引脚相连达到测温数据交互的作用,其原理图如图5所示。

Figure 5. Schematic diagram of water temperature sensor module
图5. 水温传感器模块原理图
3.4. NB-IoT模块
NB-IoT为窄带物联网,在蜂窝网络的基础上搭建起来,是一种新兴技术,能够提供非常广泛围的网络供应以及大数量的单位链接 [8] [9] 。它的低功耗、低成本、高可靠性使得它在多个领域得到运用。
在本系统中,NB-IoT模块采用的模块型号为中国移动M5311型芯片,RXD与TXD两个引脚为AT指令通信串口,在本次设计中,单片机的PA9与PA10与模块的这两个通信串口相连,以便数据传入与通信,其电气原理图如图6所示。

Figure 6. Electrical schematic diagram of NB-IoT module
图6. NB-IoT模块电气原理图
4. 软件编程
本系统所涉及软件编程部分主要工作为:通过先设计基于STM32的温度采集、温度生成程序以及TDS值采集、生成程序,再通过OLED显示的程序,再设计NB-IoT的AT指令,完成云平台设计以及数据传输、云平台界面设计。
在软件设计中,针对TDS (电导率)数据采集程序主要为定义变量、定义温度与各种TDS校准系数、进行AD转换,部分代码如下。
compensationCoefficient=1.0+0.02*((TEMP_Value/10)-25.0); 此为补偿系数公式。
compensationVolatge=ADC_ConvertedValueLocal[1]/compensationCoefficient; 此为补偿电压公式。
if((ADC_ConvertedValueLocal[2]>=0)&&(ADC_ConvertedValueLocal[1]<0.1)){compensationVolatge=0;}
之后,再通过AD采样数据计算TDS_value值。
本文所涉及温度采集函数如下:
void TEMP_Value_Conversion()//温度采集函数
{
TEMP_Value=DS18B20_Get_Temp();
TEMP_Buff[0]=(int)(TEMP_Value)%1000/100+'0';
TEMP_Buff[1]=(int)(TEMP_Value)%100/10+'0';
TEMP_Buff[2]='.';
TEMP_Buff[3]=(int)(TEMP_Value)%10+'0';
}
部分液晶屏的字符显示函数如下。
OLED_ShowStr(0,2Temp: ,2);这是温度显示。
OLED_ShowStr(0,4TDS: ,2);这是 TDS显示。
通过OLED_Shower函数在OLED液晶屏上显示检测数值。
报警功能通过程序体现,在本系统中,采用报警上限值为300作为参考,当采集值超过300时,触发报警设置,蜂鸣器警示,代码如下。
if(TDS_value>300)
{
BEEP=!BEEP; //蜂鸣器启动
delay_10us(100);
}
else
BEEP=0; //蜂鸣器关闭
在本系统中使用“AT+IPSEND”指令,此命令用于将数据发送到网络。响应“OK”仅表示ATCMD格式正确,数据已放入套接字,等待发送。
通过登录云平台 [10] [11] ,进入开发者平台,选择多协议接入里的TCP透传,再选择添加产品,完成产品创建,云平台示意图如图7所示。

Figure 7. Schematic diagram of cloud platform interface
图7. 云平台界面示意图
5. 实物测试及分析
在完成上述系统硬件设计及软件编程后,对系统进行实物测试。本次测试采用两组对照,分别是溶质主要碳酸氢钠的苏打水溶液,以及模拟海水检测融入一定量氯化钠的清水溶液。将TDS探头以及温度传感器探头分别放入两种溶液中,具体显示如图8所示。
由于苏打水中含有其他溶剂以及检测拍摄时间差异等其他因素导致OLED显示与云平台显示存在细微差异。在检测盐水时,由于TDS值超过程序中设定的300,预警功能触发,蜂鸣器产生蜂鸣开始报警。除了数据显示与预警功能,云平台上还可以显示历史检测数据,可通过随时刷新随时监控,并且以excel的形式导出表格。历史数据显示如图9所示。

Figure 9. Historical data display of detection results
图9. 检测结果历史数据显示
上述测试结果显示:本系统TDS检测数据超过程序设定值时,预警功能触发,蜂鸣器产生蜂鸣开始报警,且系统具备将测得数据上传云平台实现检测数据的实时显示及历史数据查看等功能,在实际应用中具有一定的应用价值。
6. 结语
本文基于NB-IoT完成海水入侵检测与预警控制系统设计,以期实现对海水入侵进行实时检测并提供远程预警。系统在硬件设计方面主要包括电源模块、单片机最小系统、TDS (电导率)传感器模块、水温传感器模块、液晶模块等,为数据测量提供硬件支持。同时运用NB-IoT模块,为数据信号传输提供支持。在软件设计上,采用Keil 5完成程序设计、各模块算法设计,最终系统将测得数据上传云平台实现检测数据的实时显示及历史数据查看等功能。在完成系统设计的基础上,采用溶质主要碳酸氢钠的苏打水溶液,以及模拟海水检测融入一定量氯化钠的清水溶液。测试结果显示:在检测盐水时,由于TDS值超过程序中设定的300,预警功能触发,蜂鸣器产生蜂鸣开始报警。除了数据显示与预警功能,云平台上还可以显示历史检测数据,可通过随时刷新随时监控,并且以excel的形式导出表格。综上,本文所述系统当检测数据超过程序设定值时,预警功能触发,蜂鸣器产生蜂鸣开始报警,且系统具备将测得数据上传云平台实现检测数据的实时显示及历史数据查看等功能,在实际应用中具有一定的应用价值。
基金项目
江苏省市场监督管理局科技项目“燃气预警系统远程测试装置及检测方法研究”(项目编号:KJ2022051)。