久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6955|回復: 2
打印 上一主題 下一主題
收起左側

STM32微型分布式氣象站設計(含上位機和下位機源碼+原理圖)

  [復制鏈接]
跳轉到指定樓層
樓主
包括電路圖,源碼設計和上位機設計


ARM-STM32校園創新大賽
題    目:    基于STM32的微型分布式氣象站

視頻觀看地址:http://v.youku.com/v_show/id_XNjEzMzU4NTYw.html

本設計在充分考慮到現有天氣氣象預報的弊端后,提出了一種氣象預報形式。采用一些傳感器將氣象以及環境信息進行采集,并通過相關的算法對氣象驚醒預報。得到的預報信息會通過微博發送出去,是的人們獲取氣象信息更加的方便。且本設計是對短時間的氣象進行預報盡管簡單但是能夠很好的對現有大眾化的氣象預報進行了補充。

1.       引言

氣象信息,在當代社會人們的生活與工作中起著相當重要的作用。實時、準確、便捷的氣象服務便于人們更好的進行時間安排。然而,現在普遍的氣象服務(比如電視天氣預報節目)實時性差、預報的地區范圍過大。不能很好的服務廣大用戶。當然,現有一個便攜式的個人氣象服務器,但是其價格昂貴且不便于攜帶。

所以,我們萌發設計一個成本低、實時性好的微型氣象服務站。此服務站,由多個氣象采集終端組成氣象采集的小型網絡再通過無線匯總到上位機上上位機通過發微博的方式進行數據共享。本設計的創新點在于,是對短時間的氣象預報既能夠較為準確的預報 半個小時后到一兩個小時間的降雨信息。填補了普通氣象預報時間跨度大的問題。(舉個例子,普通氣象預報預報明天陰轉小雨 但是不能夠準確的預報是那個時段下雨,本設計可以提前一到半個小時預報降雨情況實時性極好) 本設計還添加了對空氣質量的監測,即對空氣中微小灰塵的監測(所選的灰塵傳感器可對0.8微米以上的微小粒子進行檢測,故其中包含了人們關心的PM2.5 PM10)。

2.       系統方案

詳細說明系統設計的整體思路,用模塊的形式指出系統設計的各個關鍵點,并指出其中使用的關鍵算法

1)系統的總體設計

本設計主要分為三個部分,采集節點、集中器與上位機。三部分協調工作共同完成整個任務。采集節點,是本系統的關鍵部分,它以STM32F4Discovery為控制核心,通過溫濕度傳感器DHT11、氣壓傳感器BMP085以及灰塵傳感器GP2Y1010對相關信息進行采集。然后,通過氣象預報算法對降雨情況進行大概的預報。最后,對相關信息打包發送出去。集中器,主要進行數據的穿法。上位機,承擔著人機交互工作并將數據存儲到數據庫定時發微博

  • 各個模塊詳細功能介紹
  • 采集節點

采集節點,通對各個傳感器的數據讀取得到相關的氣象與環境信息。當采集到一手的氣象信息后,會對數據進行處理并根據氣壓值采用合適的算法進行降雨可能性的預報。采集點會定時的向集中器發送數據,發送的數據打包成一個自己定義的數據幀格式。

  • 集中器

集中器,負責將各個采集節點采集上來的數據集中起來,并定時的通過串口發送到上位機。集中器內部開辟了兩個字節的存儲空間用來存儲上位機發送過來的命令,如何在更具命令來做出相應的反應。

  • 上位機

上位機,會對上傳上來的數據進行存儲并且會定時的發送微博實現資源的共享。使用上位機時必須合理的完成配置,特別是串口以及微博授權的配置。對于微博的發送可以在上位機上選擇定時發送(一般如此選擇),為了避免造成刷屏的尷尬我沒設置了手動發送微博的選項。上位機,除去以上功能外還有變化趨勢分析以及歷史數據查詢的功能。

3.       系統硬件設計

(1)硬件系統框架圖

1)整體硬件框圖

采集節點的硬件系統,主要由控制中心、溫度采集模塊、氣壓采集模塊、空氣質量模塊與無線通信模塊組成。在PC端有一個無線數據接收設備即集中器,集中器是由STM32F107+nRF24L01架構實現。整體結構圖如圖1所示。

