天天看點

arduino i2c 如何寫16位寄存器_使用Arduino和加速度計自制計步器

arduino i2c 如何寫16位寄存器_使用Arduino和加速度計自制計步器

目前,健身手環在人們的日常生活中變得越來越流行,它不僅可以計算人行走的步數,而且還可以記錄您燃燒的卡路裡、顯示心跳、顯示時間等等。通常這些物聯網裝置已與雲平台連接配接同步,是以您可以在智能手機上輕松擷取所有身體活動量的曆史記錄。在前面的文章中,我們還制作了一個基于物聯網的患者監護系統,其重要資料發送到ThingSpeak雲平台,使用者可以從任何地方進行檢視。

計步器(

Pedometer

)是一種用來計算人走路步數的裝置。在本篇文章中,我們将使用Arduino開發闆和加速度計

ADXL335

制作一個簡單又便宜的計步器。該計步器計算走路步數,然後将計算結果顯示在LCD1602顯示屏上。

所需的元件

● Arduino Nano開發闆

ADXL335

加速度計

● LCD1602液晶顯示屏子產品

● 電池

ADXL335加速度計介紹

ADXL335是一款小尺寸、完整的三軸加速度計,基于電容式感應原理。它是一個小尺寸、薄型、低功耗的子產品,帶有一個經過多晶矽表面微機械加工的傳感器和信号調理電路。 ADXL335加速度計可以測量靜态和動态加速度。在本文中,ADXL335加速度計用作計步器傳感器。

加速度計是一種可以将任意方向上的加速度轉換為其相應的可變電壓的裝置。該裝置通過使用電容器來實作的,随着加速度移動,位于其内部的電容器也将根據該運動而發生變化,由于電容是變化的,是以可以獲得可變電壓。

arduino i2c 如何寫16位寄存器_使用Arduino和加速度計自制計步器

下面是加速度計子產品的正視圖和底視圖:

arduino i2c 如何寫16位寄存器_使用Arduino和加速度計自制計步器

電路連接配接圖

Arduino和加速度計組成的計步器電路圖如下所示。

arduino i2c 如何寫16位寄存器_使用Arduino和加速度計自制計步器

在此電路中,我們将ADXL335加速度計連接配接到Arduino Nano開發闆。加速度計的X、Y和Z引腳與Arduino Nano的模拟引腳(A1、A2和A3)連接配接。我們使用了一個I2C子產品将LCD1602顯示屏連接配接到Arduino開發闆。 I2C子產品的SCL和SDA引腳分别連接配接到Arduino Nano的A5和A4引腳。

我們按照上面所示的電路圖在面包闆上連接配接計步器的各個元件:

arduino i2c 如何寫16位寄存器_使用Arduino和加速度計自制計步器

計步器是如何工作的?

計步器使用向前、垂直和側面的三個運動分量來計算一個人行走的總步數。計步器使用加速度計來擷取這些值。每次取樣後,加速度計都會不斷更新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 i2c 如何寫16位寄存器_使用Arduino和加速度計自制計步器

程式設計Arduino計步器

在本文的末尾處提供了完整的Arduino計步器代碼。在這裡,我們對一些重要代碼片段進行說明。

首先在代碼中包含所有必需的庫。 ADXL335加速度計輸出模拟輸出信号,是以不需要任何庫。

#include 
           

之後,定義加速度計連接配接的Arduino引腳。

const 
           

定義加速度計的門檻值。将該門檻值與加速度矢量進行比較,以計算步數。

float 
           

void setup()

函數中,在開發闆上電時調用以下函數對其進行校準。

calibrate
           

void loop()

函數中,将讀取100個樣本的X、Y和Z軸值。

for 
           

獲得3個軸的值後,通過取X、Y和Z軸值的平方根來計算總加速度矢量。

totvect
           

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

totave
           

接下來将加速度矢量值的平均值與門檻值進行比較。如果平均值大于門檻值,則增加步數并置位标志位。

if 
           

如果平均值大于門檻值,但标志位置位,則什麼也不做。

else 
           

如果平均值小于門檻值且标志位置位,則将标志位清零。

if 
           

在序列槽螢幕和LCD顯示屏上列印輸出步數。

Serial
           

測試Arduino計步器

準備好硬體和代碼後,将Arduino開發闆連接配接到筆記本電腦并上傳代碼。現在,将計步器握在手中,然後一步步走路,它應該會在LCD上顯示步數。有時,計步器非常快速或緩慢地振動時,步數也會增加。

arduino i2c 如何寫16位寄存器_使用Arduino和加速度計自制計步器

原文連結:

使用Arduino和加速度計自制計步器 - Arduino專區 - 一闆網電子技術論壇​www.yiboard.com

更多有關Arduino開發闆的文章,請關注微信公衆号“

一闆網電子技術論壇

”。

arduino i2c 如何寫16位寄存器_使用Arduino和加速度計自制計步器

繼續閱讀