基于STM32的智能水质检测系统设计与实现(实物项目)
本文设计并实现了一种基于STM32F103C8T6单片机的智能水质检测系统。该系统集成了DS18B20温度传感器、TDS电导率传感器、PH传感器和浊度传感器,可实时监测水温、电导率、PH值和浊度四项关键水质参数。系统采用模块化设计,包含主控层、采集层、执行层、显示层和交互层,具备自动/手动模式切换、阈值设置、异常报警、继电器控制等功能,并通过ESP8266-01S WiFi模块实现远程监控。测试结
基于STM32的智能水质检测系统设计与实现
摘要
随着水资源污染问题日益突出,水质安全监测成为环境保护、日常生活及工业生产中的重要环节。传统水质检测方式存在操作复杂、检测效率低、无法实时监测、需专业人员操作等弊端,难以满足实时、便捷、精准的水质监测需求。本文设计并实现了一款基于STM32F103C8T6单片机的智能水质检测系统,集成水温、电导率、PH值、浊度四项核心水质参数检测功能,具备实时显示、阈值设置、模式切换、异常报警、继电器控制及云端APP远程监控等功能,旨在提供一种低成本、高可靠性、操作便捷的智能水质监测解决方案。
系统以STM32F103C8T6为核心主控芯片,采用DS18B20传感器检测水温、TDS电导率传感器检测水体电导率、PH传感器检测酸碱度、浊度传感器检测水体浑浊度,通过OLED显示屏实时展示各项水质参数;支持自动与手动模式切换,按键可完成阈值设置与模式切换;自动模式下,当任意一项水质参数超出预设阈值时,触发有源蜂鸣器报警并自动开启继电器(可外接净水设备等);手动模式下,可通过按键手动控制继电器开关;同时,通过ESP8266-01S WIFI模块将水质数据上传至机智云APP,实现远程实时查看与监控。测试结果表明,该系统检测精度高、运行稳定可靠,各项功能均达到设计要求,操作便捷、成本低廉,可广泛应用于家庭饮用水、鱼缸水质、小型水族箱、农田灌溉等场景的水质实时监测,具有较高的实际应用价值与推广前景。
关键词:STM32F103C8T6;水质检测;多传感器融合;WIFI通信;机智云APP;阈值报警