圖1


2)采集終端硬件

本模塊是以stm32f4discovery為控制核心,傳感器方面使用溫濕度傳感器DNT22對溫度以及濕度進行測量,使用BMP085氣壓傳感器對氣壓進行測量,使用夏普灰塵傳感器GP2Y1010AU0F對空氣質量 進行檢測。并通過LCD12864進行顯示。

圖2


3)通信部分硬件框圖

通信部分,使用nRF24L01進行多點的無線通信。

圖3


  • 關鍵部分原理圖
  • GP2Y1010AU0F硬件原理圖

GP2Y1010的LED控制端要求十分的嚴格必須按照原理圖給出的來做。


圖4



  • BMP085硬件原理圖

BMP085管腳較多,但本次設計僅使用I2C通信即可。當然,去耦電容也是必須的!


圖5


4.       系統軟件設計
  • 采集節點的軟件設計介紹

采集節點,是本次設計最為關鍵的部分。其主要完成了對各個傳感器的信息的采集、數據處理和信息的定時發送。采集節點上電后,首先對各個傳感器及板上資源初始化。然后,會循環讀取各個傳感器的測量值。最后,判斷定時時間是否滿足條件。如定時時間到,通過無線發送數據。


1)采集節點主流程介紹

主函數流程圖如下:

圖6

初始化函數流程圖:

圖7

氣象預報算法介紹

本設計是根據氣壓值對降雨情況預報的。首先,在晴天情況下測量安裝點的氣壓信息。根據氣象學知識我們知道,晴天的情況下氣壓最高。陰天以及降雨的情況下氣壓會明顯的降低,且如果在半小時內氣壓發生明顯時降雨可能性會明顯變大。于是,我們就可以根據氣壓值得大小即可預報降雨的可能性。



  • 采集節點關鍵外設驅動函數介紹

nRF24L01驅動函數介紹:

nRF24L01驅動主要是將數據通過SPI寫入發送寄存器,并根據狀態寄存器來判斷是否發送成功!流程圖如下。


圖8


BMP085驅動函數介紹:

BMP085可以同時采集溫度和氣壓值,對于溫度的采集僅存在一種精度。但是,氣壓的精度卻存在低、中、高三中精度。軟件中的延時要求也是非常嚴格的。流程圖如下。


圖9


GP2Y1010驅動函數介紹:

GP2Y1010關鍵點就在于嚴格的時間延時!必須在280ns讀取才能得到正確的數據。

圖10

  • 集中器軟件介紹

集中器主要將通過無限接收來的數據通過串口發送到PC端!在軟件中設計了1個數組2個字節用來接收上位機發送的命令進而控制集中器的運行。流程圖如下。

圖11


  • 上位機軟件簡單介紹

上位機主要對發送上來的數據實時的顯示、定時的發送微博與儲存到數據庫。當然,還包括一些附屬功能比如數據的查詢以及變化趨勢的分析。

上位機軟件,編寫的難點在于微博的發送與串口數據的讀取處理。微博的發送要經過網絡,網速的好壞對于軟件的影響較大。為力避免網速差而造成的界面卡頓現象我們采用了多線程技術。

C#的串口操作軟件數據讀取不及時會造成嚴重的丟包現象。為了解決這個問題,在串口觸發函數內僅對數據進行讀取不對數據進行任何處理。另外,開辟一個線程專門對數據進行處理。


5.       系統創新

我們的主要創新點主要有3處:

  • 對短時間的氣象預報能夠較為準確的預報一個小時左右的降雨信息,彌補了現有天氣預報時間跨度長的問題!
  • 添加了對空氣質量的監測,包含了人們關心的PM2.5PM10灰塵檢測
  • 位機接收數據后將數據存儲到數據庫并在PC上顯示,再將數據選擇性的發微博

6.       評測與結論

系統主要通關較長時間的運行測試,系統對于溫濕度、氣壓以及灰塵濃度的測量比較精準。但是由于對空氣質量的測量只采用的灰塵污染物濃度,而沒有采集其他污染物的量造成 空氣質量AQI的計算不是很精準。對于降雨可能性的預報,由于數學模型建立的較為簡單過預報的不是十分的精準。存在誤報顯現,但是降雨的情況全能預報出來。故預報結果還能接受。

