衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Arduino和加速度計(jì)構(gòu)建一個(gè)簡(jiǎn)單且便宜的計(jì)步器

科技觀察員 ? 來(lái)源:circuitdigest ? 作者:Ashish Choudhary ? 2022-08-19 15:15 ? 次閱讀

如今,健身手環(huán)越來(lái)越流行,它不僅可以計(jì)算腳步聲,還可以跟蹤您燃燒的卡路里、顯示心跳率、放映時(shí)間等等。這些物聯(lián)網(wǎng)設(shè)備與云同步,因此您可以在智能手機(jī)上輕松獲取所有身體活動(dòng)的歷史記錄。

計(jì)步器是僅用于計(jì)算腳步的設(shè)備。因此,在本教程中,我們將使用 Arduino 和加速度計(jì)構(gòu)建一個(gè)簡(jiǎn)單且便宜的 DIY 計(jì)步器。該計(jì)步器將計(jì)算腳步的數(shù)量并將其顯示在16x2 LCD 模塊上。這款計(jì)步器可以與這款A(yù)rduino 智能手表集成。

所需組件

Arduino納米

ADXL 335 加速度計(jì)

16*2液晶

液晶 I2C 模塊

電池

ADXL335 加速度計(jì)

ADXL335 是一款完整的 3 軸模擬加速度計(jì),它基于電容感應(yīng)原理工作。它是一種小型、薄型、低功耗模塊,帶有多晶硅表面微加工傳感器信號(hào)調(diào)理電路。ADXL335 加速度計(jì)可以測(cè)量靜態(tài)和動(dòng)態(tài)加速度。在這個(gè) Arduino 計(jì)步器項(xiàng)目中,ADXL335 加速度計(jì)將充當(dāng)計(jì)步器傳感器。

加速度計(jì)是一種可以將任何方向的加速度轉(zhuǎn)換為其各自的可變電壓的設(shè)備。這是通過(guò)使用電容器來(lái)實(shí)現(xiàn)的(參見(jiàn)圖片),當(dāng) Accel 移動(dòng)時(shí),其內(nèi)部的電容器也會(huì)根據(jù)運(yùn)動(dòng)發(fā)生變化(參見(jiàn)圖片),因?yàn)殡娙菔亲兓模虼艘部梢垣@得可變電壓。

poYBAGL_ODKAef6aAAEZnm_R1Js761.png

下面是加速度計(jì)的正面和背面圖像以及引腳說(shuō)明-

poYBAGL_OC-AUz_RAAMsqzQqz7E254.png

加速度計(jì)引腳說(shuō)明:

Vcc- 5 伏電源應(yīng)連接到此引腳。

X-OUT- 該引腳在 x 方向提供模擬輸出

Y-OUT- 該引腳在 y 方向提供模擬輸出

Z-OUT- 此引腳在 z 方向提供模擬輸出

GND-地

ST- 此引腳用于設(shè)置傳感器的靈敏度

電路原理

下面給出了Arduino 加速度計(jì)步數(shù)計(jì)數(shù)器的電路圖。

poYBAGL_OCmAKieSAAKR5dPzFak736.png

在這個(gè)電路中,我們使用 ADXL335 Accelerometer 與 Arduino Nano 連接。加速度計(jì)的 X、Y 和 Z 引腳與 Arduino Nano 的模擬引腳(A1、A2 和 A3)連接。要將 16x2 LCD 模塊與 Arduino 連接,我們使用的是 I2C 模塊。I2C 模塊的 SCL 和 SDA 引腳分別連接到 Arduino Nano 的 A5 和 A4 引腳。下表給出了完整的連接:

poYBAGL_OCWAG6fFAAAVYTjF43k466.png

我們首先在面包板上使用 Arduino設(shè)置構(gòu)建了這個(gè)計(jì)步器

poYBAGL_OCKAJZrcAASClP5hRwo231.png

在成功測(cè)試后,我們通過(guò)將所有組件焊接到 Perfboard 上來(lái)在 Perfboard 上復(fù)制它,如下所示:

