1. Prosedur [Kembali]

1.Persiapan Alat dan Bahan

  • STM32 (STM32F103C8 atau sesuai rangkaian)
  • Sensor Heartbeat
  • LED (Hijau, Kuning, Merah)
  • Buzzer
  • Resistor (220Ω / 330Ω)
  • Breadboard dan kabel jumper
  • Sumber tegangan (USB / adaptor)

2. Langkah Percobaan

1. Perakitan Rangkaian

  • Hubungkan output sensor heartbeat ke pin PA0 (ADC)
  • Hubungkan LED:
    • PB0 → LED hijau
    • PB1 → LED kuning
    • PB10 → LED merah
  • Hubungkan buzzer ke PB11
  • Pastikan semua ground (GND) dan VCC terhubung dengan benar

2. Pemrograman Mikrokontroler

  • Tuliskan program sesuai kode yang diberikan
  • Pastikan:
    • ADC aktif di PA0
    • GPIO output di PB0, PB1, PB10, PB11
  • Upload program ke STM32

3. Pengujian Sistem

  • Nyalakan rangkaian
  • Tempelkan jari pada sensor heartbeat
  • Amati pembacaan:
    • Saat detak sekitar 60 BPM:
      • LED hijau menyala
      • Buzzer berbunyi
    • Jika tidak mencapai threshold:
      • Semua LED dan buzzer mati

2. Hardware dan Diagram Blok[Kembali]

1. STM32F103C8

Bagian - bagian 



2.  LED 
Light Emitting Diode atau sering disingkat dengan LED adalah komponen elektronika yang dapat memancarkan  cahaya monokromatik ketika diberikan tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang dipergunakannya. LED juga dapat memancarkan sinar inframerah yang tidak tampak oleh mata seperti yang sering kita jumpai pada Remote Control TV ataupun Remote Control perangkat elektronik lainnya.


Tabel. Warna dan Material LED

Warna
Panjanggelombang [nm]
Material semikonduktor

λ > 760
Gallium arsenide (GaAs)Aluminium gallium arsenide (AlGaAs)

610 < λ < 760
Aluminium gallium arsenide (AlGaAs)Gallium arsenide phosphide (GaAsP)Aluminium gallium indium phosphide (AlGaInP)Gallium(III) phosphide (GaP)

590 < λ < 610
Gallium arsenide phosphide (GaAsP)Aluminium gallium indium phosphide (AlGaInP)Gallium(III) phosphide (GaP)

570 < λ < 590
Gallium arsenide phosphide (GaAsP)Aluminium gallium indium phosphide (AlGaInP)Gallium(III) phosphide (GaP)

500 < λ < 570
Indium gallium nitride (InGaN) / Gallium(III) nitride (GaN)Gallium(III) phosphide (GaP)Aluminium gallium indium phosphide (AlGaInP)Aluminium gallium phosphide (AlGaP)

450 < λ < 500
Zinc selenide (ZnSe)Indium gallium nitride (InGaN)

400 < λ < 450
Indium gallium nitride (InGaN)

multiple types
Dual blue/red LEDs,
blue with red phosphor,
or white with purple plastic

λ < 400
Diamond (235 nm) Boron nitride (215 nm) Aluminium nitride (AlN) (210 nm) Aluminium gallium nitride (AlGaN)Aluminium gallium indium nitride (AlGaInN) – (down to 210 nm)

multiple types
Blue with one or two phosphor layers:
yellow with red, orange or pink phosphor added afterwards,
or white with pink pigment or dye.

White
Broad spectrum
Blue/UV diode with yellow phosphor


Bagian bagian

Komponen LED tampak seperti lampu yang dipakai dalam sebuah rangkaian elektronika, walaupun sejatinya dia adalah Diode yang berpendar.

Yang harus diperhatikan adalah kaki sebuah LED, dibuat berbeda panjangnya.

Kaki yang panjang menunjukkan kutub positif, sementara yang pendek menunjukkan kutub negatif

3. Resistor

Resistor adalah komponen Elektronika Pasif yang memiliki nilai resistansi atau hambatan tertentu yang berfungsi untuk membatasi dan mengatur arus listrik dalam suatu rangkaian Elektronika (V=I R). 
Jenis Resistor yang digunakan disini adalah Fixed Resistor, dimana merupakan resistor dengan nilai tetap terdiri dari film tipis karbon yang diendapkan subtrat isolator kemudian dipotong berbentuk spiral. Keuntungan jenis fixed resistor ini dapat menghasilkan resistor dengan toleransi yang lebih rendah.
Cara menghitung nilai resistor:
Tabel warna

