电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用Azure存储的运动传感器监控摄像头

使用Azure存储的运动传感器监控摄像头

2023-07-10 | zip | 0.45 MB | 次下载 | 免费

资料介绍

描述

概述

在这个项目中,我们将使用运行Windows 10 IoTRaspberry 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 网站)

 
 
 
 
poYBAGOkHWqAWG04AAo67JJQR1E600.jpg
 
1 / 4原始溶液片段
 

我有意构建代码以尽可能清楚地标记和分割上述代码区域,以防您只对学习特定部分感兴趣(例如,“从网络摄像头拍照”,或“从 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 的传感器可能包括红外线断束、超声波测距仪或磁性门开关(在开门时触发)。

 
 
 
 
poYBAGOlDniAEeadAAEZXOre8bw464.jpg
 
1 / 2注意灵敏度和延迟时间调整微调电位器以进行微调!!
 

您可以参考此示例项目。

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”

 
poYBAGOlDnqAV7QGAABNwRWSXtQ146.png
 

微软 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

 
pYYBAGOlDoWAKMEVAAEp74Vy8cU969.png
 

然后它会提示您输入存储帐户的名称(任何名称都可以,但请记住它,因为我们稍后会引用它)并查看/选择其他详细信息,如定价层和订阅帐户以将其绑定到。完成后单击“创建”。

创建存储帐户可能需要几分钟时间。要检查状态,您可以监视门户底部的通知。创建存储帐户后,它将显示联机状态并可供使用。

单击存储帐户以显示其摘要页面,然后单击容器。将容器视为文件分组。创建一个新容器并记住名称。这将是我们上传图片的区域。

 
poYBAGOlDoiAZ-9AAADJkqdkQBA599.png
 

复制存储访问密钥

创建存储帐户时,Azure 会生成两个 512 位存储访问密钥,每当外部代码访问存储帐户时,这些密钥都会用于身份验证。通过提供两个存储访问密钥,Azure 使你能够重新生成其中一个密钥,而不会中断你的存储服务或对该服务的访问。

在 Azure 门户中,使用仪表板上的管理密钥复制存储访问密钥以在连接字符串中使用。连接字符串需要存储帐户名称和用于身份验证的访问密钥。

1. 在 Azure 门户中,单击存储,然后单击存储帐户的名称以打开仪表板。

2. 单击管理密钥(“管理访问密钥”窗口打开。)

 
pYYBAGOlDoqANHkvAAA3suyYqOE194.png
 

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 门户的仪表板监控进度)

 
poYBAGOlDo2AUL6vAADmmW5_D_g006.png
 

当我们还在 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 中,选择BUILDPUBLISH 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个字符)

现在尝试编译,一切都会好起来的。

 
 
 
 
pYYBAGOlDpCAAfbSAAFN12VIj-Y122.png
 
1 / 3(第 2 步)
 

还有一点需要注意,特别是如果您从 GitHub 下载 ZIP 文件的代码:确保解决方案文件的文件夹路径(“PiMotionSensorPhotoUpload.sln”所在的文件夹)少于 256 个字符。如果文件夹路径太大,您将收到大量编译错误,主要源于无法恢复所有 NuGet 包的主要错误。要修复此问题,请将解决方案文件夹(“PiMotionSensorPhotoUpload.sln”所在的文件夹)复制到 C 盘的根目录,然后再次尝试打开/编译。

概括

如您所见,为运行Windows 10 IoT的Raspberry Pi开发应用程序并与Azure 存储集成非常容易。之前对 C# 有一点经验的 Raspberry Pi 新手会发现自己很熟悉。丰富的Visual Studio环境和强大的调试体验,将帮助您了解更多树莓派的特性。 

 

 
 
 

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费