物联网开发板对对碰系列之四——Hexiwear 开发Mbed
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快到了,下一篇改评测这个新东东。