以最小的努力构建蓝牙连接的IoT无线传感器原型---凯利讯半导体

本文介绍了如何使用北欧半导体的nRF52832蓝牙SoC快速开发物联网无线传感器原型,强调了其在减少开发工作量和简化蓝牙连接方面的优势。通过集成的SoftDevice架构和完整的硬件/软件解决方案,nRF52832简化了无线系统的开发,适合可穿戴设备和小型IoT应用。同时,北欧半导体的NRF6936 Thingy:52套件提供了快速原型设计的解决方案,包括多种传感器和兼容性,帮助开发者缩短产品上市时间。
摘要由CSDN通过智能技术生成

  随着用户对物联网(IoT)的应用程序的熟悉程度越来越高,开发人员需要通过能够证明新概念或具有竞争力的产品的全功能原型来快速应对新兴机遇。然而,大多数IoT开发解决方案都需要大量工作才能使其正常工作,特别是在软件方面。

  为加快流程,开发人员需要一个能够消除许多现有障碍的IoT开发解决方案,从而使响应时间缩短到新的IoT应用程序的机会。来自北欧半导体的快速开发套件通过用于蓝牙连接无线传感器设计的完整硬件/软件解决方案来满足这一需求。

  本文将讨论设计要求,引入合适的蓝牙无线解决方案,并指导开发人员如何快速地启动和运行。

  无线IoT设备要求和解决方案作为高级IoT应用的数据源,无线传感器系统需要满足广泛的复杂要求。在这些要求中,对蓝牙连接的期望持续增长,以及用户对通过智能手机应用轻松实现物联网监控和控制的期望。半导体制造商通过一系列解决方案(包括蓝牙收发器IC,模块和片上系统(SoC))设备来应对日益增长的需求。

  虽然每个解决方案都能满足不同类别的应用需求,但蓝牙SoC已经成为可穿戴设备和小型IoT设备的特别有吸引力的解决方案。通过集成蓝牙通信子系统,这些设备提供了减少BOM,小占位面积和最小功耗的组合,而不会影响功能和性能。

  在这一类设备中,北欧半导体nRF52832蓝牙SoC将处理器核心和无线电子系统与灵活的软件架构相结合,旨在简化无线系统的开发。

  无线MCU基于32位的ARM ®皮质® -M4F芯,北欧nRF52832设有能够支持标准协议,包括蓝牙低功耗(BLE)和ANT,以及专有协议的嵌入式2.4GHz的收发器。在其外设中,器件集成了模拟比较器和8通道可编程增益12位模数转换器(ADC),以及三个实时计数器(RTC),32个GPIO,多个脉宽调制器(PWM) )通道和串行接口。

  片上可编程外设互连(PPI)矩阵使这些外设能够同步其活动,直接或通过直接存储器访问(DMA)进行交互,而无需处理器干预。此外,该设备还集成了多个硬件块,用于高级功能,包括正交解码,AES加密和蓝牙加密服务的加速地址解析等。

  该器件从其512 KB闪存运行时消耗58μA/ MHz,从其64 KB RAM运行51.6μA/ MHz。多个低功耗模式可使开发人员在应用程序处于非活动状态时降低功耗。例如,器件保持完全RAM状态并能够在任何情况下唤醒的低功耗空闲状态下,器件只消耗1.5μA。事实上,开发人员可以将设备置于特殊的恒定延时子模式中,确保CPU唤醒和PPI子系统响应的持续时间最短。开发人员使用其灵活的工作模式,外设和片上硬件模块,可以对nRF52832进行编程,以满足电源,性能和功能要求的特定组合。

  通讯服务对于其所有的集成功能,nRF52832和Nordic nRF52系列其他成员之间最显着的功能之一就是通信服务架构。Nordic在早期的无线SoC系列中引入了SoftDevice架构,作为减少开发人员在使用通信协议栈的经验的方法。

  SoftDevice架构作为可更新固件实现,通过提供程序员可以利用的预先测试的服务层来简化软件开发,而不会使自己的开发过程复杂化。对于BLE应用,Nordic的S132 SoftDevice提供了一个完整的蓝牙协议栈(图1)。

  


  图1:Nordic Bluetooth SoftDevice实现了一个完整的蓝牙协议栈作为固件,提供了一整套服务,而不需要开发人员将协议栈库链接到其应用程序。(图片来源:凯利讯半导体)

  SoftDevice不仅仅是一个简单的软件层,它使用了一个复杂的基于中断的模型,允许开发人员在开发过程中使用SoftDevice服务,而无需将SoftDevice代码连接到应用程序中。开发人员只需使用一组C语言API头文件中定义的一系列主管调用(SVC)访问SoftDevice应用程序编程接口(API)。

  SVC被实现为软件触发的中断,因此当开发人员调用API函数时,SoftDevice SVC中断处理程序将找到正确的SoftDevice函数,并将函数参数传递给它,使用回调函数返回结果。这种方法消除了在构建时链接SoftDevice资源地址的需要,同时还提供线程安全的服务实现。

  为了实现这一模式,Nordic将SoftDevice与低级中断机制和硬件资源联系起来。较低级别的中断起泡到SoftDevice,SoftDevice使用保留的IRQ将应用程序特定的中断传递给应用程序,并处理其余的中断本身。此外,作为其服务责任的一部分,SoftDevice直接访问设备硬件,包括无线电和其他外设。

  为了避免共享硬件资源的争用,Nordic提供了一个时隙功能,可以在定义的时间间隔内在SoftDevice和应用程序之间调度资源分配。应用程序可以在给定时间请求最早的时隙或一个。尽管这种机制的潜在复杂性,Nordic的API将应用程序的负担降低到几个高级别的呼叫。例如,应用程序可能通过为实际的广告操作打开一个无线电会话(清单1)和回调(清单2)来启动信标。在每次传递期间,回调会增加一个简单的枚举类型(清单3),以便逐步完成一系列状态,直到广告过程完成(mode == ADV_DONE)。

  空白app_beacon_start(空白)

  {

  如果(m_beacon。is_running | | m_beacon.keep_running)

  {

  返回;

  }

  DEBUG_PRINTF(0,“app_beacon_start:\ r \ n”);

  m_beacon。keep_running = true;

  m_beacon。is_running = true;

  uint32_t err_code = sd_radio_session_open(m_timeslot_callback);

  如果(err_code != NRF_SUCCESS)& &(m_beacon。error_handler != NULL))

  {

  m_beacon.error_handler(err_code);

  }

  err_code = m_request_earliest(NRF_RADIO_PRIORITY_NORMAL);

  如果(err_code != NRF_SUCCESS)& &(m_beacon。error_handler != NULL))

  {

  m_beacon.error_handler(err_code);

  }

  }

  清单1:Thingy软件包包括示例例程,例如app_beacon_start演示与SoftDevice进行交互以创建具有特定回调(m_timeslot_callback)的无线电会话,并请求信标传输()的最早可用无线电时隙m_request_earliest。(代码来源:北欧半导体)

  静态nrf_radio_signal_callback_return_param_t * m_timeslot_callback(uint8_t signal_type)

  {

  静态nrf_radio_signal_callback_return_param_t signal_callback_return_param;

  静态enum mode_t模式;

  signal_callback_return_param.params.request。p_next =零;

  signal_callback_return_param。callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE;

  开关(signal_type)

  {

  案例NRF_RADIO_CALLBACK_SIGNAL_TYPE_START:

  m_handle_start();

  模式= ADV_INIT;

  模式+ +;

  打破;

  案例NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO:

  如果(NRF_RADIO - > EVENTS_DISABLED = = 1)

  {

  NRF_RADIO - > EVENTS_DISABLED = 0;

  m_handle_radio_disabled(模式);

  如果(模式= = ADV_DONE)

  {

  DEBUG_PRINTF(0,“app_beacon_adv_done:\ r \ n”);

  NRF_PPI->CHENCLR = (1 << 8);

  如果(m_beacon.keep_running)

  {

  signal_callback_return_param.params.request。p_next = m_configure_next_event();

  signal_callback_return_param。callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END;

  }

  其他的

  {

  signal_callback_return_param。callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_END;

  }

  打破;

  }

  模式+ +;

  }

  打破;

  默认值:

  如果(m_beacon。error_handler != NULL)

  {

  m_beacon.error_handler(NRF_ERROR_INVALID_STATE);

  }

  打破;

  }

  返回(&signal_callback_return_param);

  }

  清单2:Thingy软件包提供了提供代表性设计模式的示例软件,例如使用此处显示的回调例程来执行信标广告的一系列无线电操作。(代码来源:北欧半导体)

  enum mode_t

  {

  ADV_INIT,/ * *初始化。* /

  在Rx频道37上做广告。* /

  在Rx频道38上做广告。* /

  在Rx频道39上做广告。* /

  ADV_DONE / * *做广告。* /

  };

  清单3:Thingy软件包中的示例回调例程使用此枚举类型在信标广告序列期间通过一系列阶段走过系统。(代码来源:北欧半导体)

  nRF52832的SoftDevice服务和集成硬件功能为开发无线传感器系统提供了有效的基础,而且零件数量最少。然而,这些SoC设备的复杂性可以为设计人员提供实现传感器设计的重要学习曲线,更不用说完整的IoT应用程序。北欧半导体NRF6936 Thingy:52 IoT传感器套件可帮助开发人员显着缩短开发有用的蓝牙连接传感器系统所需的时间。

  快速发展Thingy北欧Thingy:52套件为无线传感器设计提供了快速原型设计解决方案。基于nRF52832蓝牙SoC,该套件旨在提供全面的功能开箱即用,无需硬件或固件开发实现与连接的移动应用程序完整的IoT传感器解决方案。

  其功能之一,nRF6936板包括一个完整的传感器套件,包括:

  罗姆半导体 BH1745颜色传感器

  意法半导体 HTS221湿度传感器

  意法半导体LPS22HB压力传感器

  是 CCS811气体传感器

  意法半导体MP34DB02 MEMS麦克风

  TDK InvenSense MPU-9250惯性测量单元(IMU)传感器

  随着MPU-9250 IMU用于全9轴运动跟踪,Thingy板包括独立的专用运动传感器,意法半导体LIS3DH加速度计,用于唤醒系统运动。LIS3DH直接从板载稳压器获取电力,以确保其在VDD状态下保持供电。参考设计包括显示LIS3DH如何维护隔离的原理图,通过设计中提供的外部I 2 C总线连接以支持外部硬件(图2)。

  


  图2:Thingy参考设计提供了完整的原理图,并演示了设计技术,例如使用意法半导体LIS3DH加速度计在移动时唤醒空闲MCU。(图片来源:凯利讯半导体)

  如图2所示,在该设计中使用的智能传感器降低复杂性,需要一个简单的两线I 2 C连接将到主机。有了这个参考设计,Nordic展示了一种简单的方法,它在设计占地面积方面实现了最小的增量,从而在低活动期间显着降低了功耗。在这里,设计将某些传感器耦合到专用的NXP NX3DV2567模拟开关,允许MCU(通过MPU_WR_CTRL)在运行条件允许时断开该电源,MCU中断和I 2 C总线(图3)。

  


  图3:Thingy硬件设计充分利用了诸如TDK InvenSense MPU-9250运动传感器等集成传感器所需的简单硬件接口,但增加了一个NXP NX3DV2567模拟开关,用于将传感器与系统分离以节省功耗。(图片来源:凯利讯半导体)

  开发人员可以通过添加外部设备来扩展Thingy硬件的补充。四个连接器支持Grove 4引脚格式,允许设计人员通过绘制可用的Grove兼容设备的大量基础,轻松添加硬件功能。额外的2 x 10针头引出额外的MCU端口,甚至包括四条缓冲线。这些线路各自包括能够驱动诸如LED或小直流电动机的外部组件的二极管 DMN3190LDW N-MOS晶体管。事实上,Thingy设计为设计人员提供的I / O数量超过了nRF52832自己的GPIO引脚数。Nordic增加了一套Semtech公司的 SX1509 GPIO扩展器,以增强Thingy系统设计的I / O能力。

  由于Thingy的I / O可扩展性,硬件开发人员可以通过将外部设备连接到电路板来创建原型设计。全面的软件平台为软件工程师提供了相同的开发方式。

  软件平台Thingy开发平台将nRF52软件开发工具包(SDK)扩展到需要的一层服务,让应用程序开发人员专注于更高级别的进程而不是低级操作(图4)。例如,Thingy软件包增加了一个传感器驱动程序层,该驱动程序基于SDK的外围驱动程序和硬件抽象层(HAL),以处理诸如配置传感器,启动或停止它们以及检索传感器数据等操作。

  


  图4:Thingy软件包将Nordic nRF52软件开发套件(SDK)扩展到专门为Thingy应用程序设计的应用级服务和实用程序模块。(图片来源:凯利讯半导体)

  Nordic通过一套用于客户端开发的资源完成了从传感器到移动应用的IoT链。该公司在Swift for iOS开发人员和Java for Android开发人员中提供了独立的开放存储库与库和示例应用程序。此外,另一个开放存储库提供了一个JavaScript库,用于开发基于Polymer Web组件库和Web Bluetooth API的Web应用程序。

  开发人员可以通过从Apple App Store或Google Play商店下载Nordic Thingy应用程序,轻松获取Thingy操作。然后,开发人员将启动Thingy,该产品采用嵌入式1440 mAh锂离子电池,通过USB电源连接充电。应用程序发现并连接到Thingy系统后,它提供了传感器数据的运行显示(图5)。该应用程序甚至支持与IFTTT的连接,允许用户使用Thingy数据触发的IFTTT事件链创建基于云的小程序。

  


  图5:伴侣应用程序通过蓝牙与Thingy系统进行交互,提供传感器数据的运行显示以及Thingy配置和固件更新的服务。(图片来源:凯利讯半导体)

  基于Thingy参考设计和软件平台,开发人员可以快速扩展Thingy系统以满足自己的具体要求。开发人员可以使用KeilμVision或GCC使用ARM Cortex-M的GNU工具链来编辑新的Thingy固件。Thingy系统为加载新固件提供了一个安全的无线更新设施。标准Thingy应用程序包含一个选项,用于从Nordic更新到最新版本的Thingy固件,或者由开发人员使用由Nordic提供的开源实用程序创建的自定义固件包。


  结论

        在充满快速变化的物联网机会的市场中,开发人员面临越来越多的需求,更快地为复杂的应用程序制作原型。尽管开发人员可以找到越来越多的IoT开发平台,但由于工程师通过与这些平台相关的复杂实施细节工作,项目也经常绊倒。

  北欧Thingy:52通过快速原型平台简化了物联网开发,隐藏了底层硬件设计和软件架构的复杂性。使用Nordic Thingy工具包,开发人员可以快速启动启用蓝牙功能的多传感器系统 - 后来将以Thingy参考设计为基础,创建定制的IoT设备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值