天天看點

樹莓派 + Windows IoT Core 搭建環境監控系統

樹莓派 + Windows IoT Core 搭建環境監控系統

前言:Windows IoT 是微軟為嵌入式開發闆設計的一種物聯網作業系統,運作Windows UWP(C# 開發),可以設計出豐富的互動界面,驅動GPIO,連接配接一些傳感器做有意思的事,本文詳細介紹如何使用它搭建一個環境監控系統,并将資料上傳到Microsoft Flow雲伺服器。

工具:一台Windows 10電腦,樹莓派3B/3B+,(8GB(以上)容量SD卡,讀卡器。

傳感器:DHT11溫濕度傳感器、BMP180氣壓計、BH1750FVI光強傳感器、MQ-2煙霧傳感器、蜂鳴器、若幹杜邦線。

系統架構:

實作室内溫濕度,光線強度,氣壓高度的采集,火災情況的報警,資料的上傳到雲端。

(全是微軟的一套,PowerBi部分沒做)

PS:

  1. 本系統傳感器驅動代碼來自 https://github.com/ZhangGaoxing/windows-iot-demo

搬運至碼雲,加速Clone:

https://gitee.com/xKryo/windows-iot-demo
  1. DHT11項目代碼有一些問題,修改版本網盤下載下傳: https://pan.baidu.com/s/11-EofiscGOnMuSyPgvFO1w 提取碼:a2p1
  2. 本系統的完整代碼: https://pan.baidu.com/s/1gTaC3vrEigzjzqDfF_uA1Q 提取碼:quau
  3. Microsoft Flow伺服器現在HTTP請求觸發需要注冊進階賬戶。

正文:

一、開發平台的搭建

1.樹莓派安裝Windows IoT

下載下傳Windows 10 IoT Core Dashboard 和最新的固件:

https://docs.microsoft.com/en-us/windows/iot-core/downloads

,下載下傳完成後解壓出FFu固件,打開Dashboard并選擇固件,設定密碼,寫入SD卡。

将SD卡插入樹莓派,漫長的等待數次重新開機,中間需要通過滑鼠對樹莓派進行設定,最後進入系統:

通過儀表盤(Dashboard)的“我的裝置”可以掃描到區域網路的樹莓派,浏覽器輸入IP:8080,輸入使用者名Administrator和剛剛設定的密碼,進入Windows IoT的管理頁面。

2.Visual Studio 2017安裝,可以通過下載下傳Visual Studio Installer安裝:

二、第一個傳感器驅動(DHT11 Demo)

以驅動DHT11為例,講解将傳感器連接配接樹莓派,并編譯打包程式并部署到樹莓派。

1.DHT11連接配接樹莓派,DHT11和樹莓派的引腳定義如圖,将DHT11的資料輸出引腳連接配接GPIO4(07号引腳),電源(VCC)和地(GND)就近接入但不要接反。

2.VS 2017打開DHT11 Demo 項目(IDE可能會要求安裝一些依賴的元件)

生成解決方案時,可能會出現證書過期:

輕按兩下打開項目Package.appxmanifest檔案:

在新的視窗中選擇打包一欄,彈出的視窗選擇配置證書—建立測試證書(任意名稱)

重新生成解決方案:

我的VS 2017出現了問題,不能遠端調試,如果調試設定出現以下資訊,則可以直接遠端調試安裝應用不用打包部署:

3.打包項目的安裝程式包:

右鍵項目 – 應用商店 – 建立應用程式包 – 建立旁加載包:

選擇生成包的路徑,勾選合适的體系結構,點選建立,漫長等待生成完成:

進入浏覽器背景管理頁的Apps Manager選擇打包好的應用,點選Install安裝:

安裝成功:

運作效果:

三、接入所有傳感器

下載下傳系統完整代碼,用VS2017打開,裡面有詳細的注釋,代碼子產品較為清晰,這裡就不再分析代碼功能了。

通過重新設計互動界面,接入BMP180氣壓計、BH1750FVI光強傳感器、MQ-2煙霧傳感器。

圖中可看到傳感器功能都已經實作,關于資料上傳部分在後面會講解。

系統設計的電路圖:

對應樹莓派引腳的連接配接圖:

實物圖如下,先在面包闆上調試,再把所有傳感器子產品焊接在實驗闆上。

四、Microsoft Flow雲服務

系統通過HTTP POST的方式,将資料打包成的JSON檔案POST到流,伺服器解析後執行流。

推薦先觀看此視訊:

https://b23.tv/av21526828

使用Microsoft Flow 快速采集IoT裝置資料。

注意:微軟Flow的伺服器更新後,HTTP請求的觸發器已不再支援免費的賬戶,如果不想注冊,則跳過該部分,通過其他的方式上傳到所需要的其他伺服器。

盡管如此,還是記錄一下之前連接配接Flow的過程。

以視訊中的例子為基礎,代碼中資料封裝及HTTP POST部分:

複制代碼

1 using System;

2 using System.Diagnostics;

3 using System.IO;

4 using System.Threading.Tasks;

5

6 namespace Windows_IoT_Core

7 {

8 class PostFlow

9 {

10 private string Url { get; set; }

11 private string Str { get; set; }

12 public PostFlow(String httpUri , String jsonStr)

13 {

14 this.Url = httpUri;

15 this.Str = jsonStr;

16 }

17 public PostFlow(ViewModel view)

18 {

19 //由MS-Flow産生的Https請求Url

20 Url = "https://XXX";

21

22 //有效負載的請求正文 JSON架構

23 Str = "{nt"Temp" : " "+view.Temp+"" ,nt"Hum" : ""+view.Hum+"" ,nt"Bright" : ""+view.Ill+"" ,nt"Alt" : ""+view.Alt+"" ,nt"Press" : ""+view.Press+"" ,nt"Fire" : ""+view.Fire+"" ,nt"Time" : ""+view.Time+""n}";

24 }

25 public async Task DoPostAsync()

26 {

27 var request = System.Net.WebRequest.Create(new Uri(Url));

28 request.ContentType = "application/json";

29 request.Method = "POST";

30

31 using (var requestStrem = await request.GetRequestStreamAsync())

32 {

33 var writer = new StreamWriter(requestStrem);

34 writer.Write(Str);

35 writer.Flush();//清空緩存并發送

36 }

37

38 using (var resp = await request.GetResponseAsync())

39 {

40 using (var responseStream = resp.GetResponseStream())

41 {

42 var reader = new StreamReader(responseStream);

43 var result = reader.ReadToEnd();

44 Debug.WriteLine(result.ToString());

45 }

46 }

47 }

48 }

49 }

伺服器HTTP端觸發JSON配置:

View Code

  1. 進入Microsoft Flow官網,注冊免費賬戶
  1. 在“我的流”中建立,選擇觸發條件,通過搜尋框搜尋HTTP添加觸發條件,填入JSON配置,現在免費賬戶搜尋不到。

添加條件分支,如果發生瓦斯洩漏情況,推送報警和Outlook發送郵件,最終會将資料插入到Excel(OneDrive)。

具體郵件内容的設定:

  1. 制作好帶表頭的Excel檔案,上傳到OneDrive,Flow連接配接OneDrive,可以找到檔案,然後關聯JSON代碼内容:

上傳多次資料,可以看到表格中的内容如下:

如圖發生r瓦斯洩漏,Flow會推送郵箱内容:

Microsoft Flow APP在Googe Paly 中下載下傳,通過Flow APP 和OneDrive APP 在移動端查收:

五、總結

樹莓派搭載Windows IoT接入傳感器,基本的環境資料采集、資料展示、資料上傳都已完成。使用微軟的一套東西進行開發着實令人崩潰,是以不再深入了,1年前開發的,有些具體的步驟還不夠清晰,現在總結起來感覺有點low。

原文位址

https://www.cnblogs.com/kryo/p/11303422.html

繼續閱讀