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