【RT-Thread作品秀】基于stm32F407與RT-thread的問(wèn)了智能水培系統(tǒng)
作者:liyutan0831
概述
本產(chǎn)品著眼于城市家用的智能水培領(lǐng)域,是現(xiàn)代家庭園藝的一部分,隨著人 們生活水平質(zhì)量的提高,對(duì)綠色健康生活方式的重視,原來(lái)越多的人開(kāi)始關(guān) 注家庭園藝,愿意通過(guò)在家種植花卉,多肉等觀賞植物或蔬菜類作物,特別 是今年疫情期間造成的出行不便問(wèn)題,讓更多人傾向于嘗試在家中種植,方 便收獲純綠色無(wú)污染的蔬菜。我們?cè)O(shè)計(jì)的這一款智能水培機(jī)是一個(gè)物聯(lián)網(wǎng)智 能終端,通過(guò)云平臺(tái)的輔助降低家用水培的門(mén)檻,兼顧靈活性和自動(dòng)化,方 便省時(shí)的讓用戶收獲到家庭水培的樂(lè)趣。
可 以在 APP 端一鍵自動(dòng)進(jìn)行植物的種植并全程監(jiān)測(cè),也支持用戶通過(guò)硬件按鈕 或 APP 端手動(dòng)對(duì)設(shè)備進(jìn)行控制,探索屬于自己的種植習(xí)慣,方式并可以通過(guò) 云平臺(tái),存儲(chǔ)自己的種植規(guī)程并分享,也可以直接應(yīng)用別人的規(guī)程數(shù)據(jù)完成 數(shù)據(jù)的快速共享。
開(kāi)發(fā)環(huán)境
硬件:STM32F407ZGT6
RT-Thread版本:RTT Nano
開(kāi)發(fā)工具及版本:KEIL 5
RT-Thread使用情況概述
本項(xiàng)目采用RTT nano版本組件,對(duì)各任務(wù)(傳感器數(shù)據(jù)獲取,LORA收發(fā),WIFI模塊收發(fā)即與云平臺(tái)的通信,各控制功能任務(wù))封裝成獨(dú)立的線程,所用的RTT 內(nèi)核主要為控制線程間同步的信號(hào)量與事件集,以控制部分的打氧功能為例,該功能需要輸入?yún)?shù)為云平臺(tái)通過(guò)WIFI通信部分線程傳來(lái)的打氧時(shí)間與打氧間隔2個(gè)參數(shù)。因此采用一個(gè)多個(gè)事件的喚醒事件集來(lái)實(shí)現(xiàn)該線程所對(duì)應(yīng)的的控制功能的觸發(fā)。該方法同樣適合需要參數(shù)輸入的營(yíng)養(yǎng)液控制,光照控制,加濕等。同時(shí)項(xiàng)目也采取信號(hào)量協(xié)助線程間同步。主要用于WIFI通信收發(fā)(tx,rx)間的同步。此外,還采用的中斷的方式相應(yīng)開(kāi)發(fā)板的按鍵觸發(fā),用于通過(guò)按鍵切換主機(jī)與從機(jī)模式。
硬件框架
主控芯片與 RT-thread
本項(xiàng)目采用的芯片為 stm32F407ZGT6,使用 HAL 庫(kù)編寫(xiě),搭載 RT-thread nano 嵌 入式實(shí)時(shí)操作系統(tǒng)。有效而可靠的保證了系統(tǒng)運(yùn)行并行性和效率,采用事件集 event,信號(hào)量 semaphore 等實(shí)現(xiàn)線程之間的同步協(xié)調(diào)以及通信,充分發(fā)揮實(shí)時(shí)操 作系統(tǒng)與 stm32F407 的優(yōu)勢(shì)。在芯片的資源利用上,采用了 IO 高低電平輸出控 制繼電器,PWM 輸出控制電機(jī)驅(qū)動(dòng) L298N 模塊,串口 2 通過(guò) AT 指令控制 WIFI 模塊通信.
傳感層搭建
作為一個(gè)有關(guān)植物種植的智慧物聯(lián)網(wǎng)終端,基于環(huán)境監(jiān)測(cè),報(bào)警系統(tǒng)的需要,整 個(gè)項(xiàng)目配備豐富完善的傳感層,具體使用到的傳感器如下。 1. 水溫監(jiān)測(cè):采用 ds18b20 模塊,單總線輸出,由 IO 口按照工作時(shí)序讀取數(shù)據(jù)。 2. 空氣(環(huán)境)溫度,濕度監(jiān)測(cè):采用 DHT11 模塊,單總線輸出,采用 stm32 單片機(jī) IO 口按照規(guī)定時(shí)序讀出數(shù)據(jù)。 3. EC 值檢測(cè),采用模擬量輸出的 EC 值變送器,經(jīng)過(guò) stm32 ADC 模塊轉(zhuǎn)換后變 為具體數(shù)值。 4. PH 值檢測(cè),同樣采用模擬量輸出的,經(jīng)過(guò) stm32 ADC 模塊轉(zhuǎn)化為具體數(shù)值。 5. 光敏模塊,水位模塊與濁度模塊。三者均采用數(shù)字開(kāi)關(guān)量輸出,其中光敏, 濁度模塊默認(rèn)輸出高電平,測(cè)量量到達(dá)閾值后輸出低電平。水位模塊反之。 2.2控制部分搭建
為了按照規(guī)程要求,實(shí)現(xiàn)遠(yuǎn)程水培的自動(dòng)與手動(dòng)控制,具體使用的執(zhí)行器如下。 1,光照部分。采用 12V LED 三色燈帶,有紅,藍(lán),白三色 ,由 stm32 GPIO 輸 出高低電平進(jìn)行控制。 2,加濕和打氧部分。出于對(duì)濕度控制和保證植物水面以上濕潤(rùn)的要求,采用 24 伏供電,塑料加濕片的浸入式加濕器來(lái)控制。同樣為了保證營(yíng)養(yǎng)液含氧量。打氧 氧泵采用 12V 供電。 3,電機(jī)控制,營(yíng)養(yǎng)液控制。營(yíng)養(yǎng)液控制采用 12V 蠕動(dòng)泵和小型水泵。分別對(duì) EC 值,PH 值兩大溶液參數(shù)進(jìn)行控制。對(duì)于 EC 值,通過(guò)蠕動(dòng)泵泵入調(diào)制好的營(yíng)養(yǎng) 液的方式來(lái)增加溶液 EC 只,通過(guò)兩只中等功率,12V 供電水泵來(lái)同步換水,抽 出營(yíng)養(yǎng)液,并注入等量清水。PH 值則直接采用兩只蠕動(dòng)泵加入酸液堿液控制。 兩個(gè)營(yíng)養(yǎng)液參數(shù)均采取位式調(diào)發(fā),小步長(zhǎng),長(zhǎng)滯回來(lái)應(yīng)對(duì)營(yíng)養(yǎng)液參數(shù)變化的較長(zhǎng) 滯回時(shí)間。其中 PH 由與調(diào)節(jié)中涉及化學(xué)變化調(diào)解初期會(huì)有較大浮動(dòng),整體調(diào)解 時(shí)間在 30—40 分鐘左右,由于水培的種植周期長(zhǎng)達(dá)幾個(gè)月且自動(dòng)模式下只需要 兩次營(yíng)養(yǎng)液調(diào)整,其他均為范圍維持,因此該調(diào)節(jié)時(shí)間可以接受。
通信部分 通信部分采用 ESP8266-01 模塊和 MQTT 指令,MQTT 是一種輕量級(jí)高效的,適 用于物聯(lián)網(wǎng)通信協(xié)議,設(shè)備側(cè)向平臺(tái)側(cè)上傳傳感器數(shù)據(jù),報(bào)警值,設(shè)備狀態(tài)等, 同時(shí)從云平臺(tái)獲取來(lái)自 APP 客戶端的指令。同時(shí)為了減小下發(fā)指令數(shù)目減少遺 漏,在指令端自擬協(xié)議打包下發(fā),確保設(shè)備高效穩(wěn)定的通信。
軟件框架說(shuō)明
整體代碼分為三大部分,控制,傳感與通信。將WIFI通信,LORA串口三通信,控制部分(光照,打氧,營(yíng)養(yǎng)液控制等,用到的嵌入式技術(shù)為PWM波的輸出和IO口繼電器控制),傳感器獲取部分(ADC模擬量輸出獲取,單總線獲取等)的任務(wù)各自包裝成線程處理。各線程獨(dú)立運(yùn)行,并合理調(diào)用保持正確的線程間同步與通信。
具體而言,代碼功能的執(zhí)行順序如下
對(duì)于主機(jī)模式,從云端即APP處通過(guò)WIFI 8266模塊來(lái)獲取控制指令指導(dǎo)控制,其中加濕打氧通過(guò)設(shè)計(jì)的外部參數(shù)控制(加濕時(shí)間,加濕間隔,打氧時(shí)間,打氧間隔)。營(yíng)養(yǎng)液通過(guò)設(shè)定的目標(biāo)EC,PH值以及PH,EC傳感器檢測(cè)到的實(shí)時(shí)數(shù)據(jù)來(lái)控制,光照部分控制的主要依據(jù)是DS1302實(shí)時(shí)時(shí)鐘模塊提供的年月日參數(shù),已實(shí)現(xiàn)不同生長(zhǎng)周期的判斷。主機(jī)模式在接收指令并進(jìn)行控制外,同時(shí)通過(guò)LORA多點(diǎn)通信模塊轉(zhuǎn)發(fā)指令數(shù)據(jù),以廣播的形式向各個(gè)從機(jī)發(fā)送。在按下開(kāi)發(fā)板上按鍵后。切換為從機(jī)模式,此時(shí)關(guān)閉WIFI發(fā)送以及WIFI接收,改為通過(guò)LORA串口3接收主機(jī)發(fā)來(lái)的信號(hào)。因此可實(shí)現(xiàn)一主多從,動(dòng)一發(fā)牽全身的效果。因此擴(kuò)大了種植量。
軟件模塊說(shuō)明
通信部分:通過(guò)ESP8266 AT指令連接云平臺(tái),進(jìn)行數(shù)據(jù)的收發(fā)。
各傳感器部分,其中EC,PH采用ADC進(jìn)行模擬量的轉(zhuǎn)換,溫度和溫濕度采取單總線的方式,統(tǒng)一傳到結(jié)構(gòu)體中上傳。
結(jié)合DS1302的 時(shí)間判斷部分,包括晝夜判斷,生長(zhǎng)周期判斷等。
基于事件集的光照控制。
演示效果
代碼地址在附件
比賽感悟
通過(guò)此次競(jìng)賽,我們體會(huì)到了 stm32F407 系列單片機(jī)作為主控的強(qiáng)大處理能 力,與之前項(xiàng)目經(jīng)驗(yàn)中使用的 F1 系列相比,內(nèi)部資源更多,接口更豐富,運(yùn)算 速度更快,更適合操作系統(tǒng) RTOS 或其他大體量的工程。此次采用的 HAL 庫(kù)相 比標(biāo)準(zhǔn)庫(kù)具有更好的可移植性。同時(shí),我們通過(guò)這個(gè)機(jī)會(huì),第一次在嵌入式項(xiàng)目 中應(yīng)用 RTT 的操作系統(tǒng),系統(tǒng)的了解了多線程運(yùn)行的啟動(dòng)過(guò)程,優(yōu)先級(jí)管理, 線程間同步,通信等多種有關(guān)嵌入式操作系統(tǒng)的相關(guān)知識(shí)。盡管在項(xiàng)目構(gòu)思設(shè)計(jì), 功能實(shí)現(xiàn)與調(diào)試時(shí)出現(xiàn)過(guò)很多問(wèn)題與挑戰(zhàn),但是總體上,我們?cè)诖舜蝹鋺?zhàn)過(guò)程中 收獲頗豐。