MIKRO-LA1-M2

 




MODUL 2

LAPORAN AKHIR 1


1. Prosedur [kembali]

1. Persiapan Alat dan Bahan

Sediakan komponen-komponen utama yang terlihat pada gambar rangkaian:

  • Mikrokontroler: STM32F103C8.

  • Sensor: HeartBeat Sensor (HB1).

  • Input: Push Button (untuk fungsi Interrupt) dan Potensiometer (RV1).

  • Output: 3 buah LED (Merah, Kuning, Hijau) dan Buzzer (BUZ1).

  • Pendukung: Resistor 220 Ohm (R1, R2, R3) dan Voltmeter untuk pemantauan tegangan.

2. Perakitan Rangkaian

Hubungkan komponen ke pin mikrokontroler sesuai skema:

  • HeartBeat Sensor: Output sensor dihubungkan ke pin PA0 yang dikonfigurasi sebagai input ADC.

  • Push Button: Dihubungkan ke pin PA1 sebagai input External Interrupt (EXTI).

  • LED:

    • LED Hijau dihubungkan ke pin PB0.

    • LED Kuning dihubungkan ke pin PB1.

    • LED Merah dihubungkan ke pin PB10.

  • Buzzer: Dihubungkan ke pin PB11.

3. Logika Operasi (Prosedur Pengujian)

Setelah program diunggah, sistem akan bekerja berdasarkan nilai BPM (Beats Per Minute) yang terdeteksi:

  • Inisialisasi: Sistem melakukan kalibrasi nilai ambang batas (baseline) secara adaptif dari data sensor

  • LED merah dan kuning disetting selalu mati
  • Ketika sensor mendeteksi adanya detak jantung, maka LED hijau akan menyala
  • Ketika tidak addanya detak jantung terdeteksi, maka LED hijau akan mati
  • Kondisi Normal (BPM 60-80): LED Hijau akan menyala, sedangkan LED lainnya dan Buzzer tetap mati.
  • Fungsi Interrupt: Jika detak jantung berada di kondisi bahaya dan Buzzer menyala, penekanan Push Button akan memicu Interrupt Service Routine (ISR) untuk mematikan atau menyalakan ulang status Buzzer tanpa mengganggu proses pembacaan sensor utama


4. Pengamatan

  • Perhatikan bahwa LED hijau akan menyala selaras dengan detak jantung yang terdeteksi

  • Pastikan fungsi timeout bekerja: jika tidak ada detak yang terdeteksi selama 2 detik, sistem akan mengatur nilai BPM ke 0 dan mematikan semua output.

2. Hardware dan Diagram Blok [kembali]


STM32F103C8T6

Heartbeat sensor

Push button

LED

 
Buzzer

Resistor

Breadboard



3. Rangkaian Simulasi dan Prinsip Kerja [kembali]




Prinsip kerja:

  1. Pembacaan Sensor: Sensor pulsa (di ujung jari) mendeteksi aliran darah dan menghasilkan sinyal listrik analog yang naik-turun seirama dengan denyut jantung.
  2. Konversi (ADC): Fitur ADC (Analog-to-Digital Converter) mengubah sinyal analog tersebut menjadi data digital agar bisa dibaca dan dipahami oleh mikrokontroler.
  3. Pemrosesan & Output: Mikrokontroler memantau data digital tersebut. Setiap kali terdeteksi lonjakan data yang menandakan terjadinya detak jantung, mikrokontroler memberi perintah agar LED Hijau menyala. Saat gelombang turun (jeda antar detak), LED dimatikan.

4. Flowchart dan Listing Program[kembali]



Bagian awal dari proyek Heart Rate Indikator yang berfungsi untuk mendefinisikan handle periferal dan variabel global. Program ini menyertakan header library HAL untuk STM32F1 dan mendeklarasikan sebuah handleh hadc1 yang digunakan untuk mengontrol periferal ADC (Analog to Digital Converter). Selain itu, dideklarasikan beberapa variabel penting seperti adcValue dan filteredValue untuk menampung hasil pembacaan sensor serta variabel beatDetectedBPM, interval, dan lastBeatTime yang berfungsi untuk menghitung frekuensi detak jantung pengguna. Terdapat juga variabel buzzerOff yang digunakan sebagai penanda status aktif atau tidaknya alarm suara pada sistem



Implementasi algoritma Moving Average Filter yang berfungsi untuk menghaluskan data masukan dari sensor. Program mendefinisikan ukuran filter sebesar sepuluh sampel menggunakan makro FILTER_SIZE dan menyiapkan array buffer untuk menyimpan data sementara tersebut. Di dalam fungsi moving_average, setiap nilai baru yang diterima akan dimasukkan ke dalam buffer, lalu program menghitung jumlah total dari seluruh data yang ada menggunakan perulangan for. Hasil akhir yang dikembalikan oleh fungsi ini adalah nilai rata-rata dari sepuluh sampel terakhir, yang bertujuan untuk meminimalkan gangguan sinyal atau noise sehingga pembacaan sensor menjadi lebih stabil.



.

