智能井盖系统设计(源码+万字报告+讲解)(支持资料参考_相关定制)
通过GetADCResult_2(1)函数获取二号ADC0832的通道1的压力值,255为ADC数值的饱和值,因为选用的压力传感器所受压力越大,电阻越小,输出的数值越小,为便于查看结果,将二者作差,使OLED最终显示的数值越大就代表所受压力越大;随着页面的变化,序号也变化,选择不同的汉字即“二”、“三”、“四”;本研究的主要内容是设计一种智能井盖系统,以实现检测车辆,计算车流量,测量地下管道水位,
目 录
1 引言 1
1.1 智能井盖系统的研究背景和意义 1
1.2 智能井盖系统的研究现状 2
2 智能井盖系统设计的前期准备 4
2.1 系统设计的主要内容 4
2.2 系统设计的特点与重难点 4
3 智能井盖的系统设计 5
3.1 系统框架设计 5
3.2 系统硬件设计 6
3.2.1 单片机选型 6
3.2.2 传感器选择 6
3.2.3 数模转换模块 7
3.2.4 晶振电路与复位电路 8
3.2.5 结果展示模块 8
3.3 系统软件设计 8
3.3.1 定义参数程序 8
3.3.2 红外传感器模块程序 9
3.3.3 按键服务程序 10
3.3.4 水位传感器模块程序 11
3.3.5 OLED显示服务程序 12
3.3.6 报警检测服务程序 13
3.3.7 主程序 15
4 智能井盖系统设计的系统实现 15
4.1 硬件搭建和连接 15
4.2 系统功能实现 16
4.2.1 井盖移位检测模块 16
4.2.2 水位检测模块 17
4.2.3 红外传感器车辆计数模块 18
5 总结 19
参考文献 19
致谢 20
附录 20
智能井盖系统设计
作者:佟旭 指导教师:孙丽
(海南师范大学物理与电子工程学院,海口,571158)
摘 要:针对现有城市井盖数量虽多却无法安排管理部门专门实施管理而有极大概率造成安全问题的现象,结合当今对单一事物具有多功能的要求,设计了一种以单片机为控制核心的智能井盖系统。本系统应用低功耗、高性能、易编程、高可靠性的89C52单片机,通过采集水位传感器的数据以检测地下管道水位,采集井盖给压力传感器的压力以检测井盖是否被移位,同时通过运用红外传感器来感知车辆经过以实现检测车流量,并结合OLED显示屏、指示灯与蜂鸣器对相关结果进行展示。测试结果表明,该系统工作稳定且数据可靠,使用者以此能直观地掌握井盖的相关信息,在一定程度上能够预防安全事故的发生,实现了对城市井盖的智能化功能需求。
关键词: 单片机;智能井盖;传感器;安全性
Design of Intelligent manhole cover system
Author: Tong Xu Tutor: Sun Li
(College of Physics and Electronic Engineering, Hainan Normal University, Haikou, 571158)
Abstract:Although there are a large number of urban manhole covers, the management department has not been able to implement proper management, which poses a significant safety risk. In response to the demand for multifunctionality, an intelligent manhole cover system has been designed with a microcontroller as its core. This system utilizes a low-power, high-performance, and easy-to-program 89C52 microcontroller to detect underground pipe water levels and manhole cover displacement by water level sensors and pressure sensors, irrespectively. At the same time, the traffic flow can also be collected using infrared sensors. The results are displayed on an OLED screen and indicated with a buzzer. The test results demonstrate that the system is stable and reliable. The user can easily get the relevant information about the manhole cover, which can help to prevent safety accidents to some extent and meet the demand for intelligent functionality of urban manhole covers.
Keywords: Microcontroller; Smart manhole covers; Sensors; Security
1 引言
1.1 智能井盖系统的研究背景和意义
智能井盖系统主要源自于城市基础设施管理和安全监测的需求,是针对城市管理和安全实时监控的一种智能化解决方案。许多城市的排水管道经常出现堵塞现象,致使道路频繁积水,给人们的生活带来不便,[1]行人跌落缺失井盖的下水道的事故也时有发生。社会节奏加快以及生产力的提高也使得公路上车流量不断增多,堵塞的交通状况十分影响人们的出行。随着城市化进程的加快,市政公用设施建设发展的越来越迅速,井盖的稳定性和安全性对城市的正常运行和居民的生活质量有着重要意义。虽然面对新要求,各相关管理部门都为此投入了人力、财力与精力,但由于井盖分布范围广、数量大,导致监管难度大,[2]盗窃井盖的行为以及其损毁仍无法及时得知,城市基础设施的安全管理成为亟需解决的问题。
传统的井盖存在容易被盗窃、损坏或未及时维护等情况,给城市管理和市民生活带来诸多隐患。其所能满足的需求也单一,只具有基础的物理功能。智能井盖能够通过芯片及相关传感器等技术对井盖进行实时监测,弥补了传统井盖的不足,随着技术的革新与发展,地下管道水位、温度等信息也可以通过智能井盖进行采集。为解决我国现代化城市建设现存的诸多问题,解决我们面临的危及市民人身安全、妨碍社会高质量治理的井盖问题,实现智慧化管理,井盖智能化势在必行。
智能井盖系统的设计具有以下意义:
(1)提高城市基础设施安全性:系统实时监测井盖的状态,及时发现异常情况,有助于减少事故发生。
(2)提高城市管理效率:利用系统能实现对井盖情况的实时监控和管理,对地下管道水位的高低和井盖所处道路的车流量等数据进行掌握,及时采取措施,提升城市管理的响应速度。
(3)优化城市服务质量:智能井盖系统可以提供城市基础设施的智能化管理服务,为居民提供更安全、便捷的城市生活环境,提升城市服务质量和居民满意度。
在这些背景下,智能井盖系统的研究和应用具有重要的现实意义,有助于推动城市管理智能化、提升城市安全水平和居民生活质量。
1.2 智能井盖系统的研究现状
在国内,随着智慧城市[3]建设的推进,智能井盖作为智慧城市基础设施的一部分,得到了越来越多的关注和重视,政府也出台了相关政策和规划,以推动智能井盖的普及和应用。
在系统设计方面,智能井盖采用了大数据、5G、GPS、云计算等技术,还建立了井盖远程监控系统,包括井盖监控终端、智能井盖监控平台等,[4]方便用户随时了解井盖的运行状态。2013年,刘洋提出给井盖安装休眠射频卡,实现对无主井盖的主动智能化监督管理。[5]2016年,赵士鹏针对“城市陷阱”问题提出ZigBee技术与GPRS技术相结合的智能井盖远程监控系统,该系统使井盖管理变成主动管理,由人力巡查变为电脑监控,提高了城市井盖管理效率。[6]2017年,许鹏、魏国华等利用无线通讯技术、物联网等技术设计云智能井盖监控系统,将井盖位置、井盖本体状态等纳入监控管理系统中,通过电子地图展示井盖的实时状态和报警内容,用来研究高压电缆防外破系统。[7]2018年,南京邮电大学的田佳基于物联网技术,从传感器采集数据,使用单片机控制WIFI模块来进行智能井盖信息的传输,再用计算机处理数据对城市井盖进行智能监控和管理,探索了一种新的数据互联方式。[8]2020年,刘雪亭提出基于LoRa和多轴传感器的智能井盖系统解决方案,该系统使用多轴传感器实时检测井盖的状态,利用LoRa扩频技术实现状态信息的传输,井盖的状态信息通过LoRa网关上传到云平台服务器存储,上层应用平台通过以太网实现实时监控、及时报警等功能。[9]2021年,李澥、方子昂等设计了一款以低功耗为主旨,集数据采集、传输和处理于一体的智能井盖管理系统,该系统以超低功耗微控制器为核心,用ADXL345精准采集井盖姿态数据,使用NB-IoT技术将数据传到管理平台,并通过管理软件实现对井盖的实时监测和预警处理,提高了管理人员的工作效率;[10]张宏伟和孙影基于单片机进行智能井盖监控系统的设计,通过气体传感器、姿态传感器等采集相关数据,将采集到的数据保存至单片机,如果数值异常,实现报警功能。[11]2022年,孙钢灿、张宁宁和赵传勇基于SSM框架和B/S架构,接入百度地图API,采用数据库、云服务器等技术设计了功能井智能锁管理Web端系统,根据内置ID和3D地图全方位监控井盖状态,并在Web端动态显示,结合NB-IoT对井盖异常情况实时报警。[12]一些研究者使用光纤传感技术实现对井盖压力的监测;还有一些通过声波传感技术和图像识别技术实现对井盖状态的实时监测。
在国际上,智能井盖系统的设计和应用也在不断发展。许多发达国家都在积极推广智能井盖系统,以提高城市基础设施的智能化水平。一些国际知名的科技公司也在开展智能井盖系统的研发和推广工作,不断推动技术的进步和应用的发展。同时,也有许多研究者在此领域上进行科研创造,例如Amit Mankotia和Anil Kumar Shukla[13]设计基于物联网的检测和监控系统利用多种传感器来获取井盖的位置、状态信息,检测水位,并通过WiFi设备进行相关信息的实时更新,超过设定的阈值会通过灯光和声音发出警报。
总的来说,智能井盖系统设计的国内外发展现状已经解决了一定程度上的问题,为井盖问题提供了多样化的方案,总体呈现出积极的趋势,未来随着技术的不断进步和应用的不断深入。如果根据具体需求进行更加专业、更加高针对性的设计并进行普及化,智能井盖将会得到更好的发展,能够在城市建设中发挥更加重要的作用。
2 智能井盖系统设计的前期准备
2.1 系统设计的主要内容
本研究的主要内容是设计一种智能井盖系统,以实现检测车辆,计算车流量,测量地下管道水位,检测井盖是否被移位等功能,实时监测和预警井盖的状态,拓展井盖的实用功能,提高井盖的安全性和可持续性。
具体内容包括:①硬件设计,选择适合的传感器和控制器,对经过车辆进行检测,对地下管道水位进行测量,实现井盖状态的实时感知和数据采集;②软件开发,编写数据处理和分析的程序,实现对经过车辆的计数,反应地下管道水位的深度,对井盖状态的识别和预警;③数据分析,通过对大量数据的处理和分析,对设计进行改进与完善,得到较为稳定的设计效果;④改善和优化现有算法,提高系统的准确性和稳定性。
2.2 系统设计的特点与重难点
设计完成后,智能井盖系统可以实现对经过车辆进行检测并计算车流量,对地下管道水位进行测量,对井盖状态即是否被移位的实时监测和预警,提前发现漏洞和破损,避免安全隐患的发生。
系统设计的主要特点包括:①有多种传感技术的结合,实现对井盖状态的多方位感知和智能井盖的多种功能;②对传感器获取数据的处理和相关算法进行优化,努力提高系统的准确性、稳定性和反应速度;③主要使用单片机进行控制,尽量用较为简单的硬件和简洁的算法实现功能需求;④计划运用显示屏对车流量、水位和井盖状态进行显示,运用指示灯、蜂鸣器对井盖状态进行预警,通过按键电路可以实现对触发警报的阈值进行更改。
设计中的难点包括:多种传感器的实际应用;传感器所采集的模拟量向数字量的转换;显示屏对所采集数据的显示;电路板的绘制与焊接。
3 智能井盖的系统设计
3.1 系统框架设计
首先需要对所需实现的功能进行分析,确定所需硬件包括单片机、红外传感器、水位传感器、压力传感器、显示屏、指示灯、蜂鸣器和数模转换器等。基本思路架构如图1所示。
图1 框架设计图
红外传感器用作对经过车辆进行检测与计数,通过传感器发出的红外光线被车辆遮挡又反射到接收端被接收进行车辆的检测,进而通过算法的编写进行车流的计数。水位传感器用作对地下管道水位的测量。压力传感器用作对井盖位置状态进行监测,通过压力传感器检测数值的变化来判断井盖是否被移位甚至移开。
ADC0832将传感器所收集的信号进行模数转换,再发送给单片机的输入端口,使其对数据进行进一步的分析与处理,之后通过输出端口高低电平的输出控制OLED显示屏、LED指示灯和蜂鸣器等外设来展示实验结果。
在智能井盖工作过程中,车流量、水位和井盖状态的相关参数都将在显示屏上进行显示,以便于查看。系统将通过水位传感器收集到的数据高出所设定的上限值时,压力传感器收集数据数值低于下限值时,蜂鸣器发声、指示灯亮灯的方式,进行对井盖状态的预警。
在实验过程中能够通过按键电路对触发警报的上、下限值进行调节与更改,使系统能够应用于多种情况与环境,以增强系统的可行性、实用性与功能性。
3.2 系统硬件设计
3.2.1 单片机选型
本智能井盖系统所采用的89C52单片机具有存储器容量大、外设丰富、功耗低、扩展性强大等优点,而且与STM32等更加复杂的芯片相比,其应用的编程语言更加简单易懂,已经可以满足本系统同时对车辆计数、对水位测量以及对移位监测的需求。
3.2.2 传感器选择
(1)红外传感器:本系统采用的红外避障传感器模块(如图2所示)能够适应在不同的光线环境下工作,此系统对它的应用类似于流水线计数的功能。通过电位器旋钮可调节检测距离,有效范围为2~30 cm,满足实验需求。
图2 红外避障传感器模块
(2)水位测量传感器:采用的YW01电阻式液位传感器(如图3所示)是电阻式液位识别检测传感器,通过测量液体与其暴露的平行导线之间的电阻来确定液位的高低。检测量程为0到90 mm,能满足实验需求。如果该系统投入实际使用,会通过调整传感器位置、增加传感器数量或更换传感器为雷达水位计、压力式水位计等器件等方法进行改进。
图3 水位测量传感器
(3)压力传感器:采用如图4所示FSR402电阻式薄膜压力传感器和线性电压转换模块(如图5所示)。施加在薄膜区域的压力转换成电阻值的变化,压力越大,电阻值越小(如图6所示),因此在软件编写的过程中需要进行示数与阻值的转换。其允许用在压力0 g-10 kg的场合,可以满足实验检验过程需求,当系统实际应用时可以更换成能承受更大压力的传感器。
图4 RP-S5-ST型电阻式薄膜压力传感器
图5 电压转换模块
图6 压力与电阻之间的关系
3.2.3 数模转换模块
本系统的模数转换依靠ADC0832。ADC0832有转换速度较高、低功耗等优点,应用范围广泛。ADC0832可以在单端输入方式和差分方式下工作,分别对两路模拟信号实现模—数转换。
3.2.4 晶振电路与复位电路
图7所示的晶振电路为单片机提供时钟信号。
图7 晶振电路原理图
复位电路包括按键、电容、电阻等器件,按下按键可以给系统提供硬件复位,能够较为快速地实现单片机的初始化。
图8 复位电路原理图
3.2.5 结果展示模块
本系统的结果展示模块包括三部分,分别为OLED显示模块,蜂鸣器和指示灯,此处介绍0.96寸OLED显示屏。
OLED通过字库的编写与设定,能够很清楚、便捷地显示数字、字符与汉字,可以比LCD1602屏幕更好地展示出实验的结果。
3.3 系统软件设计
3.3.1 定义参数程序
在开始程序编写之前,定义单片机端口以及参数,程序如图9所示。
图9 定义参数程序代码
对标注序号的代码进行说明:
序号1:定义单片机控制有源蜂鸣器的引脚;
序号2:定义单片机负责车辆计数的引脚;
序号3:定义单片机控制LED灯亮灭的引脚;
序号4:定义储存最新的按键值的参数;
序号5:定义代表上一次读取的按键值和检测到下降沿的参数;
序号6:定义枚举型变量PAGE,将OLED屏的显示像书一样分页;
序号7:P_HOME页为主页实时显示页面;
序号8:P_LEVEL页为水位阈值设置页面;
序号9—12:分别为1号至4号压力传感器阈值设置页面;
序号13:设定初始启动系统默认进入主页实时显示页面;
序号14:将车次的计数归零;
序号15:定义代表最终显示的水位等级值和四个压力传感器实时值的参数;
序号16:定义暂存水位传感器识别的值的参数;
序号17:定义代表水位传感器阈值的参数初始值为70%,四个压力传感器阈值参数的初始值分别为5、6、7、8。
3.3.2 红外传感器模块程序
此系统对车流量进行计数是利用红外传感器接收到被车辆阻挡反射回来的红外光会输出的低电平。检测此处的低电平可以通过读按键和触发外部中断的方式,因为车辆经过速度较快,读按键的方式很可能导致数据丢失,所以决定选择利用外部中断的方式,具体代码如图10所示。
图10 中断函数代码
3.3.3 按键服务程序
阈值设置页面的进入以及阈值的增加与减少都需要按键服务函数,具体代码如图11所示。
图11 按键检测函数代码
对标注序号的代码进行说明:
序号18:读取按键扫描函数所返回的按键值;
序号19:通过按位异或判断现在的按键值与上次的按键值是否相同,按哪个按键,代表下降沿的参数会被赋予对应的值,检测电平,一直按同一个按键不会多次触发;
序号20:将识别的本次按键值暂存,更新key_old的值;
序号21:判断key_down的值;
序号22:按下“设置”按钮,key_value=1;
序号23:page=(0+1)%6=1,进入水位阈值设置页面;
序号24:清屏;
序号25:按下“增加”按钮,key_value=2;
序号26:如果此时在水位阈值设置页面;
序号27:对已经设定的水位阈值进行判断;
序号28:当水位阈值小于90时进行水位等级的增加;
序号29:如果不在水位阈值设置页面和实时显示页面,就是在压力阈值设置页面,由一号到四号分别对应page值由2到5;
序号30:在参数设置时已设置P_PRE_1=2,随着page的变化,max_pre[]分别取对应序号压力传感器的阈值;
序号31:当压力传感器阈值小于ADC饱和值,阈值随着按键的按动增加;
序号32:按下“减少”按钮同理,但是需判断现有阈值是否大于最低阈值,此处不做过多介绍。
3.3.4 水位传感器模块程序
因为ADC0832的模数转换开源代码很多,此处重点介绍为便于数据的显示与观察,将水位传感器检测出的模拟量转为ADC值后,通过测试与实验编写代码将其转换为等级值的过程,代码如图12所示。
图12 水位ADC值得转化函数代码
对标注序号的代码进行说明:
序号33:此处以当水位ADC值小于10时为例;
序号34:返回的等级值为0;
序号35:当水位ADC值大于10且小于13时,返回的等级值为10。与ADC值相比较的数值根据实际情况进行选择,因篇幅受限,重复操作的代码不在此处写出;
序号36:因为OLED一行所能显示内容有限,水位值设置为两位便于显示,所以此处最大值设置为99。
3.3.5 OLED显示服务程序
代码设计在OLED显示过程中进行对传感器数值的读取、模数的ADC转换,所以如图13和图14所示OLED显示服务程序部分内也包含对水位及压力的数值的获取。
图13 OLED主页实时显示函数
对标注序号的代码进行说明:
序号37:level_temp存储一号ADC0832转换的水位ADC值;
序号38:设置较大的数值128判断水位ADC值数据是否为正常值,避免误判;
序号39:水位数据为正常值时将水位的ADC值转换为等级值;
序号40:因为篇幅有限,此处以一号压力传感器举例。通过GetADCResult_2(1)函数获取二号ADC0832的通道1的压力值,255为ADC数值的饱和值,因为选用的压力传感器所受压力越大,电阻越小,输出的数值越小,为便于查看结果,将二者作差,使OLED最终显示的数值越大就代表所受压力越大;
序号41:判断页面的选择;
序号42:在主页实时显示页面时,此处以显示水位的等级值为例,车辆和一到四号压力传感器的压力值的显示同理;
序号43:显示汉字“水”;
序号44:显示汉字“位”;
序号45:显示字符“:”;
序号46:显示level的值;
序号47:显示字符“%”;
序号48:函数OLED_ShowChinese()中,前两个参数代表起点的横、纵坐标,第三个参数为在汉字库中所选汉字对应的序号,最后一个参数是对字符大小的选择,此处汉字字符大小选择为16*16。显示字符号串的函数OLED_ShowString()大致同理,只是参数不是字符所对应的序号而是要显示的字符本身。显示数字的函数OLED_ShowNum()中第三个参数为要显示的数字,第四个参数为数字位数,其余同理。
图14 压力传感器阈值设置页面显示函数代码
对标注序号的代码进行说明:
序号49:一号压力传感器阈值的设置页面。此处以压力阈值设置页面为例,水位阈值设置页面同理;
序号50—52:分别对应二至四号压力传感器阈值设置页面;
序号53:当page=2时,OLED显示一号压力传感器阈值的设置页面,此时对应的page+5的值为7,对应汉字库中“一”的序号。随着页面的变化,序号也变化,选择不同的汉字即“二”、“三”、“四”;
序号54:显示汉字“号”;
序号55:显示汉字“阈”;
序号56:显示汉字“值”;
序号57:显示字符“:”;
序号58:显示对应的压力传感器阈值的具体数值。
3.3.6 报警检测服务程序
报警检测服务程序如图15所示。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)