Percobaan 1 Kondisi 2
1. Prosedur [kembali]
- Menyiapkan alat dan bahan.
- Merangkai komponen pada breadboard sesuai dengan gambar rangkaian percobaan.
- Menghubungkan masing masing pin input output.
- Mengunggah program ke mikrokontroler.
- Jalankan Rangkaian
2. Hardware dan Diagram Blok [kembali]
- STM32F103C8T6
- HeartBeat Sensor
- Push Button
- LED
- Buzzer
- Resistor
- Breadboard
3. Rangkaian Simulasi dan Prinsip Kerja [kembali]
Rangkaian pada gambar merupakan sistem kontrol berbasis mikrokontroler yang bekerja untuk membaca kondisi sensor lalu menampilkan atau mengaktifkan indikator tertentu. Bagian utama rangkaian adalah mikrokontroler yang terhubung dengan beberapa komponen input dan output seperti sensor, LED indikator, buzzer, serta tampilan meter. Sensor digunakan untuk mendeteksi suatu kondisi fisik, misalnya detak jantung atau perubahan sinyal analog. Sinyal dari sensor masuk ke pin input mikrokontroler, kemudian diproses sesuai program yang telah ditanamkan. Mikrokontroler akan membandingkan nilai pembacaan dengan batas tertentu sehingga dapat menentukan apakah kondisi normal atau tidak.
Ketika rangkaian dinyalakan, sumber tegangan memberikan catu daya ke seluruh komponen. Sensor mulai membaca sinyal dan hasil pembacaan dikirim ke mikrokontroler. Nilai yang diterima kemudian diolah dan ditampilkan melalui indikator visual seperti LED atau meter digital. LED hijau biasanya menunjukkan kondisi normal, sedangkan LED merah menandakan adanya kondisi tertentu atau peringatan. Jika nilai pembacaan melewati batas yang ditentukan, mikrokontroler dapat mengaktifkan buzzer sebagai alarm. Dengan demikian, prinsip kerja rangkaian ini adalah mengubah sinyal dari sensor menjadi informasi yang dapat dipantau pengguna melalui proses pembacaan, pengolahan data, dan pengendalian output oleh mikrokontroler.
4. Flowchart dan Listing Program [kembali]
#include "stm32f1xx_hal.h"
/* ================= VARIABLE ================= */
uint32_t BPM = 60; // kondisi sesuai soal
/* ================= LED ================= */
void LED_Hijau() {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
}
void LED_Kuning() {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
}
void LED_Merah() {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);
}
void LED_Mati() {
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_10,
GPIO_PIN_RESET);
}
/* ================= BUZZER ================= */
void Buzzer_On() {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET);
}
void Buzzer_Off() {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET);
}
/* ================= PROTOTYPE ================= */
void SystemClock_Config(void);
void MX_GPIO_Init(void);
/* ================= MAIN ================= */
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
LED_Mati(); // reset semua LED
if(BPM >= 60 && BPM <= 80)
{
LED_Hijau(); // 💚 LED hijau ON
Buzzer_On(); // 🔊 buzzer ON
}
else if(BPM < 60)
{
LED_Kuning();
Buzzer_Off();
}
else
{
LED_Merah();
Buzzer_On();
}
HAL_Delay(100);
}
}
/* ================= CLOCK ================= */
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.PLL.PLLState = RCC_PLL_NONE;
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_HSI;
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_0);
}
/* ================= GPIO ================= */
void MX_GPIO_Init(void)
{
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_10 | GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_10 | GPIO_PIN_11,
GPIO_PIN_RESET);
}
5. Video Demo [kembali]
Buatlah rangkaian seperti pada gambar percobaan 1 dengan kondisi sensor heartbeat membaca BPM 60 dan LED menyala warna hijau serta buzzer berbunyi
7. Video Simulasi [kembali]
- Download File Rangkaian (klik disini)
- Download Datasheet HeartBeat Sensor (klik disini)
- Download Datasheet Resistor (klik disini)
- Download Datasheet LED (klik disini)
- Download Datasheet Buzzer (klik disini)
- Download Datasheet STM32F103C8 (klik disini)
Komentar
Posting Komentar