指先の心拍数、指で心拍数波形を測定
心拍センサー
今回紹介する脈拍センサーは、光電反射の原理で人の脈拍を検出する心拍数センサーです。人の血管の光透過率を心拍で測定します。センサーは、光電によって収集された信号をフィルタリングします。増幅などの一連の回路処理では、出力はアナログ電圧です。アナログ電圧の大きさを検出することで、心拍数データを処理および計算できます。
検出原理
センサーに指を付けてアナログ電圧を出力します。マイクロコントローラーを使用してリアルタイムで電圧を検出し、処理したデータをシリアルポート経由でコンピューターに出力し、コンピューターで処理して波形や心拍などを生成します。このプロセスは少し複雑に見えます。データはシングルチップマイクロコントローラーによって処理され、コンピューターがデータを処理します。公式プログラムがさまざまなタイプのシングルチップマイクロコントローラーを提供していることを心配しないでください(STM32、 arduino、51シリーズ)コンピューターでのデータ処理もオープンソースなので、ここでは必要ありません。ダウンロードできる限り、プログラムを書いて、突然安心するかどうか見てみましょう。
センサーフィルム
新しいセンサーが到着したら、急いでワイヤーを接続しないでください。まず、フィルムを貼り付けて、前面と背面にバックルを付けます。1つは、電子機器の指からの発汗を防ぎ、もう1つは、指の接触による静電干渉を防ぎ、簡単です。修正するために、あまりナンセンスではありません。たとえば、投稿された2つの写真を見てください。
投稿する前に
|
|
フィルムを貼り付けた後
|
|
arduino配線
ハードウェア配線の前に、センサーのピンを紹介しましょう。センサーには+、-、Sのマークが付いた3つのピンシルクスクリーンがあります。対応する特定の機能については、以下の表を参照してください。
ピン名 | ピン機能 |
---|---|
+ | 正電源(3.3Vまたは5V使用可能) |
- | パワーネガティブ |
S | アナログ出力ピン |
今号では、まずarduinoを使用して心拍数データを処理します。最初にarduino開発ボードへの接続を紹介します。arduinoのA0ポートはセンサーのアナログ出力を検出するために使用されます。他のピンは電源ピンです。 。配線については、次の表と下の図を参照してください。
arduino | センサー |
---|---|
5V | + |
GND | - |
A0 | S |
arduinoプログラムのダウンロード
データから次のファイルを見つけてダブルクリックして開きます(arduinoソフトウェアとドライバーはBaiduの公式ウェブサイトにインストールできます。データはたくさんあります)
開発ボードとシリアルポートを選択します
クリックしてダウンロードし、ダウンロードが完了するのを待ちます
次に、STM32を使用する必要がない場合は、ホストコンピューターの使用に直接ジャンプできます。
STM32配線
STM32の配線をもう一度見てみましょう。上記のarduinoの使用法はインターネットと製品情報で説明されています。比較的簡単です。情報を見ると、STM32の使用はコードのみを提供し、説明するドキュメントはありません。操作方法(はい、情報が必要な場合は、以下にメッセージまたはプライベートチャットを残すことができます)、ここではSTM32F103ZET6ボードを使用して操作し、情報を開き、以下の32プログラムの圧縮パッケージを
見つけ、解凍して、プロジェクトを開いて、MDK5がインストールされていないBaiduのインストールチュートリアルを見つけます。はい(多くはオンライン)
開いた後、最初に主な機能部分が表示され、主な機能コードを以下に投稿します
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_ADC1_Init();
MX_TIM3_Init();
MX_USART2_UART_Init();
HAL_TIM_Base_Start_IT(&htim3);
while (1)
{
sendDataToProcessing('S', Signal); // send Processing the raw Pulse Sensor data
if (QS == true)
{
sendDataToProcessing('B',BPM); // send heart rate with a 'B' prefix
sendDataToProcessing('Q',IBI); // send time between beats with a 'Q' prefix
QS = false; // reset the Quantified Self flag for next time
}
HAL_Delay(20); //delay for 20ms
}
}
上記のコードを確認してくださいMX_USART2_UART_Init();センサーの処理後にSTM32によって出力されたデータがシリアルポート2から出力されていることがわかります。STM32F103UART2はPA2としてTXに、PA3としてRXに対応します。シリアルポートが出力されていることを確認した後これらの2つのピンから、次のことを行うだけです。これらの2つのピンをUSB-TTLに接続した後、データをコンピューターに変換できます。
USB-TTL | STM32システムボード |
---|---|
処方箋 | PA2 |
TX | PA3 |
関数MX_ADC1_Init();を開き、関数コードの一部を投稿します
void MX_ADC1_Init(void)
{
ADC_ChannelConfTypeDef sConfig;
hadc1.Instance = ADC1;
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc1.Init.ContinuousConvMode = DISABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1;
HAL_ADC_Init(&hadc1);
sConfig.Channel = ADC_CHANNEL_0;
sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5;
HAL_ADC_ConfigChannel(&hadc1, &sConfig);
}
上記のコードを分析すると、使用されているSTM32のADC1チャネル0を確認できます。マニュアルのADCハウスキーパー比較表を確認して、ADC1チャネル0に対応するPA0ピンを確認してください。この収集では、PA0ピンを使用してセンサー信号を収集します。 。配線については、次の表を参照してください。
STM32 | センサー |
---|---|
3v3 | + |
GND | - |
PA0 | S |
STM32プログラムのダウンロード
ケーブルを接続した後、電源データケーブル、ST-LINK、USB-TTLをコンピュータに接続し、プログラムをダウンロードします(シリアルポートのダウンロードとST-LINKの両方を使用できます)。ST-LINKを使用してここからプログラムをダウンロードします。まず、マジックワンドのDEVICEをZE
DEBUGに変更し、次の図に従って構成します。
構成後、ここでST-LINKを使用し、クリックしてMDKに直接ダウンロードします。
しばらくすると、STM32プログラムがダウンロードされます。
PCビュー
プログラムarduinoをダウンロードした後、直接コンピューターに接続できます。STM32の電源を入れたら、以前に接続したUSB-TTLをコンピューターに接続します。上位のコンピューターProcessingは、Baiduからダウンロードするか、以下のリンクをクリックしてダウンロードできます。 。
リンク:ダウンロードするには私をクリックしてください。
ダウンロード後、ダブルクリックして下図のように開きます。
ホストコンピューターのインターフェースに入った後、ファイルをクリックし、開くをクリックし、データからPulseSensorAmpd_Processing_1dot1という名前のファイルを見つけて
開きます。開いた後、最初に実行します。次に終了して、シリアルポート番号を表示します。
デバイスマネージャでarduinoまたはSTM32に対応するポート番号を見つけます。ここでは例としてarduinoを取り上げます。
次に、コードの次の部分を見つけます。COM1、COM5、COM6、COM8は0、1、2、3に対応し、COM5は1に対応し、Serial.list()[0]の角かっこ内の0を1に変更して開きます。 COM5
port = new Serial(this, Serial.list()[1], 115200);
port.clear();
port.bufferUntil('\n');
前の手順で問題がない場合は、以下に示すように指を上に上げると波形が表示されます。強く結びすぎないでください。指を押すと、心拍数の測定値が高くなります。
総括する
運用工程は細心の注意を払っており、同様の記事が長く掲載されていますので、どうぞよろしくお願いいたします。今回の指先ハートビート号はこれで終了です。いつでもお気軽にメッセージを残してください。