劉大川 李釗合 孫淑杰 袁馳 張志佳
摘 要:本文基于單片機(jī)技術(shù),設(shè)計(jì)了一套基于時(shí)間控制與多線程技術(shù)的水族箱智能控制系統(tǒng)。通過一臺arduino mega 2560 單片機(jī)作為系統(tǒng)的處理器,控制控溫模塊,換水模塊,時(shí)間顯示模塊,自動喂食模塊,水位控制模塊等??傮w基于時(shí)間控制,用時(shí)鐘芯片提供整體的系統(tǒng)時(shí)間,系統(tǒng)按照預(yù)先設(shè)定好的時(shí)間順序依次運(yùn)行,除非觸發(fā)中斷點(diǎn),否則無限循環(huán)。本控制系統(tǒng)功能多、成本低,能夠?qū)崿F(xiàn)對水族箱的智能控制。
關(guān)鍵詞:水族箱;智能控制;單片機(jī);多線程
中圖分類號:TP23 文獻(xiàn)標(biāo)識碼: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引 言
隨著人們生活水平的日益提高,家用水族產(chǎn)業(yè)規(guī)模的年增長率達(dá)到13.8%,且有逐年遞增的趨勢,而現(xiàn)有的智能水族箱大多智能化水平低,仍需要人們投入大量精力去管理,并且價(jià)格昂貴,結(jié)構(gòu)復(fù)雜,容易損壞,令保持一個(gè)適宜水族生活的環(huán)境成為一件非常耗費(fèi)精力的工作。
由此可見,智能水族箱的商業(yè)前景十分廣闊。市面上針對水族生活環(huán)境的凈化和改善的設(shè)備有很多[1],目前市場上常用的魚缸控制系統(tǒng)有:過濾器、加熱器、增氧泵等改善水質(zhì)的設(shè)備,但是卻大多是非智能化單獨(dú)工作的器件,同時(shí)多個(gè)單一器件機(jī)械化的組裝之后,也存在一定的資源浪費(fèi),如果僅僅把多個(gè)單獨(dú)的設(shè)備組成一套多功能的魚缸控制系統(tǒng),需要投入大量費(fèi)用[2]。本系統(tǒng)正是從智能控制的角度出發(fā),用集成化的開發(fā)思路,集自動加熱、水位加換水控制、供氧、自動喂食、定時(shí)照明于一體[3-5]。現(xiàn)有市場上的智能水族箱產(chǎn)品大多是單一工作的獨(dú)立系統(tǒng),僅由簡單的電路控制,實(shí)現(xiàn)基礎(chǔ)的控制,并不能滿足市場的需求。本系統(tǒng)以一臺arduino mega 2560單片機(jī)為核心,硬件設(shè)備為基礎(chǔ),軟件控制為方式,實(shí)現(xiàn)對魚缸的集中控制和管理。系統(tǒng)的設(shè)計(jì)是在充分分析調(diào)查現(xiàn)有各類水族箱控制設(shè)備后進(jìn)行的,本文從系統(tǒng)總體結(jié)構(gòu)、硬件、軟件等方面進(jìn)行設(shè)計(jì)與論述。
1系統(tǒng)總體設(shè)計(jì)
系統(tǒng)總體基于時(shí)間順序工作,其下分為以下幾個(gè)功能模塊:溫度控制模塊,水位控制過濾模塊,自動/定時(shí)喂食模塊,時(shí)間顯示模塊,定時(shí)/自動照明模塊,定時(shí)增氧系統(tǒng)等模塊,如圖1所示。這些子系統(tǒng)均受單片機(jī)控制,具有獨(dú)立的信號檢測輸入以及模擬信號輸出功能,結(jié)合單片機(jī)自身的數(shù)據(jù)儲存電路,復(fù)位電路,運(yùn)算電路,以及數(shù)碼管顯示電路,共同集成成為水族箱智能控制系統(tǒng)。
中央處理系統(tǒng)
圖1 系統(tǒng)模塊示意圖
Fig.1 System module schematic
系統(tǒng)的控制對象為水族箱,目的為實(shí)現(xiàn)水族箱的智能控制,提供自動管理的水族箱智能控制系統(tǒng),設(shè)計(jì)時(shí)涉及的參數(shù)有水面高度、水溫、環(huán)境光照強(qiáng)度等。各種參數(shù)及其處理機(jī)制如表1所示。
表1 系統(tǒng)主要參數(shù)及處理機(jī)制
Tab.1 Main parameters and system processing mechanism
系統(tǒng)參數(shù)
相應(yīng)的處理機(jī)制
水溫
多點(diǎn)采集,分析后控制加熱棒的工作狀態(tài)
水面高度
通過判斷是否超限來控制兩個(gè)水泵的開閉情況,從而控制水位
喂食時(shí)間
通過獲取環(huán)境時(shí)間并比對來決定是否喂食
環(huán)境時(shí)間
時(shí)鐘模塊獲取環(huán)境時(shí)間交由8位數(shù)碼管模塊
環(huán)境光照強(qiáng)度
在光照低時(shí)打開燈光(只在天黑后開啟)
增氧時(shí)間
通過獲取環(huán)境時(shí)間并比對來決定是否增氧
本系統(tǒng)在使用過程中還有部分參數(shù)可以設(shè)置,具體有以下幾個(gè):定時(shí)照明時(shí)間,定時(shí)增氧時(shí)間,自動喂食時(shí)間和喂食量,這些參數(shù)可以通過手機(jī)使用藍(lán)牙連接通信系統(tǒng),在輸入伴隨系統(tǒng)提供的口令后進(jìn)行設(shè)置,設(shè)置后對應(yīng)系統(tǒng)自動按照參數(shù)設(shè)置進(jìn)行運(yùn)行,參數(shù)可隨時(shí)通過手機(jī)進(jìn)行修改。
本系統(tǒng)智能水族箱及控制系統(tǒng)布置如圖2所示。
圖2 智能魚缸及控制系統(tǒng)布置示意圖
Fig.2 Aquarium and intelligent control system schematic diagram layout
2 硬件設(shè)計(jì)
系統(tǒng)的硬件設(shè)計(jì)分為數(shù)據(jù)采集、中央處理、通信三個(gè)主要部分,具體設(shè)計(jì)如下。
數(shù)據(jù)采集部分包括溫度采集、水位采集、光強(qiáng)度采集,其中溫度采集使用多個(gè)DS18B20模塊進(jìn)行多點(diǎn)溫度信息采集,水位采集使用HC-SR04超聲探測模塊進(jìn)行高度信息采集。光強(qiáng)度通過一個(gè)BH1750FVI光強(qiáng)感應(yīng)模塊監(jiān)測,使用的模塊誤差均不超過測量值的1%。
中央處理部分使用1臺arduino mega 2560單片機(jī)作為中央處理器,該單片機(jī)以一個(gè)ATmega16u2為內(nèi)核,其主要特點(diǎn)如下:具有54個(gè)I/O接口,4路UART,1路I2C總線,3種供電方式,4KB的EEPROM,其電路圖如圖3所示。在系統(tǒng)中使用其9個(gè)引腳作為輸入腳來接收傳感器采集的數(shù)據(jù),使用13個(gè)引腳作為輸出腳控制效應(yīng)裝置,另使用一個(gè)引腳作為5V穩(wěn)壓電源輸出。
圖3 Arduino mega 2560 電路圖
Fig.3 Arduino mega 2560 circuit diagram
通信部分用一個(gè)HC-05主從一體藍(lán)牙模塊來實(shí)現(xiàn),該模塊為民用級模塊傳輸距離大約10cm-10m,符合系統(tǒng)利用手機(jī)藍(lán)牙通訊及實(shí)現(xiàn)相應(yīng)控制的需求,使用UART協(xié)議與單片機(jī)實(shí)施串口通信,模塊由中央處理系統(tǒng)統(tǒng)一供電,在檢測到設(shè)備接入后將信息傳至單片機(jī)進(jìn)行分析,在密碼匹配正確后允許進(jìn)行用戶操作。HC-05的電路圖如圖4所示。
圖4 HC-05藍(lán)牙模塊電路圖
Fig.4 HC-05 Bluetooth module circuit diagram
3 軟件設(shè)計(jì)
系統(tǒng)軟件流程以時(shí)間控制為核心,分為系統(tǒng)運(yùn)行時(shí)間和環(huán)境時(shí)間兩個(gè)部分。流程如圖5所示。其中系統(tǒng)運(yùn)行時(shí)間部分運(yùn)用了中斷控制思想,定時(shí)讀取傳感器采集的信息交由單片機(jī)運(yùn)算,這些設(shè)備只受系統(tǒng)運(yùn)行時(shí)間影響,與環(huán)境時(shí)間無關(guān),溫度設(shè)備5s采集一次,其他設(shè)備均10s采集一次。
環(huán)境時(shí)間部分主要為數(shù)碼管提供時(shí)間信息,同時(shí),控制需要定時(shí)開啟的設(shè)備。運(yùn)行兩個(gè)時(shí)間,由于搶占,會大大增加沖突可能,降低單片機(jī)的運(yùn)算效能,甚至導(dǎo)致死機(jī),所以系統(tǒng)利用了arduino mega2560位多線程芯片的好處,設(shè)計(jì)了多線程運(yùn)行,基于時(shí)間片輪轉(zhuǎn)調(diào)度算法,讓兩個(gè)時(shí)間以快速交替運(yùn)行的方式模擬同時(shí)運(yùn)行,這樣減小了運(yùn)行的沖突發(fā)生幾率。系統(tǒng)流程如圖5所示。
開始
開始環(huán)境時(shí)間獲取
開始系統(tǒng)運(yùn)行計(jì)時(shí)
否
否 與設(shè)定時(shí)間進(jìn)行比對
判斷是否到達(dá)中斷點(diǎn) 是否相同
是
是
執(zhí)行中斷函數(shù) 執(zhí)行設(shè)定函數(shù)
判斷是否 否 判斷是否 否
有結(jié)束操作 有結(jié)束操作
是 是
結(jié)束
圖5 軟件流程圖
Fig.5 Software flow chart
系統(tǒng)軟件設(shè)計(jì)中存在中斷控制、多線程控制、用戶控制與反饋、采集頻度等幾個(gè)關(guān)鍵問題。具體可做如下論述。
(1)中斷控制。系統(tǒng)的中斷控制是指在到達(dá)系統(tǒng)運(yùn)行的特定時(shí)間點(diǎn)時(shí),系統(tǒng)中止計(jì)時(shí)并切入中斷函數(shù)中,待運(yùn)行中斷函數(shù)后,系統(tǒng)重新返回計(jì)時(shí),同時(shí)繼續(xù)運(yùn)行,在進(jìn)行軟件設(shè)計(jì)時(shí),并未將各個(gè)數(shù)據(jù)采集作為主程序,若將數(shù)據(jù)采集作為主程序,則會導(dǎo)致系統(tǒng)時(shí)刻都在進(jìn)行數(shù)據(jù)采集,導(dǎo)致高速刷新,影響程序的流暢運(yùn)行,直至死機(jī),雖然用延時(shí)處理的方法可以解決該問題,但是這樣卻大大增加了程序的占空比,將顯著影響處理效率和處理速度,容易導(dǎo)致處理延誤從而造成錯(cuò)誤。
(2)多線程控制。系統(tǒng)使用多線程控制和中斷控制并存的原因是系統(tǒng)并未使用單片機(jī)自帶的時(shí)鐘芯片而是使用了外接的時(shí)鐘模塊ds1307,這樣可以獲取年月日時(shí)分秒信息,從而做出獨(dú)立于系統(tǒng)運(yùn)行時(shí)間的真實(shí)時(shí)間,單片機(jī)多線程的基礎(chǔ)是時(shí)間片輪轉(zhuǎn)調(diào)度算法,這是最古老公平的算法,由于系統(tǒng)較為簡單,并不涉及線程搶占和優(yōu)先級操作。采用多線程可有效避免系統(tǒng)運(yùn)行時(shí)間計(jì)算和時(shí)鐘模塊提供的時(shí)間計(jì)算合理分配內(nèi)存不沖突,時(shí)鐘模塊在接入后即開始工作,如果沒有多線程會很快使時(shí)鐘模塊的效應(yīng)器8位數(shù)碼管的緩存溢出,從而使得數(shù)碼管卡住,無法顯示。
(3)用戶控制與反饋。系統(tǒng)由于受單片機(jī)運(yùn)算能力所限,只向用戶提供一部分控制功能,這種部分開放的方式可以有效避免因誤操作或惡意操作所導(dǎo)致的系統(tǒng)故障,同時(shí),系統(tǒng)并未考慮使用過多的外部顯示設(shè)備,而是選擇使用手機(jī)顯示,這樣可以減少成本,同時(shí)減輕了系統(tǒng)的處理壓力,反饋的模式采用基本的詢問—回答模式。在處理反饋和控制操作前,用戶需輸入實(shí)現(xiàn)設(shè)定的口令,但鑒于系統(tǒng)安全級別不高,因此口令不進(jìn)行加密,可直接使用明文存儲,這樣可以一定程度避免因惡意連接而導(dǎo)致的長時(shí)間占用。
(4)關(guān)于采集頻度低的問題。系統(tǒng)屬于家居設(shè)備應(yīng)用,對數(shù)據(jù)的需求量小,要求的實(shí)時(shí)程度低,沒有必要進(jìn)行過度高頻的信號采集,所以系統(tǒng)確定的信號采集頻度較低。另外,本系統(tǒng)僅采用成本較低、能耗較小的單片機(jī)進(jìn)行控制。
4結(jié)束語
以arduino mega 2560單片機(jī)為核心的水族箱智能控制系統(tǒng)可以使水族箱獲得自動控制溫度、自動控制水位、過濾、自動喂食、時(shí)間顯示、燈光控制等智能控制功能,有效地降低了總體成本,并明顯提升了水族箱的智能度,目前該系統(tǒng)仍有較大的可擴(kuò)充性,具有較好的理論參考和使用價(jià)值。
參考文獻(xiàn):
[1]葛華.魚缸智能控制的設(shè)計(jì)與開發(fā)[J].科技資訊,2006(36):199-200.
[2]丁惠忠.觀賞魚缸智能控制系統(tǒng)的設(shè)計(jì)[D].蘇州:蘇州大學(xué),2007.
[3]陳杰,鄭純軍,丁開迪,等.基于ARM的智能魚缸控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].
軟件工程師,2013(18):44-46.
[4]王珍娟,宋正剛.魚缸智能控制器的設(shè)計(jì)[J]甘肅科技,2012.28(9):72-74.
[5]李克天,劉吉安,印波,等. 基于AT89S52單片機(jī)的PID恒溫控制系統(tǒng)的開發(fā)和實(shí)驗(yàn)研究[J].機(jī)電工程技術(shù),2009.38(9):52-54.
1 基金項(xiàng)目:2013年遼寧省大學(xué)生創(chuàng)新創(chuàng)業(yè)基金(XX),沈陽工業(yè)大學(xué)創(chuàng)新創(chuàng)業(yè)項(xiàng)目(沈工大教發(fā)[2013]62號)。
作者介紹:劉大川(1995-),男,遼寧丹東人,本科生,主要研究方向: UI設(shè)計(jì)、軟件算法;
李釗合(1995-),男,遼寧大連人,本科生,主要研究方向: 嵌入式;
孫淑杰(1970-),女,遼寧瓦房店人,碩士,講師,主要研究方向:數(shù)據(jù)庫信息系統(tǒng)、移動互聯(lián)。