对于物联网(IoT)设备的开发人员而言,蓝牙是一种快速,安全的连接路径,无线片上系统(SoC)设备已成为实现蓝牙设计的现成解决方案。尽管如此,上市时间的压力仍然在增加,因此即使这些高度集成的解决方案也不尽如人意,需要时间和资源来添加完整物联网设计所需的硬件和软件。
本文介绍了蓝牙 - 启用传感器板为即时物联网解决方案提供了圣杯,也可以作为家庭或个人使用的定制无线传感器物联网设备的基础。然后使用电路板的应用程序和板载MEMS麦克风,使用代码描述一个真实的传感实现示例。
模块简化蓝牙
蓝牙低功耗(BLE)提供多个优势包括低功耗,高安全性以及移动平台(包括智能手机,平板电脑和笔记本电脑)的近乎普遍的可用性。虽然低成本收发器的广泛应用推动了蓝牙连接的快速接受,但这些收发器仍然需要在RF设计方面的重要知识来构建优化设计。
蓝牙模块简化设计,提供完整的RF子系统,需要工程师简单地集成MCU和相关的子电路,以构建支持蓝牙的系统。诸如Silicon Labs Gecko MCU系列等无线SoC是这一发展的举措,简化了实施,同时减小了设计尺寸和成本。
例如,SiLabs EFR32MG1P Mighty Gecko MCU集成了32位ARM® Cortex®-M4内核,存储器,加密硬件加速器,DC/DC转换器,多个外设以及用于2.4 GHz和sub-GHz通信的收发器(图1)。
图1:SiLabs EFR32MG1P无线SoC将完整的基于Cortex-M4的系统与先进的收发器相结合,能够支持sub-GHz和2.4 GHz通信。 (图片 Labs)
无线传感器板
高度集成,高能效的无线SoC提供了现成的解决方案,但仍然让设计人员负责实现传感器接口,I/O连接,电源管理和RF。在电池供电的传感器节点中,每个子系统都需要特别注意以确保的功耗。特别是,当工程师处理包括天线匹配,布局和电磁干扰减轻在内的RF优化问题时,RF设计要求可能会减慢项目进程。
SiLabs Thunderboard Sense板为物联网应用提供了即时,可扩展的解决方案。该电路板基于EFR32MG1P无线SoC,包括六个传感器,8-Mbit闪存和高亮度RGB LED,以及用于用户交互的双色LED和按钮(图2)。此外,Thunderboard Sense可作为参考设计,用于实现基于上述EFR32MG1P Mighty Gecko无线SoC的定制蓝牙IoT设计。
图2:SiLabs Thunderboard Sense主板提供现成的电池供电的蓝牙IoT设计,配备了大量传感器并以全面的软件环境为后盾。 (图片 Labs)
Thunderboard Sense的设计仅适用于插入其板载连接器的CR2032纽扣电池。实际上,该设计强调从MCU本身开始的低功耗操作。 EFR32MG1P MCU在工作模式下仅消耗63μA/MHz,在DeepSleep模式下仅消耗1.4μA,从而保留RAM并保持实时时钟运行。
然而,在无线传感器设计中,功率优化要求将电源管理应用于外部传感器及其调理电路。 Sense板将这些外围电路分组到电源域,并使用专用的SiLabs EFM8SB MCU作为电源和中断控制器来管理这些域。
例如,从电路板的内置MEMS麦克风获取数据, EFR32MG1P MCU将0x01写入EFM8SB外设控制器MCU中的ENV_SENSOR_CTRL寄存器。 EFM8SB反过来为低压差(LDO)稳压器供电,为MEMS麦克风和相关的模拟信号链供电(图3)。接下来,来自EFM8SB的中断信号使EFR32MG1P MCU通过其集成的模数转换器(ADC)开始数据采集。
图3:Thunderboard Sense使用专用的EFM8SB MCU作为电源和中断控制器,以优化数字和模拟传感器的功率利用率以及在他们的调理电路中。 (图片 Labs)
该板还为高功率应用或开发过程中的线路供电操作提供了替代供电选择。例如,对于以高强度运行板载LED的应用,您可以通过板内置的连接器添加外部电池。此外,您还可以通过USB连接器或Mini Simplicity连接器为电路板供电。后一种方法还允许使用外部SiLabs调试器的能量监控功能执行的电流测量。
起点
使用Sense板和随附的应用程序只需几个简单的步骤。启动Thunderboard应用程序(从iOS App或Google Play商店)后,您只需为Thunderboard Sense主板供电,该主板立即开始通过蓝牙进行自我宣传,同时闪烁绿色LED。当Thunderboard Sense出现在Thunderboard应用程序上时,用户选择该设备并继续使用特定应用程序。
事实上,Thunderboard Sense主板和应用程序为许多物联网应用程序提供了现成的解决方案。除了作为现成的解决方案使用外,Thunderboard Sense还提供了允许开发人员轻松扩展其功能的功能。除了Micro-B USB连接器和SiLabs的Mini Simplicity连接器外,Thunderboard Sense还提供了20个分线焊盘,开发人员可以使用它们连接其他外围设备或电路板。分线焊盘包含许多EFR32MG1P MCU I/O引脚,包括I 2 C和SPI引脚,以及主板电源,5 V电压轨和3.3 V LDO电源轨。设计人员还可以利用EFR32MG1P MCU的灵活引脚布线来访问其任何集成外设。
除了作为现成解决方案的实用性外,Thunderboard Sense硬件和附带软件提供了一个起点用于自定义IoT应用程序。该设计解决了与I 2 C和SPI数字传感器以及模拟外设和RF天线相关的常见接口问题。为了帮助加速基于Sense板的定制设计的开发,SiLabs为每个外设和IO提供完整的原理图,包括一个合适的2.4 GHz匹配网络,将MCU的2.4 GHz RF I/O引脚连接到板载芯片天线。
例如,MEMS麦克风电路的原理图为MEMS麦克风输出提供了模拟信号链的完整设计。在该电路中,德州仪器TLV342S运算放大器用于32.1 dB增益放大器级和用于Knowles SPV1840 MEMS麦克风输出的一阶有源低通滤波器(图4)。该设计将信号链的MIC输出连接到MCU的12位逐次逼近寄存器(SAR)ADC,用于麦克风数据采集。
图4:除了Thunderboard Sense工具包的硬件和软件外,Silicon Labs还提供装配图,材料清单和完整的原理图,例如这种模拟信号调理电路用于MEMS麦克风信号采集。 (图片 Labs)
软件设计和调试
Silicon Labs支持Thunderboard Sense套件,其中包含一系列可用于其Simplicity Studio开发环境的软件库。除了用于MCU硬件功能的软件库外,该软件包还包括用于Thunderboard Sense的板级支持包(BSP)以及随附的示例C代码。例如,SenseApp模块提供了一个BLE应用程序,可将数据从其全套传感器传输到智能手机应用程序。
除了作为正常运行的应用程序之外,SenseApp代码还说明了基于EFR32MG1P MCU实现IoT传感器设计的关键软件设计模式。例如,BLE堆栈接管实时时钟,防止其用于应用程序本身的定时事件。 SenseApp示例代码演示了如何使用MCU软件定时器定期轮询各种软件功能,包括传感器数据捕获功能。
在SenseApp应用程序中,主程序启动设备并开始等待无限循环对于一个事件并调用一个应用程序事件处理程序来处理该事件(清单1)。
复制
while(1){
struct gecko_cmd_packet * evt;
/*检查堆栈事件。 */
evt = gecko_wait_event();
/*运行应用程序和事件处理程序。 */
appHandleEvents(evt);
}
清单1:SenseApp主程序中的实用程序循环不断循环,将事件移交给事件处理程序以调用传感器采样等操作。 (列表 Labs)
位于app.c中, appHandleEvents 调用 RADIO_bleStackLoopIteration()(位于radio_ble.c中),如果设备是不在蓝牙广告模式。如果连接处于活动状态,则此例程轮流调用 connectionActiveIteration()(在radio_ble.c中),它提供数据采样功能。
connectionActiveIteration( )例程检查板载按钮的状态,并定期调用负责更新每个板传感器数据的服务程序。,此例程检查麦克风活动,如果麦克风处于活动状态,它会通过设置声级并通过调用 MIC_start()函数启动麦克风数据采集来启动麦克风数据采集(清单2)
<跨度>复制 <代码>
**************************** **************************************************/
void MIC_start(uint32_t nSamples)
{
if(nSamples> sampleBufferLen){
sampleCount = sampleBufferLen;
}
else {
sampleCount = nSamples;
}
if(!dmaBusy){
/*配置DMA */
DMADRV_PeripheralMemory(dmadrvChannelId,//channelId
dmadrvPeripheralSignal_ADC0_SCAN,//peripheralSignal
(void *)sampleBuffer,//* dst
(void *)&amp;(ADC0 - > SCANDATA),//* src
true,//dstInc
sampleCount,//len
dmadrvDataSize2,//size
dmaCompleteCallback,//callback
NULL);//* cbUserParam
adcEnable(true);
dmaBusy = true;
sampleBufferReady = false;
< p>}
返回;
}
清单2:mic.c模块位于BSP包中,包括麦克风支持例程,包括 MIC_start()例程,通过从MCU的片上ADC启动DMA传输来执行麦克风数据采集。 (列表 Labs)
MIC_start()例程启动来自MCU的片上ADC( dmadrvPeripheralSignal_ADC0_SCAN)的DMA传输,使用dmadrv.c模块中的 DMADRV_PeripheralMemory 例程。 (如前所述,MEMS麦克风信号链的输出与MCU ADC相连。)该模块是github上可用的SiLabs emdrv EnergyAware驱动程序库的一部分。
完成ADC数据采集后序列, dmaCompleteCallback()回调例程禁用进一步的ADC采样,并为下一轮采样准备设备。超越这个基本应用程序,开发人员可以构建这些代码示例和基本设计模式,以实现更复杂的应用程序特定功能。
结论
蓝牙低功耗提供了一个特别引人注目的连接选项用于设计用于移动应用程序的物联网应用程序。尽管无线SoC减轻了设计负担,但即使是这些高度集成的设备也需要额外的工作来实现全功能物联网设计所需的其他硬件和软件组件。 SiLabs Thunderboard Sense套件基于Silicon Labs Mighty Gecko无线SoC,为移动连接的物联网设备提供完整的现成解决方案,并作为更复杂的定制物联网设计的起点。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。