Langsung ke konten utama

TP Percobaan 1 Kondisi 3

 

1. Prosedur[Kembali ke Daftar Isi]

    1. Membuka software Proteus dan membuat project baru untuk simulasi rangkaian.
    2. Menambahkan komponen yang dibutuhkan seperti STM32F103C8, sensor heartbeat, LED, resistor, buzzer, dan potensiometer.
    3. Menghubungkan sensor heartbeat ke pin analog mikrokontroler (PA0) sebagai input sinyal.
    4. Menghubungkan LED merah, kuning, dan biru ke pin GPIO mikrokontroler (port B) sebagai indikator output.
    5. Menambahkan resistor pada setiap LED sebagai pembatas arus.
    6. Menghubungkan buzzer ke salah satu pin GPIO sebagai indikator tambahan.
    7. Menghubungkan semua komponen ke sumber tegangan 3,3 V dan ground yang sama (common ground).
    8. Melakukan konfigurasi pin pada STM32 menggunakan STM32CubeIDE sesuai dengan rangkaian (ADC untuk input, GPIO untuk output).
    9. Menuliskan dan meng-compile program hingga menghasilkan file .hex.
    10. Memasukkan file .hex ke mikrokontroler STM32F103C8 pada Proteus.
    11. Menjalankan simulasi dan memberikan variasi input (melalui sensor atau potensiometer).
    12. Mengamati perubahan LED:
      • LED merah menyala saat kondisi senang (input tinggi)
      • LED biru menyala saat kondisi sedih (input rendah)
    13. Menganalisis hasil simulasi untuk memastikan sistem bekerja sesuai perintah soal.

2. Hardware dan Diagram Blok[Kembali ke Daftar Isi]




Daftar Hardware/Komponen Utama:

  1. Mikrokontroler: Modul STM32F103C8 (sebagai otak/pusat pemrosesan data).

  2. Aktuator/Output: Buzzer (sebagai indikator suara) dan LED (sebagai indikator cahaya tambahan).

  3. LED Merah: Indikator kondisi senang

  4. LED Biru: Indikator kondisi sedih

  5. LED Hijau: Indikator netral

  6. ResistorDigunakan sebagai pembatas arus pada LED dan mencegah kerusakan komponen akibat arus berlebih.

  7. Potensiometer: Digunakan sebagai pengganti sensor saat simulasi dan memberikan variasi tegangan input ke mikrokontroler.

  8. Ground (GND): Sebagai referensi tegangan dan semua komponen harus terhubung ke ground yang sama (common ground). 

  9. Sensor Heartbeat: Berfungsi mendeteksi detak jantung dan juga menghasilkan sinyal analog berupa perubahan tegangan.

3. Rangkaian Simulasi dan Prinsip Kerja[Kembali ke Daftar Isi]

Sistem ini berfungsi dengan menggunakan sensor detak jantung sebagai pengukur perubahan keadaan fisiologis yang selanjutnya diproses oleh mikrokontroler STM32F103C8 untuk mengatur indikator LED. Sensor detak jantung memproduksi sinyal analog berupa tegangan yang berfluktuasi mengikuti intensitas denyut jantung. Sinyal tersebut diterima di pin analog mikrokontroler (PA0) dan diubah menjadi data digital melalui fitur ADC (Analog to Digital Converter).

Nilai ADC ini selanjutnya diolah oleh perangkat lunak untuk mengidentifikasi keadaan yang dianggap sebagai “senang” atau “sedih”. Saat nilai tegangan yang terdeteksi tinggi (mencerminkan aktivitas detak jantung yang lebih intens), mikrokontroler menghidupkan LED merah sebagai tanda kondisi gembira. Sebaliknya, saat nilai tegangan berkurang (merepresentasikan keadaan detak jantung yang lebih rendah atau tenang), mikrokontroler menyalakan LED biru sebagai tanda kondisi sedih.

Dalam situasi tertentu di antara kedua nilai tersebut, LED hijau dapat menyala sebagai keadaan transisi atau netral. Di samping itu, buzzer juga bisa dinyalakan sebagai tanda tambahan ketika syarat tertentu terpenuhi. Oleh karena itu, rangkaian ini mengkonversi sinyal biologis yang berupa denyut jantung menjadi output visual melalui perubahan warna LED dari merah ke biru sesuai dengan kondisi yang terdeteksi

4. Flowchart dan Listing Program[Kembali ke Daftar Isi]

