APP下载

基于STM32和ZigBee的水产养殖水质监测系统设计

2023-07-04吉艺宽李美娣

仪器仪表用户 2023年8期
关键词:蜂鸣器溶解氧水质

罗 潜,吉艺宽,李美娣

(广东梅州职业技术学院,广东 梅州 514011)

水产业,是中国农业经济发展的重要支柱。近年来,随着水产养殖业的高速发展,养殖水体环境污染问题日益突出,破坏了水体生态平衡,给养殖户造成了严重的经济损失[1-3]。因此,水产养殖水质监测能力的提升就显得尤为重要。为改善水产养殖水质监测操作复杂、监测周期长、监测参数单一等局限性,设计了一套基于STM32 和ZigBee的水产养殖水质参数监测系统,能够实现同步实时采集、传输,显示水体温度、酸碱度、溶解氧和氨氮,以及异常报等警功能。

1 系统总体设计

该系统以STM32F103 微控系统、ZigBee 无线传感器网络和多路传感器为核心,分为数据采集端、数据传输端和数据监测端三大部分[4]。系统总体结构如图1 所示。

数据采集端位于系统底层,主要由多路传感器(温度传感器、酸碱度传感器、溶解氧传感器、氨氮传感器)、信号调理模块和数据采集系统(STM32F103 微控系统)组成。多路传感器实时采集水质参数原始数据,信号调理模块对采集到的微弱信号进行调理放大,数据采集系统转换打包数据,并将数据通过串口传送给终端节点。数据传输端位于系统中间层,主要由终端节点(ZigBee 无线通讯模块)和协调器节点(ZigBee 无线通讯模块)组成。终端节点按照ZigBee 无线网络通讯协议将数据采集系统打包的数据传送给协调器节点,协调器节点按照ZigBee 无线网络通讯协议接收数据,并将数据通过串口传送给数据监测系统。数据监测端位于系统顶层,主要由数据监测系统(STM32F103微控系统)、OLED 显示模块、蜂鸣警报模块和独立按键模块组成。数据监测系统对协调器节点传送来的数据进行统一分析处理,OLED 显示模块实时显示水质参数数据,蜂鸣器报警模块在水质参数超出阈值时会发出“嘀嘀”报警声,独立按键模块调控水质参数阈值和关闭报警声。

2 系统硬件设计

该设计采用Altium Design 进行系统电路原理图和PCB设计,在设计过程中选用了常用的典型电路,同时加强了电路抗干扰设计。系统电路原理图如图2 所示。

图2 系统电路原理图Fig.2 The system circuit schematic diagram

2.1 STM32F103微控系统

该设计以STM32F103 最小系统为微控系统,主要由复位电路、振荡电路、启动配置、USB 转串口、调试接口和电源组成[5]。STM32F103 是一款高性能的64 脚微处理器,其电源脚和I/O 脚的电压范围均为2.0V ~3.6V,具有128KB Flash、20KB SRAM 的高速嵌入式记忆容量,内置4 个通用16 位Timer、3 个12 位ADC、3 个USART、2 个I2C、2 个SPI、1 个PWM、1 个USB 以及1 个CAN[6]。

复位电路的功能是使系统恢复至初始状态,包括上电自动复位和按键手动复位。该设计采用RC 复位电路。在系统刚上电时,电阻R5 对电容C17 充电,RST(Pin7)为低电平,系统进入复位状态;当电容C17 两端的电压达到门限电压值时,RST 为高电平,系统进入正常工作状态。手动按下K0 键时,电容C17 两端放电,RST 为低电平,系统进入复位状态;松开K0 键后,电容C17 重复上述充电过程,系统进入正常工作状态。

振荡电路的功能是产生稳定的时钟频率,供STM32F103 微处理器使用。该设计采用1 个8MHz 高速晶振Y1 与2 个20PF 电容C15、C16 并联接地,晶振Y1 两端分别与STM32F103 微处理器的XTAL1(Pin5)、XTAL2(Pin6)连接,组成外置振荡器,驱动STM32F103 微处理器正常运行。

STM32F103 微处理器的启动模式有内置Flash、系统存储器和内置SRAM 3 种不同的模式,由BOOT0(Pin60)和BOOT1(Pin28)两个引脚的电平状态共同决定。编写的常用代码都存放在Flash 中,启动应该从代码区开始。因此,该设计采用内置Flash 启动方式,BOOT0 和BOOT1 两个引脚分别串联10K 的电阻R3、R4 接地置于低电平。

