M1-Laporan Akhir 2



1. Prosedur [kembali]

  • Siapkan seluruh komponen yang dibutuhkan.
  • Rangkai komponen sesuai dengan gambar yang ada di modul.
  • Pastikan semua koneksi sudah sesuai, tidak ada kabel yang longgar atau terbalik.
  • Buka software STM32CubeIDE lalu lakukan konfigurasi pin pada STM untuk menentukan GPIO input dan GPIO output
  • Masukan Program ke dalam software STM32CubeIDE lalu build untuk memastikan tidak ada program yang error
  • Hubungkan board STM32 ke komputer, lalu lakukan pemrograman sesuai dengan flowchart yang telah dibuat.
  • Setelah program berhasil di-upload, silahkan run untuk memastikan logika dan rangkaian sudah benar.
  • 2. Hardware dan Diagram Blok [kembali]

    • STM32 NUCLEO-G474RE 
    • Infrared Sensor 

    • Buzzer 


    • Push Button

    • LED RGB


    • Resistor 


    • Switch 

    Diagram Blok:

    3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

    Prinsip kerja rangkaian ini didasarkan pada pembacaan dua buah input, yaitu switch pada pin PA0 dan sensor IR pada pin PA1, yang kemudian diproses oleh mikrokontroler STM32 untuk mengendalikan LED dan buzzer sebagai output. Sistem akan terus membaca kondisi kedua input tersebut secara berulang. Switch berfungsi sebagai pengaktif sistem, di mana saat switch dalam kondisi ON (bernilai logika 1), sistem siap bekerja. Sensor IR digunakan untuk mendeteksi keberadaan objek, dengan logika 1 menandakan tidak ada objek yang terdeteksi dan logika 0 menandakan adanya objek yang terdeteksi.

    Mikrokontroler memproses kedua sinyal tersebut menggunakan logika AND, yaitu ketika switch dalam kondisi ON dan sensor IR bernilai 1 (tidak mendeteksi objek), maka sistem berada dalam kondisi aman sehingga LED hijau akan menyala, sedangkan LED merah dan buzzer dalam keadaan mati. Sebaliknya, jika salah satu kondisi tidak terpenuhi, yaitu switch dalam keadaan OFF atau sensor IR mendeteksi objek, maka sistem akan mengaktifkan kondisi peringatan dengan menyalakan LED merah dan buzzer, serta mematikan LED hijau. Dengan demikian, rangkaian ini bekerja sebagai sistem indikator sederhana yang membedakan kondisi aman dan kondisi bahaya berdasarkan kombinasi input dari switch dan sensor IR.


    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)
     {
     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. Download File [kembali]









    Komentar

    Postingan populer dari blog ini

    Detektor non-inverting dengan Vref = 0

    2.2 Load-Line Analysis

    4.19 Practical Applications