最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

基于Lora的遠程農業(yè)監(jiān)測與控制系統(tǒng)

2023-03-13 17:32 作者:村口洗剪吹李師傅  | 我要投稿

如需源碼或成品可以私我~

一、基本信息

題目:基于Lora的遠程農業(yè)監(jiān)測與控制系統(tǒng)

目的:通過Lora子節(jié)點采集好各種傳感器的信息,發(fā)送給匯聚節(jié)點,匯聚節(jié)點將數(shù)據(jù)通過ESP8266上傳至云端,使用了微信小程序進行監(jiān)測與控制

元器件:正點原子lora模塊3個、正點原子STM32F103ZET6最小系統(tǒng)開發(fā)板3個、MQ2氣敏傳感器(替代二氧化碳傳感器)、雨滴傳感器、土壤濕度傳感器、光照傳感器、DHT11溫濕度傳感器、水位傳感器、三路繼電器、12V轉5V、3.3V電源模塊

成品:

主要元器件圖片:

編輯

編輯

二、設計思路

下面的過程略微有點長,不過算是記錄了我詳細的思考過程,有需要的小伙伴可以看看

其實我覺得設計思路是整個畢設最重要的部分,因為它決定著你后續(xù)工作的展開,這里我僅提供自己的設計思路做以參考,希望大佬多多指點。

子節(jié)點:采集各種傳感器數(shù)據(jù),在接收到匯聚節(jié)點的指令后發(fā)出數(shù)據(jù)

匯聚節(jié)點:發(fā)送指令與接收子節(jié)點返回的數(shù)據(jù)

整體思路:匯聚節(jié)點發(fā)出獲取A節(jié)點數(shù)據(jù)的指令后立馬開啟接收函數(shù),并且對收到的值進行判斷以確保沒有丟包,如果數(shù)據(jù)不完整會再次重復發(fā)送過程,三次不成功后將跳過對A節(jié)點的詢問,直接開始對B節(jié)點進行詢問。

子節(jié)點采集好各種傳感器數(shù)據(jù)后,在接收到子節(jié)點的查詢指令后,使用串口3通過Lora發(fā)出,同時會在末尾加上校驗數(shù)據(jù),比如0X55,當匯聚節(jié)點收到數(shù)據(jù)后可以直接判斷末尾是否為0x55,確保數(shù)據(jù)的完整性。

這里我們有一個需要注意的問題,如果不對子節(jié)點進行地址和信道的單獨設置會使得數(shù)據(jù)在發(fā)送時存在干擾問題。通過研究正點原子Lora使用手冊,可以使用定向傳輸,在進行Lora配置時,對每個子節(jié)點進行信道、地址單獨配置,發(fā)送數(shù)據(jù)時攜帶上目標節(jié)點的信道和地址即可。

參考下圖(來源AN1801A ATK-LORA-01 無線串口模塊使用說明):

編輯

最重要部分:個人認為最重要的就是匯聚節(jié)點對子節(jié)點的輪詢,因為我們不可能同時訪問到兩個子節(jié)點,就算可以也會存在數(shù)據(jù)干擾,因此我們需要輪流詢問子節(jié)點,簡單理解就是一次只能跟一個人交流,面對一群人時我們只能一個一個的交流。

我的初步想法是在一個while循環(huán)里通過判斷一個節(jié)點是否接收完畢然后開始下一個節(jié)點,這樣的話感覺理論上是沒有什么問題的,但是和導師說完我的想法后,導師直接說我想的過于簡單,建議我使用一個實時操作系統(tǒng)來完成輪詢。

后面我經過思考發(fā)現(xiàn),如果只是在while里面輪詢,對于數(shù)據(jù)上傳和命令下發(fā)是非常不友好的。因為我們的要求是對子節(jié)點的控制命令優(yōu)先級要高于對節(jié)點數(shù)據(jù)采集。并且我們在收到數(shù)據(jù)后還要進行數(shù)據(jù)上云的步驟,如果只是普通while循環(huán)的話是遠遠不夠的。

最終通過網上查詢相關資料,和簡單了解之后我是用了FreeRTOS系統(tǒng),另一部分原因也是正點原子官方提供的開發(fā)板資料里面有一些FreeRTOS的使用教程,可以作為學習的起點。

編輯

三、整體設計方案及結構圖

1、系統(tǒng)整體設計
系統(tǒng)整體是基于STM32、Lora和FreeRTOS、微信小程序、onenet開發(fā),分別由終端節(jié)點、匯聚節(jié)點、云平臺、小程序用戶端四大部分組成。每個終端節(jié)點由STM32和Lora模塊組成,其主要任務是完成對農田溫濕度、土壤濕度、水位、二氧化碳、降雨量、光照等數(shù)據(jù)量的采集、完成對數(shù)據(jù)的簡單處理,保證數(shù)據(jù)的可用性,同時也要也要完成對灌溉設備、補光設備、換氣設備的控制實現(xiàn)人工干預創(chuàng)造適合農作物生長的環(huán)境。終端節(jié)點在采集到數(shù)據(jù)后通過低耗能Lora將數(shù)據(jù)上傳至匯聚節(jié)點。匯聚節(jié)點在通過Lora接收到數(shù)據(jù)后將數(shù)據(jù)上傳至云平臺,用戶端可以隨時通過小程序鏈接云平臺完成對數(shù)據(jù)的讀取和對設備的控制。

