基于ARM系统的 IoT 停车场系统演示

发布时间:2016-7-25 10:56    发布者:designapp
关键词: ARM , IoT , 停车场
  1). 简介
  在这篇博文中,我将介绍 IoT 停车演示系统以及其所用到的技术。我会阐述如何使用 Azure IoT Hub 在 Azure服务和设备之间发送消息,就像我们的演示系统那样。针对演示中用到的ARM系统模块,我也会做简单的介绍,但是主要还是专注于 Azure IoT Hub 以及如何方便地收发消息。
  在我们的演示系统有多个设备,例如:
  ./ 停车场 1(名为 Stretnor)
  ./ 停车场 2(名为 heater Parkhouse)
  ./ 公告显示(每个停车场独立设备)
  每个停车场包含以下多个设备:
  ./ 闸门控制器(Toradex Colibri T30 ARM计算机模块系统(基于nVidia Tegra 3)运行 Win10 IoT)
  ./ 停车控制器(Toradex Colibri VF50 运行ARM计算机模块系统(基于NXP Vybrid)Windows Embedded Compact 2013)
  ./ 支付终端(Apalis iMX6 ARM计算机模块系统(基于NXP iMX6)运行 Linux 和 Qt)
  ./ 公告显示(Colibri iMX6 ARM计算机模块系统(基于NXP iMX6)运行 Windows Embedded Compact 2013)
  


  正如你在上面图片中看到的,所有的通信消息通过 Azure IoT Hub 发送至应用服务进行处理。你也注意到我们在 Azure 运行了网页和数据库,但是这个篇博文只介绍 Azure IoT Hub 部分。
  2). IoT 停车场演示系统消息流
  由两个基本的事件会触发设备和 IoT Hub 之间的消息流。
  a). 第一个事件是当有车辆抵达闸门(参考下图):
  


  当车辆抵达闸门时,闸门控制器会扫描车牌,向 IoT Hub(1)发送消息。在应用服务确认数据后,会向闸门控制器发送消息,开启闸门(2)。与此同时,指示停车位的消息也会发送至停车控制器(3)。停车控制器会开启红色 LED 灯闪烁,表示该停车位即将被占用。支付终端也将会收到消息。这个消息包括车牌号和抵达时间(4)。同时,公告显示器收到关于该区域里所有停车位的信息(5)。
  当车辆停在停车位时,停车控制器停止红色 LED 灯闪烁,向 IoT Hub 发送车辆已经停靠的消息(6)。此时,闸门控制器被告知关闭闸门(7)。
  b). 第二种事件是车辆离开停车位:
  


  当车辆离开停车场的时候,司机首先需要支付停车费。在支付终端上,司机选择他自己车辆的车牌后支付。请求支付的消息发送至 IoT Hub(1)。应用服务计算价格,并发送到支付终端(2)。当支付终端接收付款后,发送支付成功的消息至 IoT Hub(3)。应用服务把车辆即将离开停车场的送消息发送到停车控制器(4)。停车控制器开始闪烁绿色 LED 灯。当车辆从停车位上离开后,IoT Hub 收到车辆已经离开的消息(5)。停车控制器打开出口闸门。在一段时间后,闸门关闭,一个指示停车位空闲的消息发送到 IoT Hub。之后,公告显示上也更新所有停车位的信息(6)。
  3). 例程应用
  在下面的例程中,我将向你演示如何方便地于 Azure IoT Hub 通信。你需要基本的 C# 知识来理解这个例程。如果你想要编译应用,请使用 Visual Studio 2015。
  你同样也需要 Azure 账户来运行例程。你可以创建一个免费的 Azure IoT Hub,并在你的 Azure IoT Hub 上创建设备。使用 device explorer 完成这些任务。在 这里查看 device explorer 文档。
  这里我将演示一个小的服务器应用,从 IoT Hub 获取消息并处理。代码是很简单的,并不适用于生产环境。这仅仅是向你介绍如何方便地同 Azure IoT Hub 通信。在这个代码里,我们只接收来自设备的信息,并将新的消息发送至同一个设备。
  你需要使用你的连接字符串来修改服务器端的代码。
  -----------------------
  private const string CONNECTION_STRING = "";
  -----------------------
  正如你在代码中看到的一样,我只调用了 TDXServerEmulator 类中的 connect 方法
  -----------------------
  TDXServerEmulator ServerEmulator = new TDXServerEmulator();
  ServerEmulator.Connect();
  -----------------------
  这会处理接收和响应消息。
  为了使用客户端,你需要 Azure IoT 的 URL 替换成你自己的。Device.cs.
  -----------------------
  const string iotHubUrl = "";
  -----------------------
  在客户端代码中,创建新的 Device 对象,注册 OnMessageReceived 事件。这能够使你的设备收到来自 Azure IoT Hub 的所有消息。
  -----------------------
  Device client1 = new Device("", "");
  client1.OnMessageReceived += Client1_OnMessageReceived;
  client1.Start();
  -----------------------
  接下来,你可以运行例程。两个终端串口会在程序执行之后出现。你需要等待服务器应用连接。
  


  在服务器连接后,你可以在应用中选择 “Send Hi” 。
  


  在上面的图片中,你可以看到客户端发送“Hi”。服务器接收到来自客户端的消息后,用“Hi from IoT Hub” 消息作为响应。
  就像你在代码中看到的一样,同 Azure IoT Hub 通信和发送消息是很容易的。对于复杂的应用,还有许多可以改进的地方,这当然也会使得代码变得更加复杂。
  通过以上的代码和解释,你应该可以使用 Azure IoT Hub 开发简单的应用。所有 Toradex ARM计算机模块 均支持 Azure IoT Hub。你可以在 这里了解 Toradex 模块的支持类型。你也可以下载 WinCE 和 Linux SDK。
                                
                                                               
                                
               
本文地址:https://www.eechina.com/thread-171097-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表