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