Tugas Pendahuluan 2



1. Prosedur [kembali]

  1. Membuka website Wokwi dan membuat project baru.
  2. Menambahkan komponen yang dibutuhkan, yaitu mikrokontroler STM32, infrared sensor, push button (switch), LED, buzzer, dan resistor.
  3. Menyusun rangkaian sesuai dengan gambar percobaan, dengan menghubungkan infrared sensor dan switch ke pin GPIO sebagai input serta LED dan buzzer ke pin GPIO sebagai output
  4. Menuliskan program langsung pada editor Wokwi (file main.c atau sesuai project)
  5. Melakukan pengecekan koneksi pin dan kesesuaian program dengan rangkaian yang dibuat.
  6. Menjalankan simulasi dengan menekan tombol Start Simulation pada Wokwi.
  7. Melakukan pengujian sesuai dengan kondisi yang diminta
  8. Mengamati perubahan kondisi pada LED dan buzzer berdasarkan input yang diberikan.

2. Hardware dan Diagram Blok [kembali]

    A. Hardware

    1. STM32 NUCLEO-G474RE


    2. Infrared Sensor


    3. Switch 


    4. LED RGB



    5. Buzzer

    6. Resistor


    B. Diagram Blok


3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

        Prinsip Kerja:
        Pada rangkaian sistem deteksi jarak parkir mundur ini, mikrokontroler berfungsi sebagai pusat pengendali yang menerima input dari switch dan infrared sensor, kemudian mengatur output berupa LED dan buzzer. Switch digunakan sebagai pengaktif utama sistem, sedangkan infrared sensor berfungsi untuk mendeteksi keberadaan objek di sekitar.
        Ketika switch berada dalam kondisi OFF, mikrokontroler membaca input sebagai logika LOW yang menandakan bahwa sistem tidak aktif. Dalam kondisi ini, mikrokontroler secara otomatis mengabaikan semua sinyal yang berasal dari infrared sensor, sehingga meskipun sensor mendeteksi adanya objek (berlogika HIGH), data tersebut tidak diproses lebih lanjut.
        Akibatnya, mikrokontroler tidak memberikan sinyal keluaran ke perangkat output. Seluruh LED tetap dalam kondisi mati dan buzzer tidak berbunyi, karena sistem berada dalam kondisi nonaktif. Kondisi ini menunjukkan bahwa switch berperan sebagai kontrol utama yang menentukan apakah sistem bekerja atau tidak, sehingga seluruh output sepenuhnya bergantung pada status switch tersebut.

4. Flowchart dan Listing Program [kembali]

    A. Flowchart


    B. Listing Program
        #include "main.h"
        
        /* Prototipe Fungsi */
        void SystemClock_Config(void);
        static void MX_GPIO_Init(void);
        void Error_Handler(void);

        int main(void)
        {
          HAL_Init();
          SystemClock_Config();
          MX_GPIO_Init();

          /* Setup Awal */
          HAL_GPIO_WritePin(GPIOB, LED_GREEN_Pin | LED_RED_Pin | BUZZER_Pin, GPIO_PIN_RESET);

          while (1)
          {
            GPIO_PinState switch_status = HAL_GPIO_ReadPin(BUTTON_REVERSE_GPIO_Port,         BUTTON_REVERSE_Pin);
            GPIO_PinState sensor_status = HAL_GPIO_ReadPin(IR_SENSOR_GPIO_Port,         IR_SENSOR_Pin);

            GPIO_PinState buzzer = GPIO_PIN_RESET;
            GPIO_PinState led_green = GPIO_PIN_RESET;
            GPIO_PinState led_red = GPIO_PIN_RESET;

            if (switch_status != GPIO_PIN_RESET)
            {
              if (sensor_status == GPIO_PIN_SET)
              {
                led_green = GPIO_PIN_SET;
                led_red   = GPIO_PIN_SET;
              }
              else
              {
                buzzer = GPIO_PIN_SET;
              }
            }

            /* Output */
            HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, buzzer);
            HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, led_green);
            HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, led_red);

            HAL_Delay(50);
          }
        }

        /* --- GPIO Init --- */
        static void MX_GPIO_Init(void)
        {
          GPIO_InitTypeDef GPIO_InitStruct = {0};

          __HAL_RCC_GPIOA_CLK_ENABLE();
          __HAL_RCC_GPIOB_CLK_ENABLE();

          /* Input */
          GPIO_InitStruct.Pin = BUTTON_REVERSE_Pin | IR_SENSOR_Pin;
          GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
          GPIO_InitStruct.Pull = GPIO_NOPULL;
          HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

          /* Output */
          GPIO_InitStruct.Pin = LED_GREEN_Pin | LED_RED_Pin | BUZZER_Pin;
          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);
        }

        /* --- Clock --- */
        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.HSIDiv = RCC_HSI_DIV1; 
          RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
          HAL_RCC_OscConfig(&RCC_OscInitStruct);

          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;
          HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);
        }

        void Error_Handler(void)
        {
          while (1) {}
        }

5. Video Demo [kembali]


6. Kondisi [kembali]

    Kondisi 5: Buatlah rangkaian seperti pada gambar percobaan 2 dengan kondisi ketika switch dalam keadaan OFF, maka seluruh LED dan buzzer berada dalam kondisi mati meskipun sensor mendeteksi benda.

7. Video Simulasi [kembali]


8. Download File [kembali]

    Download Rangkaian Tugas Pendahuluan 2 disini
    Download Listing Program disini
    Download Datasheet STM32 NUCLEO-G474RE disini
    Download Datasheet IR Sensor disini
    


[menuju awal]




Komentar

Postingan populer dari blog ini