资料介绍
描述
概述
在这个项目中,我们将使用运行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传感器的监控摄像头参考设计 8次下载
- 如何使用Raspberry Pi4摄像头和PIR传感器发送电子邮件
- 带摄像头和PIR传感器的Raspberry Pi家庭安全系统
- IMX219摄像头传感器探头
- 摄像头传感器OV7221数据手册 21次下载
- 图像传感器实现监控摄像头的创新资料下载
- 摄像头芯片CMOS图像传感器的行业报告详细说明 22次下载
- 基于摄像头传感器的智能竞速汽车控制器设计 2次下载
- 十大国内监控摄像头品牌排名 0次下载
- 基于摄像头的目标分析监控系统设计 66次下载
- 永达虚拟警示器监控摄像头远程监控报警软件 8次下载
- 永达虚拟警示器监控摄像头远程监控报警软件 4次下载
- 基于光电传感阵列和摄像头的寻线控制算法 92次下载
- 摄像头监控大王V2.0绿色版 0次下载
- 摄像头凸透镜成像原理 摄像的原理是小孔成像吗 1267次阅读
- 科普:手机摄像头技术结构与原理 2026次阅读
- 技术前沿:摄像头模组 4431次阅读
- 车载摄像头的工作原理、分类及仿真验证 6206次阅读
- 对图像传感器的认识误区:传感器类型 559次阅读
- 车载摄像头的结构分析 2647次阅读
- 摄像头应用领域及应用产品型号 1358次阅读
- STM32MP1序列产品连接MIPI®CSI-2摄像头 5363次阅读
- Azure Kinect Senser DK套件简介 3433次阅读
- 如何正确的安装监控摄像头 1.2w次阅读
- 基于OmniVision的OV5640设计的USB摄像头模块 5661次阅读
- 视觉传感器有哪几种_视觉传感器的作用 2.9w次阅读
- 手机摄像头组成结构及手机摄像头的成像原理 2.4w次阅读
- 摄像头芯片型号有哪些_摄像头芯片型号汇总 5.9w次阅读
- CMOS摄像头之硬件原理 1.7w次阅读
下载排行
本周
- 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次下载 | 免费
评论
查看更多