LAPORAN AKHIR 2



MODUL 1 PERCOBAAN 4


1. Prosedur [Kembali]

A. Persiapan Alat dan Bahan

  1. Mikrokontroler STM32 Nucleo (sesuai gambar, misalnya seri C031C6 atau standar Nucleo lainnya).

  2. Kabel USB Data (untuk programming dan power, karena Nucleo sudah memiliki built-in ST-LINK).

  3. Flame Sensor (Sensor Api).

  4. Float Sensor (Sensor Ketinggian Air / Pelampung).

  5. Modul Relay 1-Channel.

  6. Buzzer.

  7. LED.

  8. Resistor 220 Ω atau 330 Ω.

  9. Kabel Jumper secukupnya.

B. Perakitan Rangkaian

  1. Hubungkan pin VCC (5V/3V3) dan GND pada board Nucleo ke masing-masing pin VCC dan GND pada semua komponen (Sensor, Relay, Buzzer).

  2. Koneksi Input:

    • Hubungkan pin Output/Signal Flame Sensor ke pin A1 pada Nucleo.

    • Hubungkan pin Output/Signal Float Sensor ke pin A2 pada Nucleo.

  3. Koneksi Output:

    • Hubungkan kaki anoda LED (melalui resistor) ke pin D13 pada Nucleo.

    • Hubungkan pin positif/signal Buzzer ke pin D12 pada Nucleo.

    • Hubungkan pin input (IN) Modul Relay ke pin D11 pada Nucleo.

C. Pemrograman

  1. Buka software IDE (seperti STM32CubeIDE).

  2. Buat project baru sesuai dengan seri board STM32 Nucleo yang digunakan.

  3. Lakukan konfigurasi pin pada Device Configuration Tool (.ioc):

    • Atur pin PA1 (A1) dan PA2 (A2) sebagai GPIO_Input.

    • Atur pin PA5 (D13), PA6 (D12), dan PA7 (D11) sebagai GPIO_Output. (Catatan: Penamaan port PA/PB menyesuaikan datasheet Nucleo yang dipakai).

  4. Tulis program logika kendali pada main.c. Sistem akan menggunakan fungsi HAL standar:

    • HAL_GPIO_ReadPin() → untuk membaca status dari Flame Sensor dan Float Sensor.

    • HAL_GPIO_WritePin() → untuk menyalakan/mematikan LED, Buzzer, dan Relay berdasarkan kondisi sensor.

  5. Lakukan Build dan Upload program ke STM32 Nucleo menggunakan kabel USB.

D. Pengujian Sistem

  1. Pastikan board Nucleo terhubung ke sumber daya (menyala).

  2. Pengujian Sensor Api: Berikan pemicu pada Flame Sensor (simulasi api). Amati apakah mikrokontroler memproses input tersebut dan mengaktifkan output (misalnya: Buzzer berbunyi, Relay 'klik' aktif, LED menyala).

  3. Pengujian Sensor Air: Ubah posisi Float Sensor (simulasi air penuh/surut). Amati kembali respons output pada LED, Buzzer, dan Relay sesuai logika program yang telah dibuat.

  4. Pastikan sistem dapat kembali ke keadaan normal (standby) ketika kedua sensor tidak mendeteksi bahaya.

2. Hardware dan Diagram Blok [Kembali]

 a) STM32 NUCLEO G474RE


    b) LED



    c) Buzzer



    d) Resistor



    e) Flame Sensor





    f) Float Switch




     g) Relay



       h) Diagram Blok




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Prinsip kerja dari simulasi rangkaian ini didasarkan pada deteksi dua kondisi lingkungan secara bersamaan yaitu keberadaan api dan perubahan tingkat air yang diproses secara terpusat oleh mikrokontroler STM32 Nucleo. Rangkaian ini bertindak sebagai sistem peringatan dini terintegrasi.

Dalam kondisi normal (lingkungan aman dari api dan debit air stabil), Flame Sensor dan Float Sensor tidak mendeteksi anomali. Akibatnya, mikrokontroler membaca status logika batas aman pada pin inputnya dan menahan sistem dalam status siaga (standby). Seluruh output (LED, Buzzer, dan Relay) dalam keadaan mati.

