使用低功耗蓝牙技术将可穿戴无线传感器连接到物联网

工业物联网 (IIoT) 在很大程度上要依赖传感器从便携式可穿戴系统收集数据,以便监控运动、压力、湿度和其他众多特征,然后将这些数据馈送至云进行处理。
通过模块方式,我们可以快速轻松地将传感器添加到设计中,但在将这些模块连接到网络的其余部分时,我们通常会面临一些挑战。有很多不同方法可以进行这种连接,但其中一种最简单的方法是采用最新的低功耗蓝牙 (BLE) 技术。BLE 收发器采用了芯片级封装,尺寸有所缩减,因而足够小巧,能够轻松与工业物联网设计中的各种传感器配合使用。
Dialog Semiconductor 物联网传感器加密狗图片
图 1:Dialog 物联网传感器加密狗
无线收发器设计公司 Dialog Semiconductor 实现了这个目标,他们的 SmartBond 物联网传感器开发套件让运动和环境检测应用的开发工作变得更轻松。
Dialog 将无线收发器和传感器组合在专用模块中,进而获得世界上功耗最低的 12 自由度 (DOF) 无线传感器模块。该模块在缩减系统尺寸和成本的同时,还包含了用于加快物联网系统开发的所有必要硬件和软件。通过组合所有这些元件,Dialog 能够利用代码来融合来自各个传感器的数据,提供更有意义的输出,而不只是提供数据流。这就有助于降低收发器的负载,减少存储器需求和电流消耗,从而延长电池寿命并缩短开发时间。
这种系统优化只有通过开发完整的模块才能实现,而这种模块要将 BLE 收发器和 ARM® Cortex®-M0 处理器与 Bosch Sensortec 的加速计、陀螺仪、磁力仪、环境传感器组合在一块尺寸仅为 16 x 15 mm 的电路板上。
组合了三种传感器和一个蓝牙收发器的 Dialog 物联网模块图片
图 2:该物联网模块组合了三种传感器和一个蓝牙收发器,实现 12 自由度测量。
它还包括 SmartFusion,也就是 Dialog 独有的智能传感器融合软件库,可进行数据采集、传感器校准和融合。这样一来,该模块只需使用 4.5 KB 的 ROM 和 500 字节的 RAM,并且能决定传感器的数据速率。
该模块采用 DA14583 低功耗蓝牙 SoC,配备工作频率为 12.5 Hz 的 BMI160 6 轴惯性测量装置、工作频率为 10 Hz 的 BMM150 3 轴地磁传感器,以及以 0.5 Hz 测量压力、温度和湿度的 BME280 集成环境传感器装置。
所有这些都只需要 Cortex-M0 处理器提供相对较低的 0.5 MIPS 处理资源,以支持磁力仪自动校准和 9 自由度的传感器融合。其中惯性测量装置中的陀螺仪和加速计的工作频率分别为 100 Hz 和 10 Hz。
融合的方向数据通过 BLE 接口传输到在 Android 和 iOS 上运行的一个物联网传感器应用,从而实现了传感器、方向数据和配置的可视化。
DA14583 搭载完全集成的无线收发器和基带处理器,在该模块中可用作独立控制器。它拥有 1 Mb 闪存来存储蓝牙规范和自定义应用代码,所有这些均能够以无线方式 (OTA) 更新。合格的 BLE 协议栈保存在专门的 ROM 中,而所有软件则通过一个简单的计划程序在 ARM Cortex-M0 处理器上运行。
BLE 固件包括 L2CAP 服务层协议、安全管理器 (SM)、属性协议 (ATT)、通用属性规范 (GATT) 和通用访问规范 (GAP)。
收发器提供 93 dB 的射频链路预算,带有一个单端 50 W 匹配式 RFIO 接口,用于连接陶瓷芯片天线。所有射频模块均由片载低压差稳压器 (LDO) 供电,而且所有的射频模块都有自己的偏置控制。
Bosch Sensortec BMM150 是一款独立的地磁传感器,可在三个垂直轴上测量磁场,适用于手机、手持设备、计算机外设、人机接口、虚拟现实功能和游戏控制器。它有自己的处理器,可将地磁传感器的输出转换为数字结果,而这些结果可通过行业标准数字接口(SPI 和 I2C)读取。
Bosch Sensortec 的 BMM150 地磁传感器图片
图 3:Bosch Sensortec 的 BMM150 地磁传感器可提供罗盘和位置数据。
晶圆级芯片尺寸封装 (WLCSP) 的尺寸仅为 1.56 x 1.56 x 0.6 mm,可在 1.62 至 3.6 V 的电压下工作,VDDIO 电压范围为 1.2 至 3.6 V。
BME280 是集湿度、压力和温度传感器于一体的数字传感器,采用金属盖 LGA 封装,尺寸为 2.5 × 2.5 mm,高度为 0.93 mm。湿度传感器可在宽温度范围内提供快速响应和总体精度,而压力传感器则为绝对气压传感器,具有极高的精度和分辨率,而且噪声远低于以前的版本。集成的温度传感器经过优化,可提供最低的噪声和最高的分辨率。另外,输出可用于压力和湿度传感器的温度补偿,也可用于评估环境温度。传感器提供了 SPI 和 I²C 接口,可在 1.71 至 3.6 V 的电压范围内工作,VDDIO 电压范围为 1.2 至 3.6 V。
传感器必须小心放置在模块上,以避免出现问题。磁传感器应该距离钮扣电池 3 mm 至 5 mm,距离高电流路径 10 mm,例如 DC-DC 转换器和电感器附近的路径,最好距离电源轨 3 mm 至 4 mm。钮扣电池本身放置于 PCB 下方,尽可能与传感器保持最大距离,以避免可能产生的干扰。
模块在休眠模式下平均仅消耗 11 µA 的电流,而在广播模式下,在它寻找要连接的主机时,平均电流消耗将提升至 110 µA。连接后,在没有运动且所有传感器处于活动状态时,平均电流消耗为 560 µA。当模块正在移动时,测量的最高功耗为 1.35 mA(平均值)。
  BMI160 BME280 BMM150 物联网传感器(平均值)