USB 转串口是实现STM32F103 微处理器与PC 之间的通信,该设计采用CH340 转换芯片。CH340 转换芯片需要时钟频率驱动工作,其XO 和XI 之间连接1 个12MHz的晶体Y2,晶体Y2 两端并联30pF 电容C20、C21 接地。CH340 转换芯片的UD+、UD-与USB 接口的D+、D-连接,其TXD、RXD 与STM32F103 微处理器USART1 的RX1(Pin43)、TX1(Pin42)连接。

调试接口用于程序下载和仿真模拟,STM32F103 微处理器支持两种调试方式:联合测试工作组(JTAG)和串行单线调试(SWD)。该设计采用四线SWD 调试方式,减少使用GPIO,布线难度降低,节省了PCB 空间,并且SWD调试比JTAG 调试运行更快。

电源是提供稳定的工作电压给系统使用,需要使用3.3V 和5V 两种电源。该设计采用AMS1117-3.3/5.0 电源稳压芯片并联滤波电容组成稳定的3.3V 和5V 电源输出。

2.2 ZigBee无线通讯模块

ZigBee 无线通讯常用的解决方案有两种:一种是微处理器+无线频段的解决方案;另一种是SoC(芯片系统)方案,此方案将微处理器和无线射频器整合到一块微型芯片上。该设计采用TI 公司的CC2530 微处理器SoC DEMO板。CC2530 微处理器是一款高度集成的ZigBee 标准芯片,集成了8051 单片机和RF 收发器,具有32/64/128/256 KB Flash、8 KB SRAM 的存储容量,内置8 通道的12 位ADC、2 个USART、21 个GPIO,支持看门狗定时、精确数字化链路质量指示(RSSI/LQI)、载波侦听多路访问/冲突避免(CSMA/CA)等[7]。

2.3 多路传感器模块

温度是水质监测的最基本参数,其直接影响着水体中众多的物理现象和化学性质。该设计采用DALLS 公司生产的DS18B20 数字温度传感器。此温度传感器分辨率可调,稳定性好,抗干扰能力强,防水性和耐腐蚀性强,可在水中长时间浸泡[8]。其数据线DQ 通过传感器接口TempSensor 引脚与数据采集系统STM32F103 微处理器的PC0(Pin8)连接。

酸碱度、溶解氧和氨氮是水质监测的常规检测参数,它们对水中生物的繁殖和水质的变化有很大的影响[9]。该设计采用上海仪电科学仪器有限公司生产的雷磁E-201-C型PH 电极、DO-958-L 型溶解氧电极、PNH3-1-01 型氨气敏电极和配套信号调理模块。此3 种复合电极采集到的模拟信号相当微弱,需经过信号调理模块放大至A/D 转换所需的最低电压后,再通过传感器接口PHSensor、NHSensor、OXSensor 分别与数据采集系统STM32F103 微处理器的PC1(Pin9)、PC2(Pin10)、PC3(Pin11)连接。

2.4 其他外设模块

有机发光二极管(OLED),具有良好的显示效果,快速的反应能力和轻薄的厚度,可应用于具有伸曲性的面板上。该设计采用了THINOX 科技生产的0.96 inch OLED显示模块。此模块只有CS(片选信号)、D/C(数据/命令)、RST(复位信号)、SDA(数据信号)、SCL(时钟信号)、VSS(电源地)和VDD(电源)7 个引脚,其中,前5 个引脚分别与数据监测系统STM32F103 微处理器的PA4(Pin20)、PA5(Pin21)、PA6(Pin22)、PA7(Pin23)、PA8(Pin41)连接。

蜂鸣器是一种结构简易的喇叭,常用于各种电子产品中,如提示、警报和音乐等场合。该设计采用蜂鸣器报警模块,利用三极管的开关通断原理,PNP 型三极管Q1 的基极串联1 个限流电阻R14,再与数据监测系统STM32F103微处理器的PC8(Pin39)连接。当PC8 引脚为低电平时,三极管Q1 导通,蜂鸣器发出“嘀嘀”报警声;否则,蜂鸣器不响。

按键是一种可复原的机械式控制元件,常用于电路的开关控制。该设计采用4 个独立按键:按键K1、K2、K3和K4 均为低电平使能,分别实现不同参数之间的切换、增加、减小和关闭蜂鸣器报警的功能,与数据监测系统STM32F103 微处理器的PB6(Pin58)、PB7(Pin59)、PB8(Pin61)、PB9(Pin62)连接。

3 系统软件设计

系统软件设计采用IAR Embedded Workbench 进行程序模块化设计,以配合硬件模块实现系统功能[10-12]。

3.1 水质参数采集软件设计

