王勋,康荣显,王玥,张新宇,刘小龙,王晓童
摘 要:随着经济水平的迅速发展,人们对家庭娱乐设施的需求越来越高,休闲水族行业也正是在这种需求下应运而生。目前国内市场上常见智能鱼缸的功能性并不强,自动程度较低,控温模块、加氧模块、自动投喂和水位调节模块采用的是互相独立的组件,不但使用时不方便,而且成本比较高。本文设计了一款可以根据需要自动调节水温,自动加氧、自动喂食和远程控制与管理的智能鱼缸,在节省经济的同时降低了养殖难度。
关键词:STM32;智能鱼缸;设计
中图分类号:TP273 文献标识码:A 文章编号:1673-260X(2022)05-0010-05
0 引言
随着社会经济的迅速发展,生活质量的提高,人们对家庭休闲娱乐设施的需求也不断增加,水族宠物行业也因此蓬勃发展。据《2021年中国宠物消费趋势研究报告》中显示,2020年在我国因养宠物的人数日益增多所拉动的宠物行业的规模已经在向3000亿元靠拢。疫情带来的更多潜在养宠人群及情感消费,预计到2023年规模将达到4456亿元。在大城市生活的居民和90后、00后的年轻一代因不同的身份和个性等原因,养殖的宠物种类由猫、犬等常规宠物转移到养水族类宠物或异宠。据统计,2021年养殖宠物的类别结构中,水族类宠物的占比达到了16%,成为了非猫、犬宠物中的第一选择,而且有接近两成的宠物养殖者开始“智能养宠”,使用科技的力量养殖宠物。智能宠物用品在两个方面受到主要的关注,一个是宠物用品的科技属性和便捷程度,另一个就是最重要的安全性。既能使宠物养殖者省时省力,还能更好的照顾宠物。
由于当前市场上常见的智能鱼缸的科技属性和便捷程度并不高,为了能给观赏鱼养殖者提供一种便捷程度高、自动化程度高、成本低、节能且高效的智能鱼缸。本文选用ARM公司的STM32F103ZET6单片机作为主控制板设计了一款基于STM32单片机控制的智能鱼缸[1-3],该智能鱼缸可以实现定时自动喂食、根据预设温度自动调节水温、根据水位自动换水,并且还能提供外围娱乐氛围灯光、换氧机等。用户可以使用手机蓝牙与鱼缸进行无线连接,在APP上设置鱼缸的温度等所需参数、远程进行喂食和监控鱼缸内部的状态等,并且可以选择所养殖的鱼种,自动将鱼缸设置为最适宜该鱼种生存的环境。该系统包含控制鱼缸测温和加热、定时投食、水位检测和自动加水、室温检测、水质的检测、远程监控、蓝牙通信七个子系统。鱼缸为用户提供了三种操作模式,分别为自动模式、手动模式和远程模式[4-6]。
1 系统总体设计
智能鱼缸的核心处理器为STM32F103ZET6单片机。智能鱼缸的总体构造由图1可示。该系统主要由九个模块组成,由主控制模块(STM32单片机核心处理器)为核心,向外延申出继电器模块、电源模块、蓝牙通信模块、定时喂食模块、智能温控模块、自动换水模块、用户操作模块和其他执行单元组成,该系统与鱼缸相结合,组成智能鱼缸[7]。智能鱼缸通过STM32F103单片机与室温检测传感器、水温检测传感器、水位检测传感器和光照度检测传感器相连。其中主控制模块STM32单片机的GPIO接口与温度传感器、水位传感器、喂食模块使用的舵机、蓝牙模块、继电器、矩阵键盘连接在一起。继电器模块通过单片机与加热器、氛围灯、换氧机、水泵连接。单片机通过蓝牙模块与手机APP进行数据的传输和交换。喂食时间采用单片机中的定时器,当系统检測到定时器达到预设值时驱动舵机将食物投放到鱼缸中。
2 系统硬件设计
2.1 主控制模块
智能鱼缸的主控制模块使用的是STM32F103 ZET6单片机与转接控制板,该单片机成本较低、功耗不高、资源丰富。最高72MHz的工作频率使其工作的速度非常快。该单片机片内的Flash存储为512Kbytes,足以将鱼缸所需要的变量和参数存储在Flash上。单片机内部集成了多达8个定时器,包含3个16位定时器,两个看门狗定时器和系统时间定时器,单片机根据时钟信号的频率一拍一拍地进行工作。单片机具有2个I2C(Inter Integrated Circuit)总线接口,3个USART(Universal Synchronous Asynchronous Receiver/Transmitter)接口和2个SPI(Serial Peripheral Interface)总线接口。单片机含有3个采集速度快、精度高的的12位的高速数模转换电路。具有引出IO口106个,采用2*27排针引出,可以同时控制温度传感器、投食结构、加热器、继电器模块、换氧机等多个元件。智能鱼缸主控制模块引脚使用情况及功能简介如表1所示。
2.2 电压模块设计
智能鱼缸使用220V交流电供电。因水泵、换氧机LED灯带和传感器分别需要使用12V和5V的直流电供电,故使用降低电压并转换电流的装置将220V交流电转化为12V直流电,为水泵、换氧机等装置供电。并使用LM2596S-ADJ可调稳压降压芯片将12V直流电转化为5V直流电。
主控制模块的STM32单片机采用3.3V直流电源,通过电压调整芯片将220V交流电源调整到5VDC后,再使用降低电压稳压芯片降压后转化为3.3V直流电,通过滤波后提供给单片机。同时降低电压稳压芯片具有过流过载过压保护,可以有效降低由于过流过载过压对于单片机的伤害。
2.3 温度传感器
室温检测和水温检测采用返回值为数字的DS18B20传感器,DS18B20温度传感器是一款常用的只有一条控制总线的数字温度传感器,它的功能十分强大,最低测试温度可以达到零下55摄氏度,最高测试温度可以达到125摄氏度,在足够日常生活的使用,而且它的体积非常小巧、抵抗外界干扰的能力也比较强,测试温度的误差非常小。DS18B20连接到核心控制模块的的PA6和PA7引脚上,在初始化阶段时,首先让Pin_A的时钟使能,其次将PA6和PA7的引脚模式设置为输出模式,为推挽输出模式。初始化结束后,通过DS18B20的一条控制总线,向传感器分别传输0xCC、0x44和0xBE指令,其中0xCC这个指令执行的任务跳过ROM;0x44指令启动温度转换;0xBE指令为读取温度转换值。它能输出数字信号的温度。温度检测电路模块实现的功能是:当系统检测到缸中温度过低时,驱动升温装置为缸中的水加热,避免水温过低而导致缸中生物死亡,当温度达到预定温度时,关闭加热器。其温控模块逻辑图如图2所示。
2.4 光照度传感器
光照传感器实现检测光照度功能的主要是依靠其内部的光敏电阻,通过检测输入引脚模拟输入的电压,由于光敏电阻的阻值会因光照度的变化而变化,输出的电压会发生变化,便可以检测光照度的变化情况。因为光照度传感器的输出是电压,电压并不是单片机能直接识别的数字量,而是模拟量,所以需要将光照度传感器的引脚连接到核心控制模块的AD转换接口。在初始化阶段,首先将Pin_A的时钟使能,将与光照度传感器与核心控制模块连接的PA4引脚配置为模拟输入模式,通过核心控制模块的数模转换(ADC)来检测模拟输入的电压的变化。由光照度传感器组成的水质检测模块实现的功能是:通过光照度传感器来感受水的浑浊成度,当水质太差时,发送信号驱动蜂鸣器进行报警。光照度传感器逻辑图如图3所示。
2.5 水位传感器
水位传感器本装置采用非接触式的液体位传感器,它不需要和液体直接接触,所以它不会受到水垢或其他杂物的影响,而且不会受到腐蚀液体对传感器的伤害,极大的延长了使用的时间,适用容器外壁不是金属的容器检测水位。采用输出为高电平和低电平的传感器,当感应到有液体的时候,传感器输出为高电平,没有感应到液体时输出低电平。水位检测电路模块实现的功能是:当水位传感器检测到缸中水位过低时,驱动抽水泵进行加水功能,驱动蜂鸣器进行报警。并更新状态。当水位传感器检测到鱼缸中水位达到预设的最高水位时,关闭加水泵。水位检测逻辑图如图4所示。
2.6 显示器模块
显示器采用的是大小为2.8寸的TFT液晶屏显示屏温度。该液晶屏通过I2C总线连接,可以显示字符与文字,完全满足温度显示、水位显示、室温显示、鱼缸状态等要求。
2.7 开关模块
开关模块分为手动开关与电子锁,手动开关控制整体的电源接通与关闭,电子开关是通过手机的远程控制来决定系统是否开启,还保留手动控制的方法打开电子开关。当手动开关开启时,电源接通,电源开始对鱼缸正常供电,在远程控制的电子开关打开的同时,系统开始正常运行。
2.8 执行单元
执行单元由LED灯带、换氧机等外围元件组成。他们通过继电器与核心控制模块相连接,其中继电器采用低电平触发的JQC-3FF-S-Z继电器,在使用低电平触发的同时还具有光耦隔离,抵抗外界的干扰的能力非常强,而且驱动的能力比较强、信号稳定,输入的控制信号的电压范围是0-5VDC,可以负载250V、10A的交流电或30V、10A的直流电,并且可通过指示灯判断开关的状态。LED使用三路控制,为VCC、GND和信号线,当继电器低电平控制LED点亮,高电平熄灭LED,信号线用来控制LED灯带所显示的颜色。
2.9 按键模块
按键模块采用的是4*4的矩阵键盘。4*4矩阵键盘仅仅使用8个引脚即可检测16个按键是否被按下,故体积较小,节省整体的空间。软件中使用4*4编码键盘检测来检测是否有按键按下,若有按键按下则通过扫描的方法去确定按下的键是哪一个键,然后执行这个键对应的操作。
2.10 系统复位
系统复位操作就是按下单片机的复位按键后,产生一个复位信号,单片机收到复位信号后,进入复位状态,使单片机的中烧写的程序从执行main函数从头执行。STM32单片机的复位端口为RES,在复位电路中:连接上拉电阻,SW-PB为复位按键,按下SW-PB后,RES引脚收到低电平信号,系统进入复位状态。当复位按键没有被按下时,RES引脚接在上拉电阻上,为高电平状态,单片机系统便正常工作。系统复位按键电路图如图5可示。
3 系统软件设计
该鱼缸使用的编程语言为C语言,在Keil5 KeliuVision5这个编程软件上编程,以ARM公司的STM32F103作为核心控制模块。多种传感器各司其职的检测鱼缸内部的环境情况,将检测的参数通过GPIO接口传送到核心控制模块中,核心内部模块将根据传入的信息进行相应的操作。
当手动开关打开后,鱼缸会被供电,此时核心控制模块启动板层驱动程序的初始化后,初始化GPIO引脚模式、时钟使能状态、串口波特率、定时器的初始化等操作。初始化过后,鱼缸的核心控制模块会开启由电子锁控制的模式,当电子锁被打开后,核心控制模块收到信号后,单片机进入正常模式,开始继续执行main函数。当电子锁未被打开时,单片机进入休眠模式,以较少的能量消耗维持单片机运行,等待电子锁被打开。
其中,main为程序中的主函数,main函数中首先进行对各个模块的初始化工作,其中包括了GPIO引脚初始化、延时函数初始化、串口波特率初始化和中断优先级初始化等一系列的正常工作前对所使用单片机功能的初始化。初始化完成后,main函数将调用各个模块工作所需要的子程序,如温度检测子程序、判定温度是否过低或过高的子程序等等,将所有鱼缸中的传感器所传回的信息进行判断,判断后返回对应的返回值,再根据返回值的不同从而让核心控制模块执行不同的操作,根据返回值,核心控制模块也会将当前鱼缸中的状态通过屏幕反馈给用户。此鱼缸的程序共有三种操作模式供用户选择使用,分别为自动模式、手动模式和远程模式。当鱼缸正常启动时,会直接进入自动模式,自动进行对鱼缸的检测和驱动其他执行单元进行操作,与此同时智能鱼缸的用户也可以通过使用手机与智能鱼缸的蓝牙模块进行连接后,会将操作模式由自动模式切换为远程模式,用户也可以通过4*4的矩阵键盘来控制核心操作模块的参数,操作模式便会切换为手动模式。
3.1 自动控制
当核心操作模块被供电且电子锁处于打开状态时,系统将自动进入自动模式,自动进入main中函数中按顺序执行程序中的命令。当系统处于自动模式时,核心操作模块会收到来自通过GPIO连接的水温传感器、室温传感器、光照度传感器、非接触式水位传感器传回的參数。其中,水温传感器会返回此时鱼缸中的水温,当传回的温度低于系统预设的温度时,核心操作模块会使用通过GPIO连接的继电器模块来控制加热棒的使能从而进行对鱼缸中水的加热,同时核心操作模块会将温度传感器返回的温度和此时加热器是否开启的信息通过显示屏显示出来,当STM32F1单片机接受到温度传感器所检测到的温度到达预设温度,若此时加热棒处于加热状态,则停止加热,LED显示屏会同步显示温度和加热棒开关情况;当STM32F1单片机接收到水位传感器为缺水状态,则进行报警,通过继电器驱动水泵进行加水功能,同时LED显示屏会同步显示当前状态;当单片机接收到定时器达到预设值时,则驱动舵机将鱼食投入鱼缸中,之后将数据显示在LED显示屏上。
3.2 手动操作
当核心操作模块通过对4*4矩阵键盘的扫描程序中检测到有按键被按下时,系统将自动切换为手动操作。可以通过外置的矩阵键盘来设置鱼缸中所需要的水温最高温度与水温最低温度、自动喂食间隔、换氧机的启动、LED灯带的启动与颜色、水位最低阈值与最高阈值、水泵的启动等操作,优先级为最高。
3.3 远程操作
当用户使用手机与鱼缸中的蓝牙模块进行连接后,鱼缸会由自动模式切换为远程模式,通过手机向蓝牙模块发送信号从而进行对鱼缸的远程控制功能。远程模式与手动模式不同,想要实现鱼缸的远程操控的功能,就需要对实现远程操作的信号和指令的传送方式进行选择。因远程信号的发射器与鱼缸使用的远程信号接收器的距离比较近,且没有较多的障碍物和遮挡的物体对信号进行阻拦,所以本文便采用日常中比较常见和经常使用的Bluetooth(蓝牙)就可以实现鱼缸的远程操控的功能。因需要使用手机与鱼缸的蓝牙模块连接,为用户使用的便捷性和简单化,于是通过使用Android Studio制作了安卓手机使用的APP,其主要功能有“控制加热器”“控制灯光”“其他模式选择”“显示当前鱼缸状态”等。利用单片机中的串口通信功能,实现了蓝牙模块与核心控制模块信息的交互,从而进一步实现了远程操作控制鱼缸的核心控制模块从而控制鱼缸的功能。鱼缸通过蓝牙进行远程对鱼缸控制的结构图如图6所示。
4 智能鱼缸远程控制APP设计
本设计所使用的手机端远程控制APP是由Android Studio软件设计实现的,该软件主要实现安卓系统的软件设计和开发,采用Kotlin作为主要编程语言。
该APP设计的Activity中主要使用RecyclerView控件,RecyclerView是很常用的一种数据展示的控件,它与传统使用的ListView相比较,不但可以轻松地实现和与ListView相同的滚动显示功能,还优化了ListView中的不足之处,成为本程序使用Activity中优先使用的控件。APP中使用RecyclerView作为一个列表视图,并且智能鱼缸中每个功能的展示的条目布局是一致的,因此在创建item的布局时,每一个区域都对应了一个图片控件和一个文本控件的展示和点击跳转布局的点击事件,创建监视器创建点击事件进行布局的跳转,跳转到不同的设置界面。传感数据监测页面,RecyclerView控件把鱼缸各区域的传感数据展示到了界面中,看起来结构清晰,也更加美观。基于STM32的智能鱼缸app设计界面如图7所示。
5 结语
本文基于STM32单片机控制的智能鱼缸采用STM32F103ZET6单片机作为主控芯片,实现了鱼缸的定时投喂、水温调节、智能增氧、自动换水等功能,同时也可以满足用户远程控制的需求。该系统具有操作简单、性能稳定,人机交互更加直观等特点。随着智能家居的快速发展,智能化鱼缸的发展前景十分可观,具有良好的市场价值。
參考文献:
〔1〕张杰斌,谢泽奇.基于STM32的宠物智能投喂装置的设计与实现[J].科技创新与应用,2021,35(10):93-95.
〔2〕李金武,宋新爱.智能鱼缸自动控制系统设计与实现[J].智能计算机与应用,2020,6(03):284-287.
〔3〕邱义.基于STM32的智能鱼缸远程控制系统设计[J].信息技术与信息化,2020,27(10):230-232.
〔4〕何颖,唐幸洪,张法强,等.多功能智能鱼缸控制系统的研究与设计[J].电子制作,2019,55(21):45-47.
〔5〕曹益豪.基于单片机的智能鱼缸温控系统设计[J].机电信息,2019,15(11):11-12.
〔6〕刘伟,林开司,刘安勇.基于物联网的鱼缸智能控制系统设计与实现[J].淮海工学院学报(自然科学版),2016,25(04):1-4.
〔7〕向镍锌,郭平,曹旬.基于STM32智能鱼缸监控系统的设计[J].科技视界,2020,45(31):97-99.