物联网开发板对对碰系列之四——Hexiwear 开发Mbed

物联网开发板对对碰系列之一——概述

物联网开发板对对碰系列之二——Hexiwear

物联网开发板对对碰系列之三——Hexiwear 开发平台

1. Hexiwear出厂时内置一个firmware,可以采集各个传感器的数据并上传,并可以开启蓝牙状态,包括加速度,角度,运动的步数,心率,温湿度,光照度等,已经非常全面。
2. 虽然推出时间很短,但是已经在mbed上开发了足够的库以支持硬件开发。在NXP的Kinetics Studio仍然支持的情况下,使用OpenSDA的mbed开发就更具有吸引力和便捷性。
3. 以计步器的算法上传到配套的官版Hexiwear 手机APP上。使用的硬件只有Hexiwear,软件就是Mbed OS。内置K64 150MHz ARM-M4 core, OLED, Battery packs, BLE connection, Hexiwear mobile APP。
具体方法是,采集运动传感器的数据求加权有效值rms,超过一定限度就是计算1次,如果长时间没有变化,自动清零。
这个过程中需要导入KW40z和 FXOS8700驱动库,以及显示屏Hexi_OLED_SSD1351库
先clone范例程序,

然后用import命令导入KW40z和 FXOS8700驱动库

然后设置启动阈值,

#define MAG_THREHOLD        0.5 
#define ACCEL_THREHOLD      0.5 
Timeout swimit_reset; 
static uint16_t swimit_count;

// ......

void swimit_reseter(void);

//.....
void swimit_reseter() { 
swimit_count=0; 
}

计算rms值并判断是否可以计数,

/*acquire accel_data and mag_data, running Sensor Tag mode*/ 
     accel.acquire_accel_data_g(accel_data); 
     accel_rms = sqrt(((accel_data[0]*accel_data[0])+(accel_data[1]*accel_data[1])+(accel_data[2]*accel_data[2]))/3); 
     Thread::wait(0.01); 
     mag.acquire_mag_data_uT(mag_data); 
     mag_rms = sqrt(((mag_data[0]*mag_data[0])+(mag_data[1]*mag_data[1])+(mag_data[2]*mag_data[2]))/3); 
     Thread::wait(0.01); 
       //rm Strok counting by change of MAG and ACCEL at the same time,  
     if (accel_rms>ACCEL_THREHOLD ||mag_rms>MAG_THREHOLD)   swimit_count++; 
     steps = swimit_count; 
     accel_rms_ave=accel_rms;

通过kw40z驱动库中的发送功能,直接发送数据。这个是启动了BLE的GATT服务发送的,在库函数里已经定义了,这里是引用了mbed的BLE_API库,这样是更简洁的。

kw40z_device.SendAccel(accel_data[0],accel_data[1],accel_data[2]);

kw40z_device.SendSteps(steps);

Hexi_KW40Z.h定义如下

packetType_steps            = 14, /**< health service */

4、项目开发完毕,还可以发布供大家参考。用publish功能。

这样的组合是便于上手,快速部署。对于懒人来说,是在是太好用了。Hexiwear评测完了,应该是TI 的SensorTAG。不过BBC的microbit快到了,下一篇改评测这个新东东。

(0)

相关推荐