編輯


2、匯聚節(jié)點設計
匯聚節(jié)點硬件主要是由STM32、Lora和ESP8266組成。在FreeRTOS的系統(tǒng)中,分別設置五個主要任務,并且按照一定的優(yōu)先級執(zhí)行,同時也要響應ESP8266接收到的云端下發(fā)數(shù)據(jù)。在輪詢到Lora任務時,接收到子節(jié)點數(shù)據(jù)后進行判斷,如果數(shù)據(jù)完整則進行簡單處理后上傳云平臺。

編輯


3、子節(jié)點設計
子節(jié)點主要是通過STM32采集各種傳感器數(shù)據(jù)和控制設備,采集到的數(shù)據(jù)通過簡單處理后在接受到查詢命令時通過Lora發(fā)給匯聚節(jié)點。同時也要接收匯聚節(jié)點的控制命令,對控制設備進行操作。

編輯

四、系統(tǒng)軟件設計(部分代碼)

雖然整個軟件設計比較簡單或者說大多是重復工作,比如傳感器的ADC采集,但是我盡可能多用集中方式來實現(xiàn),感興趣的小伙伴可以做個參考。如果有不對的地方或者更優(yōu)解歡迎指出。

1、子節(jié)點A流程圖

編輯

上面這個過程可能有些許復雜,我自己畫的可能也有點問題。下面我會再詳細的敘述一遍代碼執(zhí)行過程。

B節(jié)點的流程與這個類似,只是在最終命令判斷部分有所不同,這里就不重復展示了。

時間2022年3月10日,忙完了一些事有點空了,接著上面的繼續(xù)。

如果你沒有看明白上面的流程圖,那么沒關系,可以看看我下面的文字敘述,及主要代碼分析

2、模塊配置

這個地方我們可以參考正點原子的ATK-LORA配置軟件 V1.2,軟件的下載地址可以去這里面尋找:開發(fā)工具專欄-OpenEdv-開源電子網

指令幫助一欄里面有相應配置指令的使用方式,我這里的配置代碼如下所示:

//為防止通信產生干擾可以自己修改這里的模塊配置參數(shù),如果另一側是用上位機接收, ?//就在上位機調試APP中修改為對應的參數(shù)即可,不然兩個模塊無法通信 ?lora_send_cmd((u8 *)"AT+ADDR=FF,F1",(u8 *)"OK",200); //設置地址 ?lora_send_cmd((u8 *)"AT+CWMODE=0",(u8 *)"OK",200); //設置為省電模式 ?lora_send_cmd((u8 *)"AT+TMODE=1",(u8 *)"OK",200); //設置為定向傳輸 ?lora_send_cmd((u8 *)"AT+TPOWER=3",(u8 *)"OK",200); //設置發(fā)射功率20db ?lora_send_cmd((u8 *)"AT+WLRATE=24,2",(u8 *)"OK",200); //設置信道為24,空中速率2.4 ?lora_send_cmd((u8 *)"AT+WLTIME=0",(u8 *)"OK",200); //設置休眠時間為1S ?lora_send_cmd((u8 *)"AT+UART=7,0",(u8 *)"OK",200);//設置波特率115200,無校驗

編輯

我們要特別注意地址、信道、傳輸模式、空中速率的配置,這里有必要說一下傳輸模式的區(qū)別。

傳輸模式一共有三種,分別是{0 一般模式}、{1 喚醒模式}、{2 省電模式}、{3 信號強度模式},信號強度模式我并未測試,但是前面兩種我已經測試完畢。

一般模式:這個模式下可以進行無線透明、定向傳輸數(shù)據(jù),接收方必須是工作在一般模式和喚醒模式。

3、Lora發(fā)送

在終端節(jié)點接收到發(fā)送數(shù)據(jù)的命令時,子節(jié)點會調用各個傳感器相應的函數(shù)獲取數(shù)據(jù),然后將數(shù)據(jù)填裝到對應數(shù)組的位置,最后將數(shù)據(jù)數(shù)組與目標地址和信道組合,通過串口使用Lora發(fā)出。

未完待續(xù)


基于Lora的遠程農業(yè)監(jiān)測與控制系統(tǒng)的評論 (共 條)

分享到微博請遵守國家法律
湛江市| 黔西| 郓城县| 景泰县| 洛南县| 林周县| 治县。| 永靖县| 绩溪县| 卢龙县| 石门县| 南岸区| 涿鹿县| 凉山| 遵化市| 弥勒县| 富蕴县| 静宁县| 蛟河市| 丰县| 睢宁县| 华容县| 沐川县| 双桥区| 万盛区| 灵山县| 通化县| 宜宾县| 海原县| 布尔津县| 响水县| 吉水县| 海兴县| 榆林市| 达州市| 辰溪县| 鄂托克前旗| 吴忠市| 松原市| 杭锦后旗| 绩溪县|