pYYBAGL_OB6AFODnAAWvZULN8Vs084.png

poYBAGL_OBuALreUAAbvBYsFtms518.png

計(jì)步器如何工作?

計(jì)步器使用向前、垂直和側(cè)面的三個(gè)運(yùn)動(dòng)分量來(lái)計(jì)算一個(gè)人所采取的總步數(shù)。計(jì)步器系統(tǒng)使用加速度計(jì)來(lái)獲取這些值。加速度計(jì)在每個(gè)定義的編號(hào)后不斷更新 3 軸加速度的最大值和最小值。的樣品。這3個(gè)軸的平均值(Max + Min)/2,稱為動(dòng)態(tài)閾值水平,該閾值用于決定是否邁步。

跑步時(shí),計(jì)步器可以在任何方向,因此計(jì)步器使用加速度變化最大的軸計(jì)算步數(shù)。

現(xiàn)在讓我快速了解一下這個(gè) Arduino 計(jì)步器的工作原理

首先,計(jì)步器一通電就開(kāi)始校準(zhǔn)。

然后在void循環(huán)函數(shù)中,不斷的從X、Y、Z軸獲取數(shù)據(jù)。

之后,它計(jì)算從起點(diǎn)開(kāi)始的總加速度矢量。

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

然后將平均加速度值與閾值進(jìn)行比較以計(jì)算步數(shù)。

如果加速度矢量超過(guò)閾值,則增加步數(shù);否則,它會(huì)丟棄無(wú)效的振動(dòng)。

poYBAGL_OBaAEguHAAMeB-XU8r8937.png

對(duì) Arduino 計(jì)步器進(jìn)行編程

本文檔末尾提供了完整的Arduino 計(jì)步器代碼。在這里,我們將解釋此代碼的一些重要片段。

像往常一樣,通過(guò)包含所有必需的庫(kù)來(lái)啟動(dòng)代碼。ADXL335 加速度計(jì)不需要任何庫(kù),因?yàn)樗峁┠M輸出。

#include 

之后,定義連接加速度計(jì)的 Arduino 引腳。

常量 int xpin = A1;
常量 int ypin = A2;
常量 int zpin = A3;

定義加速度計(jì)的閾值。該閾值將與加速度矢量進(jìn)行比較以計(jì)算步數(shù)。

浮動(dòng)閾值 = 6;

在void setup內(nèi)部,函數(shù)會(huì)在系統(tǒng)通電時(shí)校準(zhǔn)系統(tǒng)。

校準(zhǔn)();

在void 循環(huán)函數(shù)內(nèi)部,它將讀取 100 個(gè)樣本的 X、Y 和 Z 軸值。

