Laporan Akhir Percobaan 2 (M1)



1. Prosedur [kembali]

1.   Siapkan alat dan bahan seperti STM32 Nucleo G474RE, jumper, breadboard, resistor, sensor IR, switch, buzzer, dan laptop.

2.     Buka software STM32CubeIDE, lalu buka file main.h dan main.c.

3.     Copy listing program dari modul dan paste ke dalam main.h dan main.c.

4.     Simpan program kemudian lakukan build (compile).

5.     Hubungkan board STM32 Nucleo G474RE ke laptop menggunakan kabel USB.

6.     Rangkai komponen pada breadboard sesuai dengan konfigurasi seperti pada modul.

7.     Upload program dengan menekan tombol run/debug pada STM32CubeIDE.

8.     Jalankan sistem dan amati apakah rangkaian bekerja sesuai dengan yang diharapkan.

9.     Jika belum sesuai, lakukan pengecekan pada rangkaian dan program kemudian perbaiki.

2. Hardware dan Diagram Blok [kembali]

A. Hardware

     1. 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


B. Diagram Blok


3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

Prinsip Kerja:

Program ini membaca tombol pada PA0 sebagai pengaktif sistem dan sensor IR pada PA1 sebagai pendeteksi objek, dengan output LED hijau (PB0), LED merah (PB1), dan buzzer (PB2). Jika switch tidak aktif (LOW), semua output dimatikan. Jika switch aktif (HIGH), maka kondisi sensor IR akan menentukan output, saat IR tidak mendeteksi (HIGH), LED hijau menyala (indikasi aman), sedangkan saat IR mendeteksi (LOW), LED merah dan buzzer menyala (indikasi terdeteksi). Switch berfungsi sebagai enable sistem, sementara sensor IR menentukan kondisi indikator.

4. Flowchart dan Listing Program [kembali]

Ø  Flowchart

Ø  Listing Program

A.    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_SET)

      {

        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)

  {

  }

}

B.    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]






Comments

Popular posts from this blog