0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用Arduino开发板和ADXL33的简易计步器设计

454398 来源:一板网 作者:王香盘 2020-10-24 11:23 次阅读

目前,健身手环在人们的日常生活中变得越来越流行,它不仅可以计算人行走的步数,而且还可以记录您燃烧的卡路里、显示心跳、显示时间等等。通常这些物联网设备已与云平台连接同步,因此您可以在智能手机上轻松获取所有身体活动量的历史记录。在前面的文章中,我们还制作了一个基于物联网的患者监护系统,其重要数据发送到ThingSpeak云平台,用户可以从任何地方进行查看。

计步器(Pedometer)是一种用来计算人走路步数的设备。在本篇文章中,我们将使用Arduino开发板和加速度计ADXL335制作一个简单又便宜的计步器。该计步器计算走路步数,然后将计算结果显示在LCD1602显示屏上。

所需的组件

● Arduino Nano开发板

● ADXL335加速度计

● LCD1602液晶显示屏模块

● 电池

ADXL335加速度计介绍

ADXL335是一款小尺寸、完整的三轴加速度计,基于电容式感应原理。它是一个小尺寸、薄型、低功耗的模块,带有一个经过多晶硅表面微机械加工的传感器信号调理电路。 ADXL335加速度计可以测量静态和动态加速度。在本文中,ADXL335加速度计用作计步器传感器。

加速度计是一种可以将任意方向上的加速度转换为其相应的可变电压的设备。该设备通过使用电容器来实现的,随着加速度移动,位于其内部的电容器也将根据该运动而发生变化,由于电容是变化的,因此可以获得可变电压。

下面是加速度计模块的正视图和底视图:

电路连接图

Arduino和加速度计组成的计步器电路图如下所示。

在此电路中,我们将ADXL335加速度计连接到Arduino Nano开发板。加速度计的X、Y和Z引脚与Arduino Nano的模拟引脚(A1、A2和A3)连接。我们使用了一个I2C模块将LCD1602显示屏连接到Arduino开发板。 I2C模块的SCL和SDA引脚分别连接到Arduino Nano的A5和A4引脚。

我们按照上面所示的电路图在面包板上连接计步器的各个组件:

计步器是如何工作的?

计步器使用向前、垂直和侧面的三个运动分量来计算一个人行走的总步数。计步器使用加速度计来获取这些值。每次取样后,加速度计都会不断更新3轴加速度的最大值和最小值。这些3轴(Max + Min)/ 2的平均值称为动态阈值水平,该阈值用于确定是否应该记录该步数。

计步器在运行时可以处于任何方向,因此计步器使用加速度变化最大的轴来计算步数。

现在,我们快速了解一下Arduino计步器的工作原理

1. 首先,计步器上电后开始校准。

2. 然后在void loop函数中,连续获取从X、Y和Z轴的数据。

3. 然后,从起点算出总加速度矢量。

4. 加速度矢量是X、Y和Z轴值的平方根(x ^ 2 + y ^ 2 + z ^ 2)。

5. 然后将平均加速度值与阈值进行比较,以计算步数。

6. 如果加速度矢量超过阈值,则增加步数;否则,认为是无效的振动,丢弃该数据。

编程Arduino计步器

在本文的末尾处提供了完整的Arduino计步器代码。在这里,我们对一些重要代码片段进行说明。

首先在代码中包含所有必需的库。 ADXL335加速度计输出模拟输出信号,因此不需要任何库。

#include 《LiquidCrystal_I2C.h》

复制代码

之后,定义加速度计连接的Arduino引脚。

const int xpin = A1;

const int ypin = A2;

const int zpin = A3;

复制代码

定义加速度计的阈值。将该阈值与加速度矢量进行比较,以计算步数。

float threshold = 6;

复制代码

在void setup()函数中,在开发板上电时调用以下函数对其进行校准。

calibrate();

复制代码

在void loop()函数中,将读取100个样本的X、Y和Z轴值。

for (int a = 0; a 《 100; a++)