for (int a = 0; a < 100; a++)
  {
    xaccl[a] = float(analogRead(xpin) - 345);
    延遲(1);
    yaccl[a] = float(analogRead(ypin) - 346);
    延遲(1);
    zaccl[a] = float(analogRead(zpin) - 416);
    延遲(1);

獲得 3 軸值后,通過(guò)取 X、Y 和 Z 軸值的平方根來(lái)計(jì)算總加速度矢量。

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

然后計(jì)算最大和最小加速度矢量值的平均值。

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

現(xiàn)在將平均加速度與閾值進(jìn)行比較。如果平均值大于閾值,則增加步數(shù)并提高標(biāo)志。

if (totave[a] > 閾值 && flag == 0)
    {
      步數(shù) = 步數(shù) + 1;
      標(biāo)志 = 1; }

如果平均值大于閾值但標(biāo)志已升起,則什么也不做。

else if (totave[a] > threshold && flag == 1)
    {
      // 不計(jì)算
    }

如果總平均值小于閾值并且標(biāo)志被升起,則將標(biāo)志放下。

if (totave[a] < 閾值 && flag == 1)
    {
      標(biāo)志 = 0;
    }

在串行監(jiān)視器和 LCD 上打印步數(shù)。

Serial.println(步驟);
lcd.print("步驟:");
lcd.print(步驟);

測(cè)試 Arduino 計(jì)步器

準(zhǔn)備好硬件和代碼后,將 Arduino 連接到筆記本電腦并上傳代碼。現(xiàn)在拿起你手中的計(jì)步器,開(kāi)始一步一步地走,它應(yīng)該會(huì)在 LCD 上顯示步數(shù)。有時(shí),當(dāng)計(jì)步器振動(dòng)非常快或非常慢時(shí),它會(huì)增加步數(shù)。

pYYBAGL_OA6ASWrmAAaJ1VUrGmA468.png

#include

LiquidCrystal_I2C lcd(0x27, 16, 2);

常量 int xpin = A1;

常量 int ypin = A2;

常量 int zpin = A3;

字節(jié) p[8] = {

0x1F,

0x1F,

0x1F,

0x1F,

0x1F,

0x1F,

0x1F,

0x1F

};

浮動(dòng)xavg,yavg,zavg;

整數(shù)步,標(biāo)志 = 0;

無(wú)效設(shè)置()

{

序列.開(kāi)始(9600);

液晶顯示器開(kāi)始();

液晶背光();

lcd.clear();

校準(zhǔn)();
無(wú)效循環(huán)(




{

for (int w = 0; w < 16; w++) {

lcd.write(byte(0));

延遲(500);

}

int acc = 0;

浮動(dòng) totvect1ec0aa5fadd49ed5ebbb8ae6bb8416b05d81a068a1f8cd4024e19920a3975fceQzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcZGVmRW1vdGlvblxlbW90aW9uXzEwOC5wbmc=?= {0};

浮點(diǎn)數(shù)1ec0aa5fadd49ed5ebbb8ae6bb8416b05d81a068a1f8cd4024e19920a3975fceQzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcZGVmRW1vdGlvblxlbW90aW9uXzEwOC5wbmc=?= {0};

浮動(dòng) xaccl1ec0aa5fadd49ed5ebbb8ae6bb8416b05d81a068a1f8cd4024e19920a3975fceQzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcZGVmRW1vdGlvblxlbW90aW9uXzEwOC5wbmc=?= {0};

浮動(dòng) yaccl1ec0aa5fadd49ed5ebbb8ae6bb8416b05d81a068a1f8cd4024e19920a3975fceQzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcZGVmRW1vdGlvblxlbW90aW9uXzEwOC5wbmc=?= {0};

浮動(dòng) zaccl1ec0aa5fadd49ed5ebbb8ae6bb8416b05d81a068a1f8cd4024e19920a3975fceQzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcZGVmRW1vdGlvblxlbW90aW9uXzEwOC5wbmc=?= {0};

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

{

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

延遲(1);

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

延遲(1);

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

延遲(1);

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 ;

Serial.println("totave[a]");

Serial.println(totave[a]);

延遲(100);

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

{

步數(shù) = 步數(shù) + 1;

標(biāo)志 = 1;

}

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

{

// 不要計(jì)算

}

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

{

flag = 0;

}

如果(步數(shù) < 0){

步數(shù) = 0;

}

Serial.println('\n');

Serial.print("步驟:");

Serial.println(步驟);


lcd.print(步驟);

延遲(1000);

lcd.clear();

}

延遲(1000);

}

void calibrate()

{

float sum = 0;

浮動(dòng)總和1 = 0;

浮動(dòng)總和2 = 0;

for (int i = 0; i < 100; i++) {

xval[i] = float(analogRead(xpin) - 345);

總和 = xval[i] + 總和;

}

延遲(100);

xavg =總和/ 100.0;

序列號(hào).println(xavg);

for (int j = 0; j < 100; j++)

{

yval[j] = float(analogRead(ypin) - 346);

sum1 = yval[j] + sum1;

}

yavg = sum1 / 100.0;

Serial.println(yavg);

延遲(100);

for (int q = 0; q < 100; q++)

{

zval[q] = float(analogRead(zpin) - 416);

sum2 = zval[q] + sum2;

}

zavg = sum2 / 100.0;

延遲(100);

Serial.println(zavg);

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 加速度計(jì)
    +關(guān)注

    關(guān)注

    6

    文章

    704

    瀏覽量

    46023
  • 計(jì)步器
    +關(guān)注

    關(guān)注

    4

    文章

    76

    瀏覽量

    19982
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    187816
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    arduino和加速度計(jì)一個(gè)重力感應(yīng)屏幕

    傳感器加速度計(jì)加速度Arduino
    jf_57944602
    發(fā)布于 :2022年05月23日 10:30:52

    加速度計(jì)的幻想與現(xiàn)實(shí)

    測(cè)量滑雪者所感受到的實(shí)際沖擊力,就能精確判定是否應(yīng)當(dāng)松開(kāi)固定 器。智能系統(tǒng)可以考慮每個(gè)人的能力和生理狀況。這是項(xiàng)實(shí)用的加速度計(jì)應(yīng)用,但目前的電池技術(shù)不敷所需。等到將來(lái)開(kāi)發(fā)出小而輕在低溫下保持良好
    發(fā)表于 10-11 10:33

    2476-100加速度計(jì)

    2220-100加速度計(jì)2220-200加速度計(jì)2220-400加速度計(jì)深圳市立年電子科技有限公司 --射頻微波站式采購(gòu)產(chǎn)臺(tái)聯(lián)系人:王先生 ***QQ330538935`
    發(fā)表于 05-27 19:18

    2460-010加速度計(jì)

    的噪聲和長(zhǎng)期穩(wěn)定性是絕對(duì)要求。2460包含3英尺長(zhǎng)的集成電纜,并且在操作上與2466相同,它具有個(gè)連接器,可輕松定制電纜的長(zhǎng)度和位置。每個(gè)SDI三軸加速度計(jì)均具有三個(gè)正交安裝的低噪聲
    發(fā)表于 05-28 14:41

    2227-050加速度計(jì)模塊

    獲得專利的電容式硅感測(cè)元件和個(gè)密封LCC封裝的高精度,定制CMOS集成電路。差分輸出MEMS加速度計(jì)的電壓在PCB上轉(zhuǎn)換為與施加的電流成比例的電流加速。可以為2227模塊提供熱校準(zhǔn)參
    發(fā)表于 05-28 14:56

    1527J-010加速度計(jì)

    `1527型是款小型,輕巧的集成MEMS加速度計(jì),用于用于要求高重復(fù)性,低重復(fù)性的戰(zhàn)術(shù)級(jí)慣性應(yīng)用噪聲,以及在-55至+ 125°C的環(huán)境中的長(zhǎng)期穩(wěn)定性。 1527型加速度計(jì)是由美國(guó)SDI完全
    發(fā)表于 05-28 15:04

    設(shè)計(jì)具有成本效益的加速度計(jì)

    等低成本 MEMS 加速度計(jì)稍貴(約 40 美元)。也許對(duì)于某些應(yīng)用我們可以避免使用 ADXL355 并節(jié)省更多的錢(qián);知道是否可行的唯方法是比較兩個(gè)傳感器。為了比較這兩個(gè)
    發(fā)表于 08-23 06:20

    通過(guò)單個(gè)加速度計(jì)增強(qiáng)計(jì)步器的性能

    通過(guò)單個(gè)加速度計(jì)增強(qiáng)計(jì)步器的性能
    發(fā)表于 12-13 17:08 ?39次下載
    通過(guò)單個(gè)<b class='flag-5'>加速度計(jì)</b>增強(qiáng)<b class='flag-5'>計(jì)步器</b>的性能

    通過(guò)單個(gè)加速度計(jì)增強(qiáng)計(jì)步器的性能

    通過(guò)單個(gè)加速度計(jì)增強(qiáng)計(jì)步器的性能 pdf.
    發(fā)表于 01-04 17:41 ?0次下載

    文帶你了解加速度計(jì)

    加速度計(jì)到底是什么?本文將對(duì)加速度計(jì)進(jìn)行簡(jiǎn)單介紹。
    發(fā)表于 07-07 10:52 ?1.4w次閱讀

    選擇個(gè)加速度計(jì)的技巧

    加速度計(jì),是測(cè)量運(yùn)載體線加速度的儀表。加速度計(jì)由檢測(cè)質(zhì)量(也稱敏感質(zhì)量)、支承、電位器、彈簧、阻尼器和殼體組成。
    發(fā)表于 09-17 11:46 ?10次下載
    選擇<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>加速度計(jì)</b>的技巧

    使用單個(gè)加速度計(jì)設(shè)計(jì)準(zhǔn)確度高的計(jì)步器

    應(yīng)用說(shuō)明AN-602檢查了使用ADI公司的加速度計(jì)制作簡(jiǎn)單但相對(duì)準(zhǔn)確的計(jì)步器。從那時(shí)起,引入了更新的設(shè)備,允許在更加成本敏感的應(yīng)用中使用加速度計(jì)。因此,諸如
    的頭像 發(fā)表于 04-03 08:08 ?4674次閱讀
    使用單個(gè)<b class='flag-5'>加速度計(jì)</b>設(shè)計(jì)準(zhǔn)確度高的<b class='flag-5'>計(jì)步器</b>

    MEMS加速度計(jì)的概念,MEMS加速度計(jì)的原理

    MEMS加速度計(jì)的概念 加速度計(jì)種慣性傳感器,能夠測(cè)量物體的加速力。加速力就是當(dāng)物體在加速過(guò)
    發(fā)表于 06-01 11:28 ?4545次閱讀

    加速度計(jì)的安裝方法分享

    在本文中,了解安裝加速度計(jì)的不同方法、它們對(duì)加速度計(jì)頻率響應(yīng)的影響以及安裝MEMS加速度計(jì)的解決方案。
    的頭像 發(fā)表于 04-16 16:35 ?5543次閱讀
    <b class='flag-5'>加速度計(jì)</b>的安裝方法分享

    如何使用加速度計(jì)構(gòu)建個(gè)基于Arduino的地震探測(cè)器

    采取預(yù)防措施。在這里,我們使用加速度計(jì)ADXL335來(lái)檢測(cè)地震前的振動(dòng)。加速度計(jì)ADXL335對(duì)所有三個(gè)軸的振動(dòng)和振動(dòng)都非常敏感。在這里,我們正在 使用加速度計(jì)
    的頭像 發(fā)表于 01-25 15:57 ?1751次閱讀
    如何使用<b class='flag-5'>加速度計(jì)</b><b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>基于<b class='flag-5'>Arduino</b>的地震探測(cè)器
    百家乐赌博娱乐| 现金棋牌游戏| 百家乐官网神仙道礼包| 菲彩百家乐官网的玩法技巧和规则| 金博士百家乐的玩法技巧和规则| 现金百家乐官网人气最高| 百家乐出闲几率| 得荣县| 百家乐大赢家客户端| 丹寨县| 新葡京百家乐娱乐城| 百家乐官网最新套路| 百家乐专业术语| 哪个百家乐官网技巧平台信誉好| 百家乐国际赌场娱乐网规则| 百家乐官网现金网开户平台| 喜力百家乐的玩法技巧和规则| 池州市| 菲律宾百家乐赌场娱乐网规则| 怎么玩百家乐官网网上赌博| 申博太阳城娱乐| 百合百家乐官网的玩法技巧和规则| 大发娱乐场官方下载| 百家乐软件购买| 百家乐官网如何破解| 金彩百家乐的玩法技巧和规则 | 波浪百家乐官网测试| 大发888娱乐城都有啥扑克牌游戏| 博彩网百家乐官网的玩法技巧和规则| 澳盈88娱乐城| 线上百家乐信誉| 赌博百家乐官网秘籍| 大发888下载 df888gfxzylc8| 欢乐谷百家乐官网的玩法技巧和规则| 德州扑克 术语| 百家乐娱乐城新闻| 百家乐官网代理商博彩e族| 威尼斯人娱乐城老lm0| 御匾会百家乐官网娱乐城 | 百家乐打大必赢之法| 百家乐倍投工具|