使用多传感器开发工具包来探索新的物联网设计方案---凯利讯半导体

  物联网应用正在开发越来越多的传感器类型的数据需求。在提供更多样化的传感器数据时,物联网设备可以面临不同的部署需求,它们对特定无线通信技术的需求有很大差异。

  为了满足对更广泛的传感器和连接性选项的需求,物联网设备设计人员需要灵活的开发系统,能够对不同的、快速变化的需求做出响应。来自STMicroelectronics的IoT开发工具包在一个平台上满足了这一需求,该平台可以加速从物联网设备到云的工作流的开发。

  本文将介绍传感器设计和集成方面的最新进展,讨论设计需求,以及STMicroelectronics多传感器IoT工具包如何应对这些挑战。

  传感器的进步简化了设计和集成。

  IoT应用程序依赖于从不断增长的传感器类型列表中获得的精确数据流。集成模拟信号链和传感传感器本身,先进的传感器已经基本消除了工程师处理过去需要的敏感模拟接口的需要。即便如此,开发人员必须确保在设计中使用这些设备符合与每个传感器相关的大量专业需求。


  传感器的要求

  与任何电子系统一样,精确的传感器操作依赖于硬件和软件接口的精心设计,以满足特定的性能需求。然而,除了这些基本要求之外,传感器还可以为板级的物理设计提出一套独特的挑战。例如,STMicroelectronics小心翼翼地注意到开发人员在将HTS221温度和湿度传感器放置在pc板上时需要处理的各种问题。

  为了优化传感器的准确性和可靠性,开发人员需要仔细考虑传感器在板上的位置,以及用于保护敏感传感器(比如HTS221)免受环境污染的外壳的性质,或其他电子元件的热量(图1)。

  STMicroelectronics推荐的物理设计方法示意图。

使用多传感器开发工具包来探索新的物联网设计方案---凯利讯半导体

  图1:为了确保温度和湿度的准确测量,开发人员需要采用STMicroelectronics推荐的物理设计方法来保护传感器不受外部因素的影响,包括灰尘和热源。(图片来源:凯利讯半导体)

  在开发人员完成了pc板的设计之后,STMicroelectronics甚至建议使用红外成像技术来确认设备是否被放置在尽可能远的其他发热设备上(图2)。

  STMicroelectronics热想象方法图像。

使用多传感器开发工具包来探索新的物联网设计方案---凯利讯半导体

  图2:STMicroelectronics推荐使用热想象方法来确保温度传感器,如HTS221(左下),尽可能远离共享印刷电路板的热源。(图片来源:凯利讯半导体)

  软件开发人员需要在控制集成传感器和获取数据方面同样谨慎。为了管理其集成信号链,HTS221提供了用于设备识别、配置、控制、状态、校准和数据输出的寄存器。在某些情况下,该设备使用多个寄存器。

  例如,该设备使用三个独立的寄存器来控制功能,例如启用内部加热器、控制数据速率选择和管理输出信号。与此同时,准确的数据采样需要的不仅仅是访问一个数据输出寄存器。如下所示,开发人员需要使用设备集成闪存中维护的校准系数来调整原始数据。

  在硬件和软件设计的每个阶段,要获得可靠的温度和湿度数据需要仔细的注意。对于一个需要多个传感器的物联网应用程序,开发人员需要针对每个单独的传感器处理这些问题,同时避免在最终的板设计中传感器之间的电气或物理交互。在设计挑战的迷宫中,STMicroelectronics提供了一条捷径。


  多传感器物联网设备

  IoT的STMicroelectronics发现工具包为IoT应用程序设计无线传感器系统提供了一个完整的开发平台。基于ARM®皮层®m4核心处理器,机上STM32L475VGT6低功耗单片机集成1兆字节的闪存和128 k字节的存储器。它有一套广泛的集成模拟外设,包括3个高速、12位、模拟-数字转换器(adc)、2个数模转换器(DAC)通道、op amps、比较器和电压参考。MCU还包含一个完整的数字外围设备,包括实时时钟(RTC)、脉宽调制(PWM)计时器和多个通用计时器。除了几十个IOs,该设备还提供了几个标准接口,包括USB、USART、SPI和CAN。

  利用单片机的广泛的外围支持,开发板包一组广泛的连通性选项和传感器为90 mm x 62 mm足迹(图3)。董事会支持多个选项可以使开发者专注于物联网应用的要求,而不是单个传感器实现或无线技术支持。该委员会提供从近场到扩展范围无线连接的无线选项。除了车载动态NFC外,该板还提供蓝牙和Wi-Fi连接,分别使用SPBTLE-RF模块和Inventek ism4362 - m3g - l44模块。对于低功率的次ghz设计,ST提供了两个版本的工具包。B-L475E-IOT01A1使用SPSGRF-915来支持915 MHz通信,而B-L475E-IOT01A2使用SPSGRF-868来支持868 MHz通信。

  STMicroelectronics IoT工具包的图像。