{

xaccl[a] = float(analogRead(xpin) - 345);

delay(1);

yaccl[a] = float(analogRead(ypin) - 346);

delay(1);

zaccl[a] = float(analogRead(zpin) - 416);

delay(1);

复制代码

获得3个轴的值后,通过取X、Y和Z轴值的平方根来计算总加速度矢量。

totvect[a] = sqrt(((xaccl[a] - xavg) * (xaccl[a] - xavg)) + ((yaccl[a] - yavg) * (yaccl[a] - yavg)) + ((zval[a] - zavg) * (zval[a] - zavg)));

复制代码

然后计算最大和最小加速度矢量值的平均值。

totave[a] = (totvect[a] + totvect[a - 1]) / 2 ;

复制代码

接下来将加速度矢量值的平均值与阈值进行比较。如果平均值大于阈值,则增加步数并置位标志位。

if (totave[a] 》 threshold && flag == 0)

{

steps = steps + 1;

flag = 1; }

复制代码

如果平均值大于阈值,但标志位置位,则什么也不做。

else if (totave[a] 》 threshold && flag == 1)

{

// Don’t Count

}

复制代码

如果平均值小于阈值且标志位置位,则将标志位清零。

if (totave[a] 《 threshold && flag == 1)

{

flag = 0;

}

复制代码

在串口监视器和LCD显示屏上打印输出步数。

Serial.println(steps );

lcd.print(“Steps: ”);

lcd.print(steps);

复制代码

测试Arduino计步器

准备好硬件和代码后,将Arduino开发板连接到笔记本电脑并上传代码。现在,将计步器握在手中,然后一步步走路,它应该会在LCD上显示步数。有时,计步器非常快速或缓慢地振动时,步数也会增加。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计步器
    +关注

    关注

    4

    文章

    76

    浏览量

    19900
  • Arduino
    +关注

    关注

    187

    文章

    6464

    浏览量

    186645
  • ADXL335
    +关注

    关注

    1

    文章

    15

    浏览量

    10503
收藏 人收藏

    评论

    相关推荐

    基于Arduino的串口通信项目

    基于Arduino的串口通信项目涉及多个方面,包括硬件连接、软件编程、串口参数配置等。 一、硬件准备 Arduino开发板 :确保你有一块Arduino
    的头像 发表于 11-22 09:24 183次阅读

    【迅为】瑞芯微RK3588开发板RK3568开发板区别及优势

    RK3568开发板
    的头像 发表于 11-18 14:19 204次阅读
    【迅为】瑞芯微RK3588<b class='flag-5'>开发板</b>RK3568<b class='flag-5'>开发板</b>区别及优势

    正点原子fpga开发板不同型号

    正点原子作为国内领先的FPGA开发板供应商,其产品线覆盖了从入门级到高端应用的各个领域。这些开发板不仅适用于学术研究,还广泛应用于工业控制、通信、图像处理等多个领域。 1. 入门级开发板 1.1
    的头像 发表于 11-13 09:30 289次阅读

    51开发板芯片资料

    51开发板芯片资料
    发表于 09-18 09:29 1次下载

    米尔基于NXP iMX.93开发板的M33处理器应用开发笔记

    资源MYD-LMX9X开发板(米尔基于NXPiMX.93开发板)3.软件资源Windows7及以上版本软件:IAREmbeddedWorkbench4.板载固件调试
    的头像 发表于 06-29 08:01 1244次阅读
    米尔基于NXP iMX.93<b class='flag-5'>开发板</b>的M<b class='flag-5'>33</b>处理器应用<b class='flag-5'>开发</b>笔记

    RISC-V有没有类似Arduino那样的开发板

    使用ARduino开发,由于有第三方提供的库支持,在开发上非常方便。RISC-V有没有在Arduino IDE上可以使用的开发板
    发表于 06-23 12:32

    鸿蒙OpenHarmony开发板解析:【芯片解决方案】

    芯片解决方案是指基于某款开发板的完整解决方案,包含驱动、设备侧接口适配、开发板sdk等。
    的头像 发表于 05-10 15:42 1163次阅读
    鸿蒙OpenHarmony<b class='flag-5'>开发板</b>解析:【芯片解决方案】

    SiliconLabs携手Arduino演示基于MGM240模块的新型Nano Matter开发板

    Arduino Nano Matter开发板,从而将Matter协议引入Arduino生态系统,为广大的开发人员提供一个快速涉足Matter互联互通设计的绝佳途径。
    的头像 发表于 04-11 17:35 616次阅读
    SiliconLabs携手<b class='flag-5'>Arduino</b>演示基于MGM240模块的新型Nano Matter<b class='flag-5'>开发板</b>

    fpga开发板是什么?fpga开发板有哪些?

    FPGA开发板是一种基于FPGA(现场可编程门阵列)技术的开发平台,它允许工程师通过编程来定义和配置FPGA芯片上的逻辑电路,以实现各种数字电路和逻辑功能。FPGA开发板通常包括FPGA芯片、时钟模块、电源模块、输入输出接口等组
    的头像 发表于 03-14 18:20 1829次阅读

    fpga开发板使用教程

    FPGA开发板的使用教程主要包括以下几个关键步骤。
    的头像 发表于 03-14 15:50 968次阅读

    fpga开发板与linux开发板区别

    (Field-Programmable Gate Array)是一种可编程逻辑器件,它可以通过编程改变硬件逻辑电路的功能和结构。FPGA采用了可编程的门极,可以根据需要重新配置内部电路,从而实现不同的功能和逻辑关系。而Linux开发板则是一种嵌入式计算机平台,其核心是Li
    的头像 发表于 02-01 17:09 2085次阅读

    51单片机开发板的主要功能 51单片机开发板能做什么

    51单片机开发板是一种基于8051系列单片机芯片的开发板,具有丰富的功能和广泛的应用。下面将详细介绍51单片机开发板的主要功能以及能够实现的各种应用。 一、基本功能: 通用输入输出:51单片机
    的头像 发表于 01-23 15:52 3414次阅读

    使用RA6M5开发板简易热成像仪设计

    本项目是使用RA6M5开发板搭载RTThread系统+LVGL图形库实现的一个简易热成像仪。其中传感器使用的是mlx90640,屏幕是320*240的电容触摸屏,整个交互由触摸完成。
    的头像 发表于 01-02 13:50 757次阅读
    使用RA6M5<b class='flag-5'>开发板</b>的<b class='flag-5'>简易</b>热成像仪设计

    小安派Arduino开发板 ,全新支持以太网口

    上手~ 01 概述 小安派-UNO-ET485 Arduino开发板采用Arduino UNO经典型设计,排母也是兼容了经典外形,板载加
    的头像 发表于 12-06 16:00 747次阅读
    小安派<b class='flag-5'>Arduino</b><b class='flag-5'>开发板</b> ,全新支持以太网口

    小安派-UNO-ET485 Arduino开发板简介

    前面几款小安派出来的时候,经常有粉丝询问是否支持Arduino?其它款小安派也是支持的,大家可以去安信可社区搜索查看,小安派-UNO-ET485 Arduino开发板来了,兼容UNO的经典外形,易上手。
    的头像 发表于 12-03 09:58 902次阅读
    小安派-UNO-ET485 <b class='flag-5'>Arduino</b><b class='flag-5'>开发板</b>简介