Namun, apabila terjadi perubahan kondisi:

  1. Jika percikan api atau radiasi inframerah dari api terdeteksi oleh Flame Sensor, atau

  2. Jika permukaan air naik/turun melewati batas mekanis dari Float Sensor (pelampung),

Maka sensor yang terpicu akan mengubah nilai logikanya (misalnya dari LOW menjadi HIGH) dan mengirimkan sinyal tersebut ke pin input mikrokontroler STM32.

Karena STM32 menjalankan program dalam infinite loop (putaran tak henti), perubahan logika sekecil apa pun akan langsung terbaca secara real-time. Mikrokontroler kemudian akan mengeksekusi perintah lanjutan untuk merespons bahaya tersebut dengan mengaktifkan tiga output secara bersamaan:

  • Menyalakan LED sebagai peringatan bahaya secara visual.

  • Membunyikan Buzzer sebagai peringatan bahaya berupa suara.

  • Mengaktifkan Modul Relay, yang berfungsi sebagai saklar elektronik tegangan tinggi. (Relay ini di dunia nyata bisa disambungkan untuk mematikan aliran listrik utama agar tidak terjadi korsleting saat banjir, atau menyalakan pompa air darurat/penyemprot air).

Ketika kondisi kembali aman (sensor tidak lagi mendeteksi api atau air kembali normal), mikrokontroler akan memutus sinyal ke output, dan sistem kembali ke mode standby.



Listing Program :

#include "main.h"

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

int main(void)

{

HAL_Init();

SystemClock_Config();

MX_GPIO_Init();

while (1)

{

GPIO_PinState flame_state;

GPIO_PinState float_state;

flame_state = HAL_GPIO_ReadPin(FLAME_PORT, FLAME_PIN);

float_state = HAL_GPIO_ReadPin(FLOAT_PORT, FLOAT_PIN);

/* ===== FLAME SENSOR ===== */

if (flame_state == GPIO_PIN_SET)

{

/* Api terdeteksi */

HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);

HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_SET);

}

else

{

HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);

HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET);

}

/* ===== RELAY / POMPA ===== */

if ((flame_state == GPIO_PIN_SET) || (float_state == GPIO_PIN_SET))

{

/* Api ATAU tangki penuhpompa MATI */

HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_RESET);

}

else

{

/* Aman & tangki belum penuhpompa HIDUP */

HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET);

}

HAL_Delay(100);

}

}

static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

__HAL_RCC_GPIOA_CLK_ENABLE();

/* INPUT */

GPIO_InitStruct.Pin = FLAME_PIN | FLOAT_PIN;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_PULLDOWN;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/* OUTPUT */

GPIO_InitStruct.Pin = LED_PIN | BUZZER_PIN | RELAY_PIN;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/* Relay default ON */

HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET);

}

void SystemClock_Config(void)

{

/* Clock default CubeIDE */

}

void Error_Handler(void)

{

while (1) {}

}




#ifndef __MAIN_H

#define __MAIN_H

#ifdef __cplusplus

extern "C" {

#endif

#include "stm32c0xx_hal.h"

/* ====== INPUT ====== */

#define FLAME_PIN GPIO_PIN_0

#define FLAME_PORT GPIOA

#define FLOAT_PIN GPIO_PIN_1

#define FLOAT_PORT GPIOA

/* ====== OUTPUT ====== */

#define LED_PIN GPIO_PIN_5

#define LED_PORT GPIOA

#define BUZZER_PIN GPIO_PIN_6

#define BUZZER_PORT GPIOA

#define RELAY_PIN GPIO_PIN_7

#define RELAY_PORT GPIOA

void Error_Handler(void);

#ifdef __cplusplus

}

#endif

#endif /* __MAIN_H */


5. Video Demo [Kembali]




6. Soal Analisa [Kembali]






7. Video Simulasi [Kembali]





8. Download File [Kembali]

Download rangkaian STM32 Nucleo C031C6 klik disini

Download Analisa disini

Datasheet STM32 NUCLEO-G474RE disini

Datasheet Flame Sensor disini

Datasheet Buzzer disini

Datasheet LED disini


Komentar

Postingan Populer