第一章 绪论
1.1 研究背景与意义
水是生命之源,是人类生存、工业生产、农业灌溉的不可或缺的资源。近年来,随着工业废水排放、农业化肥滥用、生活污水乱排等问题的加剧,水资源污染日益严重,水质安全受到严重威胁,直接影响人类健康、生态环境平衡及社会经济可持续发展。据相关数据统计,全球约有1/3的人口面临水资源短缺与水质污染问题,我国部分地区也存在饮用水源污染、地表水体浑浊、酸碱度失衡等问题,水质监测成为保障水资源安全的关键环节。
传统的水质检测方法主要依赖专业检测机构,采用大型检测设备,需采集水样后进行实验室分析,存在检测周期长、操作复杂、检测成本高、无法实时监测、需专业人员操作等弊端,难以满足家庭、小型养殖、农田灌溉等场景的实时水质监测需求。此外,现有小型水质检测设备多存在功能单一、检测精度低、无远程监控、报警机制不完善等问题,无法实现水质参数的全面监测与及时预警。
基于STM32单片机的智能水质检测系统,结合多传感器融合技术、WIFI通信技术与云端APP技术,能够实现水温、电导率、PH值、浊度四项核心水质参数的实时采集、显示、报警与远程监控,具有成本低廉、操作便捷、检测精准、运行稳定等特点,可有效解决传统水质检测的不足,为不同场景的水质监测提供便捷、高效的解决方案。因此,设计一款功能完善、性能稳定的智能水质检测系统,对于保障水质安全、推动水资源保护、满足日常水质监测需求具有重要的实际应用价值与研究意义。
1.2 国内外研究现状
国外水质检测技术发展较早,欧美、日本等发达国家已形成完善的水质监测体系,推出了多种高精度、智能化的水质检测设备,涵盖实验室大型检测仪器与现场便携式检测设备。这类设备具备多参数同步检测、高精度、远程数据传输、数据分析与预警等功能,广泛应用于环境监测、饮用水检测、工业废水处理等领域,但存在设备价格昂贵、操作复杂、维护成本高、核心技术封闭等问题,难以普及到家庭、小型养殖等民用场景。
国内对智能水质检测系统的研究多集中于基于单片机的低成本设计,主要面向民用场景与科研学习,核心技术以多传感器融合、嵌入式开发、无线通信为主。目前,多数设计采用STM32系列单片机作为主控芯片,搭配温度、PH值、浊度等传感器,实现基本的水质参数检测与显示功能,但部分设计存在检测参数单一、精度不足、无线通信不稳定、报警机制不完善、无远程APP监控等问题,且在阈值设置的灵活性、模式切换的便捷性等方面仍有提升空间。本文针对现有设计的不足,设计一款集成四项核心水质参数检测、支持WIFI远程监控、具备自动/手动模式切换与完善报警机制的智能水质检测系统,兼顾实用性、性价比与便捷性。
1.3 研究内容与目标
1.3.1 研究内容
本文围绕基于STM32的智能水质检测系统的设计与实现展开研究,结合系统功能需求与元器件特性,具体研究内容如下:
- 系统总体架构设计:明确系统的核心功能与模块划分,确定各模块的接口与交互逻辑,制定系统的工作流程,完成总体方案设计,确保各模块协同稳定工作。
- 硬件电路设计:基于选用的元器件,设计STM32主控模块、水质参数采集模块(DS18B20、TDS、PH、浊度传感器)、OLED显示模块、按键控制模块、蜂鸣器报警模块、继电器控制模块、WIFI通信模块的电路原理图与PCB板。
- 软件程序设计:基于Keil MDK开发环境,编写主控程序、传感器数据采集与处理程序、OLED显示程序、按键控制程序、蜂鸣器报警程序、继电器控制程序、WIFI通信程序及机智云APP数据交互程序。
- 系统测试与优化:搭建测试环境,对系统的各项功能、检测精度、通信稳定性、报警可靠性进行测试,针对存在的问题进行优化调整,确保系统稳定可靠运行,满足设计要求。
1.3.2 研究目标
设计一款功能完善、性能稳定、操作便捷、成本低廉的基于STM32的智能水质检测系统,具体目标如下:
- 实现多参数水质检测:通过DS18B20、TDS、PH、浊度四种传感器,分别实现水温、电导率、酸碱度、浑浊度的实时采集,检测精度满足民用场景需求。
- 实现实时显示功能:通过OLED显示屏,清晰、实时展示当前水温、电导率、PH值、浊度四项参数,界面简洁易读,更新及时。
- 实现模式切换功能:支持自动与手动模式切换,通过按键完成模式切换,切换后系统立即执行对应模式逻辑。
- 实现阈值设置功能:通过按键可设置水温、电导率、PH值、浊度的上下限阈值,适配不同场景的水质要求。
- 实现异常报警功能:自动模式下,当任意一项水质参数超出预设阈值时,触发有源蜂鸣器报警,同时自动开启继电器(可外接净水设备)。
- 实现继电器控制功能:手动模式下,可通过按键手动控制继电器的开启与关闭;自动模式下,由系统根据水质参数自动控制继电器。
- 实现远程监控功能:通过ESP8266-01S WIFI模块将水质数据上传至机智云APP,APP可实时查看各项水质参数,实现远程监控。
- 确保系统稳定性:系统运行稳定,传感器采集数据准确,通信可靠,报警及时,按键操作响应灵敏,无卡顿、误报警等问题。
1.4 论文结构安排
本文共分为6章,具体结构安排如下:
第1章:绪论,阐述研究背景与意义、国内外研究现状、研究内容与目标及论文结构安排,明确本文的研究方向与核心任务。
第2章:系统总体设计,介绍系统的功能需求、总体架构及各模块的功能划分,制定系统的工作流程,完成总体方案设计。
第3章:系统硬件设计,详细介绍各硬件模块的选型依据、电路设计原理及PCB板的设计与制作过程。
第4章:系统软件设计,详细介绍软件开发环境、软件总体流程及各模块程序的设计思路与实现方法。
第5章:系统测试与结果分析,搭建测试环境,对系统的各项功能与性能进行测试,分析测试结果并进行优化调整。
第6章:总结与展望,总结本文的研究成果,分析系统存在的不足,并对未来的改进方向进行展望。
第二章 系统总体设计
2.1 系统功能需求分析
结合智能水质检测的实际场景(家庭饮用水、鱼缸、小型水族箱等)与用户需求,本系统需实现10项核心功能,各项功能的具体要求如下:
- 主控核心功能:以STM32F103C8T6为核心,协调各模块工作,接收传感器数据、处理指令、控制执行机构,确保系统正常运行。
- 水温检测功能:采用DS18B20数字温度传感器,实时采集水体温度,测量范围-55℃~125℃,误差≤±0.5℃,采集频率1次/秒,数据稳定可靠。
- 电导率检测功能:采用TDS电导率传感器,实时检测水体电导率(反映水体中可溶性固体含量),测量范围0~1000ppm,误差≤±5%,采集频率1次/秒。
- PH值检测功能:采用PH传感器,实时检测水体酸碱度,测量范围0~14pH,误差≤±0.1pH,采集频率1次/秒,满足民用水质监测需求。
- 浊度检测功能:采用浊度传感器,实时检测水体浑浊度,测量范围0~100NTU,误差≤±2NTU,能够准确反映水体浑浊程度。
- OLED显示功能:采用OLED屏幕,清晰展示当前水温、电导率、PH值、浊度四项参数,标注对应单位,界面简洁易读,更新频率与采集频率一致(1次/秒),无闪烁、黑屏等问题。
- 按键控制功能:通过独立按键实现模式切换(自动/手动)、阈值设置(水温、电导率、PH值、浊度的上下限),按键操作响应灵敏,具备防抖处理,避免误操作。
- 自动模式功能:自动模式下,系统实时对比采集到的水质参数与预设阈值,若任意一项参数超出阈值范围,立即触发有源蜂鸣器报警,并自动开启继电器(可外接净水设备、换水设备等);参数恢复正常后,报警停止,继电器自动关闭(可选)。
- 手动模式功能:手动模式下,蜂鸣器报警功能关闭,用户可通过按键手动控制继电器的开启与关闭,满足手动操作需求。
- 机智云APP交互功能:通过ESP8266-01S WIFI模块与机智云平台建立连接,将采集到的水质参数实时上传至机智云APP,用户可通过APP远程查看各项参数,实现远程监控。
2.2 系统总体架构设计
本系统以STM32F103C8T6单片机作为主控核心,采用模块化设计思想,将整个系统分为6个功能模块,各模块相互独立又协同工作,确保系统稳定、高效运行。系统总体架构分为三层:主控层、采集层、交互与执行层,总体架构如图2-1所示(论文中需补充架构图)。
各模块的具体功能划分如下:
- 主控层:以STM32F103C8T6最小系统板为核心,是系统的“大脑”,负责接收各采集模块的数据,对数据进行滤波、校准、处理,执行控制逻辑,协调各模块正常工作;同时接收按键控制指令与机智云APP指令,执行相应的操作(模式切换、阈值设置、继电器控制等)。
- 采集层:包含水质参数采集模块,由DS18B20温度传感器、TDS电导率传感器、PH传感器、浊度传感器组成,负责实时采集水体的水温、电导率、PH值、浊度四项参数,将采集到的数据传输至主控模块进行处理。
- 执行层:包含蜂鸣器报警模块、继电器控制模块,负责接收主控模块的控制指令,执行报警动作与继电器的开启/关闭操作,实现异常预警与外部设备控制。
- 显示层:即OLED显示模块,负责实时展示主控模块处理后的水温、电导率、PH值、浊度四项参数,以及当前模式(自动/手动)、阈值设置状态等信息,实现用户与系统的可视化交互。
- 本地交互层:包含按键控制模块,负责实现用户的本地操作,包括模式切换、阈值设置、手动控制继电器,是用户与系统进行本地交互的核心模块。
- 远程交互层:包含ESP8266-01S WIFI模块,负责与机智云平台建立通信连接,将水质参数上传至机智云APP,实现远程数据查看与监控,无需现场操作即可掌握水质状况。
2.3 系统工作流程
系统上电后,首先进行初始化操作,包括STM32单片机初始化、各传感器初始化、OLED显示屏初始化、WIFI模块初始化、蜂鸣器初始化、继电器初始化及按键初始化。初始化完成后,系统默认进入自动模式,初始化各项水质参数阈值(可通过按键或APP修改),开启各传感器的数据采集功能,同时启动WIFI模块,连接机智云平台,开始执行以下工作流程:
- 采集模块实时采集数据:DS18B20采集水温数据,TDS传感器采集电导率数据,PH传感器采集PH值数据,浊度传感器采集浊度数据,将采集到的数据传输至主控模块。
- 主控模块对采集到的数据进行滤波、校准处理,去除干扰信号,确保数据准确性;将处理后的各项参数存储至数据缓冲区。
- OLED显示屏实时更新显示:依次显示当前水温(单位℃)、电导率(单位ppm)、PH值、浊度(单位NTU),以及当前模式(自动/手动),更新频率为1次/秒。
- WIFI模块将数据缓冲区中的各项水质参数上传至机智云平台,机智云APP实时接收并展示数据,实现远程监控;同时,系统接收机智云APP发送的指令(可选扩展:远程阈值设置、模式切换),执行相应操作。
- 自动模式逻辑执行:主控模块将处理后的各项水质参数与预设的上下限阈值进行对比,若任意一项参数超出阈值范围,立即控制有源蜂鸣器发出报警声,并开启继电器(外接设备工作);若所有参数均在阈值范围内,蜂鸣器不报警,继电器保持关闭状态(或根据预设逻辑控制)。
- 手动模式逻辑执行:用户通过按键切换至手动模式后,蜂鸣器报警功能关闭,用户可通过按键手动控制继电器的开启与关闭,OLED显示屏实时显示继电器状态。
- 用户可通过按键进行操作:按下模式切换按键,切换自动/手动模式;按下阈值设置按键,进入阈值设置模式,依次调整水温、电导率、PH值、浊度的上下限阈值,调整后实时更新显示;手动模式下,按下继电器控制按键,控制继电器开启/关闭。
- 系统持续循环执行上述流程,直至断电或手动关机;若出现数据采集异常、WIFI连接断开等情况,系统保持当前状态,重新上电后恢复正常初始化流程;若WIFI连接断开,本地功能(采集、显示、按键控制、报警、继电器控制)仍正常运行。
第三章 系统硬件设计
3.1 硬件选型
结合系统功能需求、性能要求及成本控制,本系统各硬件模块选型严格遵循性价比高、稳定性好、易于开发、适配性强、检测精度满足民用需求的原则,具体元器件选型及选型理由如下表3-1所示:
|
硬件模块 |
选型型号 |
选型理由 |
|
主控芯片 |
STM32F103C8T6 |
ARM Cortex-M3内核,主频72MHz,具备丰富的GPIO口、UART、IIC、ADC等通信接口,支持多种传感器与执行机构连接;性能稳定、功耗低、成本低廉,体积小巧,适合小型智能设备设计;资料丰富,便于开发调试,是单片机开发的主流选型,能够满足系统多模块协同工作的需求。 |
|
显示模块 |
OLED屏幕(4针IIC协议) |
体积小、功耗低、亮度高、对比度强,4针IIC协议接口简单,占用GPIO口少,适合小型设备;分辨率128*64,可清晰显示四项水质参数及模式信息,界面简洁易读,且响应速度快,无残影,提升用户体验,适配系统实时显示需求。 |
|
温度传感器 |
DS18B20 |
数字式温度传感器,单总线通信方式,接线简单,无需复杂的校准电路;测量范围广(-55℃~125℃),精度高(误差≤±0.5℃),响应快,功耗低,价格低廉,易于集成,适合水体温度的实时采集,无需额外的信号转换电路。 |
|
电导率传感器 |
TDS电导率传感器 |
专门用于检测水体中可溶性固体含量,输出模拟信号,可通过STM32的ADC接口采集;测量范围0~1000ppm,精度满足民用场景需求;防水设计,适合长期浸泡在水中采集数据,价格低廉,易于集成,适配系统电导率检测需求。 |
|
PH传感器 |
模拟式PH传感器(带信号放大) |
测量范围0~14pH,误差≤±0.1pH,精度高,响应快;自带信号放大电路,可直接将PH值转换为0~3.3V模拟信号,适配STM32的ADC接口采集;防水设计,适合水体酸碱度检测,操作简单,无需复杂的校准步骤,适合民用场景。 |
|
浊度传感器 |
模拟式浊度传感器 |
基于光折射原理,能够准确检测水体浑浊度,测量范围0~100NTU,误差≤±2NTU;输出模拟信号,可通过STM32的ADC接口采集;防水设计,抗干扰能力强,适合长期浸泡在水中,价格低廉,适配系统浊度检测需求。 |
|
WIFI模块 |
ESP8266-01S |
基于WIFI协议,支持UART通信,传输距离远(10-20米),功耗低、兼容性强;体积小巧,价格低廉,易于集成;支持与机智云平台快速对接,无需复杂的配置,可轻松实现数据上传与远程监控,适配系统的远程交互需求。 |
|
继电器 |
5V单路继电器模块 |
输入电压5V,与STM32GPIO口输出电压兼容,接线简单;可承受较大电流,能够驱动外接设备(如净水机、水泵等);具备光耦隔离功能,减少外部干扰,保护主控芯片,稳定性好,适合系统的执行控制需求。 |
|
蜂鸣器 |
有源蜂鸣器 |
无需额外的驱动电路,只需通过GPIO口输出高低电平即可控制发声;音量适中,响应快,价格低廉,易于集成;当水质参数异常时,能够快速发出报警声,提醒用户及时处理,适配系统的报警需求。 |
|
手动控制模块 |
独立按键 |
操作简单、可靠性高、价格低廉,易于集成;采用4个独立式按键设计,分别实现模式切换、阈值设置、继电器开启、继电器关闭功能,适配系统的本地手动操作需求;具备防抖设计,避免误触发。 |
|
电源模块 |
5V USB电源、AMS1117-3.3V |
5V USB电源方便用户供电,兼容性强;AMS1117-3.3V稳压芯片可将5V电压稳压至3.3V,为STM32单片机、传感器、OLED屏幕、ESP8266-01S模块等需要3.3V电压的模块供电;继电器、蜂鸣器采用5V直接供电,确保其正常工作;具备过流、过压保护功能,确保系统安全稳定运行。 |
表3-1 系统硬件材料清单及选型理由
3.2 主控模块电路设计
主控模块以STM32F103C8T6最小系统板为核心,是系统的核心控制单元,主要包括电源电路、复位电路、晶振电路及下载接口电路,负责协调各模块工作,处理数据与控制指令,是系统稳定运行的基础。
3.2.1 电源电路
系统采用5V USB电源供电,通过AMS1117-3.3V稳压芯片将5V电压稳压至3.3V,为STM32F103C8T6单片机、DS18B20传感器、OLED屏幕、ESP8266-01S WIFI模块、PH传感器、浊度传感器、TDS传感器等需要3.3V电压的模块供电;继电器、有源蜂鸣器采用5V直接供电,确保其输出足够的功率。电源电路中加入100nF滤波电容,减少电压波动,滤除电源干扰,确保系统稳定工作;同时设计电源指示LED,用于指示系统是否上电,方便用户查看系统工作状态。
3.2.2 复位电路
采用手动复位与上电复位相结合的方式,复位电路由电阻、电容及复位按键组成。上电时,电容充电,产生复位信号,使单片机完成上电复位,确保系统上电后正常初始化;当系统出现异常(如程序卡死、数据采集异常)时,按下复位按键,产生手动复位信号,使单片机重启,恢复正常工作。复位电路设计简单、可靠性高,确保系统在异常情况下能够快速恢复,提升系统的稳定性。
3.2.3 晶振电路
采用外部晶振电路,晶振频率为8MHz,通过分频电路为STM32单片机提供72MHz的系统时钟,确保单片机的运算速度与各模块的同步工作。晶振电路中加入两个22pF电容,用于稳定晶振频率,减少外界电磁干扰,确保系统计时准确、数据处理高效,为传感器采集、数据传输、指令执行提供稳定的时钟支撑。
3.2.4 下载接口电路
采用USB-TTL下载方式,通过CH340芯片将USB接口转换为UART接口,连接STM32单片机的USART1接口(PA9-TX、PA10-RX),实现程序的下载与调试。下载接口同时支持串口通信,可用于调试过程中的数据打印与指令交互,方便开发人员排查问题、调试程序,提升开发效率。
3.3 水质参数采集模块电路设计
3.3.1 温度采集模块(DS18B20)
DS18B20传感器采用单总线通信方式与STM32单片机连接,其DATA引脚连接STM32的PB0引脚,VCC引脚接3.3V电源,GND引脚接地。单总线通信方式接线简单,只需一根信号线即可实现数据传输,适合小型设备设计,且无需额外的信号转换电路。
为确保采集数据的准确性,在DS18B20的VCC与GND之间加入100nF滤波电容,减少电源干扰;同时在DATA引脚与VCC引脚之间加入10KΩ上拉电阻,确保数据传输稳定,避免信号失真。单片机通过DATA引脚发送复位脉冲与应答脉冲,控制DS18B20采集水温数据,传感器将采集到的数字温度数据反馈给单片机,单片机对数据进行处理后存储并显示。
3.3.2 电导率采集模块(TDS传感器)
TDS电导率传感器输出模拟信号,采用模拟信号采集方式,连接STM32的ADC接口(PA1引脚)。TDS传感器的VCC引脚接3.3V电源,GND引脚接地,AO引脚(模拟输出)连接STM32的PA1引脚,同时在AO引脚与GND之间并联100nF滤波电容,减少信号干扰,确保采集数据稳定。
当水体电导率变化时,TDS传感器的AO引脚输出的模拟电压随之变化(0~3.3V),STM32通过ADC接口采集该电压信号,将其转换为12位数字信号(0~4095),再通过标定的换算公式,将数字信号转换为电导率值(ppm),为系统的阈值对比与报警提供数据支撑。
3.3.3 PH值采集模块(PH传感器)
PH传感器采用模拟信号输出,自带信号放大电路,连接STM32的ADC接口(PA2引脚)。PH传感器的VCC引脚接3.3V电源,GND引脚接地,AO引脚(模拟输出)连接STM32的PA2引脚,同时并联100nF滤波电容,滤除信号干扰,确保采集精度。
PH传感器的输出电压与PH值呈线性关系(通常0~3.3V对应0~14pH),STM32通过ADC接口采集AO引脚的模拟电压,转换为数字信号后,通过线性换算公式转换为PH值,实现水体酸碱度的实时检测。采集过程中,可通过软件校准,进一步提高PH值的检测精度。
3.3.4 浊度采集模块(浊度传感器)
浊度传感器采用模拟信号输出,连接STM32的ADC接口(PA3引脚)。浊度传感器的VCC引脚接3.3V电源,GND引脚接地,AO引脚(模拟输出)连接STM32的PA3引脚,并联100nF滤波电容,减少信号干扰,确保采集数据稳定。
浊度传感器的输出电压与水体浊度呈负相关(浊度越高,输出电压越低),STM32通过ADC接口采集AO引脚的模拟电压,转换为数字信号后,通过标定的换算公式转换为浊度值(NTU),准确反映水体的浑浊程度,为系统的异常报警提供数据支撑。
3.4 执行模块电路设计
3.4.1 蜂鸣器报警模块
采用有源蜂鸣器,其VCC引脚接5V电源,GND引脚通过NPN三极管连接STM32的PB1引脚,三极管的基极通过1KΩ电阻连接PB1引脚,用于控制蜂鸣器的开启与关闭。当单片机检测到水质参数异常时,PB1引脚输出高电平,三极管导通,蜂鸣器通电发声,发出报警提示;当参数恢复正常或切换至手动模式时,PB1引脚输出低电平,三极管截止,蜂鸣器停止发声。
为避免蜂鸣器干扰其他模块工作,在蜂鸣器的VCC与GND之间加入100nF滤波电容,减少电源干扰;同时在三极管的发射极与GND之间加入下拉电阻,确保三极管工作稳定,避免误触发。
3.4.2 继电器控制模块
采用5V单路继电器模块,其VCC引脚接5V电源,GND引脚接地,IN引脚(控制端)连接STM32的PB2引脚。继电器模块具备光耦隔离功能,可有效隔离外部干扰,保护主控芯片。当STM32的PB2引脚输出高电平时,继电器吸合,外接设备(如净水机、水泵)通电工作;当PB2引脚输出低电平时,继电器断开,外接设备断电停止工作。
继电器的输出端可连接外接设备,为确保安全,在继电器输出端并联续流二极管,防止继电器吸合与断开时产生的反向电动势损坏继电器与主控芯片,提升系统的可靠性。
3.5 交互与显示模块电路设计
3.5.1 OLED显示模块
OLED显示屏采用4针IIC协议,其SDA引脚连接STM32的PB7引脚,SCL引脚连接STM32的PB6引脚,VCC引脚接3.3V电源,GND引脚接地。IIC总线采用主从模式,STM32单片机作为主设备,OLED显示屏作为从设备,单片机通过IIC总线向显示屏发送指令与数据,控制显示屏显示相关信息。
OLED显示屏的分辨率为128*64,将屏幕分为5个显示区域,分别显示水温(格式:水温:XX.XX℃)、电导率(格式:电导率:XXXppm)、PH值(格式:PH值:X.XX)、浊度(格式:浊度:XXNTU)及当前模式(格式:模式:自动/手动),界面设计简洁、清晰,便于用户查看各项水质参数与系统工作模式。
3.5.2 按键控制模块
手动控制模块采用4个独立按键,分别实现模式切换、阈值设置、继电器开启、继电器关闭功能。按键1(模式切换)连接STM32的PA4引脚,按键2(阈值设置)连接PA5引脚,按键3(继电器开启)连接PA6引脚,按键4(继电器关闭)连接PA7引脚;每个按键的一端接地,另一端通过10KΩ上拉电阻连接对应的GPIO引脚,当按键按下时,引脚电平变为低电平,单片机检测到电平变化后,执行相应的操作。
为避免按键误触发,在程序中加入按键防抖处理(延时10ms),同时在每个按键两端并联小电容,进一步减少外界干扰,确保按键操作的可靠性;当进入阈值设置模式时,通过按键2切换需要调整的参数(水温、电导率、PH值、浊度),通过按键3、4调整阈值的大小(增加/减少)。
3.5.3 WIFI通信模块(ESP8266-01S)
ESP8266-01S WIFI模块采用UART通信方式与STM32单片机连接,其TXD引脚连接STM32的USART2_RX引脚(PA10),RXD引脚连接STM32的USART2_TX引脚(PA9),VCC引脚接3.3V电源,GND引脚接地,CH_PD引脚接3.3V电源(确保模块正常工作)。
ESP8266-01S模块初始化完成后,通过AT指令配置WIFI连接(连接用户家庭WIFI),与机智云平台建立通信连接;连接成功后,单片机通过USART2接口向WIFI模块发送水质参数数据,WIFI模块将数据上传至机智云平台,机智云APP实时接收并展示数据;同时,系统可接收机智云APP发送的控制指令(可选扩展:远程阈值设置、模式切换),解析指令后执行相应操作。
3.6 PCB板设计与制作
根据硬件电路原理图,采用Altium Designer软件设计PCB板,设计过程中遵循布局合理、布线规范、预留接口、防水防护的原则,确保PCB板的稳定性、实用性与安全性,具体设计原则如下:
- 布局合理:将主控模块、采集模块、执行模块、交互模块分开布局,减少模块之间的干扰;传感器模块(DS18B20、TDS、PH、浊度)的接口尽量集中,便于外接传感器并浸泡在水中;电源模块远离信号模块,减少电源干扰;WIFI模块与其他模块保持一定距离,避免无线信号干扰。
- 布线规范:电源线、地线尽量粗(≥1mm),减少电阻损耗;信号线尽量短,避免交叉,减少信号干扰;ADC采集信号线(PA1、PA2、PA3)采用屏蔽布线,提高采集精度;UART总线、IIC总线采用差分布线,提高通信稳定性;所有布线避免锐角,减少信号反射;继电器、蜂鸣器的布线尽量远离传感器采集信号线,避免电磁干扰。
- 预留接口:预留各传感器、WIFI模块、下载接口、继电器、蜂鸣器的焊接位置,便于后期调试与更换模块;预留电源接口,方便用户供电;在PCB板上预留测试点,便于后期测试各模块的电压与信号;预留传感器接口的防水接口,提升系统的防水性能,适应水体检测场景。
- 防水防护:PCB板表面采用防腐蚀涂层处理,防止水体溅落导致短路;传感器接口采用防水接头,确保传感器长期浸泡在水中时不会出现短路问题,提升系统的使用寿命。
PCB板设计完成后,进行打样制作,焊接各元器件,焊接完成后进行通电测试,检查各模块是否正常工作,确保PCB板无短路、虚焊、漏焊等问题;同时进行防水测试,确保传感器接口与PCB板在水体环境中能够稳定工作,为系统软件调试奠定硬件基础。
第四章 系统软件设计
4.1 软件开发环境
本系统软件开发采用Keil MDK5.29开发环境,基于C语言进行编程,结合模块化设计思想,将软件分为多个独立模块,便于开发、调试与维护。同时,配合机智云平台进行APP数据交互配置,确保远程监控功能正常实现。主要开发工具及软件如下:
- Keil MDK5.29:用于编写、编译、调试STM32单片机程序,支持STM32F103C8T6芯片,具备代码编辑、语法检查、仿真调试、程序下载等功能,是STM32单片机开发的主流工具,能够满足系统多模块程序的开发需求。
- Altium Designer:用于硬件电路原理图与PCB板设计,配合软件开发完成系统硬件与软件的协同设计,确保硬件与软件的兼容性,避免出现硬件与软件不匹配的问题。
- 串口调试助手:用于调试串口通信,查看单片机发送的数据(传感器采集数据、指令执行状态),验证数据传输的准确性;同时可模拟WIFI模块发送指令,调试指令解析功能,方便开发人员排查问题。
- 机智云平台:用于配置WIFI模块与云端的通信,创建设备、定义数据点(水温、电导率、PH值、浊度),生成机智云APP,实现水质参数的远程查看与监控,无需单独开发APP,降低开发难度。
软件开发前,需安装STM32F103C8T6的芯片包,配置编译环境,设置系统时钟频率(72MHz)、通信接口参数(UART波特率9600bps、IIC通信速率100kHz、ADC采样频率1MHz),确保程序能够正常编译与下载;同时在机智云平台创建设备,定义各项水质参数的数据点,配置WIFI模块的连接参数,确保WIFI模块能够正常连接云端。
4.2 软件总体流程
系统软件采用模块化设计思想,将软件分为主控程序、传感器数据采集与处理程序、OLED显示程序、按键控制程序、蜂鸣器报警程序、继电器控制程序、WIFI通信程序及机智云APP数据交互程序,各模块程序相互独立,通过函数调用实现协同工作。软件总体流程如下:
- 系统上电后,首先执行初始化程序,包括STM32单片机初始化、GPIO口初始化、ADC初始化、IIC通信初始化、UART通信初始化、各传感器初始化、OLED显示屏初始化、WIFI模块初始化、蜂鸣器初始化、继电器初始化及按键初始化。
- 初始化完成后,系统默认进入自动模式,初始化各项水质参数的上下限阈值(默认阈值可根据民用场景预设,如水温20~30℃、PH值6.5~8.5等),开启各传感器的数据采集功能,同时启动WIFI模块,连接机智云平台,等待连接成功。
- 传感器采集模块实时采集数据:DS18B20采集水温数据,TDS传感器采集电导率数据,PH传感器采集PH值数据,浊度传感器采集浊度数据,传输至主控模块;主控模块对采集到的数据进行滤波、校准处理,去除干扰信号,将处理后的数据存储至数据缓冲区。
- 主控模块将处理后的数据发送至OLED显示屏,实时更新显示水温、电导率、PH值、浊度及当前模式(自动/手动),更新频率为1次/秒。
- WIFI模块连接机智云平台成功后,主控模块将数据缓冲区中的各项水质参数按照机智云平台的数据格式,通过UART接口发送至WIFI模块,WIFI模块将数据上传至机智云平台,机智云APP实时接收并展示数据,实现远程监控。
- 自动模式逻辑执行:主控模块将处理后的各项水质参数与预设的上下限阈值进行对比,若任意一项参数超出阈值范围,立即控制有源蜂鸣器发出报警声,并控制继电器吸合,开启外接设备;若所有参数均在阈值范围内,蜂鸣器不报警,继电器保持关闭状态;当参数恢复正常后,蜂鸣器停止报警,继电器自动关闭(可选)。
- 手动模式逻辑执行:用户通过按键切换至手动模式后,蜂鸣器报警功能关闭,用户可通过按键3(继电器开启)、按键4(继电器关闭)手动控制继电器的开启与关闭,OLED显示屏实时显示继电器状态(开启/关闭)

更多推荐



所有评论(0)