Laporan Akhir Percobaan 2



 

1. Prosedur  [kembali]

  1. Siapkan alat dan bahan yang akan digunakan pada saat praktikum seperti harga STM32f103c8t6, IR sensor, touch sensor, jumper, breadboard, resistor, switch, buzzer
  2. Rangkai sesuai gambar percobaan
  3. Buka software STM32CubeIDE pada bagian main.h dan main.c copy listing program yang ada di modul kemudian paste ke main.h dan main.c di STM32CubeIDE
  4. Kemudian sambungkan STM32f103c8t6 ke laptop
  5. Run program di STM32CubeIDE kemudian simulasikan rangkaian apakah sudah sesuai dengan kondisi yang diinginkan

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
LED RGB

6. Resistor 1k Ohm

7. Switch

8. Adaptor

9. Breadboard

Diagram Blok :

3. Rangkaian Simulasi dan Prinsip Kerja  [kembali]

Prinsip Kerja:

    Prinsip kerja sistem deteksi jarak pada parkir mundur ini diawali ketika sistem dinyalakan dan mikrokontroler melakukan inisialisasi terhadap sensor inframerah (IR) serta switch sebagai pengaktif sistem. Switch berfungsi sebagai kontrol utama, di mana ketika switch dalam kondisi aktif, sensor IR mulai bekerja untuk mendeteksi keberadaan objek di belakang kendaraan. Jika switch tidak aktif, maka sistem tidak berjalan sehingga LED dalam kondisi mati dan buzzer tidak berbunyi.

    Saat switch aktif dan sensor IR mendeteksi adanya objek pada jarak tertentu, sensor akan mengirimkan sinyal ke mikrokontroler yang kemudian mengaktifkan LED merah serta buzzer sebagai peringatan bahwa jarak terlalu dekat atau berbahaya. Sebaliknya, jika sensor tidak mendeteksi objek (jarak masih aman), maka mikrokontroler akan menyalakan LED hijau dan mematikan buzzer sebagai indikasi kondisi aman. Dengan demikian, sistem ini memberikan umpan balik visual dan suara kepada pengguna untuk membantu proses parkir mundur agar lebih aman dan mengurangi risiko tabrakan.

4. Flowchart dan Listing Program  [kembali]

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]

Komentar

Postingan populer dari blog ini

ELEKTRONIKA