徐昊明,王云龍,楊 俊,陳凱杰
(南京工程學(xué)院 機(jī)械工程學(xué)院,江蘇 南京 211167)
隨著社會(huì)經(jīng)濟(jì)發(fā)展,人們對(duì)美好生活的需要日益增加,使得水族寵物行業(yè)蓬勃發(fā)展。據(jù)《2019中國(guó)寵物消費(fèi)趨勢(shì)報(bào)告》顯示,2020年中國(guó)的寵物行業(yè)市場(chǎng)規(guī)模將達(dá)到2 200億元。其中水族寵物行業(yè)主導(dǎo)線上活體消費(fèi)市場(chǎng),魚缸/水族箱及配套設(shè)備與用品消費(fèi)提速。報(bào)告指出,普通的水族箱已經(jīng)不能滿足市場(chǎng)需要,養(yǎng)寵精細(xì)化、智能化、多元化的趨勢(shì)日漸明顯。
本文設(shè)計(jì)了基于物聯(lián)網(wǎng)的智能魚缸系統(tǒng),選用Arduino MEGA作為主控板,將傳感器收集到的數(shù)據(jù)通過串口發(fā)送給樹莓派。攝像頭模塊將數(shù)據(jù)流發(fā)送給樹莓派,通過基于OpenCV的算法進(jìn)行處理,得出魚類的運(yùn)動(dòng)狀態(tài)。聯(lián)網(wǎng)后的樹莓派將水質(zhì)數(shù)據(jù)和魚類的運(yùn)動(dòng)狀態(tài)發(fā)送到Ubitdots物聯(lián)網(wǎng)平臺(tái)[1-4],用戶可在PC端和移動(dòng)端查看平臺(tái)上的數(shù)據(jù),大大提升了檢測(cè)的便捷性。
本文設(shè)計(jì)的智能魚缸結(jié)構(gòu)示意圖如圖1所示。其中:圖1(a)為魚缸整體結(jié)構(gòu);圖1(b)為剖視圖。
圖1 智能魚缸結(jié)構(gòu)示意圖
該智能魚缸系統(tǒng)以樹莓派3B+作為主控核心,通過多種傳感器對(duì)水質(zhì)指標(biāo)和魚缸圖像進(jìn)行采集,采集到的數(shù)據(jù)由樹莓派實(shí)時(shí)上傳到Ubidots平臺(tái)。用戶可通過固定在魚缸上的顯示屏、手機(jī)APP或?yàn)g覽器查看魚缸情況。由于樹莓派GPIO口被顯示屏占用,故由Arduino MEGA作為下位機(jī)收集來自傳感器的數(shù)據(jù)。當(dāng)溶解氧指標(biāo)或水位指標(biāo)低于規(guī)定指標(biāo)時(shí)[5],Arduino MEGA控制電磁閥或氧氣泵的開關(guān)打開,直到達(dá)到規(guī)定指標(biāo)。系統(tǒng)架構(gòu)如圖2所示。
圖2 系統(tǒng)架構(gòu)
樹莓派是一種基于Linux系統(tǒng)的卡片式電腦。樹莓派3B+的64位四核 ARM Cortex-A53 CPU能夠以高達(dá)1.4 GHz的頻率運(yùn)行,它擁有40個(gè)GPIO引腳以及多種其他類型的接口,便于進(jìn)行開發(fā)和部署。該魚缸系統(tǒng)中樹莓派可以對(duì)攝像頭的圖像進(jìn)行視覺處理,并與Arduino MEGA,Ubidots物聯(lián)網(wǎng)平臺(tái)進(jìn)行通信。
Arduino MEGA是一個(gè)基于ATmega2560微控制器的開發(fā)板。它具有54個(gè)數(shù)字輸入/輸出引腳,16個(gè)模擬輸入,4個(gè)串行端口,16 MHz晶體振蕩器。Arduino MEGA采用類C++語言開發(fā),用戶可在專用的Arduino IDE上編寫程序。本項(xiàng)目中利用Arduino豐富的引腳來獲得傳感器數(shù)據(jù),還通過Arduino控制電磁閥和增氧泵的開關(guān)。
水質(zhì)傳感器模塊包括水位傳感器、溶解氧傳感器、渾濁度傳感器、pH傳感器和溫度傳感器,分別對(duì)魚缸內(nèi)的水位、溶解氧濃度、渾濁度、pH值和水溫進(jìn)行監(jiān)測(cè)。
攝像頭模塊選用1 080P免驅(qū)攝像頭,可以通過USB接口直接與樹莓派連接。攝像頭模塊采集魚缸內(nèi)的圖像并上傳給樹莓派,并分析出魚缸內(nèi)處于運(yùn)動(dòng)狀態(tài)的魚的數(shù)量,從而提醒用戶關(guān)注魚的健康狀態(tài)。
顯示模塊采用配套的3.5英寸樹莓派顯示屏,其成本相對(duì)較低,且體積較小。該顯示屏可以方便地插在樹莓派的GPIO口上,由GPIO口供電和實(shí)現(xiàn)觸摸功能,方便用戶直接觀測(cè)水質(zhì)數(shù)據(jù)和魚的運(yùn)動(dòng)情況。
本智能魚缸采用背景減法[6-9]識(shí)別魚缸內(nèi)運(yùn)動(dòng)的魚,并對(duì)其數(shù)量進(jìn)行統(tǒng)計(jì)。如圖3所示,該程序先從讀取的監(jiān)控圖像中提取背景模型,再通過背景減法的算法將視頻流中的圖像與背景模型做差分。通過對(duì)差分所得的圖像進(jìn)行二值化處理,再對(duì)其進(jìn)行濾波、膨脹等形態(tài)學(xué)處理,即可得到如圖4(a)所示的圖像。如圖4(b)所示,通過邊緣檢測(cè)可以繪制出運(yùn)動(dòng)中的魚的輪廓[10],并統(tǒng)計(jì)出魚的數(shù)量。
圖3 視覺處理過程
圖4 實(shí)際檢測(cè)效果圖
Ubidots是一個(gè)全球性的IoT平臺(tái),它支持各類智能硬件的接入,大大降低了物聯(lián)網(wǎng)系統(tǒng)的開發(fā)成本。開發(fā)者可以方便地在上面建立屬于自己的數(shù)據(jù)庫,設(shè)計(jì)開發(fā)可視化的應(yīng)用界面,并通過網(wǎng)頁、手機(jī)APP等平臺(tái)查看物聯(lián)網(wǎng)系統(tǒng)的各項(xiàng)數(shù)據(jù)信息[11]。開發(fā)者只需在官網(wǎng)上注冊(cè)賬號(hào)即可在Ubidots平臺(tái)上創(chuàng)建項(xiàng)目,并獲得對(duì)應(yīng)的密鑰。Ubidots平臺(tái)支持HTTP和HTTPS兩種網(wǎng)絡(luò)協(xié)議,通過REST API將樹莓派連接到Ubitdots的云平臺(tái)[12]。整個(gè)物聯(lián)網(wǎng)系統(tǒng)啟動(dòng)后,樹莓派、Arduino及各傳感器模塊初始化,傳感器模塊數(shù)據(jù)由Arduino經(jīng)USB串口發(fā)送給樹莓派。在聯(lián)網(wǎng)狀態(tài)下樹莓派內(nèi)存儲(chǔ)的魚缸數(shù)據(jù)信息即可實(shí)時(shí)與云平臺(tái)共享。圖5為魚缸內(nèi)溫度的實(shí)時(shí)變化曲線。
圖5 平臺(tái)效果圖(手機(jī)APP)
本系統(tǒng)在室內(nèi)完成軟硬件搭建和軟件調(diào)試,并進(jìn)行了測(cè)試。試驗(yàn)結(jié)果顯示:顯示屏、瀏覽器和手機(jī)APP均可顯示實(shí)時(shí)數(shù)據(jù),顯示界面美觀,傳感器數(shù)據(jù)更新及時(shí)且準(zhǔn)確(見圖5);攝像頭及視覺處理算法運(yùn)行效果好,控制板運(yùn)行穩(wěn)定;當(dāng)溶解氧濃度和水位低于設(shè)定值時(shí),增氧泵和電磁閥會(huì)自動(dòng)打開,達(dá)到設(shè)定值后自動(dòng)關(guān)閉。
本文利用樹莓派開發(fā)板、Arduino MEGA、Ubidots平臺(tái)構(gòu)建了智能魚缸系統(tǒng),并開發(fā)了基于OpenCV的魚類運(yùn)動(dòng)檢測(cè)算法。該系統(tǒng)可通過傳感器獲得實(shí)時(shí)水質(zhì)數(shù)據(jù)并由顯示器或物聯(lián)網(wǎng)平臺(tái)反饋給用戶。當(dāng)水質(zhì)不合格時(shí)亦可通過電磁閥和增氧泵等設(shè)備進(jìn)行精確調(diào)節(jié),克服了傳統(tǒng)魚缸缺乏反饋環(huán)節(jié)和調(diào)節(jié)環(huán)節(jié)的缺陷。該智能魚缸系統(tǒng)的功能全面、成本低廉、操作簡(jiǎn)便,易于推廣應(yīng)用,可創(chuàng)造較大市場(chǎng)價(jià)值。
物聯(lián)網(wǎng)技術(shù)2021年10期