Contoh :
Gelang ke 1 : Coklat = 1
Gelang ke 2 : Hitam = 0
Gelang ke 3 : Hijau   = 5 nol dibelakang angka gelang ke-2; atau kalikan 105
Gelang ke 4 : Perak  = Toleransi 10%
Maka nilai resistor tersebut adalah 10 * 105 = 1.000.000 Ohm atau 1 MOhm dengan toleransi 10%.

Spesifikasi

4. Buzzer

Buzzer adalah sebuah komponen elektronika yang berfungsi untuk mengubah getaran listrik menjadi getaran suara. Buzzer biasa digunakan sebagai indikator bahwa proses telah selesai atau terjadi suatu kesalahan pada sebuah alat (alarm).

Bagian - bagian


5. Sensor Heart Beat
 





  1. Pulse Sensor Features and Specifications

    • Biometric Pulse Rate or Heart Rate detecting sensor
    • Plug and Play type sensor
    • Operating Voltage: +5V or +3.3V
    • Current Consumption: 4mA
    • Inbuilt Amplification and Noise cancellation circuit.
    • Diameter: 0.625”
    • Thickness: 0.125” Thick

6. Vcc / Batrey



Spesifikasi

  • Input voltage: ac 100~240v / dc 10~30v
  • Output voltage: dc 1~35v
  • Max. Input current: dc 14a
  • Charging current: 0.1~10a
  • Discharging current: 0.1~1.0a
  • Balance current: 1.5a/cell max
  • Max. Discharging power: 15w
  • Max. Charging power: ac 100w / dc 250w
  • Jenis batre yg didukung: life, lilon, lipo 1~6s, lihv 1-6s, pb 1-12s, nimh, cd 1-16s
  • Ukuran: 126x115x49mm
  • Berat: 460gr

7. Push Button




Spesifikasi:





Cara-Kerja-Push-Button

Prinsip kerja push button pada dasarnya adalah untuk menghubungkan dan memutuskan aliran listrik. Namun, tombol tekan tidak memiliki kunci dan akan kembali ke posisi semula setelah ditekan.

Ketika tombol tekan ditekan, nilainya menjadi HIGH dan mengalirkan arus listrik. Namun, setelah dilepas, tombol akan bernilai LOW dan memutuskan arus listrik.

Namun, bagaimana tombol tekan bekerja bisa berbeda tergantung dari jenis tombol tersebut, apakah itu NO atau NC.

Oleh karena itu, penting untuk memahami konsep dasar dan spesifikasi dari tombol tekan yang akan digunakan pada setiap proyek.


Blok Diagram


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian Simulasi :


Prinsip Kerja :

Rangkaian ini bekerja dengan memanfaatkan sensor heartbeat sebagai input utama untuk mendeteksi detak jantung dalam bentuk sinyal analog. Sensor tersebut menghasilkan tegangan yang berubah-ubah mengikuti denyut jantung, kemudian sinyal analog ini dibaca oleh mikrokontroler STM32 melalui pin ADC (PA0) dan dikonversi menjadi data digital dengan resolusi 12-bit (0–4095). Untuk meningkatkan kestabilan pembacaan dan mengurangi noise, data ADC diproses menggunakan metode moving average filter sehingga menghasilkan nilai yang lebih halus dan representatif terhadap kondisi sebenarnya.

Nilai hasil pembacaan ADC yang telah difilter kemudian dibandingkan dengan nilai ambang batas tertentu yang telah ditentukan sebelumnya. Dalam percobaan ini, ambang batas diatur sekitar 60% dari nilai maksimum ADC, yang diasumsikan merepresentasikan kondisi detak jantung sekitar 60 BPM. Ketika nilai ADC melebihi threshold tersebut, mikrokontroler akan mengaktifkan output berupa LED hijau (pada pin PB0) dan buzzer (pada pin PB11). Sebaliknya, LED lain akan dimatikan untuk menunjukkan bahwa kondisi berada pada kategori tertentu sesuai logika program.

