APP下载

基于可穿戴设备的山羊行为分类

2018-04-11张政云袁晨晨王谟仕

关键词:蓝牙山羊加速度

倪 力,张政云,焦 俊,袁晨晨,王谟仕

安徽农业大学信息与计算机学院,安徽 合肥 230036

随着电子技术的发展,最近几年可穿戴设备已经从学科实验室走向了消费者市场,从苹果手表到小米手环[1],开始逐渐被普通消费者所接受,目前的可穿戴设备的功能主要还是针对于人体的健康状况和运动状态的追踪,应用于动物的可穿戴设备还比较少,而动物的活动量大小又是精准饲养的主要参考依据,为此,本文设计了一种可以为山羊所佩戴的穿戴式设备,采用Arduino为设备软硬件平台,集成三轴加速度传感器采集山羊活动数据,并将数据通过传输到服务器,结合服务器端算法分析得出分类结果。

1 总体设计

穿戴设备端完成对山羊加速度数据的实时采集、保存和传输。设备和服务器通过蓝牙4.0技术通信[3]。服务器端将接受到的数据保存并进行分析,系统框图如图1所示。

图1 系统结构框图Fig.1 Diagram of System structure

设备控制的核心为Arduino最小系统[2],控制三轴加速度传感器实时采集运动数据,由于要保存一天的采集数据,数据量较大,所以设备集成了Mirco SD卡模块,将采集的数据先保存到Mirco SD卡中,待山羊回舍后,设备的蓝牙模块将自动连接到服务器蓝牙端,并按照约定好的协议格式发送数据,上传完成后将清空设备端的数据,服务器将数据按照设备唯一编号和对应的数据保存到SQLSERVER数据库已建立好的表中。然后在服务器端使用Matlab R2013a作为分析平台,选用模糊C-均值聚类算法对数据进行处理。

2 硬件设计

设备主要由系统控制、加速度采集、数据存储、蓝牙4.0通信和电源管理这五个模块组成。

图2 硬件结构框图Fig.2 Block diagram of the hardware structure

2.1 Arduino平台

Arduino是一款基于开源的电子原型设计平台[4],包含软件和硬件两个部分。设备采用以AVR 328 p为主控芯片,一个16 M晶振、两个22 pF电容和一个复位电路搭建的最小系统作为Arduino硬件部分。主控芯片共引出了3个模拟端口,7个数字端口,以及SPI和I2C两种通信方式,最小系统原理图如图3所示。

图3 主控芯片电路原理图Fig.3 Circuit scheme diagram of main control chip

硬件部分搭建完成后,还需要使用AVR专用的USBASP下载器为最小系统烧入bootloader,为Arduino软件部分实现做准备,此后在计算机端就可以使用Arduino的IDE软件平台对设备进行程序的编写、下载和调试。

2.2 加速度传感器

采用了意法半导体的LIS3DH三轴加速度传感器作为山羊运动状态采集模块[7],传感器输出前进方向x、水平方向y和垂直方向z三个轴的数据,采用I2C方式与主控芯片通信时,需将传感器芯片CS端口置为高电平,同时为了保证IO部分先于加速度部分工作,传感器芯片供电引脚VDD比数字IO供电VDD_IO另外并联了两个电容。当20 s内传感器没有检测到任何加速度的变化则自动进入休眠状态,将进入休眠模式,当传感器检测到变化并产生数据时内置的96级的FIFO可以作为数据缓存存储32组三轴加速度数据,如果FIFO溢出便会产生一个中断输出,将中断输出映射到主控芯片的外部中断源上,主控芯片将会从待机模式唤醒读取FIFO中的数据,缓存的存在能使单片机一次连续读取32组的数据,相比一次读取一组数据的方式能让单片机更多时间处于待机模式,从而降低单片机功耗,其具体外围电路如图4所示。

图4 加速度传感器电路原理图Fig.4 Circuit scheme diagram of acceleration sensor

2.3 Mirco SD存储卡

为了能够至少保存一天采集的数据,设备采用了体积较小的Mirco SD卡用来实时存储数据,存储容量为1GB,通过ISP方式与主控芯片通信,采集到的加速度数据被拼接成一定的格式以文本文件的方式进行保存,经测试一天数据约16 M左右,其具体外围电路如图5所示。

2.4 蓝牙4.0模块

