TUGAS PENDAHULUAN 2


PERCOBAAN 4 KONDISI 6


1. Prosedur[Kembali]

  1. Pahami terlebih dahulu kondisi yang akan digunakan
  2. Buka web Wokwi
  3. Persiapkan alat dan bahan
  4. Buat rangkaian sesuai dengan kondisi dan modul
  5. Buat kode program untuk mengoperasikan rangkaian tersebut sesuai dengan kondisi 
  6. Jalankan simulasi rangkaian.  
  7. Proses selesai

2. Hardware dan Diagram Blok[Kembali]

    a. Hardware


STM32 NUCLEO-G474RE


Flame Sensor


Buzzer



LED Red


Resistor 1k dan 220 ohm


Relay


Float Sensor

Diagram Blok


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian Simulasi



Prinsip Kerja
1. Kondisi awal, Saat sistem dinyalakan:
  • STM32 menjalankan:
    • HAL_Init() → inisialisasi sistem
    • SystemClock_Config() → menggunakan clock HSI internal
    • MX_GPIO_Init() → konfigurasi semua pin
  • Konfigurasi pin:
    • FLAME_PIN & FLOAT_PIN → INPUT (pull-down)
    • LED_PIN, BUZZER_PIN, RELAY_PIN → OUTPUT
2. Pembacaan Sensor (Loop Utama). Di dalam loop while(1):
  • Sistem membaca dua input:
    • Flame sensor (push button 1) → simulasi deteksi api
    • Float sensor (push button 2) → simulasi level air
  • Karena menggunakan pull-down:
    • Tidak ditekan → LOW (0)
    • Ditekan → HIGH (1)
    3. Logika Kondisi Sistem
        Kondisi aman saat: if (flame_state == GPIO_PIN_RESET && float_state == GPIO_PIN_RESET)
        Artinya tidak ada api (Flame berlogika low) dan level air aman (Float sensor low)

    4. Output Sistem
        Kondisi aman terpenuhi saat kondisi berikut terpenuhi:
        LED Mati, Buzzer Mati, Relay menyala

    4. Flowchart dan Listing Program[Kembali]

    Flowchart
    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);

      /* ===== KONDISI UTAMA YANG DIMINTA ===== */
      if ((flame_state == GPIO_PIN_RESET) && (float_state == GPIO_PIN_RESET))
      {
        /* Tidak ada api & tangki belum penuh → pompa ON, LED & buzzer OFF */
        HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET);     // Pompa ON
        HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);       // LED OFF
        HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET); // Buzzer OFF
      }
      else
      {
        /* Jika ada api ATAU tangki penuh → pompa OFF */
        HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_RESET);

        /* Jika ada api → LED & buzzer ON */
        if (flame_state == GPIO_PIN_SET)
        {
          HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
          HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_SET);
        }
        else
        {
          /* Tangki penuh tapi tidak ada api → LED & buzzer OFF */
          HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
          HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET);
        }
      }

      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) {}
    }

    5. Video Demo[Kembali]

    6. Kondisi[Kembali]

    Buatlah rangkaian seperti pada gambar percobaan 4 dengan kondisi ketika flame sensor tidak mendeteksi api dan float switch tidak mendeteksi tangki penuh, maka pompa menyala dan LED serta buzzer dalam kondisi mati.

    8. Download File[Kembali]
    Rangkaian dan Program Wokwi (Klik Disini)

    Video Simulasi (Klik Disini)

    HTML (Klik Disini)

    Komentar

    Postingan populer dari blog ini