本次設計,基本滿足各方面的要求。預報功能得以實現,但是未來還有很大的完善空間。未來,我們考慮添加位置信息,通對往年相同位置的氣象情況進行對比完善我們的預報精度。



附錄

上位機



采集點


集中器


1.外部晶振(HSE)為8M。
2.在system_stm32f4xx.c中的SystemInit()函數開始添加了FPU控制項。
3.預定義USE_STDPERIPH_DRIVER,STM32F4XX   (不適用FPU)
    USE_STDPERIPH_DRIVER,STM32F4XX,__FPU_PRESENT=1,__FPU_USED =1   (使用FPU)
4.只添加了標準外設庫,DSP(CMSIS內)、USB以及ETH庫均為添加。


單片機源程序如下:


  1. #include "stm32f10x.h"
  2. #include "bsp.h"

  3. uint8_t        cmIndex=0;//控制索引(0——1)
  4. uint8_t        adIndex=0;
  5. uint8_t displaytime=0;

  6. uint8_t rbuf[11]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

  7. uint8_t TxBuf[6][11]={        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  8.                                                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  9.                                                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  10.                                                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  11.                                                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  12.                                                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  13.                                           };

  14. uint8_t CM_Box[2]={0x00,0x00};//開始信號 與節點數目

  15. int main()
  16. {
  17.         uint8_t indexbuf=0;
  18.         uint8_t i=0;
  19.         
  20.         BSP_Init();        

  21. //         USART_SendData(USART2,CD_Box[1]);
  22. //         while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET) ;
  23.         
  24.         while(1)
  25.         {
  26.                 while(CM_Box[0]==0xfa)
  27.                 {

  28.                          if (NRF24L01_RxPacket( rbuf )==0)
  29.                          {
  30.                                  indexbuf=rbuf[0];
  31.                                  
  32.                                  for(i=0;i<11;i++)
  33.                                  {
  34.                                           TxBuf[indexbuf][i]=rbuf[i];
  35.                                  }
  36.                  
  37.                          }
  38.                         
  39.                         if(displaytime)
  40.                         {
  41.                                 displaytime=0;
  42.                                 for(adIndex=0;adIndex<CM_Box[1];adIndex++)
  43.                                 {
  44.                                         for(i=0;i<11;i++)
  45.                                         {
  46.                                                 USART_SendData(USART2,TxBuf[adIndex][i]);
  47.                                                 while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET) ;
  48.                                         }
  49. ……………………

  50. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:

1.基于STM32的氣象站預報系統設計(硬件、源碼、上位機).rar (1.91 MB, 下載次數: 113)




評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏10 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:688258 發表于 2020-1-26 22:35 | 只看該作者
怎么下載? 東西感覺不錯
回復

使用道具 舉報

板凳
ID:838278 發表于 2020-11-5 12:00 | 只看該作者
下載了之后,代碼怎么找啊?找不到啊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线一区二区三区 | 亚洲精品电影网在线观看 | 国产免费福利 | 91久久久久久久久久久久久 | 人人人人人爽 | 蜜桃视频成人 | 亚洲国产欧美日韩 | 亚洲一区中文 | 91视频91 | 永久看片| 男人亚洲天堂 | 中文字幕二区 | 福利视频一区 | 国产成人麻豆免费观看 | 精品日韩一区二区 | 91大神在线资源观看无广告 | 欧美日韩亚洲一区 | 欧美黄色一区 | 精品久久精品 | 一区二区精品 | 免费精品久久久久久中文字幕 | 黄a网站 | 国产美女自拍视频 | 自拍偷拍第一页 | 欧美一级视频 | 久久蜜桃av一区二区天堂 | 日本大香伊一区二区三区 | 欧美综合一区二区三区 | 黄色欧美 | 亚洲男人天堂av | www.887色视频免费 | 一级毛片视频 | 国产香蕉视频 | 成人欧美一区二区 | 美女一级毛片 | 国产高清免费视频 | 爱爱综合网 | 成人精品一区二区三区 | 国产精品一区二区福利视频 | 毛片免费在线 | 国产视频中文字幕在线观看 |