資料介紹
描述
概述
在這個項目中,我們將使用運行Windows 10 IoT的Raspberry Pi 2來監控 PIR 運動傳感器,該傳感器觸發 USB 網絡攝像頭拍攝照片并使用 C#將其上傳到Microsoft Azure 存儲。此外,我們將連接一個 LED 作為簡單的狀態指示器。我們還將創建一個Microsoft Azure Web App網站,以便從任何支持互聯網的設備遠程查看圖片。
該項目面向有興趣了解有關在 Raspberry Pi 2 和/或 Microsoft Azure 服務上運行的 Windows 10 IoT 的更多信息的初學者。它假定您具有一些 C# 的基本知識,但不一定了解 Raspberry Pi 或 Azure/ASP.NET 編程。這個項目中的所有代碼都是用 Microsoft 的Visual Studio 2015 Community Edition(有史以來最好的 IDE,毫無疑問)的免費版本編寫的。
該項目可以看作具有以下不同的部分:
???? ? 運動檢測器(PIR 傳感器)
???? ? 照相機、拍照件(Webcam)
???? ? “將圖片文件上傳到 Azure 存儲”部分 (Azure)
???? ? 一個簡單的 LED 狀態燈 (LED)
???? ? 還有一個單獨的 Azure 網站,顯示從 Azure 存儲中最新上傳的照片(ASP.NET 網站)
我有意構建代碼以盡可能清楚地標記和分割上述代碼區域,以防您只對學習特定部分感興趣(例如,“從網絡攝像頭拍照”,或“從 Raspberry 檢測運動” π”)。
注意:最后一個 Azure 網站部分是可選的。Azure 門戶提供了一種在線查看所有上傳照片的方法。但是你會發現創建一個提供更好查看體驗的 Azure 網站非常容易。
在現實世界中,此解決方案最好作為無頭應用程序運行,但此處將其作為通用 Windows 應用程序(C#) 提供,以幫助您在屏幕上監視各種狀態并使所有邏輯更易于調試。您應該能夠非常輕松地修改應用程序以在 Windows 10 IoT 的無頭模式下運行(請注意,該應用程序仍將按預期運行,沒有附加屏幕輸出)。
啟動時,應用程序會初始化 GPIO 端口(用于 PIR 傳感器讀取和 LED 顯示)和網絡攝像頭。一個函數綁定到 PIR 信號引腳的“ValueChanged”類型的事件處理程序,在檢測到運動時調用。它調用函數使用 USB 網絡攝像頭拍照,然后將圖像上傳到Microsoft Azure Blob Storage。
樹莓派配置
此解決方案要求 Raspberry Pi 具有 Internet 連接,以便將圖片上傳到 Azure。它可以使用有線網絡連接,盡管在現實世界的安裝中這在邏輯上可能不可行。USB Wi-Fi加密狗也可以使用。本文介紹將 Raspberry Pi 的 Wi-Fi 連接到網絡的步驟。
該解決方案還依賴于 USB 網絡攝像頭(任何兼容 Windows 10 的網絡攝像頭都可以)。在啟動應用程序之前插入相機并確保 Raspberry Pi 能夠識別它。當它被識別并準備好使用時,您會在 IoT 啟動桌面屏幕上的已連接設備列表中看到它(注意:它可能不會在其描述中顯示“網絡攝像頭”)。
PIR 運動傳感器
在使用不同的傳感器類型進行測試后,我發現PIR(熱釋電“被動”紅外線)是該解決方案的完美選擇。它們價格低廉、體積小、功耗低,并且可以有效地檢測合理距離內的人體運動(Adafruit的網站上有一篇關于PIR 傳感器工作原理的精彩文章)。其他可用于代替 PIR 的傳感器可能包括紅外線斷束、超聲波測距儀或磁性門開關(在開門時觸發)。
。您可以參考此示例項目。
LED 狀態燈
該項目包括一個用作狀態指示燈的LED接線。點亮時,PIR 運動傳感器已準備好感應運動。它會在網絡攝像頭拍攝照片并上傳到Microsoft Azure 存儲時關閉,然后在準備好再次檢測運動時重新打開。
解決方案的其他組件本身不需要 LED 代碼和接線即可工作。它只是作為解決方案的簡單狀態指示燈添加。它還演示了 GPIO 輸出信號編碼的使用(相對于用于 PIR 傳感器的 GPIO 輸入信號編碼)。
LED 邏輯從 InitializeGPIO() 函數開始,我們在其中指定使用 GPIO 引腳 5 為 LED 供電。還有一個簡單的 ShowLED() 函數來控制 LED 燈(傳入 TRUE 以打開燈,傳入 FALSE 以關閉燈)。當系統準備就緒并等待檢測到移動時,我們打開 LED,當系統忙于上傳圖片時,我們將其關閉。
上傳到 Microsoft Azure 邏輯
從客戶端應用程序處理 Azure 文件非常容易,您將在將文件上傳到我們的 Azure Blob 存儲所需的一個函數中看到,該函數恰當地命名為 UploadPictureToAzure()。前幾行從 3 個 Azure 類變量中收集我們的 Azure 憑據信息和 Azure 容器名稱,然后用于獲取對 blob 容器的引用。然后最后一行從 CloudBlockBlob 對象調用異步上傳函數。非常簡單,不是嗎?
不要忘記用您的實際 Azure 值更新這些行(在 MainPage.xaml.cs 的頂部)(如果您還沒有這些值,您將從下一節中獲得這些值):
?
private readonly string Azure_StorageAccountName = "";
private readonly string Azure_ContainerName = "";
private readonly string Azure_AccessKey = "";
注意:PiMotionSensorPhotoUpload項目使用WindowsAzure.Storage NuGet 包。當您第一次編譯項目時,這應該會使用默認的 Visual Studio 選項自動安裝。如果沒有,您需要在解決方案資源管理器中右鍵單擊該項目并選擇“管理 NuGet 程序包”,然后搜索并安裝“WindowsAzure.Storage”
微軟 Azure(項目要求)
我們需要設置一個Azure 存儲帳戶(將照片存儲為 blob)和一個 Azure Web 應用程序(托管查看圖片的網站)。
我們將利用的一個方便的功能是您可以使用以下 URL 格式輕松直接地訪問存儲帳戶中的 blob:
http://<存儲帳戶名稱>.blob.core.windows.net/<容器名稱>/
示例:? http ://raspberrypiproject.blob.core.windows.net/images/PICTURE.JPG
設置 Azure 存儲
在 Azure 門戶中,按照以下說明創建 Azure 存儲的新實例:
(1) 點擊NEW (2) 點擊DATA + STORAGE (3) 點擊STORAGE ACCOUNT (4) 點擊CREATE
然后它會提示您輸入存儲帳戶的名稱(任何名稱都可以,但請記住它,因為我們稍后會引用它)并查看/選擇其他詳細信息,如定價層和訂閱帳戶以將其綁定到。完成后單擊“創建”。
創建存儲帳戶可能需要幾分鐘時間。要檢查狀態,您可以監視門戶底部的通知。創建存儲帳戶后,它將顯示聯機狀態并可供使用。
單擊存儲帳戶以顯示其摘要頁面,然后單擊容器。將容器視為文件分組。創建一個新容器并記住名稱。這將是我們上傳圖片的區域。
復制存儲訪問密鑰
創建存儲帳戶時,Azure 會生成兩個 512 位存儲訪問密鑰,每當外部代碼訪問存儲帳戶時,這些密鑰都會用于身份驗證。通過提供兩個存儲訪問密鑰,Azure 使你能夠重新生成其中一個密鑰,而不會中斷你的存儲服務或對該服務的訪問。
在 Azure 門戶中,使用儀表板上的管理密鑰復制存儲訪問密鑰以在連接字符串中使用。連接字符串需要存儲帳戶名稱和用于身份驗證的訪問密鑰。
1. 在 Azure 門戶中,單擊存儲,然后單擊存儲帳戶的名稱以打開儀表板。
2. 單擊管理密鑰。(“管理訪問密鑰”窗口打開。)
3. 要復制存儲訪問密鑰(主要或次要),請選擇密鑰文本。然后單擊鼠標右鍵,然后單擊“復制”。
我們需要在將圖片上傳到 Azure 的 Raspberry Pi 代碼區域使用存儲帳戶名稱、容器名稱和存儲訪問密鑰。我們還將在查看圖像的 Azure 網站代碼區域中使用它們。
創建 Azure Web 應用程序
這個項目實際上是圍繞 Raspberry Pi 方面的事情,但我們會讓你很容易地創建這個 Azure 網站部分,即使你除了運行上面的說明來設置 Azure 存儲帳戶之外沒有其他經驗。
在 Azure 門戶中,按照以下說明創建將托管我們網站的 Azure Web 應用程序的新實例:
(1) 點擊NEW (2) 點擊WEB + MOBILE (3) 點擊WEB APP (4) 填寫App Name(這個名字會顯示在你的網站URL中)&審核/選擇其他參數
(5) 點擊CREATE
Azure 可能需要幾分鐘才能完全創建您的站點(您可以從 Azure 門戶的儀表板監控進度)
當我們還在 Azure 門戶中時,我們還需要一件東西。單擊 Azure 門戶中新創建的 WebApp 以彈出其詳細信息窗口。
單擊頂部菜單中的“獲取發布配置文件”按鈕,它會下載一個 *.publishsettings 文件。我們稍后將使用此文件來輕松發布網站。
Visual Studio 2015 中的 AzureWebsite 解決方案
當您從GitHub下載代碼時,您會看到一個解決方案文件同時包含 Raspberry Pi 客戶端應用程序和 ASP 網站。這樣做只是為了方便。Raspberry Pi 項目是要啟動的默認項目,因此您需要右鍵單擊 AzureWebsite 項目并選擇“設置為啟動項目”以使用該網站項目。
打開 Web.config 文件并找到第 12 和 13 行中定義的鍵。 ?
在第 12 行中,將文本ENTER_YOUR_ACCOUNT_NAME_HERE替換?為您之前設置的存儲帳戶名稱。還將文本ENTER_YOUR_ACCOUNT_KEY_HERE替換為您之前設置的存儲訪問密鑰之一。
在第 13 行,將文本ENTER_YOUR_CONTAINER_NAME_HERE替換為?您之前設置的存儲容器的名稱。
這些就是您需要進行的所有更改!您可以通過按F5來測試更改,以啟動調試器。該網站應該出現,如果您有任何圖片上傳到您的存儲容器,您現在就會看到它們(但您可能還沒有任何圖片)。
注意:如果您收到有關“Microsoft.CodeDom.Providers.DotNetCompilerPlatform”的錯誤,請確保通過 Visual Studio 中的“管理 NuGet 包”選項安裝或升級 NUGET 包。我已經看到 Visual Studio 2015 的全新安裝拋出此錯誤,直到包升級。
運行本地調試版本后,即可輕松發布到 Azure 站點。在 Visual Studio 2015 中,選擇BUILD、PUBLISH AZUREWEBSITE。在“Publish Web”窗口中,選擇左上角的第一個選項PROFILE。然后選擇導入選項。文件選擇器窗口將讓您選擇您剛剛在上述步驟中下載的 *.publishsettings 文件。此時,您可以永久發布您的站點,或者直到您通過 Azure 門戶將其刪除。發布設置現在將保存在您的項目中以供將來使用(它存儲在解決方案的 Properties/PubilshProfiles 文件夾中,僅供參考)。
獲取要編譯的解決方案
(證書)
從 GitHub 下載代碼以進行編譯后,您需要快速完成一件事情。您需要從您的 PC 輸入一個證書(因為這是一個 Windows 通用應用程序,它需要一個證書來編譯)。
在 Visual Studio 中打開代碼后,請執行以下步驟:
1) 在解決方案資源管理器中,從項目中刪除“ PiMotionSensorPhotoUpload_TemporaryKey.pfx ”文件(右鍵單擊并選擇刪除)。
2) 在Solution Explorer中,雙擊“ Package.appxmanifest ”,然后會彈出 Package properties 窗口。
3) 單擊“打包”選項卡(選項卡橫跨頂部)
4) 點擊選擇證書按鈕
5) 在彈出的窗口中,打開“ Configure Certificate ”下拉菜單并選擇“ Create test certificate... ”
6) 證書窗口會要求輸入名稱(輸入你想要的任何名稱)和密碼(任何密碼,必須是6個字符)
現在嘗試編譯,一切都會好起來的。
還有一點需要注意,特別是如果您從 GitHub 下載 ZIP 文件的代碼:確保解決方案文件的文件夾路徑(“PiMotionSensorPhotoUpload.sln”所在的文件夾)少于 256 個字符。如果文件夾路徑太大,您將收到大量編譯錯誤,主要源于無法恢復所有 NuGet 包的主要錯誤。要修復此問題,請將解決方案文件夾(“PiMotionSensorPhotoUpload.sln”所在的文件夾)復制到 C 盤的根目錄,然后再次嘗試打開/編譯。
概括
如您所見,為運行Windows 10 IoT的Raspberry Pi開發應用程序并與Azure 存儲集成非常容易。之前對 C# 有一點經驗的 Raspberry Pi 新手會發現自己很熟悉。豐富的Visual Studio環境和強大的調試體驗,將幫助您了解更多樹莓派的特性。?
?
- OPT3005 用于視頻監控攝像頭的環境光傳感器 (ALS) 數據表
- 采用 CMOS傳感器的監控攝像頭參考設計 11次下載
- 如何使用Raspberry Pi4攝像頭和PIR傳感器發送電子郵件
- 帶攝像頭和PIR傳感器的Raspberry Pi家庭安全系統
- IMX219攝像頭傳感器探頭
- 攝像頭傳感器OV7221數據手冊 21次下載
- 圖像傳感器實現監控攝像頭的創新資料下載
- 攝像頭芯片CMOS圖像傳感器的行業報告詳細說明 22次下載
- 基于攝像頭傳感器的智能競速汽車控制器設計 2次下載
- 十大國內監控攝像頭品牌排名 0次下載
- 基于攝像頭的目標分析監控系統設計 66次下載
- 永達虛擬警示器監控攝像頭遠程監控報警軟件 8次下載
- 永達虛擬警示器監控攝像頭遠程監控報警軟件 4次下載
- 基于光電傳感陣列和攝像頭的尋線控制算法 92次下載
- 攝像頭監控大王V2.0綠色版 0次下載
- 攝像頭凸透鏡成像原理 攝像的原理是小孔成像嗎 2026次閱讀
- AHD攝像頭與CVBS的區別 1.5w次閱讀
- 科普:手機攝像頭技術結構與原理 2588次閱讀
- 技術前沿:攝像頭模組 5447次閱讀
- 車載攝像頭的工作原理、分類及仿真驗證 7957次閱讀
- 對圖像傳感器的認識誤區:傳感器類型 688次閱讀
- 車載攝像頭的結構分析 3272次閱讀
- 攝像頭應用領域及應用產品型號 1746次閱讀
- STM32MP1序列產品連接MIPI?CSI-2攝像頭 6091次閱讀
- Azure Kinect Senser DK套件簡介 3845次閱讀
- 如何正確的安裝監控攝像頭 1.3w次閱讀
- 基于OmniVision的OV5640設計的USB攝像頭模塊 5836次閱讀
- 視覺傳感器有哪幾種_視覺傳感器的作用 3w次閱讀
- 手機攝像頭組成結構及手機攝像頭的成像原理 2.5w次閱讀
- 攝像頭芯片型號有哪些_攝像頭芯片型號匯總 5.9w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多