【RT-Thread作品秀】基于RT-Thread的智慧農(nóng)業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)
作者:frankpyq
概述
智慧農(nóng)業(yè)是目前物聯(lián)網(wǎng)一個(gè)比較廣泛的發(fā)展方向,基于從事農(nóng)業(yè)物聯(lián)網(wǎng)相關(guān)硬件的開(kāi)發(fā),結(jié)合這次RTT大賽,決定基于RT-Thread設(shè)計(jì)一款物聯(lián)網(wǎng)網(wǎng)關(guān)。本物聯(lián)網(wǎng)網(wǎng)關(guān)基于STM32H7為主芯片進(jìn)行設(shè)計(jì),分為硬件網(wǎng)關(guān)和物聯(lián)網(wǎng)平臺(tái)。硬件網(wǎng)關(guān)有以ART-PI開(kāi)發(fā)板為核心板,自行設(shè)計(jì)了一個(gè)擴(kuò)展板,板載一路4G通訊模塊,一路LORA無(wú)線采集模塊,一路RS485電路,2路繼電器輸出,4路LED指示,1路DS18B20溫度采集,1個(gè)蜂鳴器;硬件網(wǎng)關(guān)可以通過(guò)無(wú)線LORA采集節(jié)點(diǎn)數(shù)據(jù),最多可以接收32路無(wú)線節(jié)點(diǎn)采集;也可以通過(guò)RS485電路采集傳感器數(shù)據(jù)。采集到數(shù)據(jù)后,通過(guò)4G模塊發(fā)送到物聯(lián)網(wǎng)平臺(tái)。這里物聯(lián)網(wǎng)平臺(tái)我使用的是深圳市模擬科技有限公司的TLINK物聯(lián)網(wǎng)平臺(tái)。板載2路繼電器和LED指示燈,可以通過(guò)平臺(tái)下發(fā)命令控制開(kāi)關(guān)。
開(kāi)發(fā)環(huán)境
硬件:ART-PI(STM32H750XB), ART-PI_TOP擴(kuò)展板;
RT-Thread版本:RT-Thread V 4.0.3
開(kāi)發(fā)工具及版本:RT-Thread Studio 版本: 2.0.0
RT-Thread使用情況概述
(1)內(nèi)核部分:調(diào)度器,信號(hào)量等。
調(diào)度器:創(chuàng)建多個(gè)線程來(lái)實(shí)現(xiàn)不同的工作。
信號(hào)量:用來(lái)線程間的同步。
(2)組件部分:UART框架,SENSOR框架。
UART框架:使用了3個(gè)串口,分別連接4G模塊,LORA模塊,RS485;分別用于跟平臺(tái)通訊和采集傳感器數(shù)據(jù)。
SENSOR框架:使用DS18B20采集設(shè)備機(jī)箱溫度。
(3)軟件包:暫未使用相關(guān)軟件包。
硬件框架
軟件框架說(shuō)明
軟件模塊說(shuō)明
項(xiàng)目工程文件是基于官方SDK的點(diǎn)燈示例程序開(kāi)始的。
(1)read_temp_entry線程:用于讀取板載DS18B20溫度傳感器的數(shù)值。
(2)LoraU6RxData線程:用于采集無(wú)線LORA傳感器節(jié)點(diǎn)的數(shù)據(jù)。傳感器節(jié)點(diǎn)采用主動(dòng)上報(bào)方式傳輸數(shù)據(jù),最多掛載32個(gè)節(jié)點(diǎn)。
(3)led_shine_entry線程:LED燈閃爍,用于指示設(shè)備狀態(tài);
(4)Task_Tlink_Tx線程:跟TLINk云平臺(tái)通訊,包含登錄和主動(dòng)上報(bào)數(shù)據(jù)。
(5)TlinkRxData線程:用于接收和解析TLINK云平臺(tái)下發(fā)的控制指令,并執(zhí)行相關(guān)繼電器動(dòng)作。
演示效果
(1)設(shè)備照片:
(2)平臺(tái)接收數(shù)據(jù)照片:
(3)云組態(tài)照片:
(4)演示視頻:
比賽感悟
認(rèn)識(shí)RT-Thread已經(jīng)是很多年前的事情了,當(dāng)初也買(mǎi)了第一代的魔笛網(wǎng)絡(luò)收音機(jī)開(kāi)發(fā)板,但是很遺憾一直都沒(méi)有在實(shí)際項(xiàng)目中使用到。主要原因都是我手頭的項(xiàng)目都是基于裸機(jī)開(kāi)發(fā)的,都沒(méi)有使用過(guò)RTOS?;赗TT大賽的機(jī)緣,我就想努力嘗試一把,先用起來(lái),然后決定以后項(xiàng)目中有需要的都上RTT系統(tǒng)。但是完事開(kāi)頭難,我這個(gè)項(xiàng)目當(dāng)初想起來(lái)挺容易,但是實(shí)際做起來(lái)的時(shí)候,真的還是很不容易的。主要還是我的RTOS編程經(jīng)驗(yàn)匱乏,對(duì)系統(tǒng)內(nèi)核以及進(jìn)程通信機(jī)制沒(méi)有理解透徹,導(dǎo)致寫(xiě)程序的時(shí)候出了不少問(wèn)題。從最開(kāi)始的點(diǎn)燈,到后面的添加傳感器驅(qū)動(dòng)框架,添加串口驅(qū)動(dòng)框架,實(shí)現(xiàn)了DS18B20傳感器采集,實(shí)現(xiàn)了串口跟GPRS模塊和LOR模塊的通訊,實(shí)現(xiàn)了數(shù)據(jù)上TLINK云平臺(tái)。完成數(shù)據(jù)上報(bào)云平臺(tái)以及云平臺(tái)下發(fā)控制指令和執(zhí)行動(dòng)作等等功能。這其中,我基本沒(méi)有使用額外的軟件包和驅(qū)動(dòng)等,主要還是對(duì)RTT不是很熟悉,可以說(shuō)還基本沒(méi)有上手。按照當(dāng)初的設(shè)想,本來(lái)是要使用廣和通的L610的模塊,使用AT指令軟件包,ONENET軟件包等上移動(dòng)ONENET云平臺(tái)。但是由于時(shí)間太緊和基礎(chǔ)太差的原因,20號(hào)之前只能完成這么多了。其實(shí)這兩天我已經(jīng)用L610模塊連上了ONENET云平臺(tái),但是詳細(xì)功能還沒(méi)有實(shí)現(xiàn),后面我會(huì)繼續(xù)把這個(gè)項(xiàng)目做下去,爭(zhēng)取把這個(gè)產(chǎn)品做完善。最后感謝舉辦方給我一個(gè)很好的學(xué)習(xí)和鍛煉的機(jī)會(huì),RTT我相信我會(huì)一直用下去。