设备采用的是TI公司的蓝牙4.0模块[5],通过串口方式与主控芯片通信,为了充分利用蓝牙4.0的低功耗特性,在数据发送时将蓝牙模块EN端口为低电平,发送完毕后再置为高电平,使得模块发送完后立即进入休眠模式,当蓝牙接收到外部数据时通过中断方式通知主控芯片有数据到来,其具体外围电路如图6所示。

图5 存储卡电路原理图Fig.5 Memory card circuit schematic diagram

图6 蓝牙电路原理图Fig.6 Bluetooth circuit schematic diagram

3 软件设计

设备的软件代码是在Arduino提供的IDE上编写完成的[7],依据Arduino编写规范[5]在Setup()中完成程序的初始化,在Loop()中编写程序主体,该函数将无限循环直至设备掉电。程序编写完成后通过USB烧写器上传到单片机中。

软件设计主要包括四部分:三轴加速度传感器数据采集、数据存储芯片读写、与服务器蓝牙数据通信、设备电压实时检测。在三轴加速度传感器采集数据前需要对其做初始化设置,因为使用I2C方式与传感器通信,所以要引入Arduino IDE提供的Wire.h函数库,传感器需要初始化设置的地方有3处,采样频率设置为1 Hz,大约1S产生1到2个数据和开启低功耗模式,根据数据手册检测震动时灵敏度设置为-2.0 g~+2.0 g,需设置0×20寄存器为0×1F,开启高精度,需置0×23位寄存器为0×80。对设备电压实时检测程序的目的是为了检测锂电池电量,单片机使用了3.7 V 800 mA的锂聚合物电池供电,电池自带保护板,在充满电量情况下能达到4.2 V。电压检查实现方式是将主控芯片的模拟口A0接到芯片的AREF口,从A0读入模拟数据,由于读入的数据是介于0~1023之前的,所以我们要转换成0~4.2 V,当电量小于3.3 V时控制LED灯闪烁提示电池电量较低,同时通过打开蓝牙模块发送低电量告警信息。图7给出了设备程序流程图。

图7 设备程序流程图Fig.7 Program flow chart of device

由于可穿戴设备非常强调低功耗,因此我们在程序设计上也充分利用芯片的低功耗特性,设备启动后,在初始化中首先开启加速度传感器的低功耗模式,然后初始化SD卡,如果SD卡设备正常则将蓝牙模块的EN引脚置高,蓝牙模块立即进入休眠模式,随后主控芯片将进入“Power-down”休眠模式,此时设备测试耗电量约为15 mA。如果SD卡初始化失败,将闪烁LED灯并打开蓝牙模块发送提示初始化失败告警信息。主控芯片在休眠模式下被唤醒的情况有两种,一是当三轴加速度传感器检采集到数据后会通过中断唤醒单片机处理数据,二是当蓝牙成功连接到上位机后也将通过中断唤醒单片机上传数据。

4 实验与分析

根据前期对山羊的日常行为的观察,山羊的静卧、行走、采食、跨跳行为占据日常行为的90%以上,因此我们主要对这4种行为进行分类[8]。在试验中我们选择了两头体态健康的成年山羊作为实验对象,将设备绑在羊角的中心处,三轴加速度传感器的Z轴指向山羊头部正上方,X轴指向山羊的前进方向,Y轴指向山羊右侧。各采集了4组数据,每组记录了约一天的活动量。

4.1 数据预处理

加速度传感器一次会输出X、Y、Z三个轴的数据,由于无法预知重心运动的方向,选用某个轴的数据分析是不合适的,因此我们需要定义一个特征量SVM(Single Vector Magnitude)用来表示和加速度向量大小[9],既有:

式中,X、Y、Z是三个轴向的输出,它的大小与速度变化的剧烈程度有关,与运动方向无关。同时为了消除设备本身抖动产生的噪声信号,需先将数据进行滤波,由于小波去噪有滤波后还能成功保留原信号特征的特性,我们选用小波去噪。图8为部分三轴加速度数据与对应的和加速度数据及小波去噪后的和加速度数据。当山羊处于跳跃行为阶段时,三个轴的数据曲线出现明显急升急降,Z轴数据反应最为明显。当山羊处于静卧阶段时,数据曲线比较稳定。当山羊处于采食阶段时,数据曲线比较剧烈且无规律性。当山羊处于行走阶段时,数据曲线出现有规律的波动,Z轴数据的波动规律性最为明显,X轴也有规律性的大幅升降。而这些数据特征在和加速度曲线上也均能准确反应,且运动数据与静止数据区分度更加明显。

