玩嗨 OpenHarmony:基于 OpenHarmony 的智慧牧场方案 1/4 生物姿态检测篇
原文引自电子发烧友论坛 HarmonyOS技术社区 《基于OpenHarmony的智慧牧场》
1. 智慧牧场方案设计的初衷
在智慧牧场解决方案中,实时检测牲畜的健康状况是非常重要的环节,达到口蹄疫等疾病早期预防和疾病诊断效果监控的作用。因为农场中牲畜数量很多,又多在农场中移动,所以物联网解决方案使用可穿戴设备就是比较好的解决方案。
我国对畜牧业的支持逐年增加,尤其是在农村地区。对于一定规模的畜牧业养殖户,政府会给予技术和资金支持,从而促进畜牧业的发展。畜牧业与科技的结合,使得畜牧业发展更加规范、更加专业。但是由于资金和人力的投入不足,一般畜牧业养殖户的规模较小,投入与产出相对不合理。
我国畜牧业在农业总产值中所占比例较小。根据2016年国家统计局公布的数据来看,仅占总产值的23%。而在畜牧业较发达的爱尔兰、荷兰等地,畜牧业占农业总产值的一半以上。我国畜牧业结构仍旧比较单一,主要是猪、牛、羊、兔、鸡、鸭、鹅等。对于一些市场需求数量比较少、但质量要求较高的产品,往往很少养殖,造成畜牧业整体发展不均衡,导致畜牧业的市场风险大、价格浮动幅度大。为提升畜牧业的营利能力,实现畜牧业的可持续性发展,必须实现畜牧业的现代化。应用物联网、云计算、大数据及人工智能等新一代信息技术的智慧畜牧系统是畜牧业的必然发展趋势。
本项目利用OpenHarmony技术解决方案,提出了一种智慧畜牧业解决思路。方案在如下4个方面进行了尝试:
- 生物姿态检测
- 生物心率检测
- 生物户外精准定位
- 室内环境调节,包括:温湿度、光强、水量、食量、图像传输等等
本方案包含设备端开发,也有应用端和云端开发,本文将重点展示设备端的开发细节。本系列会分为4期分别展开阐述上述四项功能。本文会聚焦在第一项:生物姿态检测。
2. 生物姿态检测
2.1 理论知识:
如果要检测生物姿态,可能需要用到多种类型的传感器:
- 磁传感器,通过利用地球磁场来检测运动,室内定位结果比GPS更准确;
- 加速度计,可以感应倾斜,加速度和振动冲击,通常用于所有类型的可穿戴设备和手持式设备中;
- 陀螺仪,可测量设备的转速;
- 运动探测器摄像头,类似CCTV摄像机一样,通过图像动态识别来判定运动体态。
关于运动检测,我们会经常听到别人说三轴、六轴、九轴传感器,实际上,只要说到多少轴的传感器一般是就是指加速度传感器(即加速计)、角速度传感器(即陀螺仪)、磁感应传感器(即电子罗盘)。
这三类传感器测量的数据在空间坐标系中都可以被分解为X,Y,Z三个方向轴的力,因此也常常被称为3轴加速度计、3轴陀螺仪、3轴磁力计。
上面3类传感器有其各自的功能特点及应用。通过它们相互组合和匹配融合又可以衍生出更多的不同应用,在叫法上通过这样简单的轴数上相加的可以变成六轴传感器或者九轴传感器。
六轴传感器:通常指的是三轴加速度计+三轴加速度计,三轴加速器是检测横向加速的,三轴陀螺仪是检测角度旋转和平衡的,可以用在体感游戏上。
九轴传感器:就是三轴加速度计+三轴陀螺仪+三轴磁强计的组合,在飞行器上是广泛应用的。
另外,在九轴传感器基础上在加入气压传感器,从而能获取海拔高度的数据,也有人把这些传感器组合称为十轴传感器。
本方案使⽤MPU6050检测倾⻆的⽅法,并设计了硬件电路。为了使检测⻆度更加准确,软件编程中采⽤了卡尔曼滤波算法,可以有效去除⼲扰,使测量精度更⾼。在测试中搭建了实验平台,可以准确测量⽔平⻆和垂直⻆,该设计可⽤于物体的“角度检测”,具有实⽤价值。“⻆度检测”在⼯业⽣产和实践中有很多应⽤,如检测物体的⽔平⻆或倾斜⻆,可以使平衡⻋或四旋翼⻜行器,来检测物体的姿态,即空间⻆。“⻆度检测”也可以⽤来检测“生物跌倒”,今年以来,随着社会的发展,我国逐渐进⼊老龄化,老年⼈⼝不断增加。人力成本逐渐增加,所以电⼦产品的检测产⽣了跌倒,减少人工监督成本。
MPU6050 是 InvenSense 公司推出的整合性 6 轴运动处理组件,其内部整合了 3 轴陀螺仪和 3 轴加速度传感器,并且含有一个IIC (编者注:Inter Integrated-Circuit 集成电路总线的英文缩写)接口, 可用于连接外部磁力传感器,并利用自带的数字运动处理器(DMP: Digital Motion Processor) 硬件加速引擎,通过主 IIC 接口,向应用端输出完整的 9 轴融合演算数据。
InvenSense 公司提供了一套基于DMP的运动处理驱动库,可大大降低单片机对动处理运算的负荷,同时也大大降低了编程难度。该模块广泛运用于飞控、计步等电子产品中。
MPU6050 引脚图和角度轴向如下图所⽰。图中VDD 供电引脚由3.3V 供电,CS 为⽚选信号。使⽤ SPI(编者注:Serial Peripheral Interface串行外设接口的英文缩写) 或 IIC 接⼝进行数据传输。
MPU6050有“3个16位ADC”,分别采集3轴的加速度值或陀螺值,转换成数字输出。陀螺仪测量范围为“正负250度、正负500度、正负1000度、正负2000度”,加速度计测量范围为“+2G、+4G、+8g、+16g”。⽚上1MB FIFO(编者注:First In First Out 的缩写。是一种先进先出的数据缓存器。),可⽤于数据缓存。串行通讯接⼝,IIC速率可达400K,SPI速率可达1M。DMP陀螺SPI接⼝内部的数字运动可降低数据融合的复杂度,⻆度输出值准确。
2.3 软件程序设计:
根据数据手册中的时序图:
在VS CODE 下使⽤C 编程语⾔。完成MPU6050的初始化,然后调⽤MPU6050ReadAcc;函数输出对应的⻆度。以下是部分代码:
/***************************************************************
* 函数功能: 读取MPU6050的加速度数据
* 输入参数: 无
* 返 回 值: 无
* 说 明: 无
***************************************************************/
void MPU6050ReadAcc(short *accData)
{
uint8_t buf[6];
MPU6050_ReadData(MPU6050_ACC_OUT, buf, 6);
accData[0] = (buf[0] << 8) | buf[1];
accData[1] = (buf[2] << 8) | buf[3];
accData[2] = (buf[4] << 8) | buf[5];
}
2.4 方案效果展示:
后期预告
《智慧牧场之生物心率检测》
《智慧牧场之生物运动轨迹跟踪篇》
《智慧牧场之室内管理系统篇》
写在最后
我们最近正带着大家玩嗨OpenHarmony。如果你有好玩的东东,欢迎投稿,让我们一起嗨起来!有点子,有想法,有Demo,立刻联系我们:
合作邮箱:zzliang@atomsource.org