フィットネスバンドは最近非常に人気があり、足音を数えるだけでなく、消費カロリーを追跡し、心拍数、ショータイムなどを表示します。また、これらのIoTデバイスはクラウドと同期されているため、スマートフォンで身体活動のすべての履歴を簡単に取得できます。また、重要なデータがThingSpeakに送信され、どこからでも監視できるIoTベースの患者監視システムを構築しました。
歩数計は、足音を数えるためだけに使用されたデバイスです。したがって、このチュートリアルでは、Arduinoと加速度計を使用して簡単で安価なDIY歩数計を作成します。この歩数計は、足音の数をカウントし、16x2LCDモジュールに表示します。この歩数計は、このArduinoスマートウォッチと統合できます。
必要なコンポーネント
- Arduino Nano
- ADXL335加速度計
- 16 * 2 LCD
- LCDI2Cモジュール
- 電池
ADXL335加速度計
ADXL335は完全な3軸アナログ加速度計であり、静電容量センシングの原理に基づいて動作します。これは、ポリシリコン表面マイクロ機械加工センサーと信号調整回路を備えた、小型、薄型、低電力のモジュールです。ADXL335加速度計は、静的加速度と動的加速度を測定できます。このArduino歩数計プロジェクトでは、ADXL335加速度計が歩数計センサーとして機能します。
AN加速度計は、そのそれぞれの可変電圧に対する任意の方向の加速度を変換することができる装置です。これは、コンデンサを使用することによって実現されます(画像を参照)。Accelが移動すると、その内部に存在するコンデンサも移動に応じて変化します(画像を参照)。静電容量が変化するため、可変電圧も取得できます。
以下は、ピンの説明とともに、前面と背面からの加速度計の画像です-
加速度計のピンの説明:
- Vcc-5ボルト電源はこのピンに接続する必要があります。
- X-OUT-このピンはx方向にアナログ出力を提供します
- Y-OUT-このピンはy方向にアナログ出力を提供します
- Z-OUT-このピンはz方向にアナログ出力を提供します
- GND-アース
- ST-このピンはセンサーの感度を設定するために使用されます
ジェスチャ制御ロボット、地震検知器アラーム、ピンポンゲームなど、加速度計ADXL335を使用して多くのプロジェクトを構築しています。
回路図
Arduino加速度計ステップカウンターの回路図を以下に示します。
この回路では、ADXL335加速度計を使用してArduinoNanoとインターフェースします。加速度計のX、Y、Zピンは、Arduino Nanoのアナログピン(A1、A2、A3)に接続されています。16x2 LCDモジュールをArduinoとインターフェースするために、I2Cモジュールを使用しています。I2CモジュールのSCLピンとSDAピンは、それぞれArduinoNanoのA5ピンとA4ピンに接続されています。完全な接続を以下の表に示します。
Arduino Nano | ADXL335 |
3.3V | VCC |
GND | GND |
A1 | バツ |
A2 | Y |
A3 | Z |
Arduino Nano | LCDI2Cモジュール |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
ブレッドボード上のArduinoセットアップを使用してこの歩数計を最初に構築しました
テストが成功した後、以下に示すように、すべてのコンポーネントをPerfboardにはんだ付けすることにより、Perfboardに複製しました。
歩数計はどのように機能しますか?
歩数計は、前方、垂直、側面の3つの運動要素を使用して、人が踏んだ歩数の合計を計算します。歩数計システムは、加速度計を使用してこれらの値を取得します。加速度計は、定義された番号ごとに3軸加速度の最大値と最小値を継続的に更新します。サンプルの。これらの3軸(最大+最小)/ 2の平均値は動的しきい値レベルと呼ばれ、このしきい値はステップが実行されるかどうかを決定するために使用されます。
走行中、歩数計は任意の方向に向けることができるため、歩数計は加速度の変化が最も大きい軸を使用して歩数を計算します。
それでは、このArduino歩数計の動作について簡単に説明します。
- まず、歩数計は電源が入るとすぐにキャリブレーションを開始します。
- 次に、 voidループ 関数で、X、Y、およびZ軸からデータを継続的に取得します。
- その後、開始点からの総加速度ベクトルを計算します。
- 加速度ベクトルは、X、Y、およびZ軸の値の平方根(x ^ 2 + y ^ 2 + z ^ 2)です。
- 次に、平均加速度値をしきい値と比較して、ステップ数をカウントします。
- 加速度ベクトルがしきい値を超えると、ステップ数が増加します。それ以外の場合は、無効なバイブレーションを破棄します。
Arduinoステップカウンターのプログラミング
完全なArduinoステップカウンターコードは、このドキュメントの最後に記載されています。ここでは、このコードのいくつかの重要なスニペットについて説明します。
いつものように、必要なすべてのライブラリを含めてコードを開始します。ADXL335加速度計は、アナログ出力を提供するため、ライブラリを必要としません。
#include
その後、加速度計が接続されているArduinoピンを定義します。
const int xpin = A1; const int ypin = A2; const int zpin = A3;
加速度計のしきい値を定義します。このしきい値を加速度ベクトルと比較して、ステップ数を計算します。
フロートしきい値= 6;
ボイドセットアップ 内で、機能はシステムに電力が供給されたときにシステムを較正します。
calibrate();
ボイドループ 関数内で、100サンプルのX、Y、Z軸の値を読み取ります。
for(int a = 0; a <100; a ++){xaccl = float(analogRead(xpin)-345); delay(1); yaccl = float(analogRead(ypin)-346); delay(1); zaccl = float(analogRead(zpin)-416); delay(1);
3軸の値を取得した後、X、Y、およびZ軸の値の平方根をとって合計加速度ベクトルを計算します。
totvect = sqrt(((xaccl-xavg)*(xaccl-xavg))+((yaccl-yavg)*(yaccl-yavg))+((zval-zavg)*(zval-zavg)));
次に、最大加速度ベクトル値と最小加速度ベクトル値の平均を計算します。
totave =(totvect + totvect)/ 2;
次に、平均加速度をしきい値と比較します。平均がしきい値よりも大きい場合は、ステップ数を増やしてフラグを立てます。
if(totave> threshold && flag == 0){ステップ=ステップ+ 1; フラグ= 1; }
平均がしきい値よりも大きいがフラグが立てられている場合は、何もしません。
else if(totave> threshold && flag == 1){//カウントしない}
合計平均がしきい値未満でフラグが立てられている場合は、フラグを下げます。
if(totave <threshold && flag == 1){flag = 0; }
シリアルモニターとLCDに歩数を印刷します。
Serial.println(steps); lcd.print( "ステップ:"); lcd.print(steps);
Arduino歩数計のテスト
ハードウェアとコードの準備ができたら、Arduinoをラップトップに接続してコードをアップロードします。歩数計のセットアップを手に取り、一歩一歩歩き始めます。LCDに歩数が表示されます。歩数計が非常に速くまたは非常にゆっくりと振動する場合、ステップ数が増えることがあります。
ADXL335歩数計Arduinoの完全な動作ビデオとコードを以下に示します。