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