Tugas Pendahuluan 2 M1 uP&uC




1. Prosedur [kembali]

Modul 1 Percobaan 2 Kondisi 10

Langkah - langkah men-simulasikan rangkaiannya :

  1. Buatlah rangkaian sesuai dengan gambar di modul di Wokwi.com
  2. Lalu buka STMCUBEIDE,klik New STM32 Project
  3. Pilih BOARD SELECTOR, dan ketik STM32 Nucleo G474RE
  4. Setting pin di file.ioc nya sesuai dengan kebutuhan
  5. Lalu generate code dan masukkan kode di main.c dan main.h
  6. Klik Build project dan Masukkan file main.c dan main.h yang telat digenerate
  7. Masukkan kedua file tersebut ke STM32 Nucleo G474RE di Wokwi
  8. Run simulasi di Wokwi

2. Hardware dan Diagram Blok [kembali]

  • STM32 Nucleo G474RE


  • Infrared Sensor



  • Switch

  • LED
  • Buzzer
  • Resistor


  • Push Button



  • Adaptor


  • Breadboard




3. Rangkaian Simulasi dan Prinsip Kerja [kembali]



Prinsip Kerja :

Rangkaian ini bekerja dengan memanfaatkan mikrokontroler STM32 sebagai pusat kendali yang membaca dua input, yaitu switch sebagai pengaktif sistem dan sensor (push button/IR) sebagai pendeteksi objek. Ketika switch dalam kondisi OFF, seluruh sistem dimatikan sehingga LED RGB tidak menyala. Saat switch diaktifkan (ON), mikrokontroler mulai memantau kondisi sensor: jika sensor tidak mendeteksi objek, maka LED RGB menyala hijau sebagai indikasi kondisi aman. Sebaliknya, jika sensor mendeteksi objek, maka LED berubah menjadi merah (atau kombinasi warna tertentu sesuai pemrograman) sebagai tanda adanya objek, dan buzzer dapat diaktifkan sebagai alarm. Selain itu, pada kondisi tertentu saat sistem pertama kali diaktifkan dan sensor langsung mendeteksi objek, sistem dapat masuk ke mode error yang ditandai dengan perubahan warna LED (misalnya ungu). Seluruh proses ini berlangsung secara kontinu dalam loop program dengan pembacaan input dan pengaturan output dilakukan secara real-time berdasarkan logika yang telah diprogram.

4. Flowchart dan Listing Program [kembali]

Flowchart :


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. Kondisi [kembali]

Buatlah rangkaian seperti pada gambar percobaan 2 dengan kondisi ketika Switch ON dan sensor mendeteksi benda secara instan (0 detik setelah sistem aktif) padahal area harusnya kosong, LED RGB menyala Ungu (Merah + Biru) sebagai tanda error.

7. Video Simulasi [kembali]




8. Download File [kembali]

Link Wokwi [klik disini]

Download File Wokwi [klik disini]

Download Datasheet STM32-NUCLEO G474RE [klik disini]

Download Datasheet Resistor [klik disini]

Download Datasheet Slide Switch [klik disini]

Download Datasheet IR Sensor [klik disini]

Download Datasheet LED [klik disini]

Download Datasheet Push Button  [klik disini]


















Komentar

Postingan populer dari blog ini

Modul 1

Modul 1 uP&uC

Tugas Pendahuluan 2 M1