水族箱智能控制系统的设计与实现
2015-04-29刘大川李钊合孙淑杰袁驰张志佳
刘大川 李钊合 孙淑杰 袁驰 张志佳
摘 要:本文基于单片机技术,设计了一套基于时间控制与多线程技术的水族箱智能控制系统。通过一台arduino mega 2560 单片机作为系统的处理器,控制控温模块,换水模块,时间显示模块,自动喂食模块,水位控制模块等。总体基于时间控制,用时钟芯片提供整体的系统时间,系统按照预先设定好的时间顺序依次运行,除非触发中断点,否则无限循环。本控制系统功能多、成本低,能够实现对水族箱的智能控制。
关键词:水族箱;智能控制;单片机;多线程
中图分类号:TP23 文献标识码:A 文章编号:2095-2163(2015-)02-
Design and Implementation of Aquatic Animals Box Intelligent Control System
LIU Dachuan, LI Zhaohe, SUN Shujie, YUAN Chi, ZHANG Zhijia
(School of Software, Shenyang University of Technology, Shenyang 110003,China)
Abstract:Based on the single chip computer, this paper described the design of a fish tank intelligent control system basing on time control and multithreading technology. It adopts an arduino mega 2560 single chip computer as a processor of system to control temperature modular, water changing modular, time display modular, water condition modular and other modular. Totally, the system is based on time control, which uses a clock chip to provide the whole system time, and the system will run in the preset sequence. Unless actuate the trigger point, it will cycle infinitely. The system has the advantages of various functions and low cost, and also can realize the intelligent control of aquarium.
Keywords: Aquarium; Intelligent control; Microcontrollers; Multi-thread
0引 言
随着人们生活水平的日益提高,家用水族产业规模的年增长率达到13.8%,且有逐年递增的趋势,而现有的智能水族箱大多智能化水平低,仍需要人们投入大量精力去管理,并且价格昂贵,结构复杂,容易损坏,令保持一个适宜水族生活的环境成为一件非常耗费精力的工作。
由此可见,智能水族箱的商业前景十分广阔。市面上针对水族生活环境的净化和改善的设备有很多[1],目前市场上常用的鱼缸控制系统有:过滤器、加热器、增氧泵等改善水质的设备,但是却大多是非智能化单独工作的器件,同时多个单一器件机械化的组装之后,也存在一定的资源浪费,如果仅仅把多个单独的设备组成一套多功能的鱼缸控制系统,需要投入大量费用[2]。本系统正是从智能控制的角度出发,用集成化的开发思路,集自动加热、水位加换水控制、供氧、自动喂食、定时照明于一体[3-5]。现有市场上的智能水族箱产品大多是单一工作的独立系统,仅由简单的电路控制,实现基础的控制,并不能满足市场的需求。本系统以一台arduino mega 2560单片机为核心,硬件设备为基础,软件控制为方式,实现对鱼缸的集中控制和管理。系统的设计是在充分分析调查现有各类水族箱控制设备后进行的,本文从系统总体结构、硬件、软件等方面进行设计与论述。
1系统总体设计
系统总体基于时间顺序工作,其下分为以下几个功能模块:温度控制模块,水位控制过滤模块,自动/定时喂食模块,时间显示模块,定时/自动照明模块,定时增氧系统等模块,如图1所示。这些子系统均受单片机控制,具有独立的信号检测输入以及模拟信号输出功能,结合单片机自身的数据储存电路,复位电路,运算电路,以及数码管显示电路,共同集成成为水族箱智能控制系统。
中央处理系统
图1 系统模块示意图
Fig.1 System module schematic
系统的控制对象为水族箱,目的为实现水族箱的智能控制,提供自动管理的水族箱智能控制系统,设计时涉及的参数有水面高度、水温、环境光照强度等。各种参数及其处理机制如表1所示。
表1 系统主要参数及处理机制
Tab.1 Main parameters and system processing mechanism
系统参数
相应的处理机制
水溫
多点采集,分析后控制加热棒的工作状态
水面高度
通过判断是否超限来控制两个水泵的开闭情况,从而控制水位
喂食时间
通过获取环境时间并比对来决定是否喂食
环境时间
时钟模块获取环境时间交由8位数码管模块
环境光照强度
在光照低时打开灯光(只在天黑后开启)
增氧时间
通过获取环境时间并比对来决定是否增氧
本系统在使用过程中还有部分参数可以设置,具体有以下几个:定时照明时间,定时增氧时间,自动喂食时间和喂食量,这些参数可以通过手机使用蓝牙连接通信系统,在输入伴随系统提供的口令后进行设置,设置后对应系统自动按照参数设置进行运行,参数可随时通过手机进行修改。
本系统智能水族箱及控制系统布置如图2所示。
图2 智能鱼缸及控制系统布置示意图
Fig.2 Aquarium and intelligent control system schematic diagram layout
2 硬件设计
系统的硬件设计分为数据采集、中央处理、通信三个主要部分,具体设计如下。
数据采集部分包括温度采集、水位采集、光强度采集,其中温度采集使用多个DS18B20模块进行多点温度信息采集,水位采集使用HC-SR04超声探测模块进行高度信息采集。光强度通过一个BH1750FVI光强感应模块监测,使用的模块误差均不超过测量值的1%。
中央处理部分使用1台arduino mega 2560单片机作为中央处理器,该单片机以一个ATmega16u2为内核,其主要特点如下:具有54个I/O接口,4路UART,1路I2C总线,3种供电方式,4KB的EEPROM,其电路图如图3所示。在系统中使用其9个引脚作为输入脚来接收传感器采集的数据,使用13个引脚作为输出脚控制效应装置,另使用一个引脚作为5V稳压电源输出。
图3 Arduino mega 2560 电路图
Fig.3 Arduino mega 2560 circuit diagram
通信部分用一个HC-05主从一体蓝牙模块来实现,该模块为民用级模块传输距离大约10cm-10m,符合系统利用手机蓝牙通讯及实现相应控制的需求,使用UART协议与单片机实施串口通信,模块由中央处理系统统一供电,在检测到设备接入后将信息传至单片机进行分析,在密码匹配正确后允许进行用户操作。HC-05的电路图如图4所示。
图4 HC-05蓝牙模块电路图
Fig.4 HC-05 Bluetooth module circuit diagram
3 软件设计
系统软件流程以时间控制为核心,分为系统运行时间和环境时间两个部分。流程如图5所示。其中系统运行时间部分运用了中断控制思想,定时读取传感器采集的信息交由单片机运算,这些设备只受系统运行时间影响,与环境时间无关,温度设备5s采集一次,其他设备均10s采集一次。
环境时间部分主要为数码管提供时间信息,同时,控制需要定时开启的设备。运行两个时间,由于抢占,会大大增加冲突可能,降低单片机的运算效能,甚至导致死机,所以系统利用了arduino mega2560位多线程芯片的好处,设计了多线程运行,基于时间片轮转调度算法,让两个时间以快速交替运行的方式模拟同时运行,这样减小了运行的冲突发生几率。系统流程如图5所示。
开始
开始环境时间获取
开始系统运行计时
否
否 与设定时间进行比对
判断是否到达中断点 是否相同
是
是
执行中断函数 执行设定函数
判断是否 否 判断是否 否
有结束操作 有结束操作
是 是
结束
图5 软件流程图
Fig.5 Software flow chart
系统软件设计中存在中断控制、多线程控制、用户控制与反馈、采集频度等几个关键问题。具体可做如下论述。
(1)中断控制。系统的中断控制是指在到达系统运行的特定时间点时,系统中止计时并切入中断函数中,待运行中断函数后,系统重新返回计时,同时继续运行,在进行软件设计时,并未将各个数据采集作为主程序,若将数据采集作为主程序,则会导致系统时刻都在进行数据采集,导致高速刷新,影响程序的流畅运行,直至死机,虽然用延时处理的方法可以解决该问题,但是这样却大大增加了程序的占空比,将显著影响处理效率和处理速度,容易导致处理延误从而造成错误。
(2)多线程控制。系统使用多线程控制和中断控制并存的原因是系统并未使用单片机自带的时钟芯片而是使用了外接的时钟模块ds1307,这样可以获取年月日时分秒信息,从而做出独立于系统运行时间的真实时间,单片机多线程的基础是时间片轮转调度算法,这是最古老公平的算法,由于系统较为简单,并不涉及线程抢占和优先级操作。采用多线程可有效避免系统运行时间计算和时钟模块提供的时间计算合理分配内存不冲突,时钟模块在接入后即开始工作,如果没有多线程会很快使时钟模块的效应器8位数码管的缓存溢出,从而使得数码管卡住,无法显示。
(3)用户控制与反馈。系统由于受单片机运算能力所限,只向用户提供一部分控制功能,这种部分开放的方式可以有效避免因误操作或恶意操作所导致的系统故障,同时,系统并未考虑使用过多的外部显示设备,而是选择使用手机显示,这样可以减少成本,同时减轻了系统的处理压力,反馈的模式采用基本的询问—回答模式。在处理反馈和控制操作前,用户需输入实现设定的口令,但鉴于系统安全级别不高,因此口令不进行加密,可直接使用明文存储,这样可以一定程度避免因恶意连接而导致的长时间占用。
(4)关于采集频度低的问题。系统属于家居设备应用,对数据的需求量小,要求的实时程度低,没有必要进行过度高频的信号采集,所以系统确定的信号采集频度较低。另外,本系统仅采用成本较低、能耗较小的单片机进行控制。
4结束语
以arduino mega 2560单片机为核心的水族箱智能控制系统可以使水族箱获得自动控制温度、自动控制水位、过滤、自动喂食、时间显示、灯光控制等智能控制功能,有效地降低了总体成本,并明显提升了水族箱的智能度,目前该系统仍有较大的可扩充性,具有较好的理论参考和使用价值。
参考文献:
[1]葛华.鱼缸智能控制的设计与开发[J].科技资讯,2006(36):199-200.
[2]丁惠忠.观赏鱼缸智能控制系统的设计[D].苏州:苏州大学,2007.
[3]陈杰,郑纯军,丁开迪,等.基于ARM的智能鱼缸控制系统的设计与实现[J].
软件工程师,2013(18):44-46.
[4]王珍娟,宋正刚.鱼缸智能控制器的设计[J]甘肃科技,2012.28(9):72-74.
[5]李克天,刘吉安,印波,等. 基于AT89S52单片机的PID恒温控制系统的开发和实验研究[J].机电工程技术,2009.38(9):52-54.
1 基金項目:2013年辽宁省大学生创新创业基金(XX),沈阳工业大学创新创业项目(沈工大教发[2013]62号)。
作者介绍:刘大川(1995-),男,辽宁丹东人,本科生,主要研究方向: UI设计、软件算法;
李钊合(1995-),男,辽宁大连人,本科生,主要研究方向: 嵌入式;
孙淑杰(1970-),女,辽宁瓦房店人,硕士,讲师,主要研究方向:数据库信息系统、移动互联。