【IoT畢業設計】STM32開發板+機智雲IoT+實現智能鴿籠控制
摘要:在賽鴿養殖中,飼養者因爲工作生活繁忙等原因將無法按時餵養鴿子,同時賽鴿的養殖往往需要直接接觸鴿子羽毛排泄物等,衛生問題尤爲突出,選育優秀乳鴿的賽鴿計時設備價格高昂。爲了解決上述問題,讓人員可以及時瞭解鴿舍的情況,提出了一種利用物聯網技術飼養選育賽鴿的方法。
基於機智雲物聯網平臺的互聯鴿籠控制系統,採用STM32L476RG爲主控芯片,esp8266WiFi模塊與雲端的通信,將採集到的溫溼度、歸巢時間、告警信號等發送到手機App端,同時在鴿子歸巢時通過撥打人員電話,在斷網的情況下可以進行按鍵操作。實驗表明,通過物聯網控制的方式能夠對賽鴿進行有效的飼養選育。
引言
隨着賽鴿競技運動的不斷髮展,越來越多的普通家庭開始飼養賽鴿,由於很多業餘賽鴿愛好者平常無法及時飼養賽鴿導致賽鴿大量死亡,在餵養賽鴿時需要進入鴿籠中與鴿子的糞便和羽毛等直接接觸,衛生問題令人堪憂。在優秀乳鴿的選擇上,通常採用給鴿子佩戴高昂的賽鴿計時裝置。此外,鴿舍內的溫溼度直接影響着賽鴿的健康,需要及時對鴿舍內的溫溼度進行調節。
研究可知,採用互聯網技術和STM32實現設備的智能化管理成爲目前學界的一個熱點方向[1-2]。基於此,本文提出了一種利用物聯網技術對鴿舍內的裝置進行控制的方法,該系統以STM32L476RG爲主控芯片,利用機智雲物聯網平臺進行數據的傳輸交換,設計了專爲賽鴿進籠檢測的裝置,將WiFi模塊與SIM800C通信模塊相結合達到賽鴿歸巢時間的計時與通知,採用DHT11模塊和風扇模塊組成溫溼度的調節系統,在手機App端可以實時查看溫溼度變動和控制設備狀態,同時還能在按鍵模塊上對設備進行操作,在電腦端可以登錄機智雲官網查看數據點歷史記錄。
1總體方案設計
本文設計了一種基於機智雲Aiot開發平臺的多功能鴿籠控制系統,系統主要由溫溼度傳感器、步進電機、光電傳感器模塊、WiFi模塊、控制器、繼電器模塊、風扇構成。用戶通過手機App軟件控制鴿籠門的開關,手動和自動地餵食、喂水,同時通過溫溼度傳感器模塊監控鴿舍內的溫溼度的情況,將鴿籠內的環境數據上傳至機智雲平臺。當溫溼度超過設定值時,App頁面端會產生告警標誌。
如果用戶需要對鴿子進行訓飛計時,文中爲此專門研發了一種可安放的進籠檢測裝置,當進行單鴿訓飛時,只要將鴿籠門打開將裝置擺放在鴿籠門口就可以進行歸巢時間的檢測,將鴿子歸巢的時間傳至手機App端,並且通過GSM模塊給訓飛人員撥打電話。爲了防止斷網導致鴿籠設備無法正常工作,訓飛人員可以通過機智雲網站方便地查看鴿舍內部的歷史數據。此外,本文中還設計了按鍵模塊,可以對開關鴿籠門和喂水、餵食進行按鍵操作。綜上可得互聯鴿籠的系統結構如圖1所示。
圖1互聯鴿籠系統結構圖
2系統的硬件設計
2.1餵食喂水系統
餵食喂水系統採用手動和定時自動、遠程和近程的方式相結合,可以通過手機App遠程控制定時餵食和手動餵食的方式。爲了防止斷網而使餵食喂水系統受到波及,在μC/OS-ΙΙ操作系統按鍵模塊中分爲開關糧食、開關水閥、開關鴿籠門五個,可以在無網的情況下有效保證近距離飼養鴿子的基本條件。對此可做研究分述如下。
2.1.1餵食系統
餵食系統的食物出口採用了蝴蝶閥狀開關加上5V步進電機的控制方式。由步進電機驅動蝴蝶閥門轉動一定的角度使得糧食從儲糧盒中落入食槽,存儲盒採用漏斗形狀,方便與糧食出口控制裝置相結合。餵食系統的結構示意圖如圖2所示。
圖2餵食系統結構圖
該裝置採用型號爲24BYJ485V驅動的步進電機,單組脈衝產生的步進角ω有如下的關係:
控制糧食蝴蝶閥需要轉動的角度爲90°,故而需要的脈衝個數N爲:
自動餵食則是通過STM32RTC實時時鐘中斷完成,根據實際情況每天喂兩次,將實時時鐘中斷設定爲12h中斷一次,進行一次蝴蝶閥的開關動作。
2.1.2喂水系統
喂水系統由5V繼電器和12V的電磁閥構成。電磁閥連接塑料水管上端續接到一個小型水箱,下端放置喝水水槽,繼電器的控制端口連接至控制器的PA2口。電磁閥的供電電源採用220VAC轉12VDC的電源電路,由微控制器控制電源電路輸出線路的通斷來調控整個喂水系統。
2.2溫溼度檢測調節系統
高溫高溼影響鴿子的熱調節,加劇了高溫的不良反應,破壞鴿子的熱平衡。高溫的時候,鴿子體內靠蒸發散熱,而蒸發散熱正比於鴿子體內蒸發麪皮膚和呼吸道水汽壓與空氣水汽壓之差,舍內空氣溼度大,空氣水汽壓升高,鴿子蒸發面水汽壓與空氣水汽壓之差變小,不利於鴿子的蒸發散熱,加重集體熱調節負擔,熱反應更加嚴重;高溫高溼,鴿子體內的抵抗力下降,有利於傳染病的發生。良好的鴿舍溫溼度應該爲溫度≤40℃,溼度≤70%。
本此研究中採用了DHT11溫溼度檢測模塊,DHT11模塊包含一個電阻式感溼元件和一個NTC測溫元件,可同時對溫度和溼度進行測量,溫度測量範圍爲0℃~50℃,溼度測量範圍爲20%RH~90%RH,採用IIC通信方式能很好地與微控制器進行通信,滿足系統對溫溼度檢測的設計要求[2]。溫溼度的調節採用排風風扇的方式,排風扇運用5V電壓驅動控制端接入PA2,當溫溼度超過設定的值時,PA2口輸出高電平,排風扇開啓;當溫溼度小於設定值時,輸出低電平,排風扇關閉。同時在手機App端就可以實時查看當前的溫溼度的情況。
2.3通信模塊
通信模塊的設計主要採用ATK-ESP8266WiFi模塊和SIM800CGSM模塊,初始化STM32L476的2個串口UART1和UART2,分別連接2個模塊。ATK-ESP8266WiFi模塊是一款高性能的UART-WiFi模塊,串口兼容3.3V和5V單片機,串口通過簡單的配置就可以進行WiFi數據的傳輸,採用WiFi模塊將數據傳送到雲端的同時,並與WiFi模塊中下載的機智雲GAgent通信協議發生交互,可進行雲端的數據交換和設備的控制[3-4]。
SIM800CGSM模塊是一款高性能的工業級GSM/GPRS模塊,可以低功耗實現語音、短信、彩信、藍牙傳輸等功能,支持5~24V的超寬工作範圍,可以很方便地與單片機相連接。在進行單鴿的訓飛計時的過程中,鴿子通過時間檢測裝置時,微控制器將通過AT指令與模塊通過撥打人員的電話,及時告知鴿子已經飛回鴿舍。
2.4進籠檢測裝置
進籠檢測裝置主要用於檢測單鴿歸巢時間。裝置是前後相通、上方插入活絡門的盒型裝置,旁邊安放有光電傳感模塊,當要對鴿子進行歸巢時間計時的時候,通過手機App或者按鍵將由步進電機控制的鴿籠小門開啓,同時將檢測裝置放置在鴿子的進出門口,由於進籠檢測裝置採用活絡門的方式,光電感應模塊放置在活絡門的前方,有效防止鴿舍內的鴿子對進籠檢測裝置的干擾。
當鴿子進入檢測裝置時,光電傳感模塊將向微控制器發送一個低電平,微控制器就將此時的RTC實時時鐘數據發送到手機App端,同時通過AT指令撥打人員電話。如圖3所示,光電感應模塊放置在活絡門擋杆的前面,系統設計的活絡門結構使得鴿子進去之後就無法再出來,防止其它鴿子對檢測裝置產生干擾。這裡,即給出了光電感應模塊電路設計如圖4所示。
圖3進籠檢測裝置
圖4光電感應模塊電路
3系統軟件設計
3.1軟件設計方法
本文設計的基於雲平臺的互聯鴿籠控制系統要完成的遠程控制和數據的傳輸的功能,選用了機智雲AIoT開發平臺。首先需要在機智雲平臺的開發中心建立項目,同時在項目中心添加數據點,數據點的作用是對系統的某種功能進行抽象化,採用不同的數據類型表示,例如簡單的設備的“開關”,其功能爲開啓和關閉,將這個功能抽象爲布爾類型性的數據點,0表示關閉,1表示開啓[5-7]。
數據點是機智雲中重要的屬性,通過機智雲與設備相聯繫的第一步就是需要將整個系統的功能進行完整的羅列,並通過機智雲平臺將所描述的功能通過數據點的方式進行表示。後續通過機智雲平臺會根據創建好的數據點生成用於開發的MCU協議,在生成的協議的基礎上進行μC/OS-ΙΙ操作系統下的程序設計開發。
3.2數據點的建立
根據系統的設計要求,在機智雲端建立好數據點,在手機App端可供操作的功能具體爲:開關籠門、開關水閥、開關糧食、自動餵食、開關燈、溫溼度的顯示與告警和飛回時間的顯示。因此按照上述的功能進行雲端的數據點的設置,詳見表1。
表1數據點設置
由表1可知,對於籠門開關、糧食開關、水閥開關、燈開關類型的數據點爲布爾類型,對於溫溼度、飛回時間的顯示採用數值類型數據點,溫溼度告警採用告警類型數據點。
在機智雲平臺對相應的數據點做出設置,就可在機智雲端生成相應的數據點的端口定義文件,將生成的端口定義文件添加到所創建的程序中,即可完成雲端數據點與手機App端的聯繫。在機智雲端下載完畢的文件中有與App端相聯繫的數據點信息,當與機智雲端有數據交換時,機智雲協議文件中的相應的標誌變量隨即將發生改變,如通過自動餵食開關量由0x00到0x01的變化,並利用判定語句完成對RTC實時時鐘中斷標誌位的設置。
3.3μC/OS-Ⅱ操作系統的移植
本系統的程序包括多項任務操作,諸如:溫溼度檢測與上傳、按鍵模塊的掃描、手機App端的控制、光電模塊信號的檢測,AT指令的傳輸等。嵌入式操作系統具有高實時性,並且支持多任務的管理,對程序的開發也更加便捷,提高系統的穩定性與可靠性。UC/OS操作系統免費,且可以很方便地移植到STM32。移植過的要點是需要將UC/OS操作系統的所有文件添加到Keil5工程中,同時修改os_cpu.h、os_cpu_a.asm、os_cpu_c.c三個程序文件[8]。
其中,os_cpu.h文件包括了數據類型的定義以及與處理器相關的代碼和函數原型的**,需要修改數據代碼的類型,使得編譯器和處理器以及編譯器數據類型做到了相互通用;os_cpu_a.asm需要使用匯編語言將文件中的部分函數進行編寫,主要是進行任務間的切換;os_cpu_c.c定義了用戶的鉤子函數,同時需要把文件中的相關係統時鐘中斷函數的部分註釋掉,因爲系統時鐘在主程序中已經給出了定義。
3.4μC/OS-Ⅱ操作系統下的任務建立
本系統分爲6個任務,分別是:溫溼度檢測上傳任務、按鍵掃描任務、光電信號檢測任務、App開關判定任務、歸巢時間上傳任務、撥打電話任務,任務的設計功能可表述如下:
(1)溫溼度檢測任務:將讀取到的DHT11模塊的溫溼度數值上傳到機智雲端,當溫溼度超過設定值時在手機App端將會呈現告警標誌,同時通過消息郵箱的方式將溫溼度數據傳送給風扇控制程序,優先級定義爲5。
(2)按鍵掃描任務:系統將籠門、糧食和水閥這6個開關接入到微控制器的6個I/O口,從而保證在斷網的情況下也能提供鴿舍內的正常控制,優先級定義爲4。
(3)光電信號檢測任務:進行單鴿訓飛計時時,鴿子進入檢測裝置後,光電信號模塊向微控制器發送一個低電平,任務會通過信號量的方式將低電平消息傳回、再撥打電話給任務巢,因此任務優先級定義爲3。
(4)App開關執行任務:手機App端有多個開關,此任務將通過判定機智雲通信協議中的標誌變量是0或者1,執行相應的動作,優先級定義爲6。
(5)撥打電話任務:等待光電信號檢測任務傳遞的低電平消息後,通過AT指令與SIM800C通信撥打人員電話,優先級定義爲7。
(6)風扇控制任務:接收溫溼度檢測單元傳來的溫溼度數據,判定溫溼度是否超過設定值,用於控制風扇的關停,優先級定義爲9。系統的軟件整體流程如圖5所示。
圖5軟件整體工作模式
4系統測試
由於本文所討論的是對鴿舍內各個設備進行控制,故而鴿籠的大小對於系統的控制並沒有影響,爲了模擬鴿舍控制系統的運行效果,對實際鴿舍進行縮微化設計,具體如圖6所示。
對縮小型的鴿舍進行控制,圖6中鴿籠大門可從右邊全部打開從事清掃等工作,平常對鴿子的放飛只採用鴿籠小門,利用步進電機控制籠門的上揚下降,並且小門可放置進籠檢測裝置,溫溼度採用模擬加溼加熱的方式。
第一次上電連接時,選用機智雲協議中的airlink連接方式,同時手機App端啓動WiFi搜索,將會搜到最近的可連接的設備[9]。機智雲協議自帶有WiFi通信方式和GPRS通信方式,手機端可以選擇連接WiFi和GPRS,方便人員進行遠程操控,通過微控制器的復位鍵可以將App數據清零。圖7顯示了鴿籠飛到時間的顯示爲6月5日12時。圖8又展現了手機App發送的溫溼度的告警情況。
圖6 鴿舍模擬實物圖
圖7 手機APP的鴿子歸巢時間顯示
圖8手機APP端溫溼度告警
同時,用戶還可以通過電腦登錄機智雲官網的設備日誌中查看各個數據點的歷史值。
5 結束語
本文研究和設計了一種基於物聯網雲平臺的互聯鴿籠控制系統,可以通過手機App與近距離的按鍵方式對鴿籠內的設備進行控制,同時採用SIM800C模塊與WiFi模塊相結合的方式,對單鴿的歸巢時間進行計時和通知,手機App端可以實時地看到鴿舍內的溫溼度情況與發出警報,本系統解決了長期以來餵養賽鴿需要頻繁與鴿子直接接觸所帶來的衛生問題,同時採用物聯網的方式飼養賽鴿實現遠程飼養,減少了人力,避免了更多愛好者無暇飼養鴿子所面對的困擾。
雖然市場上有專門的賽鴿計時器,但是其功能單一且市值不菲,互聯鴿籠控制系統採用光電模塊代替了專用賽鴿計時器,價格低廉、且效果較好。在物聯網平臺的選擇上採用了機智雲平臺,機智雲平臺對數據點歷史記錄進行了雲端的存儲,用戶只要登錄電腦就可查看。
經過實驗測試,該系統性能穩定可靠。然而,本系統的實驗環境只是採用模型化模擬的方式,雖然運用於實際環境中具有相同功能,但是與實際的鴿舍運用還是存在一定的差別,亟需後續的改進與進一步完善。例如,在實際的規模化的賽鴿養殖中,單鴿的計時上傳遠不能滿足要求,需要採用模式識別等的方式對多隻賽鴿歸巢的時間進行上傳,所以本系統只是適用於在小型家庭化的賽鴿養殖中使用。