蒲小年 戚慧珊 李智豪 陳澤業(yè) 梁廣彬 唐小煜
摘 要:文中設(shè)計(jì)了一款以STM32F103XE嵌入式系統(tǒng)為核心,將ESP-WROOM-02無(wú)線網(wǎng)絡(luò)模塊作為網(wǎng)絡(luò)接入端,帶減速齒輪的直流電機(jī)及雙門單開結(jié)構(gòu)的料斗為機(jī)械驅(qū)動(dòng)結(jié)構(gòu),以微信小程序?yàn)檫h(yuǎn)程控制端的智能家居系統(tǒng),由此實(shí)現(xiàn)對(duì)家中寵物按計(jì)劃定時(shí)定量自動(dòng)投喂、取食反饋等功能?;讦藽/OS-II和STemWin搭建本地控制界面,以便同時(shí)實(shí)現(xiàn)網(wǎng)絡(luò)遠(yuǎn)程管理和本地設(shè)置計(jì)劃、覆蓋、緩存等功能。實(shí)物化后,經(jīng)過(guò)長(zhǎng)時(shí)間的聯(lián)網(wǎng)測(cè)試表明,該系統(tǒng)已具備較高的穩(wěn)定性,初步具備了部署能力,可成功實(shí)現(xiàn)預(yù)期目標(biāo)。
關(guān)鍵詞:物聯(lián)網(wǎng);智能家居;微信小程序;自動(dòng)控制;嵌入式系統(tǒng)
中圖分類號(hào):TP273 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2018)09-00-03
0 引 言
現(xiàn)代家庭常有飼養(yǎng)寵物的習(xí)慣,但寵物的喂養(yǎng)卻成了一大難題,一方面是飼養(yǎng)者通常需要在工作日外出上班導(dǎo)致無(wú)法及時(shí)喂食;另一方面,人工喂食的量不易控制,飼養(yǎng)者因?yàn)槠渌虑橥浲段挂矔r(shí)常發(fā)生。這些問(wèn)題都極大地影響了人與動(dòng)物的和諧相處,更增添了飼養(yǎng)者的煩惱。為解決以上問(wèn)題,筆者基于STM32嵌入式核心設(shè)計(jì)并制作了一套聯(lián)網(wǎng)自動(dòng)喂食系統(tǒng),不同于以往的脫機(jī)自動(dòng)喂食器,本系統(tǒng)通過(guò)接入互聯(lián)網(wǎng),可有效將設(shè)置計(jì)劃-進(jìn)行投喂-寵物取食-推送通知反饋形成閉環(huán)消息鏈路,實(shí)現(xiàn)對(duì)寵物喂食的自動(dòng)化控制,將熱愛寵物卻忙于工作的“上班族”解救出來(lái)。
1 自動(dòng)喂食系統(tǒng)的設(shè)計(jì)
1.1 整體框架
自動(dòng)喂食系統(tǒng)結(jié)構(gòu)如圖1所示。
1.2 控制部分
自動(dòng)喂食系統(tǒng)的控制部分以STM32F103VET6大容量增強(qiáng)型芯片為核心。該型號(hào)的嵌入式核心為ARM Cortex-M3架構(gòu),具備512 kb FLASH,64 kb RAM,足以支撐STemWin圖形界面的運(yùn)轉(zhuǎn),十分適合移植μC/OS-II嵌入式實(shí)時(shí)系統(tǒng)。此外,該核心還含有4個(gè)用于控制TFT-LCD屏幕的FSMC接口以及80多個(gè)I/O口,能夠十分方便地操作市面上常見的TFT-LCD觸摸屏且不會(huì)造成I/O口緊張。系統(tǒng)會(huì)在上電后初始化網(wǎng)絡(luò)模塊和本地GUI模塊,從服務(wù)器獲取本設(shè)備的計(jì)劃任務(wù),最后保存至本地,即使網(wǎng)絡(luò)斷開,喂食器也能從本地緩存中讀取計(jì)劃進(jìn)行投喂。
1.3 通信部分
無(wú)線網(wǎng)絡(luò)通信芯片采用國(guó)產(chǎn)的ESP-WROOM-02模組,該模組由樂(lè)鑫公司生產(chǎn)?;贓SP8266EX芯片設(shè)計(jì)開發(fā)的物聯(lián)網(wǎng)模組集成有TCP/IP協(xié)議棧,32位低功耗單片機(jī),10 bits ADC及UART,HSPI,I2C,I2S,PWM接口。此外,該模組的長(zhǎng)和寬僅為18 mm及20 mm,易于集成到空間受限的產(chǎn)品當(dāng)中。ESP-WROOM-02的低功耗模式性能優(yōu)異,保持WiFi連接僅需1.2 mW,同時(shí),該模組還配置了16 Mbits的SPI閃存,可用于存儲(chǔ)用戶程序和固件。
1.4 機(jī)械部分
對(duì)于定量出料的喂食器,其出料料斗必須具備精準(zhǔn)控制出料量的能力,因此參考醫(yī)院的氣閘室,設(shè)計(jì)雙門結(jié)構(gòu)料斗從一個(gè)大容器中取料,在保證兩個(gè)方向的門不會(huì)同時(shí)開啟后,即可實(shí)現(xiàn)緩沖及定量取料。
2 自動(dòng)喂食系統(tǒng)的具體實(shí)現(xiàn)
2.1 自動(dòng)喂食系統(tǒng)控制部分的軟件實(shí)現(xiàn)
系統(tǒng)上電后首先將操作系統(tǒng)及圖形化界面(GUI)初始化,若存在已經(jīng)連接過(guò)的無(wú)線網(wǎng)絡(luò)則嘗試自動(dòng)連接,否則等待用戶通過(guò)本地設(shè)置界面連接。聯(lián)網(wǎng)后將生成兩個(gè)進(jìn)程,其中一個(gè)使用HTTP協(xié)議訪問(wèn)指定的PHP頁(yè)面,通過(guò)GET方式獲取當(dāng)前的網(wǎng)絡(luò)時(shí)間和計(jì)劃任務(wù),在此之后將進(jìn)入5 s一次的輪詢狀態(tài)以隨時(shí)感知計(jì)劃變更。另一任務(wù)則是判斷當(dāng)前時(shí)間是否為投喂時(shí)間,如果是則按照設(shè)定的次數(shù)進(jìn)行投喂。自動(dòng)喂食系統(tǒng)控制部分流程如圖2所示。
STM32主控芯片與ESP8266EX模組(即ESP-WROOM-02)通過(guò)串口上的字符串指令——“AT”進(jìn)行控制,當(dāng)系統(tǒng)初始化完畢后,STM32將發(fā)送指令使無(wú)線網(wǎng)絡(luò)模塊進(jìn)入透?jìng)髂J?,此時(shí)等效于主控芯片直接與服務(wù)器通信,可快速傳遞數(shù)據(jù),包括飼料余量、取食狀態(tài)等。自動(dòng)喂食系統(tǒng)狀態(tài)流程如圖3所示。
2.2 自動(dòng)喂食系統(tǒng)的電路實(shí)現(xiàn)
2.2.1 ESP-WROOM-02電路設(shè)計(jì)
自動(dòng)喂食系統(tǒng)通信模塊電路如圖4所示。本電路將ESP-WROOM-02的多個(gè)I/O口引出,并將TXD/RXD串口與CH340G連接,實(shí)現(xiàn)在電腦等上位機(jī)中進(jìn)行程序燒錄及協(xié)議分析。ASM1117為正向低壓降LDO穩(wěn)壓電源,量產(chǎn)時(shí)間早,價(jià)格低廉,性能穩(wěn)定,常用于輸出電流小于1 A的場(chǎng)景,本系統(tǒng)將其作為ESP-WROOM-02無(wú)線網(wǎng)絡(luò)模塊的電源。
2.2.2 喂食驅(qū)動(dòng)電路設(shè)計(jì)
喂食驅(qū)動(dòng)電路采用四IR2104芯片及IR7843場(chǎng)效應(yīng)管搭建雙H橋進(jìn)行驅(qū)動(dòng)。IR2104是由美國(guó)International Rectifier公司生產(chǎn)的半橋驅(qū)動(dòng)器,可通過(guò)控制輸入PWM信號(hào)的占空比來(lái)控制驅(qū)動(dòng)輸出的電流大小,通過(guò)IN1,IN2的反轉(zhuǎn)控制電機(jī)的轉(zhuǎn)動(dòng)方向。自動(dòng)喂食系統(tǒng)驅(qū)動(dòng)模塊電路如圖5所示,具體組合方式見表1所列。
2.3 自動(dòng)喂食系統(tǒng)的機(jī)械實(shí)現(xiàn)
初始狀態(tài)時(shí),由于儲(chǔ)糧容器中貓糧的重力作用,料斗處于水平狀態(tài),并與瓶口緊貼,使得飼料不會(huì)外漏。預(yù)備存儲(chǔ)時(shí)的投喂料斗如圖6所示。
投料時(shí),料斗后退,由于斜板的阻擋作用,料斗將順勢(shì)上移并開口向下,又因?yàn)榱隙废路降拈_口并沒(méi)有阻擋,因此料斗內(nèi)的飼料可順利下落。此時(shí)料斗結(jié)構(gòu)的擋板同時(shí)后退,封閉儲(chǔ)糧瓶口,使得儲(chǔ)糧容器飼料不外漏。出料時(shí)投喂料斗示意圖如圖7所示。通過(guò)反復(fù)設(shè)計(jì)和調(diào)整,將每次滿載的料斗所能承載的重量設(shè)定為M克,這樣就可以得到投喂量Efeed、容器內(nèi)飼料余量Eremain與電機(jī)運(yùn)行次數(shù)C的關(guān)系:
使用以上兩式可以計(jì)算出本次投喂電機(jī)需要運(yùn)行的次數(shù)及容器內(nèi)的余量,在飼料余量不足時(shí)通知飼養(yǎng)者,同時(shí)用于程序計(jì)算以顯示余量。
2.4 自動(dòng)喂食系統(tǒng)的遠(yuǎn)程控制端
本系統(tǒng)的遠(yuǎn)程控制端使用微信小程序?qū)崿F(xiàn)。每套喂食器擁有唯一的PIN碼和對(duì)應(yīng)SN碼,用戶注冊(cè)賬號(hào)后,輸入設(shè)備的SN和PIN碼,通過(guò)HASH計(jì)算無(wú)誤后成功綁定該設(shè)備,此后該設(shè)備的所有操作及狀態(tài)都會(huì)與綁定的微信號(hào)關(guān)聯(lián),包括投喂、取食、余量不足等信息都會(huì)推送至綁定的用戶微信,讓飼養(yǎng)者隨時(shí)掌握自動(dòng)喂食系統(tǒng)的狀態(tài)。每個(gè)用戶可以綁定多套設(shè)備,分別設(shè)置不同的計(jì)劃,方便使用不同食盆的寵物按照自己的習(xí)慣進(jìn)食。喂食系統(tǒng)的遠(yuǎn)程控制端界面如圖8所示。
2.5 自動(dòng)喂食系統(tǒng)的實(shí)物測(cè)試
根據(jù)上述設(shè)計(jì)方法,我們制作了如圖9所示的實(shí)物。其中上部為飼料容器,左中部為L(zhǎng)CD屏幕及開發(fā)板,右中部為出料斜坡,左下方為ESP-WROOM2-02無(wú)線網(wǎng)絡(luò)模塊,右下方為接料容器,寵物將直接在該容器中進(jìn)食。圖10所示為本地設(shè)置所用的GUI界面,使用者可以直接觸屏控制,使用自行編寫的軟鍵盤進(jìn)行輸入。
完成實(shí)物制作后,我們進(jìn)行了一系列的出料穩(wěn)定性測(cè)試。出料穩(wěn)定性主要由料斗等出料機(jī)械設(shè)計(jì)決定,鑒于存放飼料的容器有兩種邊界狀態(tài),即滿載和空載,而實(shí)際應(yīng)用時(shí)因?yàn)槲故称鲿?huì)及時(shí)提醒,所以正常情況下不會(huì)出現(xiàn)完全空載的情況,使用者加料時(shí)通常也不會(huì)完全填滿容器,所以我們選取了接近臨界狀態(tài)的兩種情況進(jìn)行出料穩(wěn)定性測(cè)試,通過(guò)設(shè)定不同的出料量,比較實(shí)際出料量和理論出料量的差別并計(jì)算其誤差百分比。穩(wěn)定性測(cè)試結(jié)果見表2所列。
由上文可知,系統(tǒng)在容器較滿時(shí)更加穩(wěn)定,單次出料量較大。
3 結(jié) 語(yǔ)
自動(dòng)寵物喂食系統(tǒng)以雙門單開結(jié)構(gòu)的出料機(jī)械結(jié)構(gòu)為基礎(chǔ),以高性能STM32嵌入式芯片為核心,以ESP-WROOM-02無(wú)線網(wǎng)絡(luò)模塊為關(guān)鍵拓展,以微信小程序?yàn)橛脩繇攲咏缑妫瑥牡讓拥巾攲?、從具體到抽象,實(shí)現(xiàn)了本系統(tǒng)的所有預(yù)期功能,適用具體人群的具體問(wèn)題,具有一定的社會(huì)經(jīng)濟(jì)效益。
參考文獻(xiàn)
[1]凱文.R.福爾. TCP/IP詳解(卷一)[M]. 北京:機(jī)械工業(yè)出版社,2017.
[2]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,2013.
[3]榮蓉.實(shí)戰(zhàn)微信小程序(第六版)[M].北京:電子工業(yè)出版社,2017.
[4]楊家軍.機(jī)械原理(第2版)[M].北京:北京大學(xué)出版社,2010.
[5]王田苗.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)(第3版)[M].北京:清華大學(xué)出版社,2007.
[6]周鼎,曹以龍.基于Web版微信與ZigBee網(wǎng)絡(luò)的智能家居設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2018,8(1):105-107.
[7]鄭艷華,蔡佳林.一種基于微信平臺(tái)的智能家居系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2016,6(12):45-47.
[8]張雪云,牟艷,張九博.基于微信小程序的電源監(jiān)測(cè)管理系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2017(12):98-102.