前言
樹莓派(Raspberry Pi,RPi)是專門為學生電腦程式教育而設計,只有信用卡大小的卡片式電腦,可以運行Linux或Windows 10 IoT Core作業系統。本文將利用樹莓派和UWP(Universal Windows Platform)開發技術建構一個可以即時監控的氣象站系統。
硬體與涉及技術
#
硬體部分:
樹莓派2或3一塊,8G以上記憶卡一張,讀卡機(或有sd卡介面的電腦)一個;
Dht11溫濕度感測器一個,GY-68 BMP180氣壓計一個;
LY-69 土壤濕度計一個,MQ-2 煙霧氣敏感測器一個,雨滴感測器一個;
公母杜邦線若干,麵包板一個,micro USB線一根,電源一個;
HDMI接口顯示器一台(或HDMI轉其它接口)。
開發部分:
整合開發環境: Visual Studio 2017(建議使用社區版);
開發語言:C#;
#開發平台:UWP;
安裝Windows 10 IoT Core Dashboard 應用, 造訪微軟開發者中心依序選擇Raspberry Pi 3,Install onto my blank microSD card,Windows10 IoT core,點選Next按鈕來到新頁面,點選Download Dashboard按鈕下載,然後安裝。
燒錄作業系統到MicroSD卡,安裝完成後選擇設定新設備項目進入燒錄頁面。裝置類型選擇Raspberry Pi 2&3;OS內部版本選擇Windows 10 IoT Core(15063);磁碟機選擇插入的MicroSD卡;輸入裝置名稱、密碼、確認密碼;勾選WLAN網路連線(勾選此項目後可將目前電腦連接的WLAN資訊複製給樹莓派開發板的作業系統,省去再次配置的麻煩);至此,樹莓派安裝Windows 10 IoT作業系統完成。如下圖:
Windows Device Portal:
在同一網路環境下的瀏覽器輸入樹莓派的IP位址,連接埠為8080,回車後會提示輸入使用者名稱和密碼。預設使用者名稱為Administrator,密碼為燒錄作業系統時所設定的密碼,如果忘記密碼則只能重新安裝。登陸成功後會看到樹莓派開發板的當前作業系統下的詳細資訊,應用程式管理介面,設定預設程式以及開機自啟動等。
MQTT通訊:
MQTT(Message Queuing Telemetry Transport,訊息佇列遙測傳輸)是IBM開發的一個即時通訊協定。經過多年的發展,MQTT在各領域的應用都有凸顯,它可以作為手機用戶端的訊息推播工具,並且在安卓應用上有比較大的佔比。作為一款專為物聯網設計的通訊協議,MQTT具有在低頻寬、不穩定的網路環境下正常運作的特性。它的訊息傳遞有三種模式:
至多一次,會發生訊息遺失或重複,這種模式適合感測器類別的資料傳輸,即使訊息遺失,很快會再次發送。
只有一次,確保訊息到達且不發生重複數據,適合需要精確數據的系統,例如計費系統。
至少一次,確保訊息可以到達,但可能發生重複。 關於MQTT伺服器的搭建可以參考: MQTT在UWP下的使用可以參考:
要在UWP下使用MQTT需要安裝nuget套件m2mqtt 在這裡我還是貼一下MQTT的連接程式碼:######## ## ######
public class Mqtt : MqttClient {public Mqtt(string host) : base(host, 61613, false, MqttSslProtocols.None) { Connect(Guid.NewGuid().ToString(), "admin", "password"); Subscribe(new string[] { "atmo" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); // PostData("Hello World!"); } public void RequestData(string msg) { Publish("atmo", Encoding.UTF8.GetBytes(msg)); }public void PostData(string msg) { Publish("atmo", Encoding.UTF8.GetBytes(msg)); } }
public class DataBase : SQLiteConnection {public static string path = Path.Combine(ApplicationData.Current.LocalFolder.Path, "atmo.db");public DataBase() : base(new SQLitePlatformWinRT(), path) { CreateTable<DataModel>(); } }
public class ViewModelBase : INotifyPropertyChanged {public event PropertyChangedEventHandler PropertyChanged;protected void OnPropertyChanged([CallerMemberName]string name = "") { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } }
樹莓派GPIO圖
#
硬體連結圖:
#感測器腳位圖:
#專案位址:
該專案還不完善,歡迎大家補充和指正! ###### ######### ######以上是樹莓派(Raspberry Pi,RPi)的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!