工作电流 (mA) 0.950(全功能模式) 0.340(85°C 下进行湿度测量)
0.714(85°C 下进行压力测量)
0.350(85°C 下进行温度测量)
0.500(正常模式)  
休眠电流 (μA) 3(挂起模式) 0.3 3(挂起模式) 11
图 4:物联网模块内部的传感器的功率数据。
Dialog 特意简化了连接方法,我们可通过 Play Store 上的 Android 应用或 App Store 上的 iOS 应用连接到模块。这些应用会自动连接到电路板,并显示来自传感器的数据。
要通过 Evothings 等开发环境对模块进行编程,可使用 Github 上的软件库。其中包括 JavaScript 库,可用于通过 Cordova 应用与模块进行通信,该应用包含了低功耗蓝牙插件,另外也可通过 Evothings Workbench 中的一个新应用进行通信。

初始化和连接

包括 iotsensor.js 文件
Copy 
<script src="libs/evothings/dialog-iotsensor/iotsensor.js"></script>
通过指定您使用的项目类型(RAW 或 SFL)创建新的 iotsensor 对象。
Copy 
// Device type we are connecting to, can either be RAW or SFL
var type = evothings.iotsensor.SFL;
 
// Create a new IoT Sensor SFL instance
var iotsensor = evothings.iotsensor.createInstance(type);
然后,将新的物联网传感器实例连接到使用 BLE 的传感器。程序库提供了选项,可使用 connectToClosestSensor(scanTime, callbackFun, disconnectFun) 函数,自动连接到最近的物联网传感器。
Copy 
// Scan for 3000ms
iotsensor.connectToClosestSensor(
  3000,
  function()
  {
    console.log('We are connected!');
  },
  function(error)
  {
  console.log('Disconnect error: ' + error);
  }
);
还可以手动连接到器件。
Copy 
iotsensor.startScanningForDevices(
    function(device)
    {
        console.log('Device found: ' + device.name + ' RSSI: ' + device.rssi);
        if(iotsensor.isIoTSensor(device))
        {
            // We have an IoT Sensor, let's connect!
            iotsensor.connectToDevice(
                device,
                function()
                {
                    // Connected and device is ready
                },
                function(error)
                {
                    console.log('Disconnect error ' + error);
                }
            );
        }
    }
);

传感器数据

