物联网,特别是物联网(IIoT),不仅对许多商业领域产生了革命性的影响,而且也为实现嵌入式IIoT解决方案开发的方式带来了根本性的转变。许多工程师面临这样的项目,他们选择了一个商业上可用的单板计算机(SBC)作为设计的基础。虽然这种方法可以产生快速的结果,但是它也可以使开发人员沿着一条路走下去,这使得很难将最终的设计变成大批量的生产。在选择原型平台时,务必仔细检查设计基于的MCU,以及过多的支持组件,以确定它们是否可以单独购买,并从头开始集成到新的设计中。
本文将重点介绍一个简单的IoT设计温度传感器平台的设计,并将重点关注所使用的单个组件。此外,该平台不仅将用于证明设计的概念,而且还将展示如何通过对功耗配置文件的调查以及如何优化设计来对开发进行微调。
一种IIoT温度传感器的基本功能要求图。
图1:IIoT温度传感器的基本功能要求。
考虑如图1所示的简单温度传感器设计。这突出了需要为电池驱动的温度传感器设计的基本功能块,该传感器将数据存储在云平台上。微控制器(MCU)在预设的时间间隔内对温度传感器进行调查,然后使用无线设备建立通信链路并将数据发送到接收云应用程序。对于设计工程师来说,有许多的个人决策需要决定使用的组件的选择,进而影响材料成本。例如,温度传感器可以包括一个专用的温度传感器,例如来自模拟设备的流行的TMP36系列,或者更全面的综合温度、湿度和气压,如Bosch Sensortec BME280,或者是一个普通的PTC热敏电阻和Epcos-TDK。成本只是一个考虑因素,它的准确性、容忍度和接口方法是其他的。传感器的选择也会影响MCU的规格。如果你使用的是便宜的热敏电阻,它可能不会与温度范围内的温度有线性关系,所以需要一定程度的基于软件的斜率计算。MCU资源实现这一目标的数量很少,但仍然是一个考虑因素。在另一个极端,BME280需要SPI或I2C通信到主机MCU,因此具有这些接口能力的设备和控制传感器和处理更多数据的能力是需要的。
对于通信方式,也有许多关键的决定。最重要的可能是要使用的无线协议,其中蓝牙和Wi-Fi是最受欢迎的。蓝牙提供了一个简短的通信范围,适用于相对少量的数据传输,并且通常通信到一个网关设备,该网关设备可以在使用更长距离通信(如Wi-Fi)传输之前收集数据。在传感器上提供Wi-Fi通讯,省去了中间网关的需要,允许更长的距离通信,适合更高的数据量,但代价是更高的功耗配置文件。
一旦无线通信被确定,就会有额外的决定,选择一个离散的方法或使用预先认证的无线模块。除非您的组织拥有自己的专业无线电频率工程团队,并且预期的产量非常高,否则很有可能使用模块方法。
该设计的最终功能是电源管理。从可替换的硬币电池中操作可能是一种为传感器供电的方法,但使用无线能量采集技术或小型太阳能电池板的可充电电池是另一种方法。此外,将单片机和无线模块放入多个不同的睡眠模式的能力可以极大地帮助节省电力,以延长电池寿命。通常,通过软件来实现对设备的控制。这个设计的其他考虑因素包括预期的产量,如果这个传感器可能是公司希望开发和发布的不同传感器产品中的一个。如果是后者,开发基于平台的方法有很多优点,其中MCU和无线功能在整个范围内都是通用的,只有传感器特定的线路对每个模型都是不同的。
在考虑传感器设计的原型时,设计工程师有许多不同的方法来设计这个设计。在过去,制造商开发工具包和评估板为基础设计提供了一个理想的学习平台,尽管在许多情况下集成各种功能需要一些工程工作和嵌入式开发。然而,一种新型的完全集成和紧凑的单板计算机(SBCs)正在受到工程师的欢迎,他们正在寻找最小的原型开发时间,并且设计足够开放源代码,这样他们就可以在SBC周围进行最终的设计。在这种情况下,SBC的所有核心组件都是可以购买的,并且知识共享许可协议涵盖了任何设备库。
一个完整集成SBC的好例子是Adafruit Feather M0 Wi-Fi(图2)。
Adafruit羽毛M0 Wi-Fi单板计算机图像。
图2:Adafruit Feather M0 Wi-Fi单板计算机(图片来源:凯利讯半导体)。
Adafruit Feather M0 Wi-Fi的重量仅为6.1克,仅为2.1 x 0.9 x 0.3英寸,它包含一个微型芯片ATSAMD21G18单片机,它的QFN包运行于48mhz,有256kb的闪存和32kb的SRAM。这手臂®皮层®-M0-based设备提供20访问GPIO别针,8 PWM港口、10 12位模拟输入,和一个DAC。外围串行通信接口包括SPI、I2C和UART。一种车载二极管,即AP2112K-3.3 VDC电压调整器,其峰值电流为600 mA,允许整个电路板通过一个微型USB连接器供电。逻辑级别保持在3.3 VDC,因此,如果对任何5个VDC设备进行接口,将需要水平移动设备。此外,该板还可由3.7 VDC LiPo电池与微芯片MCP7331T-2ACI/OT充电器集成。一种通过集成天线提供的FCC认证微芯片ATWINC1500模块,提供2.4 GHz、802.11 b/g/n Wi-Fi通信。在正常运行情况下,单片机的功耗大约为10 mA,在传输过程中,无线模块最高可达300 mA。
Adafruit羽毛M0 Wi-Fi的示意图如图3所示。
Adafruit羽毛M0 Wi-Fi示意图
图3 Adafruit Feather M0 Wi-Fi的示意图。
一个32.768 kHz水晶,四个发光二极管,和几个电阻和电容器完成了BOM的董事会。
该羽毛上的软件开发是由MCU提供的一个USB引导加载器,它允许使用流行的Arduino IDE。使用这种方法可以快速开发应用程序,而羽毛板的紧凑特性使得它可以很容易地集成到新产品的早期beta版本中。专业的开发人员可以使用Atmel软件框架(ASF),使用位于板底板上的SWDIO/SWCLK大头针来代替使用Feather的Arduino USB进行串行程序和调试功能。
正如前面提到的,成功使用SBC原型设计原型的关键在于能够基于SBC的核心组件来构建自己的设计。这当然是Adafruit羽毛M0的情况。MCU和无线模块在商业上很容易获得,并且提供了大量的开发工具和资源。可以在这里找到Microchip SAMD21G18微控制器数据表,并对可用的设备选项和包大小进行了深入的说明。硬件资源包括一个ATSAMD21 XPRO评估板,以及一个全面的用户指南、一个在线仿真器、程序员和调试器(atmelo - ice),以及一系列的扩展板,例如安装了各种不同传感器的ATIO1-XPRO。WINC1500还得到了开发资源的良好支持,其中包括XPRO扩展板,用于ATWINC1500-XPRO的ATSAMD21 XPRO。
羽毛不仅提供了一个理想的开发平台是一个设计概念和原型,但由于它是基于所有的组件都是现成的,这意味着原型设计也可以为生产设计阶段的信心。
为了演示一个IoT应用程序可以被原型化的简易性,参考了一个例子,它将Feather M0 Wi-Fi连接到微软的IoT服务,Azure。在这里可以找到一个全面详细的解释,它指导工程师通过准备白板来连接到Azure,需要的库和Arduino IDE和Azure的设置说明。
Microsoft Azure是一个具有弹性的企业级IIoT平台的好例子,它不仅提供了与传感器和执行器设备的连接,还提供了一套完整的存储和分析应用程序,用于收集数据。该平台的免费试用版提供了对所有必需特性的简单访问。
这个应用程序演示了Bosch BME280温度、湿度和压力传感器的使用,尽管在这个例子中,你可以刺激发送的数据,而不需要将传感器连接到根上。
第一步是注册一个免费的微软Azure帐户。完成后,登录并访问如图4所示的Microsoft Azure仪表板。
创建新的Azure IoT Hub实例的映像。
图4:设置新的Azure IoT Hub实例。
单击仪表板页面顶部的+ New按钮,并选择物联网(IoT Hub)之后的物联网。然后可以将IoT Hub参数(名称和资源组)命名为如图5所示。
在Microsoft Azure中设置物联网中心功能的图像。
图5:在Microsoft Azure中设置物联网中心功能。
设置过程的最后阶段是在物联网中心内创建一个设备。如图6所示,其中一个设备添加了TempSensor1的设备ID。在方框中勾选自动生成设备键,当它被保存时就会发生。一旦你获得了羽毛草图,你将需要这个装置的主键。它可能令人困惑,因为IoT中心和每个设备都有自己的主键。当提示输入连接字符串时,主键将是使用的键(图8)。
将羽毛温度传感器作为设备添加到物联网中心的图像
图6:将羽毛温度传感器添加到物联网中心。
现在,您可以在这里下载提供的示意图了。
假设您已经有了Arduino IDE,您只需要为Feather M0板添加支持文件。Adafruit教程介绍了这个过程。
使用Blink示例草图测试你的羽毛M0 Wi-Fi板是很好的做法。确保你可以编译和上传草图,并且在继续之前,在USB连接线的旁边,你可以正确地看到上面的13号针。
为了使用演示草图,您必须将库列表添加到Arduino环境中。请注意,对于Azure库AzureIoTHub、AzureIoTUtility和AzureIoTProtocol_HTTP,您需要安装1.0.21版本,否则就会出现编译错误。另外,如果您决定不使用BME280传感器,但是使用模拟数据,您仍然需要包括它的库。另外,在默认情况下,草图假定您将使用物理传感器。如果您希望模拟数据,您需要更改配置中的标题行。h文件读取' #define SIMULATED_DATA true '。
图7突出显示了库的完整列表,在屏幕的底部,成功编译并上传了草图到目标羽毛M0板。
Arduino IDE的图像显示了库列表和一个成功的上传。
图7:Arduino IDE显示了库列表和一个成功的上传。
一旦草图被上传,你就需要切换到IDE的串行监视器。这个草图是这样写的:Wi-Fi访问细节和Azure连接字符串都是通过串行监视器输入的(图8)。
输入Wi-Fi和设备连接信息的图像。
图8:输入Wi-Fi和设备连接信息。
在上述详细信息被输入后不久,你就会看到关于Wi-Fi连接的串行监视器的确认信息。然后,羽毛应该开始将数据发送到Azure IoT中心,如图9所示。在本例中,我们使用了模拟数据。
连续显示器的图像显示来自羽毛M0无线网络发送的消息。
图9:显示从Feather M0 Wi-Fi发送的消息的串行监视器。
一旦消息已经开始被Azure IoT中心接受,您就可以检查它们是否被接收了。图10显示了显示接收消息数量的物联网设备摘要。
微软Azure IoT中心的图片显示信息摘要
图10:显示消息摘要的Microsoft Azure IoT Hub。
一旦传感器数据开始被Azure平台接收,您就可以使用一些数据存储和分析功能进行调查,进一步的细节可以在微软Azure网站上找到。
正如本文前面提到的,当使用电池作为电源时,节约用电的需求是最重要的。Wi-Fi是一种特别耗电的协议,但与其他方法相比,它有许多优点。因此,必须注意优化传感器设计的操作,这样就可以在不影响传感器性能的情况下实现低功耗。MCU和Wi-Fi模块都能被投入到睡眠模式中,这可以大大延长电池寿命。
深入了解各种MCU的节能模式,以及设备的电源管理特性控制这些模式的方式,可以在SAM-D21数据表中找到。在这里还可以找到一个应用程序说明,它可以从MCU的外围接口和函数中找到可能的电能消耗。
ATWINC1500也有类似数量的节省电能的资源,包括在这个应用程序说明中专用于此的部分。在它的Feather M0 Wi-Fi教程中,Adafruit展示了使用电源监视器来说明Wi-Fi模块的消费变化(图11)。
羽毛M0 Wi-Fi板耗电量图像。
图11:羽毛M0 Wi-Fi板的功耗。
图11的橙色线条是羽毛M0 Wi-Fi板的整体功耗。紫色线表示LiPo电池的电源电压。请注意,第一个由无线电操作引起的峰值,包括与接入点建立的链路。在通信之外,静止电流大约为22 mA,表示MCU的大约10 mA和Wi-Fi模块的12 mA。对预期的最终产品的潜在用例的理解将有助于确定可能的电能节约程度。例如,如果它是只需要测量温度每分钟一次,设备可以在睡眠至少55秒基于温度测量和通信的云应用程序以5秒,让设备在91%的时间最严重的睡眠模式。其他的节能方法可能包括在通过Wi-Fi发送之前进行数次温度测量,或者如果温度读数与之前的测量不同,则可能只发送。
结论
现成的SBCs为证明产品概念和创建最初的原型设计提供了一个理想的平台。仔细选择一个使用商用和流行的MCU和无线组件的SBC,确保一旦证明,原型可以迅速转化为最终的设计,充分利用时间对市场的优势,开源资源,以及使用这些董事会的社区支持。