LED berfungsi sebagai indikator visual untuk menunjukkan kondisi detak jantung, di mana warna hijau menandakan kondisi normal (sekitar 60 BPM), sedangkan buzzer berfungsi sebagai indikator audio yang memberikan notifikasi tambahan bahwa detak jantung telah terdeteksi sesuai kondisi yang diinginkan. Jika nilai ADC berada di bawah threshold, maka semua output dimatikan sebagai indikasi bahwa kondisi belum memenuhi kriteria.

Secara keseluruhan, sistem ini bekerja dengan konsep akuisisi sinyal analog (sensor heartbeat), pengolahan data digital (ADC dan filtering), serta pengendalian output (LED dan buzzer) berdasarkan logika perbandingan nilai ambang. Sistem berjalan secara terus-menerus (real-time) dalam loop utama sehingga mampu merespons perubahan detak jantung secara langsung.

4. Flowchart dan LIsting Program[Kembali]

Flowchart 





Listing Program :



#include "main.h" /* Private variables ---------------------------------------------------------*/ ADC_HandleTypeDef hadc1; TIM_HandleTypeDef htim3; /* USER CODE BEGIN PV */ #define LDR_THRESHOLD 2000 uint8_t manual_mode = 0; uint8_t posisi_servo = 0; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_ADC1_Init(void); static void MX_TIM3_Init(void); /* USER CODE BEGIN 0 */ // ================= SERVO ================= void set_servo(uint8_t state) { if (state == 0) __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 1000); else __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 2000); } // ================= ADC ================= uint16_t read_LDR(void) { HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY); return HAL_ADC_GetValue(&hadc1); } /* USER CODE END 0 */ int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_ADC1_Init(); MX_TIM3_Init(); HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); while (1) { /* MODE OTOMATIS */ if (!manual_mode) { uint16_t ldr = read_LDR(); if (ldr < LDR_THRESHOLD) posisi_servo = 0; // gelap → masuk else posisi_servo = 1; // terang → keluar set_servo(posisi_servo); } HAL_Delay(100); } } /* ================= CALLBACK INTERRUPT ================= */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == GPIO_PIN_1) { HAL_Delay(50); // debounce manual_mode = !manual_mode; posisi_servo = !posisi_servo; set_servo(posisi_servo); } } /* ================= CLOCK ================= */ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1_BOOST); RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV4; RCC_OscInitStruct.PLL.PLLN = 85; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; HAL_RCC_OscConfig(&RCC_OscInitStruct); RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4); } /* ================= ADC ================= */ static void MX_ADC1_Init(void) { ADC_ChannelConfTypeDef sConfig = {0}; hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; hadc1.Init.Resolution = ADC_RESOLUTION_12B; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc1.Init.ContinuousConvMode = DISABLE; HAL_ADC_Init(&hadc1); sConfig.Channel = ADC_CHANNEL_1; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5; HAL_ADC_ConfigChannel(&hadc1, &sConfig); } /* ================= PWM ================= */ static void MX_TIM3_Init(void) { TIM_OC_InitTypeDef sConfigOC = {0}; htim3.Instance = TIM3; htim3.Init.Prescaler = 169; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 19999; HAL_TIM_PWM_Init(&htim3); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 1500; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1); HAL_TIM_MspPostInit(&htim3); } /* ================= GPIO ================= */ static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_NVIC_SetPriority(EXTI1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI1_IRQn); } /* ================= ERROR ================= */ void Error_Handler(void) { __disable_irq(); while (1) {} }


5. Video Demo [Kembali]

6. Analisa[Kembali]


7. Video Simulasi[Kembali]




8. Download File [Kembali]


1. Download HTML [disini]

2. Download Rangkaian Proteus  [disini]

3. Download Vidio Rangkaian [disini]

4. Download Datasheet Sensor: 

5. Download library Komponen: 

6. Download datasheet Relay [disini]

7. Download datasheet Motor [disini]

8. Download datasheet Led [disini]

9. Download listing program [disini]

10. Download data sheet [disini]

    Video Rangkaian [tekan disini]

Download LA [disini]

File Rangkaian Proteus [klik disini]

Datasheet Sensor: 






Tidak ada komentar:

Posting Komentar

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Prosedur 2. Hardware dan Diagram Blok 3. Rangkaian Simulasi dan Prinsip Kerja 4. F...