使用多传感器开发工具包来探索新的物联网设计方案---凯利讯半导体

  图3:STMicroelectronics IoT kit提供了STM32L475VGT6 MCU的广泛外围支持,为环境和运动传感提供了广泛的连接选项和多个传感器。(图片来源:凯利讯半导体)

  除了它的多种无线选项,董事会广泛的车载传感器的补充减少了开发人员在开始他们的项目之前需要花时间构建传感器硬件接口和驱动程序的机会。除了两个MP34DT01 MEMS麦克风,该委员会还提供了多个传感器用于环境和运动传感。为环境感应,委员会提供了HTS221湿度和温度传感器和LPS22HB气压计。对于运动传感,该套件包括LIS3MDL磁力仪,LSM6DSL加速度计/陀螺仪,和VL53L0X飞行时间传感器。


  集成的细节

  除了仪表板上的传感器硬件,该工具包还包括全面的文档、完整的示意图和一个广泛的软件包。因此,硬件开发人员可以通过引用用于集成传感器(如HTS221)的详细设计来加速自定义传感器设计项目。

  STMicroelectronics IoT组件图。

使用多传感器开发工具包来探索新的物联网设计方案---凯利讯半导体

  图4:ST IoT工具包提供了完整的参考设计,包括HTS221湿度和温度传感器的硬件接口等详细示意图。(图片来源:凯利讯半导体)

  同样,软件开发人员可以检查源代码包中提供的理解关键校正等方法获得数据使用集成传感器的补偿系数表(清单1)。详细文档的开发人员通过解决常见的问题如插值补偿系数的原始数据支持之间的值直接躺在薪酬表。

  浮动HTS221_H_ReadHumidity(uint16_t DeviceAddr)

  {

  int16_t H0_T0_out、H1_T0_out H_T_out;

  int16_t H0_rh H1_rh;

  uint8_t缓冲[2];

  浮动tmp_f;

  SENSOR_IO_ReadMultiple(DeviceAddr, (HTS221_H0_RH_X2 | 0x80),缓冲区,2);

  H0_rh =缓冲[0]>> 1;

  H1_rh =缓冲[1]>> 1;

  SENSOR_IO_ReadMultiple(DeviceAddr, (HTS221_H0_T0_OUT_L | 0x80),缓冲区,2);

  H0_T0_out =(((uint16_t)缓冲区[1])< < 8)|(uint16_t)缓冲[0];

  SENSOR_IO_ReadMultiple(DeviceAddr, (HTS221_H1_T0_OUT_L | 0x80),缓冲区,2);

  H1_T0_out =(((uint16_t)缓冲区[1])< < 8)|(uint16_t)缓冲[0];

  SENSOR_IO_ReadMultiple(DeviceAddr, (HTS221_HR_OUT_L_REG | 0x80),缓冲区,2);

  H_T_out =(((uint16_t)缓冲区[1])< < 8)|(uint16_t)缓冲[0];

  tmp_f =(浮动)(H_T_out - H0_T0_out)*(浮动)(H1_rh - H0_rh)/(浮动)(H1_T0_out - H0_T0_out)+ H0_rh;

  tmp_f * f = 10.0;

  tmp_f = (tmp_f > 1000.0f) ?1000.0度

  :(tmp_f < 0.0f) ?0.0度

  :tmp_f;

  返回(tmp_f / 10.0华氏度);

  }

  清单1:通过检查ST IoT kit软件包中提供的源代码,开发人员可以获得传感器软件设计模式的经验,如在HTS221软件驱动模块中提供的这个函数中演示的设备级数据获取和数据补偿。(代码来源:意法半导体)

  软件包提供了完整的应用程序软件样本,让开发人员可以快速地开始使用该软件。ST预加载STM32L475VG单片机闪存中的演示固件。因此,开发者可以简单地将电路板安装在他们的Windows或MacOS电脑上的USB接口上,并开始评估车载传感器。当他们准备好关注他们的应用需求时,开发人员可以在现有的软件环境中构建,或者利用其分层架构来引入更专业的硬件驱动程序或中间件(图5)。

  STMicroelectronics软件环境图像。

