- 必要なコンポーネント
- MPU6050センサーモジュール–簡単な紹介
- Attiny85ステップカウンタ回路図
- Attiny85ステップカウンター用のPCBの製造
- PCBWayからPCBを注文する
- ATtiny85ステップカウンターPCBの組み立て
- ATtiny85ステップカウンタコードの説明
- Arduinoステップカウンターを散歩に連れて行きましょう
このチュートリアルでは、ATtiny85 IC、MPU6050加速度計とジャイロスコープ、およびOLEDディスプレイモジュールを使用して、簡単で安価な歩数計を作成します。このシンプルなArduinoベースのステップカウンターは3Vコイン電池を搭載しているため、散歩やジョギングに出かけるときに持ち運びが簡単です。また、ビルドに必要なコンポーネントが非常に少なく、コードも比較的単純です。このプロジェクトのプログラムは、MPU6050を使用して、3軸(X、Y、およびZ)に沿った加速度の大きさを測定します。次に、前の値と現在の値の間の加速度の大きさの差を計算します。差が特定のしきい値よりも大きい場合(6を超えるウォーキングと10を超えるランニングの場合)、それに応じて歩数が増加します。実行された合計ステップは、OLEDディスプレイに表示されます。
このポータブルステップカウンターをPCB上に構築するために、PCBWayからPCBボードを製造しました。このプロジェクトでは、同じものを組み立ててテストします。さらに機能を追加したい場合は、このセットアップにハートビートモニターを追加することもできます。また、ADXL335を使用してArduino加速度計ステップカウンターを以前に構築しました。興味がある場合は、それらを確認してください。
必要なコンポーネント
Arduinoを使用してこの歩数計を構築 するには、次のコンポーネントが必要になります。
- Attiny85 IC
- MPU6050
- OLEDディスプレイモジュール
- 2×プッシュボタン
- 5×10KΩ抵抗(SMD)
MPU6050センサーモジュール–簡単な紹介
MPU6050は、Micro-Mechanical Systems(MEMS)テクノロジーに基づいています。このセンサーには、 3軸加速度計、3軸ジャイロスコープ、および内蔵の温度センサーがあります。加速度、速度、向き、変位などのパラメーターを測定するために使用できます。以前にMPU6050をArduinoおよびRaspberry piとインターフェースし、セルフバランシングロボット、Arduinoデジタル分度器、Arduino傾斜計などのいくつかのプロジェクトを構築しました。
MPU6050モジュールはサイズが小さく、消費電力が少なく、繰り返しが多く、耐衝撃性が高く、ユーザーの価格が低くなっています。MPU6050にはI2Cバスと補助I2Cバスインターフェースが付属しており、磁力計やマイクロコントローラーなどの他のセンサーと簡単に干渉する可能性があります。
Attiny85ステップカウンタ回路図
MPU6050ステップカウンターの回路図を以下に示します。
上の画像は、MPU6050とOLEDディスプレイをAttiny85ICとインターフェースするための回路図を示しています。MPU6050、OLEDディスプレイ、およびArduino間のインターフェイスは、I2Cプロトコルを使用して実装する必要があります。したがって、ATtiny85のSCLPin(PB2)は、それぞれMPU6050およびOLEDディスプレイのSCLPinに接続されます。同様に、ATtiny85のSDAPin(PB0)は、MPU6050およびOLEDディスプレイのSDAPinに接続されています。2つのプッシュボタンもATtiny85ICのPB3およびPB4ピンに接続されています。これらのボタンを使用して、テキストをスクロールしたり、表示されているテキストを変更したりできます。
注: 前のチュートリアル「Digisparkブートローダーを使用してUSB経由でATtiny85 ICを直接プログラミングする」に従って、USBおよびDigisparkブートローダーを介してATtiny85ICをプログラミングします。
Attiny85ステップカウンター用のPCBの製造
回路図が完成し、PCBのレイアウトに進むことができます。選択したPCBソフトウェアを使用してPCBを設計できます。このプロジェクトでは、EasyEDAを使用してPCBを製造しました。
以下は、ステップカウンターPCBの最上層と最下層の3Dモデルビューです。
上記の回路のPCBレイアウトは、以下のリンクからGerberとしてダウンロードすることもできます。
- ATtiny85ステップカウンターのガーバーファイル
PCBWayからPCBを注文する
これで、設計が完成したら、PCBの注文に進むことができます。
ステップ1: https : //www.pcbway.com/にアクセスし、初めての場合はサインアップします。次に、[PCBプロトタイプ]タブで、PCBの寸法、層の数、および必要なPCBの数を入力します。
ステップ2: [今すぐ見積もる]ボタンをクリックして続行します。ボードタイプ、レイヤー、PCBの材料、厚さなど、いくつかの追加パラメーターを設定するページが表示されます。これらのほとんどはデフォルトで選択されています。特定のパラメーターを選択する場合は、次を選択できます。ここにあります。
ステップ3: 最後のステップは、ガーバーファイルをアップロードして支払いを続行することです。プロセスがスムーズであることを確認するために、PCBWAYは、支払いを続行する前に、ガーバーファイルが有効かどうかを確認します。このようにして、PCBが製造に適していて、コミットされたとおりに到達することを確認できます。
ATtiny85ステップカウンターPCBの組み立て
数日後、PCBはきちんとしたパッケージで届き、PCBの品質はいつものように良好でした。ボードの最上層と最下層を以下に示します。
トラックとフットプリントが正しいことを確認した後。PCBの組み立てを進めました。完全にはんだ付けされたボードは次のようになります。
ATtiny85ステップカウンタコードの説明
完全な Arduinoステップカウンターコード は、ドキュメントの最後に記載されています。ここでは、コードのいくつかの重要な部分について説明します。
コードはTinyWireM.h&TinyOzOLED.hライブラリを使用します。TinyWireMライブラリは、ArduinoIDEのライブラリマネージャーからダウンロードしてそこからインストールできます。そのためには、Arduino IDEを開き、 Sketch <Include Library <ManageLibrariesに 移動し ます 。次に、TinyWireM.hを検索し、AdafruitによるTinyWireMライブラリをインストールし ます。
TinyOzOLED.hライブラリは、指定されたリンクからダウンロードできます。
ライブラリをArduinoIDEにインストールした後、必要なライブラリファイルを含めてコードを開始します。
#include "TinyWireM.h" #include "TinyOzOLED.h"
ライブラリを含めた後、加速度計の読み取り値を保存する変数を定義します。
intaccelX、accelY、accelZ;
内部 設定 () ループ、ワイヤライブラリを初期化し、電源管理を介してセンサーをリセットもレジスタOLEDディスプレイのためのI2C通信を初期化します。次に、次の行で表示方向を設定し、加速度計とジャイロスコープの値のレジスタアドレスを入力します。
TinyWireM.begin(); OzOled.init(); OzOled.clearDisplay(); OzOled.setNormalDisplay(); OzOled.sendCommand(0xA1); OzOled.sendCommand(0xC8); TinyWireM.beginTransmission(mpu); TinyWireM.write(0x6B); TinyWireM.write(0b00000000); TinyWireM.write(0x1B);
getAccel() 関数、加速度計データを読み出すことによって開始します。各軸のデータは、2バイト(上位および下位)またはレジスタに格納されます。それらすべてを読み取るために、最初のレジスタから開始し、 requiestFrom() 関数を使用し て、X、Y、およびZ軸の6つのレジスタすべてを読み取るように要求します。次に、各レジスタからデータを読み取ります。出力は2の補数であるため、それらを適切に組み合わせて、完全な加速度計の値を取得します。
voidgetAccel(){TinyWireM.beginTransmission(mpu); TinyWireM.write(0x3B); TinyWireM.endTransmission(); TinyWireM.requestFrom(mpu、6); accelX = TinyWireM.read()<< 8-TinyWireM.read(); accelY = TinyWireM.read()<< 8-TinyWireM.read(); accelZ = TinyWireM.read()<< 8-TinyWireM.read(); }
ループ関数内で、最初にX、Y、およびZ軸の値を読み取り、3軸の値を取得した後、X、Y、およびZ軸の値の平方根をとって合計加速度ベクトルを計算します。次に、現在のベクトルと前のベクトルの差を計算し、差が6より大きい場合は、ステップ数を増やします。
getAccel(); vector = sqrt((accelX * accelX)+(accelY * accelY)+(accelZ * accelZ)); totalvector = vector-vectorprevious; if(totalvector> 6){ステップ++; } OzOled.printString( "Steps"、0、4); OzOled.printNumber(Steps、0、8、4); vectorprevious =ベクトル; delay(600);
Arduinoステップカウンターを散歩に連れて行きましょう
PCBの組み立てが完了したら、ATtiny85をプログラマーボードに接続し、コードをアップロードします。今、あなたの手でステップカウンターのセットアップを取り、ステップバイステップで歩き始めてください、それはOLEDにステップ数を表示するはずです。セットアップが非常に速くまたは非常にゆっくりと振動する場合、ステップ数が増えることがあります。
これは、ATtiny85 とMPU6050を使用して独自のステップカウンターを構築する方法です 。プロジェクトの完全な作業は、以下にリンクされているビデオでも見ることができます。あなたがプロジェクトを楽しんで、あなた自身のものを作るのが面白いと思ったことを願っています。ご不明な点がございましたら、下のコメント欄にご記入ください。