Kumpulan fungsi khusus untuk mengendalikan indikator visual berupa LED pada proyek Heart Rate Indicator. Terdapat empat fungsi utama yang didefinisikan menggunakan perintah HAL_GPIO_WritePin, yaitu LED_Hijau()LED_Kuning(), dan LED_Merah() yang masing-masing berfungsi untuk mengaktifkan LED tertentu dengan memberikan status GPIO_PIN_SET pada pin PB0PB1, dan PB10. Selain itu, terdapat fungsi LED_Mati() yang berfungsi untuk menonaktifkan seluruh LED secara bersamaan dengan memberikan status GPIO_PIN_RESET pada ketiga pin tersebut. Secara keseluruhan, bagian program ini menyederhanakan proses pemanggilan status indikator kesehatan pengguna dalam logika utama sistem



Definisi fungsi untuk kendali alarm suara, penanganan interupsi, serta deklarasi prototype fungsi utama pada proyek Heart Rate Indicator. Bagian pertama mendefinisikan fungsi Buzzer_On() dan Buzzer_Off() yang menggunakan perintah HAL_GPIO_WritePin untuk mengaktifkan atau menonaktifkan buzzer melalui pin PB11. Selanjutnya, terdapat fungsi HAL_GPIO_EXTI_Callback yang berfungsi sebagai Interrupt Service Routine (ISR); fungsi ini akan mendeteksi penekanan tombol pada pin PA1 dan mengubah status variabel buzzerOff secara bergantian (toggle) untuk mengendalikan alarm secara manual. Terakhir, program mendeklarasikan prototype fungsi untuk inisialisasi sistem, yang meliputi konfigurasi clock (SystemClock_Config), inisialisasi GPIO (MX_GPIO_Init), dan inisialisasi ADC (MX_ADC1_Init) yang akan diimplementasikan lebih lanjut dalam kode program utama



.


Merupakan fungsi utama (main) yang mengendalikan seluruh logika sistem Heart Rate Indicator dalam sebuah perulangan tak terbatas. Program dimulai dengan inisialisasi perangkat keras seperti HAL, system clock, GPIO, dan ADC, diikuti dengan pembacaan nilai sensor secara terus-menerus yang kemudian dihaluskan melalui fungsi filter moving average. Sistem ini menghitung nilai BPM (Beats Per Minute) dengan mengukur interval waktu antar detak jantung yang melewati ambang batas (threshold) adaptif, serta memiliki fitur timeout yang akan mengatur BPM ke nilai nol jika tidak ada detak terdeteksi selama lebih dari dua detik. Pada tahap akhir, program menentukan respons indikator berdasarkan nilai BPM yang diperoleh, di mana rentang 30-60 akan menyalakan LED Kuning, rentang di bawah atau sama dengan 80 akan menyalakan LED Hijau, dan kondisi di luar itu (bahaya) akan menyalakan LED Merah serta mengaktifkan Buzzer jika tidak dimatikan secara manual melalui fitur interupsi



.

Merupakan fungsi SystemClock_Config yang bertujuan untuk mengonfigurasi sumber detak (clock) utama pada mikrokontroler. Program ini secara spesifik mengatur penggunaan osilator internal berkecepatan tinggi atau HSI (High Speed Internal) sebagai sumber clock utama dengan mengaktifkan status RCC_HSI_ON dan menonaktifkan fitur PLL. Konfigurasi dilanjutkan dengan mengatur pembagi detak (divider) untuk berbagai bus sistem seperti AHB, APB1, dan APB2 agar semuanya bekerja pada kecepatan penuh tanpa pembagi tambahan (DIV1), serta menyetel latensi memori flash pada tingkat nol agar sesuai dengan frekuensi kerja yang dihasilkan dari sumber HSI tersebut



Merupakan fungsi MX_ADC1_Init yang bertugas melakukan inisialisasi periferal ADC1 pada mikrokontroler STM32. Proses dimulai dengan mengaktifkan sinyal detak (clock) untuk ADC1, diikuti dengan konfigurasi parameter utama seperti penonaktifan Scan Mode dan Continuous Conversion Mode, serta pengaturan pemicu konversi melalui perangkat lunak (Software Start). Hasil data digital dikonfigurasi agar rata kanan (DataAlign Right) dengan jumlah konversi sebanyak satu saluran. Selanjutnya, program menspesifikasikan saluran masukan pada ADC_CHANNEL_0 dengan urutan prioritas pertama (Rank 1) dan waktu pencuplikan selama 71.5 siklus guna memastikan stabilitas pembacaan sinyal analog




Merupakan fungsi MX_GPIO_Init yang bertugas mengonfigurasi pin-pin GPIO (General Purpose Input/Output) pada mikrokontroler STM32. Proses dimulai dengan mengaktifkan sinyal detak (clock) untuk periferal GPIOA dan GPIOB, kemudian dilakukan pengaturan spesifik untuk setiap pin: pin PA0 dikonfigurasi sebagai input Analog untuk kebutuhan ADC, sementara pin PA1 diatur sebagai input Interrupt (Falling Edge) dengan resistor pull-up untuk membaca Push Button lengkap dengan pengaturan prioritas interupsinya di NVIC. Selain itu, pin PB0PB1PB10, dan PB11 dikonfigurasi sebagai Output (Push-Pull) berkecepatan rendah untuk mengendalikan komponen LED dan Buzzer, di mana pada akhir inisialisasi semua pin output tersebut diatur ke kondisi awal rendah atau mati (RESET) menggunakan fungsi HAL_GPIO_WritePin



5. Video Demo[kembali]

Analisa:






6. Kondisi [kembali]

-

7. Video Simulasi [kembali]


-

8. Download File [kembali]


Komentar

Postingan populer dari blog ini

2.13