使用多传感器开发工具包来探索新的物联网设计方案---凯利讯半导体

  图5:为了支持包括ST IoT工具包在内的多个开发委员会,ST软件环境使用分层架构来简化安全的物联网应用程序的开发和定制。(图片来源:凯利讯半导体)

  在软件架构的底层,开发环境提供了所需的板支持包(BSP)和硬件抽象层(HAL)模块,这些模块需要从硬件依赖关系中隔离软件。在中间件组件中,ST提供了mbedTLS支持的传输层安全性(TLS)、LwIP的轻量级TCP/IP支持以及与FreeRTOS的实时操作系统(RTOS)服务。对于IoT开发人员,Amazon Web Services (AWS)中间件组件为端到端IoT应用程序的快速开发提供了一条途径(图6)。

  使用ST IoT工具包软件包提供的AWS模块图。

使用多传感器开发工具包来探索新的物联网设计方案---凯利讯半导体

  图6:ST IoT kit软件包提供的AWS模块支持快速实现基于AWS服务(包括AWS移动端连接移动应用程序)的端到端IoT应用程序。(图片来源:凯利讯半导体)


  端到端物联网应用

  Amazon Web Services中间件组件包含在ST的stm32多维数据集开发环境的免费扩展中,提供了一组用于将ST IoT组件连接到AWS IoT平台的服务。为了为IoT应用程序提供一个公共平台,AWS IoT服务使用MQTT (MQ遥测传输)消息协议将IoT终端设备连接到后端AWS云服务。在AWS IoT协议中,传感器系统使用MQTT消息以简单的JSON格式订阅和发布数据(清单2)。一旦数据到达云,开发人员就可以充分利用AWS服务的全部范围,包括AWS移动应用程序开发。

  {

  “状态”:{

  "报告":{

  “温度”:27.64,

  “湿度”:38.42,

  “压力”:995.94,

  “距离”:8191年,

  "acc_x": -15, "acc_y": 2, "acc_z": 1020,

  "gyr_x": -980, "gyr_y": -4060, "gyr_z": 1750,

  "mag_x": -140, "mag_y": 90, "mag_z": 319。

  }

  }

  }

  清单2:ST IoT工具包软件包提供了AWS IoT MQTT协议的实现,该协议使用简单的JSON格式传输传感器数据,这在本示例传感器数据有效负载中演示了。(图片来源:凯利讯半导体)

  在ST IoT开发环境中,软件包中包含的AWS模块提供了MQTT客户机服务,该服务是AWS IoT体系结构的组成部分。AWS模块本身构建于由mbedTLS和TCP/IP服务提供的TLS安全栈上,该服务由Wi-Fi库提供,用于ST IoT工具包。(使用以太网连接的系统利用LwIP模块进行TCP/IP服务。)

  为了帮助开发人员检查一个完整的物联网工作流的细节,ST的AWS包包括示例应用程序,这些应用程序演示了如何使用ST IoT工具包将数据传输到AWS云。在一个示例应用程序中,当开发人员在ST IoT kit板上按下一个按钮时,软件会向AWS IoT服务发送传感器数据。提供的源代码允许开发人员检查用于创建MQTT有效负载的关键设计模式(清单3),并在用户按下面板上的按钮时发布传感器数据有效负载(清单4)。

  int PrepareMqttPayload(char * PayloadBuffer, int PayloadSize)

  {

  char * Buff = PayloadBuffer;

  int BuffSize = PayloadSize;

  int snprintfreturn = 0;

  TEMPERATURE_Value = BSP_TSENSOR_ReadTemp();

  HUMIDITY_Value = BSP_HSENSOR_ReadHumidity();

  PRESSURE_Value = BSP_PSENSOR_ReadPressure();

  PROXIMITY_Value = VL53L0X_PROXIMITY_GetDistance();

  BSP_ACCELERO_AccGetXYZ(ACC_Value);

  BSP_GYRO_GetXYZ(GYR_Value);

  BSP_MAGNETO_GetXYZ(MAG_Value);

  snprintfreturn = snprintf = snprintf(Buff, BuffSize, "{\n \"state\": {\n \"

  “\”温度\”:%。2 f \ n \“湿度\”:%。2 f \ n \“压力\”:%。2 f \ n \“接近\”:% d \ n”

  acc_x \“\ % d,\“acc_y \”:% d,\“acc_z \”:% d \ n”

  “\”gyr_x \”:%。0 f,\“gyr_y \”:%。0 f,\“gyr_z \”:% .0f \ n”

  mag_x \“\ % d,\“mag_y \”:% d,\“mag_z \”:% d \ n”

  “} \ n } \ n }”,

  TEMPERATURE_Value、HUMIDITY_Value PRESSURE_Value PROXIMITY_Value,

  ACC_Value[0],ACC_Value[1],ACC_Value[2],

  GYR_Value[0],GYR_Value[1],GYR_Value[2],

  MAG_Value[0],MAG_Value[1],MAG_Value[2]);

  /*检查总大小小于缓冲区大小。

  *如果返回是>=0和

  *整个字符串被成功格式化;如果返回的是

  * >=n,字符串被截断(但仍然有一个空字符。

  *在文章的结尾部分);如果返回值<0,则有。

  *一个错误。

  * /

  if (snprintfreturn >= 0 && snprintfreturn < PayloadSize)

  {

  返回0;

  }

  else if(snprintfreturn > = PayloadSize)

  {

  printf(“数据打包截断\ n”);

  返回0;

  }

  其他的

  {

  printf("数据打包错误\ n ");

  返回1;

  }

  }

  清单3:使用ST IoT工具包软件包,开发人员可以利用像PrepareMqttPayload()这样的低级功能,它从审计委员会的传感器中收集数据,并使用其他MQTT支持函数准备一个json格式的有效负载。

  如果(bp_pushed = = BP_SINGLE_PUSH)

  {

  如果(strstr(ledstate,“关闭”)!= NULL)

  {

  strcpy(ledstate,“On”);

  }

  其他的

  {

  strcpy(ledstate,“关闭”);

  }

  msg_info(“将希望的LED状态发送到AWS!\n”);

  /*创建所需的消息*/。

  memset(cPayload 0 sizeof(cPayload));

  strcat(cPayload aws_json_desired);

  strcat(cPayload”{ \“LED_value \”:\ ");

  strcat(cPayload ledstate);

  strcat(cPayload”\“}”);

  strcat(cPayload aws_json_post);

  paramsQOS1。payloadLen = strlen(cPayload) + 1;

  做

  {

  rc = aws_iot_mqtt_publish(&client, cPTopicName, strlen(cPTopicName), ¶msQOS1);

  如果(rc = = AWS_SUCCESS)

  {

  msg_info("\ npublish to topic %s:", cPTopicName);

  msg_info(“% s \ n”,cPayload);

  }

  如果(publishCount > 0)

  {

  publishCount——;

  }

  (MQTT_REQUEST_TIMEOUT_ERROR == rc && (publishCount || | infinitePublishFlag));

  }

  清单4:在ST IoT工具包软件包中提供的源代码演示了一个IoT传感器应用程序的基本主循环,当用户按下IoT组件板上的一个按钮时,它可以传输MQTT数据的有效负载。

  除了这个基本的IoT应用程序示例之外,ST软件包还允许开发人员探索任何实际应用程序所需的一些额外特性。例如,另一个示例应用程序补充了前面描述的基本工作流程,以保护IoT设备免受未经授权的外部访问。

  尽管概念很简单,但是这个防火墙应用程序演示了使用内置在STM32L475xx MCU本身中的保护机制。虽然软件保护机制经常会在安全性上留下漏洞,但MCU的内置防火墙保护机制可以强制控制对SRAM或闪存的可配置段的访问。授权代码只能通过一个入口点访问这些受保护的部分,这有助于消除安全性缺陷。防火墙应用程序使用此机制来保护AWS私钥,用于对AWS云的身份验证访问。

  开发人员可以简单地通过使用软件包中提供的应用程序映像和通过UART控制台与应用程序交互来浏览不同的AWS应用程序。根据需要,开发人员可以很容易地扩展ST IoT工具包,以满足他们独特的物联网应用需求。如果应用程序需要额外的专用硬件,开发人员可以使用该委员会的Arduino Uno V3和PMOD连接器将其扩展到附加板。为了满足额外的软件需求,开发人员可以在熟悉的集成开发环境中工作,以修改或扩展所提供的源代码。该包支持多个软件开发环境,包括Keil MDK、IAR系统嵌入式工作台、ARM mbed支持,以及任何GCC支持的IDE,包括STM32 MCUs的基于eclipse的SW4STM32系统工作台。


  结论

  IoT应用程序通常依赖于无线连接,将来自多个传感器的数据组合在一起,以提供对环境、设备或个人的更广泛的视图。对于IoT开发人员来说,设计一个合适的多传感器无线系统的任务可能会带来许多通常缓慢发展的挑战。

  支持多个传感器和连接选项,STMicroelectronics IoT开发工具包为复杂的物联网设计提供了预先构建的解决方案。使用工具包的硬件和软件,开发人员可以快速地实现复杂的物联网设计,并将它们集成到基于AWS云的端到端IoT应用程序中。