物联网传感器提供一份报告,指出哪些传感器可用以及已连接器件的固件版本。最好是使用这些选项来确定器件的功能。
Copy 
console.log('IoT Sensor device info:'
              + '\n Device model:  ' + iotsensor.getDeviceModel()
              + '\n Firmware:      ' + iotsensor.getFirmwareString()
              + '\n Accelerometer: ' + iotsensor.isAccelerometerAvailable()
              + '\n Gyroscope:     ' + iotsensor.isGyroscopeAvailable()
              + '\n Magnetometer:  ' + iotsensor.isMagnetometerAvailable()
              + '\n Barometer:     ' + iotsensor.isBarometerAvailable()
              + '\n Temperature:   ' + iotsensor.isTemperatureAvailable()
              + '\n Humidity:      ' + iotsensor.isHumidityAvailable()
              + '\n Sensor Fusion: ' + iotsensor.isSflAvailable());
要从其中一个传感器接收数据,必须设置回调函数。每次当有来自传感器的可用新数据时,就会调用该函数。设置回调之后,则可启用传感器。
Copy 
// Set the accelerometer callback and turn on the accelerometer
iotsensor.accelerometerCallback(handleReply)
.accelerometerOn();
 
function handleReply(data)
{
  console.log('Accelerometer: ' +
              '\n x: ' + data.x +
              '\n y: ' + data.y +
              '\n z: ' + data.z);
}

设置

器件的设置可分为三个类别:基本、传感器融合和校准。
configuration.BASIC 对象是一个阵列,包含 11 个不同设置,用于控制传感器。这些对象包含了可写入器件的所有可能值。
Copy 
// Change accelerometer range to 16g
iotsensor.configuration.BASIC.ACCELEROMETER_RANGE = iotsensor.enums.ACCELEROMETER_RANGE._16g;
 
// After changing a settings, set the basic configuration in device
iotsensor.setBasicConfiguration();
 
// Optional - Store basic configuration in flash
iotsensor.storeBasicConfigurationInFlash();
 
// Optional - Retrieve new settings from device
iotsensor.readBasicConfiguration(
    function(data)
    {
        console.log('Settings: ' + data);
    }
);

传感器融合

更改传感器融合系数的方式与更改基本配置相同:
Copy 
// Change Beta A to 2000
iotsensor.configuration.SFL_COEF.BETA_A = 2000;
 
// Set basic configuration in device
iotsensor.setSflCoefficients();
 
// Retrieve sensor fusion coefficients from device
iotsensor.readSflCoefficients(
    function(data)
    {
        console.log('Sfl coefficients: ' + data);
    }
);

校准

使用 configuration.CAL_COEF 和 configuration.CAL_CONTROL 对象更改校准系数和校准控制标志设置。
Copy 
// Set Q_FORMAT
iotsensor.configuration.CAL_COEF.Q_FORMAT = 12;
 
// Set offset vector
iotsensor.configuration.OFFSET_VECTOR = new Int16Array([100, 100, 100]);
 
// Set matrix
iotsensor.configuration.MATRIX = [new Int16Array([100, 0, 0]), new Int16Array([0, 100, 0]), new Int16Array([0, 0, 100])];
 
// Set Calibration coefficients in device
iotsensor.setCalibrationCoefficients();
 
// Retrieve calibration coefficients from device
iotsensor.readCalibrationCoefficients(
    function(data)
    {
    console.log('Calibration coefficients: ' + data);
    }
);
// Set calibration control flag byte 2 (CONTROL_FLAG[0])
iotsensor.configuration.CAL_CONTROL.CONTROL_FLAGS[0] = 28 // 0011100
 
// Set calibration control flags in device
iotsensor.setCalibrationControl();
 
// Retrieve calibration control flags from device
iotsensor.readCalibrationControl(
    function(data)
    {
        console.log('Calibration control ' + data);
    }
);
然后,函数 storeCalibrationAndControl() 会将传感器融合和校准的所有设置存储在蓝牙收发器的闪存中。

总结

Dialog Semiconductor 的无线模块将多个传感器组合在一起,实现了 12 自由度的测量,适合用于工业物联网和可穿戴设备设计。通过低功耗技术和最新的低功耗蓝牙技术,开发人员获得了一种简便的方式,通过 Android 和 iOS 应用轻松启动传感器模块开发。利用传感器融合软件库,可以组合原始数据,以减少模块的传输数据、功耗和存储空间,从而降低成本和复杂度。这些软件库还可在像 Evothings 这样的开发环境中使用,以针对特定应用开发更复杂的代码。

用户喜欢...

无线传感器网络 - 基础知识