DS18B20 数字温度传感器软件设计主要包括初始化操作、存储器(ROM、RAM)操作和数据传输等方面的内容。先调用Init_DS18B20( )函数进行初始化;再调用Write_DS18B20(0xCC)函数发出转换指令,跳过ROM 检测;然后调用Write_DS18B20(0x44)函数启动温度转换,延时等待转换完成;最后调用Write_DS18B20(0xBE)函数读取RAM 值,换算成摄氏度的温度值。采集到的温度值通过数据采集系统STM32F103 的串口USART2 发送给终端节点(ZigBee 无线通讯模块)。

雷磁E-201-C 型PH 电极、DO-958-L 型溶解氧电极和PNH3-1-01 型氨气敏电极采集的信号均为模拟信号,而STM32F103 微处理器仅能处理数字信号。因此,放大后的模拟电压信号需要进行A/D 转换。该设计选用STM32F103微处理器ADC 中的通道11 和通道12,在使用的I/O 口均已初始化且外设时钟已开启的情况下,先调用Init_ADC( )函数进行ADC 初始化;然后调用StartConvCmd_ADC( )函数启动ADC 转换,对一个参数连续转换16 次,并将16 次值求和后赋给局部变量Result;最后调用Read_ADC( )函数读取16 次ADC 转换的平均值,根据写好的换算公式求出酸碱度、溶解氧和氨氮。采集到的酸碱度、溶解氧和氨氮通过数据采集系统STM32F103 的串口USART2 发送给终端节点(ZigBee 无线通讯模块)。水质参数采集程序流程如图3 所示。

3.2 扩展外设软件设计

数据监测端的外设模块有OLED 显示模块、蜂鸣器报警模块和按键模块。OLED 显示模块除了显示水质参数的阈值以外,还要同步实时显示水质参数数据(温度、酸碱度、溶解氧和氨氮),主要用到Init_OLED( )、Clear_OLED_()、Write_OLED( )、DispStr_OLED( )等函数。蜂鸣器报警模块的功能是当采集到的水质参数超出阈值时就会发出“嘀嘀”的报警声,主要用到SetBit_Buzzer( )函数。按键模块的功能是调节水质参数的阈值和关闭蜂鸣器报警声,主要用到Init_Key( )和Scan_Key( )函数。外设模块工作程序流程如图4 所示。

图4 外设模块工作程序流程图Fig.4 The peripheral module work program flowchart

3.3 ZigBee无线通讯软件设计

协调器节点既是整个无线网络的数据收发中心,也是网络的建立者和维护者。在上电后,协调器节点先进行ZigBee 协议栈和硬件的初始化;然后开始建立网络,主要包括信道扫描、信道选择和节点地址分配等有序操作;最后选择终端节点加入网络,协调器节点若有接收到请求申请加入网络的命令,则会选择合适的信道分配逻辑地址并返回允许命令给发送请求命令的终端节点。成功建网后,当协调器节点检测到空间数据时,就会接收数据并通过串口USART3 传输给数据监测系统STM32F103。

终端节点是整个无线网络的数据采集节点,其将数据采集系统打包好的水质参数数据通过ZigBee 无线网络发送给协调器节点。在上电后,终端节点先进行初始化;然后扫描信道,如果存在无线网络和协调器节点,则立即连接协调器节点进行确认;最后连接成功后,按照ZigBee 无线网络通讯协议将数据发送给协调器节点,空闲时可等待指令,处于休眠状态。协调器节点和终端节点工作程序流程如图5 所示。

图5 协调器节点、终端节点工作程序流程图Fig.5 The coordinator node and the terminal node work program flowchart

4 结语

本课题充分利用嵌入式技术、无线网络技术和传感器技术,设计了一套基于STM32 和ZigBee 的水产养殖水质监测系统,通过对系统软硬件的调试,实现了同步实时采集、传输、显示水体温度、酸碱度、溶解氧和氨氮,以及异常报警等功能。这在一定程度上降低了水产养殖的风险和成本,促进了水产养殖的可持续发展,同时也保护了水体环境。此外,该系统移植性强,可应用于其他领域的水质监测。

猜你喜欢

蜂鸣器溶解氧水质
水质抽检岂容造假
电动自行车产品车速提示音检测现状和整改技术研究(2)
掌控板制作简易钢琴
浅析水中溶解氧的测定
一月冬棚养虾常见水质浑浊,要如何解决?这9大原因及处理方法你要知晓
单片机驱动蜂鸣器的程序设计
污水活性污泥处理过程的溶解氧增益调度控制
城市河道洲滩对水流溶解氧分布的影响
丰田凯美瑞240V车间隙警告蜂鸣器异常鸣响
水质总磷测定存在的问题初探