Laporan Akhir 2_M2

[menuju akhir]

1. Prosedur [kembali]

  1. Pahami terlebih dahulu kondisi yang akan digunakan
  2. Buka software Wokwi
  3. Persiapkan alat dan bahan
  4. Buat rangkaian sesuai dengan kondisi dan modul
  5. Sesuaikan konfigurasi pin sesuai dengan rangkaian modul
  6. Buat kode program untuk mengoperasikan rangkaian tersebut sesuai dengan kondisi
  7. Konfigurasi kan program dengan codingan di wokwi
  8. Jalankan simulasi rangkaian.

2. Hardware dan Diagram Blok [kembali]

Hardware

 

STM32 NUCLEO-G474RE   

Float Switch 

Flame Sensor 


LED


Buzzer

Resistor

 Relay


Diagram Blok 

 

3. Rangkaian Simulasi dan Prinsip Kerja[kembali]

Rangkaian Simulasi 


Prinsip Kerja

1. Kondisi Awal

Saat rangkaian dinyalakan, STM32 melakukan inisialisasi HAL, konfigurasi clock HSI, dan inisialisasi GPIO. Pin Touch dan PIR dikonfigurasi sebagai input, sedangkan pin LED dan Buzzer dikonfigurasi sebagai output.

2. Pembacaan Sensor oleh Mikrokontroller

STM32 terus-menerus membaca status sensor secara bersamaan :
a. Flame Sensor → mendeteksi adanya api
b. Float SwitchSensor → membaca level tangki air

3. Output

  • Jika flame sensor mendeteksi api:
    • LED menyala
    • Buzzer berbunyi (alarm)
  • Jika tidak ada api:
    • LED dan buzzer mati
  • Untuk kontrol pompa (relay):
    • Jika api terdeteksi ATAU tangki penuh:
      • Relay OFF → pompa mati
    • Jika aman dan tangki belum penuh:
      • Relay ON → pompa hidup
  •  

    4. Flowchart dan Listing Program [kembali]

    a. Flowchart

    b. 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) 
      { 
        if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) 
        { 
          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); 
          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); 
          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); 
        } 
        else 
        { 
          if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET) 
          { 
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); 
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); 
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); 
          } 
          else 
          { 
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); 
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); 
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET); 
          } 
        } 
     
        HAL_Delay(50); 
      } 

     
    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.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; 
     
      if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) 
      { 
        Error_Handler(); 
      } 
     
      RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | 
    RCC_CLOCKTYPE_SYSCLK 
                                  | RCC_CLOCKTYPE_PCLK1; 
     
      RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; 
      RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; 
      RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
        if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != 
    HAL_OK) 
      { 
        Error_Handler(); 
      } 

     
    static void MX_GPIO_Init(void) 

      GPIO_InitTypeDef GPIO_InitStruct = {0}; 
     
      __HAL_RCC_GPIOA_CLK_ENABLE(); 
      __HAL_RCC_GPIOB_CLK_ENABLE(); 
     
      GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; 
      GPIO_InitStruct.Mode = GPIO_MODE_INPUT; 
      GPIO_InitStruct.Pull = GPIO_PULLDOWN; 
      HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 
     
      GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2; 
      GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 
      GPIO_InitStruct.Pull = GPIO_NOPULL; 
      GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 
      HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 

     
    void Error_Handler(void) 

      __disable_irq(); 
      while (1) 
      { 
      } 






    #ifndef __MAIN_H 
    #define __MAIN_H 
     
    #ifdef __cplusplus 
    extern "C" { 
    #endif 
     
    #include "stm32c0xx_hal.h" 
     
    void Error_Handler(void); 
     
    #define BUTTON_REVERSE_Pin       GPIO_PIN_0 
    #define BUTTON_REVERSE_GPIO_Port GPIOA 
     
    #define IR_SENSOR_Pin            GPIO_PIN_1 
    #define IR_SENSOR_GPIO_Port      GPIOA 
    #define LED_GREEN_Pin            GPIO_PIN_0 
    #define LED_GREEN_GPIO_Port      GPIOB 
     
    #define LED_RED_Pin              GPIO_PIN_1 
    #define LED_RED_GPIO_Port        GPIOB 
     
    #define BUZZER_Pin               GPIO_PIN_2 
    #define BUZZER_GPIO_Port         GPIOB 
     
    #ifdef __cplusplus 

    #endif 
     
    #endif

     

    5. Video Demo [kembali]

    6. Analisa [kembali]


    7. Link Download [kembali]

    [menuju awal]











     

     

    No comments:

    Post a Comment

     BAHAN PRESENTASI MATA KULIAH ELEKTRONIKA OLEH ZIKRI AHMAD SYAIFULLAH 2310952062 DOSEN PENGAMPU DR.DARWISON,M.T Referensi 1. Darwison, 2010...