图8 加速度传感器的三轴输出Fig.8 3-axis output of acceleration sensor

4.2 数据分析原理

给定山羊的三轴加速度数据集[10]X={X1,X2,...,Xn},mj(j=1,2,...k)为每个聚类的中心,k为类别数目,µj(xi)是第i个样本对应第j类的隶属函数,基于隶属度函数的聚类损失函数可以写为:

采用迭代的方法求解(3)式和(4)式,直至满足收敛条件,得到最优解。

算法步骤如下:

(1)主要期望是聚类得到山羊的4种日常行为:静卧、行走、采食和跨跳,但是考虑到干扰数据和误差等因素,将给定的聚类类别数设为5,设定迭代收敛条件,初始化各个聚类中心;

(2)反复执行下面的运算,直到各样本隶属度值趋于稳定:

A.用当前的聚类中心根据公式(4)计算隶属度函数;

B.用当前的隶属度函数根据公式(3)重新计算各个聚类的中心。

当算法收敛时,就得到了各类的聚类中心和隶属度值,从而完成了模糊聚类划分(图9)。

图9 加速度数据分类结果Fig.9 Classification result of acceleration data

由分类结果图可见两组山羊和加速度数据的波动部分和平稳部分(图中圆形点)区分明显,而且平稳部分是在大幅波动后逐渐减弱后出现,说明山羊静卧数据已经被较好的区分开。根据实地观察,山羊在行走时经常伴随着采食行为,而采食行为又占据了山羊一天的大部分时间,在分类结果图中看出行走和采食的数据互相重合出现也印证了这一点(图中三角形点和矩形点)。根据实验观察,山羊日常行为中跳跃情况很少,为了产生跳跃数据,我们在山羊活动区域设置了一些障碍,从结果图中可以看出明显剧烈波动的数据被区分开(图中星型点)。从分类结果来看,各组的数据分类比较明显,且两组的分类结果的相似度也较高。

5 总结

本文设计的针对山羊的可穿戴设备,完成了山羊日常行为数据的采集和传输,并使用模糊C均值算法较好的对数据样本集进行聚类,实验表明:该设备体积小、功耗低、佩戴在山羊身体无应激反应、分类结果可靠,为后续建立山羊精准饲养模型奠定了基础。

[1]杨继志,郭 敬.Arduino的互动产品平台创新设计[J].单片机与嵌入式系统应用,2012,12(4):39-41

[2]袁本华,董 铮.基于Arduino控制板的温室大棚测温系统设计[J].安徽农业科学,2012,40(8):5049-5050

[3]Jiao J,Ma H,Qiao Y,etal.Design of Farm Environmental Monitoring System Based on the Internet of Things[J]. Advance Journal of Food Science&Technology,2014,6(3):368-373

[4]纪欣然.基于Arduino开发环境的智能寻光小车设计[J].现代电子技,2012(15):161-163

[5]郑 昊,钟志峰,郭 昊,等.基于Arduino/Android的蓝牙通信系统设计[J].物联网技术,2012(5):50-51

[6]卞云松.基于Arduino单片机的避障小车机器人[J].自动化技术与应用,2014,33(1):16-19

[7]王 磊,邵平凡.基于MSP430和μC/OS-Ⅱ的低功耗智能手环设计[J].微型机与应用,2015,34(15):95-98

[8]陶 强,刘 莉.一种鲁棒的聚类算法在加速度计数据集中的应用[J].仪表技术,2016(3):23-27

[9]高新波,李 洁,谢维信.模糊c均值聚类算法中参数m的优选[J].模式识别与人工智能,2000,13(1):7-11

[10]郭东东,郝润芳,吉增涛,等.基于三轴加速度传感器的山羊行为特征分类与识别[J].家畜生态学报,2014,35(8):53-57

猜你喜欢

蓝牙山羊加速度
蓝牙音箱的直线之美
“鳖”不住了!从26元/斤飙至38元/斤,2022年甲鱼能否再跑出“加速度”?
夏季如何让山羊增膘
天际加速度
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
创新,动能转换的“加速度”
死亡加速度
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
山羊受骗
聪明的山羊