TP M2 P1 K2



1. Prosedur[Kembali]

    1. Buat rangkaian sesuai dengan kondisi percobaan
    2. Buat program 
    4. Jalankan simulasinya 
    5. Selesai.

2. Hardware dan Diagram Blok[Kembali]

Hardware :

    • STM32F103C8T6
  • Heartbeat Sensor



  • Push Button

  • Buzzer 
  • LED
  • Resistor

  • Breadboard 

Diagram Blok


3. Rangkaian Simulasi[Kembali]

  • Sebelum di running

  • Setelah di running

  • Prinsip Kerja

Rangkaian ini bekerja dengan menggunakan sensor heartbeat sebagai input utama untuk mendeteksi detak jantung dalam bentuk sinyal analog yang berubah-ubah mengikuti denyut nadi. Sinyal dari sensor tersebut kemudian dikirim ke mikrokontroler STM32 melalui salah satu pin ADC (Analog to Digital Converter) untuk diubah menjadi data digital sehingga dapat diproses lebih lanjut oleh sistem.

Pada rangkaian ini, selain sensor heartbeat, terdapat juga potensiometer yang berfungsi sebagai pengatur atau simulasi nilai input (threshold) pada saat pengujian di Proteus. Hal ini membantu dalam menentukan batas pembacaan sinyal apakah masuk ke kategori kondisi tertentu atau tidak.

Data analog yang masuk ke mikrokontroler akan dibaca secara terus-menerus, kemudian diolah untuk merepresentasikan kondisi detak jantung. Dalam proses ini, nilai pembacaan dibandingkan dengan nilai ambang batas (threshold) yang telah ditentukan dalam program. Nilai ambang ini digunakan sebagai acuan untuk mendeteksi kondisi BPM, khususnya pada kondisi yang diinginkan yaitu sekitar 60 BPM.

Ketika nilai pembacaan sensor memenuhi kondisi yang telah ditentukan (mendekati atau sama dengan 60 BPM), mikrokontroler akan mengaktifkan output berupa LED hijau sebagai indikator visual bahwa detak jantung berada dalam kondisi normal. Selain itu, buzzer juga akan diaktifkan sehingga menghasilkan bunyi sebagai indikator tambahan (audio).

Sebaliknya, jika nilai pembacaan tidak sesuai dengan kondisi tersebut, maka LED hijau dan buzzer tidak akan aktif, dan LED lain (jika digunakan dalam rangkaian) dapat menunjukkan kondisi berbeda sesuai dengan logika program yang dibuat.

Komponen resistor pada rangkaian LED berfungsi untuk membatasi arus agar LED tidak mengalami kerusakan, sedangkan buzzer akan berbunyi ketika mendapatkan sinyal logika HIGH dari mikrokontroler.

Secara keseluruhan, sistem ini bekerja secara real-time dalam loop utama, dengan alur proses yaitu pembacaan sinyal analog dari sensor → konversi ADC → perbandingan dengan nilai ambang → pengaktifan output (LED dan buzzer). Dengan demikian, rangkaian mampu memberikan respon langsung terhadap kondisi detak jantung yang terdeteksi.

4. Flowchart dan Listing Program[Kembali]

  • Flowchart


  • Listing Program

/* USER CODE BEGIN Header */

/**

******************************************************************************

* @file : main.c

* @brief : Heartbeat 60 BPM Simulation (Proteus)

******************************************************************************

*/

/* USER CODE END Header */


/* Includes ------------------------------------------------------------------*/

#include "main.h"


/* Private variables ---------------------------------------------------------*/


/* USER CODE BEGIN PV */

int bpm = 60;

/* USER CODE END PV */


/* Private function prototypes -----------------------------------------------*/

void SystemClock_Config(void);

static void MX_GPIO_Init(void);


/* USER CODE BEGIN PFP */

void Heartbeat_60BPM(void);

/* USER CODE END PFP */


/* USER CODE BEGIN 0 */

void Heartbeat_60BPM(void)

{

// Bunyi "lub"

HAL_GPIO_WritePin(GPIOB, buzzer_Pin, GPIO_PIN_SET);

HAL_Delay(80);


HAL_GPIO_WritePin(GPIOB, buzzer_Pin, GPIO_PIN_RESET);

HAL_Delay(120);


// Bunyi "dub"

HAL_GPIO_WritePin(GPIOB, buzzer_Pin, GPIO_PIN_SET);

HAL_Delay(80);


HAL_GPIO_WritePin(GPIOB, buzzer_Pin, GPIO_PIN_RESET);


// Total jadi 1 detik

HAL_Delay(720);

}

/* USER CODE END 0 */


int main(void)

{


/* Reset of all peripherals */

HAL_Init();


/* Configure the system clock */

SystemClock_Config();


/* Initialize all configured peripherals */

MX_GPIO_Init();


/* Infinite loop */

while (1)

{

// Simulasi BPM = 60

bpm = 60;


if (bpm == 60)

{

// LED HIJAU ON

HAL_GPIO_WritePin(GPIOB, led_green_Pin, GPIO_PIN_SET);


// LED MERAH & KUNING OFF

HAL_GPIO_WritePin(GPIOB, led_red_Pin | led_yellow_Pin, GPIO_PIN_RESET);


// Bunyi heartbeat

Heartbeat_60BPM();

}

else

{

// Semua OFF

HAL_GPIO_WritePin(GPIOB, led_green_Pin | led_yellow_Pin | led_red_Pin, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, buzzer_Pin, GPIO_PIN_RESET);


HAL_Delay(500);

}

}

}


/**

* @brief System Clock Configuration

*/

void SystemClock_Config(void)

{

RCC_OscInitTypeDef RCC_OscInitStruct = {0};

RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};


RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;

RCC_OscInitStruct.HSIState = RCC_HSI_ON;

RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;


if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

{

Error_Handler();

}


RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK

| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;


RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;


if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)

{

Error_Handler();

}

}


/**

* @brief GPIO Initialization

*/

static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};


/* GPIO Ports Clock Enable */

__HAL_RCC_GPIOD_CLK_ENABLE();

__HAL_RCC_GPIOA_CLK_ENABLE();

__HAL_RCC_GPIOB_CLK_ENABLE();


/* Set default output */

HAL_GPIO_WritePin(GPIOB, led_green_Pin | led_yellow_Pin | led_red_Pin | buzzer_Pin, GPIO_PIN_RESET);


/* LED & BUZZER OUTPUT */

GPIO_InitStruct.Pin = led_green_Pin | led_yellow_Pin | led_red_Pin | buzzer_Pin;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}


/**

* @brief Error Handler

*/

void Error_Handler(void)

{

__disable_irq();

while (1)

{

}

}


5. Kondisi[Kembali]

Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi sensor heartbeat membaca BPM 60 dan LED menyala warna hijau serta buzzer berbunyi

6. Video Simulasi[Kembali]

  


7. Download File[Kembali]

Rangkaian Simulasi [Download]


























Komentar

Postingan populer dari blog ini