LA MODUL 1 PERCOBAAN 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]

    a) Mikrokontroler STM32 NUCLEO-G474RE








    2. Infrared Sensor

    Infrared Sensor Module



    3. Buzzer


    4. Power Supply

     
    5. RGB LED
    Jual LED RGB 4 PIN WARNA MERAH HIJAU BIRU 5mm ( ARDUINO ) - Common Cathode  - Jakarta Barat - Ardushop-id | Tokopedia

    6. Resistor 1k Ohm



    7. Switch



    8. Adaptor



    9. Breadboard


    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]


            
    #include "main.h"   // Memanggil header utama STM32 (HAL, definisi pin, dll)

    // Deklarasi fungsi konfigurasi clock
    void SystemClock_Config(void);

    // Deklarasi fungsi inisialisasi GPIO
    static void MX_GPIO_Init(void);

    int main(void) // Fungsi utama program
    {
      HAL_Init();               // Inisialisasi HAL (reset sistem & setup dasar)
      SystemClock_Config();     // Konfigurasi clock sistem
      MX_GPIO_Init();           // Inisialisasi GPIO (input & output)

      while (1) // Loop utama (berjalan terus menerus)
      {
        // Membaca kondisi sensor IR pada pin PA1
        GPIO_PinState ir = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);

        // Membaca kondisi switch pada pin PA0
        GPIO_PinState sw = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);

        // Jika IR tidak mendeteksi objek (0) DAN switch ON (1)
        if (ir == GPIO_PIN_RESET && sw == GPIO_PIN_SET)
        {
          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); // Nyalakan LED merah (PB1)
          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // Nyalakan LED hijau (PB0)
          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET); // Nyalakan LED biru (PB2)
          // Semua LED ON → warna putih
        }
        else
        {
          // Jika kondisi tidak terpenuhi → matikan semua LED
          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); // Matikan merah
          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // Matikan hijau
          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); // Matikan biru
        }

        HAL_Delay(50); // Delay 50 ms untuk stabilisasi pembacaan
      }
    }

    // Fungsi konfigurasi clock sistem
    void SystemClock_Config(void)
    {
      RCC_OscInitTypeDef RCC_OscInitStruct = {0}; // Struktur konfigurasi oscillator
      RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; // Struktur konfigurasi clock

      RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; // Gunakan HSI (internal clock)
      RCC_OscInitStruct.HSIState = RCC_HSI_ON;                   // Aktifkan HSI
      RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; // Kalibrasi default

      // Jika konfigurasi oscillator gagal → masuk error handler
      if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
      {
        Error_Handler();
      }

      // Konfigurasi jenis clock
      RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK |
                                   RCC_CLOCKTYPE_SYSCLK |
                                   RCC_CLOCKTYPE_PCLK1;

      RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; // Sumber clock dari HSI
      RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;     // Tidak dibagi
      RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;      // Tidak dibagi

      // Jika konfigurasi clock gagal
      if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
      {
        Error_Handler();
      }
    }

    // Fungsi inisialisasi GPIO
    static void MX_GPIO_Init(void)
    {
      GPIO_InitTypeDef GPIO_InitStruct = {0}; // Struktur konfigurasi GPIO

      __HAL_RCC_GPIOA_CLK_ENABLE(); // Aktifkan clock GPIOA
      __HAL_RCC_GPIOB_CLK_ENABLE(); // Aktifkan clock GPIOB

      // Konfigurasi PA0 & PA1 sebagai input
      GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
      GPIO_InitStruct.Mode = GPIO_MODE_INPUT;     // Mode input
      GPIO_InitStruct.Pull = GPIO_PULLDOWN;       // Pull-down (default = 0)
      HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);     // Terapkan ke GPIOA

      // Konfigurasi PB0, PB1, PB2 sebagai output
      GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;
      GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Output push-pull
      GPIO_InitStruct.Pull = GPIO_NOPULL;         // Tanpa resistor internal
      GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;// Kecepatan rendah
      HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);     // Terapkan ke GPIOB
    }

    // Fungsi penanganan error
    void Error_Handler(void)
    {
      __disable_irq(); // Nonaktifkan interrupt

      while (1)
      {
        // Loop tak hingga jika terjadi error
      }
    }






    5. Video Demo [Kembali]




    6. Analisa [Kembali]









    7. Download File [Kembali]




     

     

    Komentar

    Postingan populer dari blog ini

    TUGAS BESAR

    Aplikasi Counter

    TUGAS BESAR