資料介紹
描述
概述
在這個項目中,我們將使用運行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次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費
- 3PC6206 300mA低功耗低壓差線性穩壓器中文資料
- 1.12 MB | 1次下載 | 免費
- 4網絡安全從業者入門指南
- 2.91 MB | 1次下載 | 免費
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 6海川SM5701規格書
- 1.48 MB | 次下載 | 免費
- 7H20PR5電磁爐IGBT功率管規格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護等級說明
- 0.08 MB | 次下載 | 免費
本月
- 1貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論