Listing Program:

/* USER CODE BEGIN Header */

/**

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

* @file : main.cpp

* @brief : Heartbeat Mood Detection - Fixed for STM32 Pinout

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

*/

/* USER CODE END Header */


#include "main.h"


/* Private defines -----------------------------------------------------------*/

/* USER CODE BEGIN PD */

#define TH_SENANG 2500

#define TH_SEDIH 1500

#define ADC_SAMPLES 10


// Definisi Pin sesuai Gambar

#define LED_HIJAU_PIN GPIO_PIN_0

#define LED_BIRU_PIN GPIO_PIN_1

#define LED_MERAH_PIN GPIO_PIN_10

#define BUZZER_PIN GPIO_PIN_11

#define LED_PORT GPIOB

/* USER CODE END PD */


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

ADC_HandleTypeDef hadc1;

uint32_t adcValue = 0;

uint8_t kondisi = 0; // 0:Sedih, 1:Netral, 2:Senang


/* Function Prototypes -------------------------------------------------------*/

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

static void MX_ADC1_Init(void);

uint32_t Read_ADC_Average(void);

void Semua_LED_Mati(void);

void Kondisi_Sedih(void);

void Kondisi_Netral(void);

void Kondisi_Senang(void);


/* Logic Functions -----------------------------------------------------------*/

/* USER CODE BEGIN 0 */

uint32_t Read_ADC_Average(void) {

uint32_t total = 0;

for (uint8_t i = 0; i < ADC_SAMPLES; i++) {

HAL_ADC_Start(&hadc1);

if (HAL_ADC_PollForConversion(&hadc1, 100) == HAL_OK) {

total += HAL_ADC_GetValue(&hadc1);

}

HAL_ADC_Stop(&hadc1);

HAL_Delay(2);

}

return total / ADC_SAMPLES;

}


void Semua_LED_Mati(void) {

// Mematikan semua output di Port B sesuai gambar

HAL_GPIO_WritePin(LED_PORT, LED_HIJAU_PIN | LED_BIRU_PIN | LED_MERAH_PIN | BUZZER_PIN, GPIO_PIN_RESET);

}


void Kondisi_Sedih(void) {

Semua_LED_Mati();

HAL_GPIO_WritePin(LED_PORT, LED_HIJAU_PIN, GPIO_PIN_SET); // Hijau ON

}


void Kondisi_Netral(void) {

Semua_LED_Mati();

HAL_GPIO_WritePin(LED_PORT, LED_BIRU_PIN, GPIO_PIN_SET); // Biru ON

}


void Kondisi_Senang(void) {

Semua_LED_Mati();

HAL_GPIO_WritePin(LED_PORT, LED_MERAH_PIN, GPIO_PIN_SET); // Merah ON

HAL_GPIO_WritePin(LED_PORT, BUZZER_PIN, GPIO_PIN_SET); // Buzzer ON

HAL_Delay(200);

HAL_GPIO_WritePin(LED_PORT, BUZZER_PIN, GPIO_PIN_RESET); // Buzzer OFF

}

/* USER CODE END 0 */


int main(void) {

HAL_Init();

SystemClock_Config();

MX_GPIO_Init();

MX_ADC1_Init();


Semua_LED_Mati();


while (1) {

adcValue = Read_ADC_Average();


if (adcValue >= TH_SENANG) {

kondisi = 2;

Kondisi_Senang();

} else if (adcValue <= TH_SEDIH) {

kondisi = 0;

Kondisi_Sedih();

} else {

kondisi = 1;

Kondisi_Netral();

}

HAL_Delay(200);

}

}


/* Peripheral Initialization --------------------------------------------------*/


static void MX_ADC1_Init(void)

/* USER CODE END WHILE */ }

5. Video Demo
[Kembali ke Daftar Isi]


6. Kondisi[Kembali ke Daftar Isi]

Percobaan 1 Kondisi 3:    
    Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi sensor heartbear mendeteksi perubahan dari keadaan senang ke sedih sehingga LED berubah dari merah menjadi biru

7. Download File[Kembali ke Daftar Isi]

  1. Download rangkaian Proteus klik disini

  2. Download library STM32F103C8 klik disini

  3. Download library Heartbeat Sensor klik disini

Komentar

Postingan populer dari blog ini

Laporan Akhir Dioda Zener

Laporan Akhir Reverse Bias Dioda

Laporan Akhir Forward Bias Dioda