传感器网络是小型轻量级无线节点的高度分布式网络,通过测量物理参数(如温度,压力或相对湿度)大量部署以监控环境或系统。 微机电系统(MEMS)1技术的最新进展使建筑传感器成为可能...


无线传感器网络使半导体晶圆制造厂保持高效率运行

对半导体晶圆制造至关重要的是细致、准确地沉积多层化学材料,以形成数千、数百万甚至在有些情况下是数 10 亿个...


ADI无线传感器网络解决方案

无线传感器网络(WSN)由空间分布式自动传感器构成,用于监控物理或环境条件,如温度、声音、振动、压力、湿度、运动或污染物。以合作方式通过网络将其数据传输到主要地点(基站)。...


LoRa技术的LPWAN网络用于物联网无线传感器网络

低功耗广域网 (LPWAN) 已出现很长时间,但对物联网 (IoT) 低成本连接及功耗和成本改进的需求正引发对 LPWAN 越来越多的关注。 硅技术的改进已极大降低了功耗,可用于电池供电型无线传感器节...


可穿戴医疗设备的安全性研究以及策略分析

随着全球人口老龄化加剧,空巢话趋势明显,慢病管理带来的巨大挑战,大众对自我运动量化的需求,以及近年来网...


基于PIC32上实现TCP/IP网络协议和zigbee无线传感器网络的智能家居系统

项目背景 随着物联网的热潮的到来,2010年国内许多省市纷纷发布的《物联网发展规划》,物联网附属领域智能家居的发展也得到了非常大程度的推进。由于物联网的核心和基础仍然是互联网...


用于物联网无线传感器网络的低功耗长距离无线技术

低功耗广域网 (LPWAN) 已出现很长时间,但对物联网 (IoT) 低成本连接及功耗和成本改进的需求正引发对 LPWAN 越来越多的关注。 硅技术的改进已极大降低了功耗,可用于电池供电型无线传感器节...


Freescale Kinetis KW0x无线MCU开发方案

Freescale公司的Kinetis KW0x系列产品是低于1GHz的无线MCU,集成了支持FSK, GFSK, MSK或OOK调制的收发器和低功耗ARM Cortex M0+ CPU...


TI RF430F5978低功耗RF MCU开发方案

TI公司的RF430F5978是基于CC430产品系列的低功耗RF MCU,是一种高度集成的RF解决方案.它提升了读取区和电池的性能,适合...


[原创] Linear LTC 5800-WHM SmartMesh无线传感器网络开发方案

Linear公司的LTC 5800-WHM系统级芯片(SoC)是IEEE 802.15.4 SoC解决方案的Eterna系列产品,片上集成了功率放大器(PA)和收发器和运...


[原创] Linear LTP5901-IPM高精度无线温度传感器解决方案

Linear公司的LTP5901-IPM/LTP5902-IPM是具片式天线的SmartMesh PCB微尘模块,是IEEE 802.15.4e PCB模块解决方案Eterna系列产品的IP微尘...


用于物联网无线传感器网络的低功耗长距离无线技术

低功耗广域网 (LPWAN) 已出现很长时间,但对物联网 (IoT) 低成本连接及功耗和成本改进的需求正引发对 LPWAN 越来越多的关注。 硅技术的改进已极大降低了功耗,可用于电池供电型无线传感器节...


[原创] TI CC1310小于1GHz超低功耗无线MCU开发方案

TI公司的CC1310是小于1GHz超低功耗无线MCU,采用ARM Cortex-M3内核,工作频率48MHz,主要用在315-, 433-, 470-, 500-, 779-, 868-, 915-和...


面向工业物联网的无线传感器网络

作者:凌力尔特公司;Dust Networks产品部;总裁Joy Weiss ,产品市场经理Ross Yu 在发展工业物联网 (IoT) 以及满足相关的工业传感器无线连网需求方面,已经做了很多。不过,工业设备及应用的网络...


楼宇自动化/工业现场的变革——ADI无线传感器网络开发套件EV-ADRN-WSN-1Z评测

随着物联网应用的不断突破,我们越来越能感觉到在实际生活中IoT带来的便利性,比如目前比较先进的楼宇自动化照...


基于无线传感器网络的角度监测系统

摘要:针对传统的角度测量设备体积庞大,测量精度低,实时性差等问题,介绍了一种空间物体三维姿态监测系统,...