本帖最后由 resumebb 于 2020-9-2 14:55 編輯
一、七要素氣象站介紹二、功能講解首先整體說一下我寫的思路,通過串口三去發送指令并接收來自氣象站的數據,再用串口一進行打印檢查,對于多串口共用有問題的可以看看我 STM32F407多路串口通信進行數據收發,然后后期會用串口二將數據發送到全站儀去檢測,目前只是個demo,但是已經完成了對數據的處理和收發功能。 舉個栗子:讀一下溫度傳感器
- <blockquote> double getTemperature()
復制代碼
前三位為默認指令碼,因此數據從第四位開始,因為要求的數據格式為10進制,并且要進行計算,所以就進行了一下轉換,分離高4位和低4位,然后乘以權重,再根據數據通信協議進行數據計算,最后存在結構體的溫度變量中。 再舉個栗子,大氣壓傳感器
- double getAtmospheric_Pressure()
復制代碼
和溫度傳感器一樣,但是因為通信協議有高位和低位四個數,所以要多定義幾個變量。
指令定義:
u8 weatherIndex[8] = {0x01,0x03,0x00,0x01,0x00,0x0D,0xD5,0xCF}; 
發送函數:
- <span style="white-space:pre"> </span> void sendIndex(void)
復制代碼
ps:發送間隔不能太短,我這里設置的就有點短了,氣象儀有點反應不過來,延時要給大一點。
結構體定義:
- <blockquote>typedef struct weatherData{
復制代碼
因為要檢測變化值,連續檢測,然后將前后兩次的各項傳感器數值進行比較,若差值太大就要停止,所以我準備用結構體存儲,把每一次測的數據存于隊列中,當連續三次沒有出問題的話就出隊。
完整請移步https://blog.csdn.net/qq_41573860/article/details/108300452
結果初始值:
第一次測試:
第二次:輕撥風速轉片,轉動風向標
第三次:使勁的轉,讓風速突破歷史記錄
第四次:停止轉動,記錄保持
第五次:斷電,重新上電,各項數據保持
因為涉及到很多其他方面的功能,所以我上傳的項目中已經能刪的文件已經刪掉,只留了氣象傳感器和串口相關的函數,注釋掉的是氣象站用不到的,測試了一下不影響氣象站的使用和數據處理。
有問題可以私我,大家一起討論學習,博客地址:https://blog.csdn.net/qq_41573860/article/details/108300452
全部資料51hei下載地址:
七要素氣象傳感器.7z
(307.73 KB, 下載次數: 33)
2020-8-30 00:23 上傳
點擊文件名下載附件
|