[menuju akhir]


Langkah-langkah percobaan :
1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Buat program untuk mikrokontroler STM32 NUCLEO-G474RE di software STM32 CubeIDE.
3. Compile program dalam format hex, lalu upload ke dalam mikrokontroler.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
5. Selesai.

2. Hardware dan Diagram Blok [Kembali]
a. Hardware
1. STM32 NUCLEO-G474RE

STM32 NUCLEO-G474RE adalah papan pengembangan (development board) berbasis mikrokontroler STM32 yang dirancang oleh STMicroelectronics untuk memudahkan proses pembelajaran, prototyping, dan pengembangan sistem embedded.

Secara spesifik, board ini menggunakan mikrokontroler STM32G474RE, yang termasuk dalam keluarga STM32 seri G4. Mikrokontroler ini berbasis inti ARM Cortex-M4 dengan kemampuan pemrosesan yang cukup tinggi serta dilengkapi dengan fitur DSP (Digital Signal Processing) dan FPU (Floating Point Unit), sehingga sangat cocok untuk aplikasi yang membutuhkan perhitungan matematis cepat seperti kontrol motor, sistem tenaga, dan pengolahan sinyal.


2. Infrared Sensor

Infrared sensor (sensor inframerah) adalah perangkat elektronik yang digunakan untuk mendeteksi radiasi inframerah (IR) yang tidak dapat dilihat oleh mata manusia. Radiasi inframerah ini biasanya dipancarkan oleh benda yang memiliki suhu (panas).

3. Switch

Switch (saklar) adalah komponen elektronik yang digunakan untuk menghubungkan atau memutuskan aliran arus listrik dalam suatu rangkaian.

  • Saat switch ON (tertutup) → arus listrik mengalir
  • Saat switch OFF (terbuka) → arus listrik terputus

4. LED RGB

LED RGB adalah jenis Light Emitting Diode (LED) yang mampu menghasilkan berbagai warna dengan cara menggabungkan tiga warna dasar, yaitu:

  • R (Red / Merah)
  • G (Green / Hijau)
  • B (Blue / Biru)

5. Buzzer
Buzzer adalah suatu komponen elektronika yang berfungsi untuk mengubah energi listrik menjadi energi suara (bunyi) melalui mekanisme getaran. Komponen ini termasuk dalam kategori output device karena digunakan untuk memberikan respon berupa suara terhadap suatu kondisi atau perintah dalam rangkaian elektronik.

6. Resistor 

Resistor adalah komponen elektronik pasif yang berfungsi untuk membatasi arus listrik dalam suatu rangkaian. Resistor bekerja berdasarkan hukum Ohm, yang menyatakan bahwa tegangan (V) = arus (I) × resistansi (R). Resistor memiliki satuan Ohm (Ω) dan digunakan dalam berbagai aplikasi seperti pembagian tegangan, kontrol arus, dan proteksi rangkaian elektronik.

7. Breadboard

Breadboard adalah alat yang digunakan untuk merakit rangkaian elektronika sementara tanpa perlu menyolder (tanpa solder).

b. Diagram Blok






3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]





Prinsip Kerja :

Prinsip kerja sistem deteksi jarak pada parkir mundur ini dimulai saat sistem dinyalakan (mulai), kemudian mikrokontroler melakukan proses inisialisasi terhadap sensor inframerah (IR) dan switch sebagai input. Setelah itu, sistem akan membaca kondisi switch. Jika switch tidak aktif (tidak mendeteksi), maka sistem berada dalam  standby, yaitu LED dalam kondisi mati dan buzzer tidak berbunyi. Namun, jika switch aktif, maka sensor inframerah akan diaktifkan untuk mulai mendeteksi keberadaan objek di belakang kendaraan.

Selanjutnya, sistem akan membaca output dari sensor inframerah. Apabila sensor IR mendeteksi adanya objek (menandakan jarak dekat atau terhalang), maka mikrokontroler akan memberikan output berupa menyalakan LED merah dan mengaktifkan buzzer sebagai tanda peringatan kepada pengemudi bahwa jarak sudah dekat dan berpotensi terjadi tabrakan. Sebaliknya, jika sensor IR tidak mendeteksi objek (jarak masih aman), maka sistem akan menyalakan LED hijau dan buzzer tetap dalam kondisi mati, yang menandakan bahwa kondisi masih aman untuk terus mundur. Proses ini berlangsung secara terus-menerus selama sistem aktif, sehingga memberikan monitoring jarak secara real-time kepada pengguna.

4. Flowchart dan Listing Program [Kembali]
a. Flowchart

b. Listing Program
  • main.c
#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)
  {
  }

  • main.h
#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]
1. Download Video Demo Klik Disini
2. Download File LA Klik Disini

Komentar

Postingan populer dari blog ini