主要内容

基于陀螺仪的计步器MATLAB函数

这个例子展示了如何在Simulink®模型中使用MATLAB函数块来实现使用MATLAB函数的算法。金宝appArduino®MKR1000板用于计算一个人走路时的步数。计步器以这样一种方式连接在人的大腿上x陀螺仪的-轴垂直于行走方向。陀螺仪传感器的数据使用用户数据报协议(UDP)发送到Android设备。

Android设备提供无线接入和用户界面。Arduino MKR1000单板通过与单板相连的MPU-9250传感器来检测数据。计算完步骤后,主板将数据通过WiFi发送到与Arduino主板相连的Android设备上。

步数计算法

计步器算法在Arduino模型中的MATLAB函数块内实现。在修改数据读取和传感器特定信息后,您可以将该模型与其他传感器一起使用。数据由MATLAB函数块内的I2C器件读取函数读取。

走路时,一条腿向前移动,脚后跟着地。这叫做初始接触。然后,身体向前推进。同一条腿从地面抬起,向前移动,脚跟再次接触地面,形成下一个初始接触。第一次初始接触和下一次初始接触之间的持续时间称为跨步周期。

在腿从地面抬起之前,大腿的角速度(陀螺仪附着在大腿上)为零。然后,腿向前移动,角速度增加,在大腿垂直于地面时达到最大值。同样,当脚后跟接触地面时,也就是当腿进行下一次初始接触时,角速度减小并达到零。当腿向前移动时,角速度有一个正梯度。在步幅周期中,当腿向后移动推动身体向前时,角速度具有负梯度。因此,一个步幅周期可以被测量为一个负梯度零交叉点与下一个交叉点之间的时间。

在接收到传入帧后,MATLAB识别所有的局部极大值、局部极小值和零交叉点,然后从第一个零交叉点开始遍历帧。如果它是一个负梯度零交叉,MATLAB期望一个局部极小值。在确定局部极小值后,如果MATLAB得到另一个具有正梯度的过零点,则MATLAB将其读取为有效步长。正梯度零交叉是另一条腿初次接触的时间。

MATLAB计算所有有效的零交叉,这等于步数。为了验证局部极大值或极小值,MATLAB使用一个阈值。阈值作为MATLAB函数块的输入提供。阈值可以根据个人的最低步行速度进行调整。

为其他传感器重用模型

MATLAB函数块内定义的Butterworth低通滤波器被设置为5hz的截止频率,这足以检测步长。大多数陀螺仪允许您配置带宽和输出数据速率。这些参数必须根据初始化块中所需的带宽进行设置。另外,从传感器读取陀螺仪数据的MATLAB函数块Step Calculator的采样率必须与Butterworth低通滤波器的采样率相同。在本例中,两者都设置为20 Hz。

本例使用以下Simulink®模型:金宝app

  • Arduino模型:Arduino板从MPU-9250传感器读取数据,在MATLAB函数块内处理,并实时计算步数。

  • Android模式:UDP Receive块通过WiFi接收来自Arduino板的数据。

使用这些模型,您将:

  1. 2 .建立Arduino板与Android设备的网络连接。

  2. 为Arduino板和Android设金宝app备配置并运行Simulink模型,计算步数。

先决条件

在开始本示例之前,请安装以下MathWorks®产品:下载188bet金宝搏

  • DSP系统工具箱™以及MATLAB®和Simulink®金宝app

  • 金宝appAndr金宝appoid™设备的Simulink支持包

  • 金宝appArdu金宝appino®硬件的Simulink支持包

  • Arduino金宝app硬件的MATLAB支持包

我们建议完成这些例子:

所需的硬件

  • Arduino MKR1000/MKR WiFi 1010

  • Android设备

  • 微控制器- 9250传感器

建立网络连接

使用UDP在Arduino板和Android设备之间建立网络连接。Arduino MKR1000/MKR WiFi 1010板自带WiFi芯片,无需任何额外WiFi硬件即可使用。

  1. 打开arduino_android_pedometer_MATLAB_codegen模型。

  2. 浏览到配置参数>硬件实现>目标硬件资源>无线网络属性

  3. 中指定WiFi网络的SSID服务集标识符(SSID)参数。

  4. 选择无线网络加密参数,根据您的WiFi网络加密设置。有关配置Arduino WiFi硬件的网络设置的详细信息,请参见配置WiFi网络设置(金宝appArdu金宝appino硬件的Simulink支持包)

  5. 将Android设备连接到Arduino板所连接的WiFi网络。

在Arduino板和Android设备上配置和运行模型

  1. 打开androidArduinoPedometer模型。

  2. 单击部署到硬件按钮,在Android设备上运行该模型。

  3. 启动完成后,应用程序将在Android设备上打开。

  4. 中找到Android设备的IP地址信息应用程序的窗格。

  5. 在Arduino模型中,双击WiFi UDP Send块,设置远端IP地址到Android设备的IP地址。

  6. 单击部署到硬件按钮在Arduino板上运行这个模型。

  7. 将模型部署到Arduino板上后,您可以在应用程序中看到步数值。

更多关于

函数块

参考文献

贾亚拉斯,阿哈辛哈,穆雷。基于陀螺仪的精确计步器算法,2013年10月。